[NO-TICKET] Fix `FallbackAny` steep check
What does this PR do?
RemoveFallbackAny exclusion from the Steepfile and fixes related issues.
Motivation:
Improve typing on dd-trace-rb.
Change log entry
None.
Additional Notes:
How to test the change?
bundle exec rake steep:check
Benchmarks
Benchmark execution time: 2025-12-18 15:26:42
Comparing candidate commit 265d1f8c9c24443ec5860bbc77c7c1ddf83fd7ef in PR branch vpellan/steep-fix-fallback-any with baseline commit c6dc7b8ee3e3670569931e80abb802c7ceefbfa6 in branch master.
Found 0 performance improvements and 0 performance regressions! Performance is the same for 44 metrics, 2 unstable metrics.
Typing analysis
Note: Ignored files are excluded from the next sections.
steep:ignore comments
This PR introduces 15 steep:ignore comments, and clears 24 steep:ignore comments.
steep:ignore comments (+15-24)
❌ Introduced:
lib/datadog/core/error.rb:17
lib/datadog/core/transport/response.rb:40
lib/datadog/core/transport/response.rb:48
lib/datadog/core/transport/response.rb:49
lib/datadog/di/boot.rb:21
lib/datadog/di/boot.rb:40
lib/datadog/di/instrumenter.rb:215
lib/datadog/di/instrumenter.rb:310
lib/datadog/opentelemetry/metrics.rb:78
lib/datadog/opentelemetry/metrics.rb:79
lib/datadog/profiling/collectors/info.rb:28
lib/datadog/tracing/sampling/priority_sampler.rb:64
lib/datadog/tracing/span_operation.rb:169
lib/datadog/tracing/span_operation.rb:325
lib/datadog/tracing/span_operation.rb:397
✅ Cleared:
lib/datadog/appsec/remote.rb:86
lib/datadog/appsec/remote.rb:88
lib/datadog/appsec/remote.rb:90
lib/datadog/core/error.rb:16
lib/datadog/core/semaphore.rb:26
lib/datadog/core/transport/response.rb:38
lib/datadog/core/transport/response.rb:46
lib/datadog/core/transport/response.rb:47
lib/datadog/di/boot.rb:20
lib/datadog/di/boot.rb:38
lib/datadog/di/contrib/active_record.rb:4
lib/datadog/di/instrumenter.rb:212
lib/datadog/di/instrumenter.rb:304
lib/datadog/di/logger.rb:11
lib/datadog/di/logger.rb:21
lib/datadog/di/probe_file_loader/railtie.rb:9
lib/datadog/error_tracking/filters.rb:24
lib/datadog/kit/appsec/events/v2.rb:70
lib/datadog/profiling/collectors/info.rb:20
lib/datadog/tracing/span_operation.rb:218
lib/datadog/tracing/span_operation.rb:293
lib/datadog/tracing/span_operation.rb:320
lib/datadog/tracing/span_operation.rb:392
lib/datadog/tracing/span_operation.rb:556
Untyped methods
This PR introduces 75 untyped methods and 66 partially typed methods, and clears 79 untyped methods and 66 partially typed methods. It increases the percentage of typed methods from 55.78% to 55.96% (+0.18%).
Untyped methods (+75-79)
❌ Introduced:sig/datadog/appsec/instrumentation/gateway.rbs:16
└── def initialize: () -> void
sig/datadog/core/environment/class_count.rbs:7
└── def self?.value: () -> untyped
sig/datadog/core/environment/class_count.rbs:9
└── def self?.available?: () -> untyped
sig/datadog/core/feature_flags.rbs:24
└── def raw_value: () -> untyped
sig/datadog/core/feature_flags.rbs:26
└── def value: () -> untyped
sig/datadog/core/feature_flags.rbs:28
└── def value=: (untyped) -> untyped
sig/datadog/core/header_collection.rbs:11
└── def initialize: (untyped hash) -> void
sig/datadog/core/utils/sequence.rbs:11
└── def next: () -> untyped
sig/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rbs:10
└── def read: (?untyped? length, ?untyped? outbuf) -> untyped
sig/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rbs:12
└── def rewind: () -> untyped
sig/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rbs:16
└── def current_io: () -> untyped
sig/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rbs:18
└── def advance_io: () -> untyped
sig/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rbs:32
└── def self.convert!: (untyped io, untyped content_type, untyped original_filename, untyped local_path) -> untyped
sig/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rbs:34
└── def method_missing: (*untyped args) -> untyped
sig/datadog/core/vendor/multipart-post/multipart/post/parts.rbs:13
└── def self.file?: (untyped value) -> untyped
sig/datadog/core/vendor/multipart-post/multipart/post/parts.rbs:15
└── def length: () -> untyped
sig/datadog/core/vendor/multipart-post/multipart/post/parts.rbs:17
└── def to_io: () -> untyped
sig/datadog/core/vendor/multipart-post/multipart/post/parts.rbs:23
└── def length: () -> untyped
sig/datadog/core/vendor/multipart-post/multipart/post/parts.rbs:40
└── def initialize: (untyped boundary) -> void
sig/datadog/di/serializer.rbs:23
└── def combine_args: (untyped args, untyped kwargs, untyped target_self) -> untyped
sig/datadog/di/serializer.rbs:38
└── def serialize_string_or_symbol_for_message: (untyped value) -> untyped
sig/datadog/profiling/collectors/info.rbs:9
└── def initialize: (untyped settings) -> void
sig/datadog/profiling/collectors/info.rbs:32
└── def collect_settings_recursively: (untyped v) -> untyped
sig/datadog/tracing/context_provider.rbs:6
└── def initialize: () -> void
sig/datadog/tracing/context_provider.rbs:7
└── def context=: (untyped ctx) -> untyped
sig/datadog/tracing/context_provider.rbs:8
└── def context: (?untyped? key) -> untyped
sig/datadog/tracing/context_provider.rbs:13
└── def initialize: () -> void
sig/datadog/tracing/context_provider.rbs:14
└── def local=: (untyped ctx) -> untyped
sig/datadog/tracing/context_provider.rbs:15
└── def local: (?untyped storage) -> untyped
sig/datadog/tracing/context_provider.rbs:20
└── def self.next_instance_id: () -> untyped
sig/datadog/tracing/distributed/b3_multi.rbs:16
└── def initialize: (fetcher: untyped, ?trace_id_key: untyped, ?span_id_key: untyped, ?sampled_key: untyped) -> void
sig/datadog/tracing/distributed/b3_single.rbs:10
└── def initialize: (fetcher: untyped, ?key: untyped) -> void
sig/datadog/tracing/distributed/fetcher.rbs:7
└── def initialize: (untyped data) -> void
sig/datadog/tracing/distributed/fetcher.rbs:9
└── def []: (untyped key) -> untyped
sig/datadog/tracing/pipeline/span_processor.rbs:7
└── def initialize: (?untyped? operation) ?{ () -> untyped } -> void
sig/datadog/tracing/pipeline/span_processor.rbs:8
└── def call: (untyped trace) -> untyped
sig/datadog/tracing/pipeline.rbs:7
└── def self.before_flush: (*untyped processors) ?{ () -> untyped } -> untyped
sig/datadog/tracing/pipeline.rbs:9
└── def self.process!: (untyped traces) -> untyped
sig/datadog/tracing/pipeline.rbs:11
└── def self.processors=: (untyped value) -> untyped
sig/datadog/tracing/pipeline.rbs:13
└── def self.apply_processors!: (untyped trace) -> untyped
sig/datadog/tracing/sampling/rate_by_key_sampler.rbs:13
└── def resolve: (untyped trace) -> untyped
sig/datadog/tracing/sampling/rate_by_key_sampler.rbs:15
└── def default_sampler: () -> untyped
sig/datadog/tracing/sampling/rate_by_key_sampler.rbs:17
└── def sample?: (untyped trace) -> untyped
sig/datadog/tracing/sampling/rate_by_key_sampler.rbs:19
└── def sample!: (untyped trace) -> untyped
sig/datadog/tracing/sampling/rate_by_key_sampler.rbs:21
└── def sample_rate: (untyped trace) -> untyped
sig/datadog/tracing/sampling/rate_by_key_sampler.rbs:23
└── def update: (untyped key, untyped rate, ?decision: untyped?) -> untyped
sig/datadog/tracing/sampling/rate_by_key_sampler.rbs:25
└── def update_all: (untyped rate_by_key, ?decision: untyped?) -> untyped
sig/datadog/tracing/sampling/rate_by_key_sampler.rbs:27
└── def delete: (untyped key) -> untyped
sig/datadog/tracing/sampling/rate_by_key_sampler.rbs:31
└── def length: () -> untyped
sig/datadog/tracing/sampling/rate_by_key_sampler.rbs:35
└── def set_rate: (untyped key, untyped rate, untyped decision) -> untyped
sig/datadog/tracing/sampling/rate_sampler.rbs:13
└── def sample_rate: (*untyped _) -> untyped
sig/datadog/tracing/sampling/rate_sampler.rbs:15
└── def sample_rate=: (untyped sample_rate) -> untyped
sig/datadog/tracing/sampling/rate_sampler.rbs:17
└── def sample?: (untyped trace) -> untyped
sig/datadog/tracing/span_operation.rbs:58
└── def name=: (untyped name) -> untyped
sig/datadog/tracing/span_operation.rbs:60
└── def type=: (untyped `type`) -> untyped
sig/datadog/tracing/span_operation.rbs:62
└── def service=: (untyped service) -> untyped
sig/datadog/tracing/span_operation.rbs:64
└── def resource=: (untyped resource) -> untyped
sig/datadog/tracing/span_operation.rbs:68
└── def measure: () { (untyped) -> untyped } -> untyped
sig/datadog/tracing/span_operation.rbs:74
└── def started?: () -> untyped
sig/datadog/tracing/span_operation.rbs:76
└── def stopped?: () -> untyped
sig/datadog/tracing/span_operation.rbs:80
└── def start_time=: (untyped time) -> untyped
sig/datadog/tracing/span_operation.rbs:82
└── def end_time=: (untyped time) -> untyped
sig/datadog/tracing/span_operation.rbs:84
└── def finish: (?untyped? end_time) -> untyped
sig/datadog/tracing/span_operation.rbs:86
└── def finished?: () -> untyped
sig/datadog/tracing/span_operation.rbs:88
└── def duration: () -> untyped
sig/datadog/tracing/span_operation.rbs:90
└── def set_error: (untyped e) -> untyped
sig/datadog/tracing/span_operation.rbs:96
└── def to_hash: () -> untyped
sig/datadog/tracing/span_operation.rbs:98
└── def pretty_print: (untyped q) -> untyped
sig/datadog/tracing/span_operation.rbs:126
└── def initialize: () -> void
sig/datadog/tracing/span_operation.rbs:136
└── def wrap_default: () { (untyped, untyped) -> untyped } -> untyped
sig/datadog/tracing/span_operation.rbs:157
└── def build_span: () -> untyped
sig/datadog/tracing/span_operation.rbs:159
└── def parent=: (untyped parent) -> untyped
sig/datadog/tracing/span_operation.rbs:161
└── def duration_marker: () -> untyped
sig/datadog/tracing/span_operation.rbs:163
└── def start_time_nano: () -> untyped
sig/datadog/tracing/span_operation.rbs:165
└── def duration_nano: () -> untyped
✅ Cleared:
sig/datadog/appsec/instrumentation/gateway.rbs:15
└── def initialize: () -> void
sig/datadog/core/environment/class_count.rbs:5
└── def self?.value: () -> untyped
sig/datadog/core/environment/class_count.rbs:7
└── def self?.available?: () -> untyped
sig/datadog/core/feature_flags.rbs:22
└── def raw_value: () -> untyped
sig/datadog/core/feature_flags.rbs:24
└── def value: () -> untyped
sig/datadog/core/feature_flags.rbs:26
└── def value=: (untyped) -> untyped
sig/datadog/core/header_collection.rbs:9
└── def initialize: (untyped hash) -> void
sig/datadog/core/utils/sequence.rbs:7
└── def next: () -> untyped
sig/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rbs:7
└── def initialize: (*untyped ios) -> void
sig/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rbs:8
└── def read: (?untyped? length, ?untyped? outbuf) -> untyped
sig/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rbs:10
└── def rewind: () -> untyped
sig/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rbs:14
└── def current_io: () -> untyped
sig/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rbs:16
└── def advance_io: () -> untyped
sig/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rbs:30
└── def self.convert!: (untyped io, untyped content_type, untyped original_filename, untyped local_path) -> untyped
sig/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rbs:32
└── def method_missing: (*untyped args) -> untyped
sig/datadog/core/vendor/multipart-post/multipart/post/parts.rbs:10
└── def self.file?: (untyped value) -> untyped
sig/datadog/core/vendor/multipart-post/multipart/post/parts.rbs:12
└── def length: () -> untyped
sig/datadog/core/vendor/multipart-post/multipart/post/parts.rbs:14
└── def to_io: () -> untyped
sig/datadog/core/vendor/multipart-post/multipart/post/parts.rbs:20
└── def length: () -> untyped
sig/datadog/core/vendor/multipart-post/multipart/post/parts.rbs:33
└── def initialize: (untyped boundary) -> void
sig/datadog/di/serializer.rbs:21
└── def combine_args: (untyped args, untyped kwargs, untyped target_self) -> untyped
sig/datadog/di/serializer.rbs:36
└── def serialize_string_or_symbol_for_message: (untyped value) -> untyped
sig/datadog/profiling/collectors/info.rbs:5
└── def initialize: (untyped settings) -> void
sig/datadog/profiling/collectors/info.rbs:30
└── def collect_settings_recursively: (untyped v) -> untyped
sig/datadog/tracing/context_provider.rbs:4
└── def initialize: () -> void
sig/datadog/tracing/context_provider.rbs:5
└── def context=: (untyped ctx) -> untyped
sig/datadog/tracing/context_provider.rbs:6
└── def context: (?untyped? key) -> untyped
sig/datadog/tracing/context_provider.rbs:9
└── def initialize: () -> void
sig/datadog/tracing/context_provider.rbs:10
└── def local=: (untyped ctx) -> untyped
sig/datadog/tracing/context_provider.rbs:11
└── def local: (?untyped storage) -> untyped
sig/datadog/tracing/context_provider.rbs:16
└── def self.next_instance_id: () -> untyped
sig/datadog/tracing/distributed/b3_multi.rbs:11
└── def initialize: (fetcher: untyped, ?trace_id_key: untyped, ?span_id_key: untyped, ?sampled_key: untyped) -> void
sig/datadog/tracing/distributed/b3_single.rbs:7
└── def initialize: (fetcher: untyped, ?key: untyped) -> void
sig/datadog/tracing/distributed/fetcher.rbs:5
└── def initialize: (untyped data) -> void
sig/datadog/tracing/distributed/fetcher.rbs:7
└── def []: (untyped key) -> untyped
sig/datadog/tracing/pipeline/span_processor.rbs:5
└── def initialize: (?untyped? operation) ?{ () -> untyped } -> void
sig/datadog/tracing/pipeline/span_processor.rbs:6
└── def call: (untyped trace) -> untyped
sig/datadog/tracing/pipeline.rbs:4
└── def self.before_flush: (*untyped processors) ?{ () -> untyped } -> untyped
sig/datadog/tracing/pipeline.rbs:6
└── def self.process!: (untyped traces) -> untyped
sig/datadog/tracing/pipeline.rbs:8
└── def self.processors=: (untyped value) -> untyped
sig/datadog/tracing/pipeline.rbs:10
└── def self.apply_processors!: (untyped trace) -> untyped
sig/datadog/tracing/sampling/rate_by_key_sampler.rbs:9
└── def resolve: (untyped trace) -> untyped
sig/datadog/tracing/sampling/rate_by_key_sampler.rbs:11
└── def default_sampler: () -> untyped
sig/datadog/tracing/sampling/rate_by_key_sampler.rbs:13
└── def sample?: (untyped trace) -> untyped
sig/datadog/tracing/sampling/rate_by_key_sampler.rbs:15
└── def sample!: (untyped trace) -> untyped
sig/datadog/tracing/sampling/rate_by_key_sampler.rbs:17
└── def sample_rate: (untyped trace) -> untyped
sig/datadog/tracing/sampling/rate_by_key_sampler.rbs:19
└── def update: (untyped key, untyped rate, ?decision: untyped?) -> untyped
sig/datadog/tracing/sampling/rate_by_key_sampler.rbs:21
└── def update_all: (untyped rate_by_key, ?decision: untyped?) -> untyped
sig/datadog/tracing/sampling/rate_by_key_sampler.rbs:23
└── def delete: (untyped key) -> untyped
sig/datadog/tracing/sampling/rate_by_key_sampler.rbs:25
└── def delete_if: () ?{ () -> untyped } -> untyped
sig/datadog/tracing/sampling/rate_by_key_sampler.rbs:27
└── def length: () -> untyped
sig/datadog/tracing/sampling/rate_by_key_sampler.rbs:31
└── def set_rate: (untyped key, untyped rate, untyped decision) -> untyped
sig/datadog/tracing/sampling/rate_sampler.rbs:9
└── def sample_rate: (*untyped _) -> untyped
sig/datadog/tracing/sampling/rate_sampler.rbs:11
└── def sample_rate=: (untyped sample_rate) -> untyped
sig/datadog/tracing/sampling/rate_sampler.rbs:13
└── def sample?: (untyped trace) -> untyped
sig/datadog/tracing/span_operation.rbs:54
└── def name=: (untyped name) -> untyped
sig/datadog/tracing/span_operation.rbs:56
└── def type=: (untyped `type`) -> untyped
sig/datadog/tracing/span_operation.rbs:58
└── def service=: (untyped service) -> untyped
sig/datadog/tracing/span_operation.rbs:60
└── def resource=: (untyped resource) -> untyped
sig/datadog/tracing/span_operation.rbs:64
└── def measure: () { (untyped) -> untyped } -> untyped
sig/datadog/tracing/span_operation.rbs:70
└── def started?: () -> untyped
sig/datadog/tracing/span_operation.rbs:72
└── def stopped?: () -> untyped
sig/datadog/tracing/span_operation.rbs:76
└── def start_time=: (untyped time) -> untyped
sig/datadog/tracing/span_operation.rbs:78
└── def end_time=: (untyped time) -> untyped
sig/datadog/tracing/span_operation.rbs:80
└── def finish: (?untyped? end_time) -> untyped
sig/datadog/tracing/span_operation.rbs:82
└── def finished?: () -> untyped
sig/datadog/tracing/span_operation.rbs:84
└── def duration: () -> untyped
sig/datadog/tracing/span_operation.rbs:86
└── def set_error: (untyped e) -> untyped
sig/datadog/tracing/span_operation.rbs:92
└── def to_hash: () -> untyped
sig/datadog/tracing/span_operation.rbs:94
└── def pretty_print: (untyped q) -> untyped
sig/datadog/tracing/span_operation.rbs:114
└── def initialize: () -> void
sig/datadog/tracing/span_operation.rbs:130
└── def wrap_default: () { (untyped, untyped) -> untyped } -> untyped
sig/datadog/tracing/span_operation.rbs:151
└── def build_span: () -> untyped
sig/datadog/tracing/span_operation.rbs:153
└── def parent=: (untyped parent) -> untyped
sig/datadog/tracing/span_operation.rbs:155
└── def duration_marker: () -> untyped
sig/datadog/tracing/span_operation.rbs:157
└── def start_time_nano: () -> untyped
sig/datadog/tracing/span_operation.rbs:159
└── def duration_nano: () -> untyped
sig/datadog/tracing/transport/serializable_trace.rbs:11
└── def to_msgpack: (?untyped? packer) -> untyped
sig/datadog/tracing/transport/serializable_trace.rbs:24
└── def to_msgpack: (?untyped? packer) -> untyped
Partially typed methods (+66-66)
❌ Introduced:sig/datadog/appsec/security_engine/engine.rbs:31
└── def add_or_update_config: (::Hash[::String, untyped] config, path: ::String) -> WAF::diagnostics
sig/datadog/core/feature_flags.rbs:48
└── def json?: (untyped) -> bool
sig/datadog/core/telemetry/component.rbs:24
└── def self.build: (untyped settings, Datadog::Core::Configuration::AgentSettings agent_settings, Datadog::Core::Logger logger) -> Component
sig/datadog/core/telemetry/component.rbs:26
└── def initialize: (logger: Core::Logger, settings: untyped, agent_settings: Datadog::Core::Configuration::AgentSettings, enabled: true | false) -> void
sig/datadog/core/telemetry/emitter.rbs:12
└── def initialize: (untyped transport, ?logger: Core::Logger, ?debug: bool) -> void
sig/datadog/core/telemetry/event/app_started.rbs:36
└── def payload: () -> { products: untyped, configuration: untyped, install_signature: untyped }
sig/datadog/core/telemetry/event/app_started.rbs:43
└── def configuration: (untyped settings, Core::Configuration::AgentSettings agent_settings) -> Array[telemetry_configuration]
sig/datadog/core/telemetry/event/app_started.rbs:47
└── def conf_value: (String name, untyped value, Integer seq_id, String origin) -> telemetry_configuration
sig/datadog/core/telemetry/event/app_started.rbs:51
└── def install_signature: (untyped settings) -> install_signature
sig/datadog/core/telemetry/event/app_started.rbs:53
└── def get_telemetry_origin: (untyped settings, String config_path) -> String
sig/datadog/core/telemetry/event/synth_app_client_configuration_change.rbs:10
└── def payload: () -> { configuration: untyped }
sig/datadog/core/utils/sequence.rbs:9
└── def initialize: (?::Integer seed) ?{ (::Integer) -> Integer } -> untyped
sig/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rbs:30
└── def initialize: (untyped filename_or_io, untyped content_type, ?untyped? filename, ?::Hash[untyped, untyped] opts) -> void
sig/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rbs:36
└── def respond_to?: (untyped meth, ?bool include_all) -> untyped
sig/datadog/core/vendor/multipart-post/multipart/post/parts.rbs:11
└── def self.new: (untyped boundary, untyped name, untyped value, ?::Hash[untyped, untyped] headers) -> untyped
sig/datadog/core/vendor/multipart-post/multipart/post/parts.rbs:21
└── def initialize: (untyped boundary, untyped name, untyped value, ?::Hash[untyped, untyped] headers) -> void
sig/datadog/core/vendor/multipart-post/multipart/post/parts.rbs:24
└── def build_part: (untyped boundary, untyped name, untyped value, ?::Hash[untyped, untyped] headers) -> untyped
sig/datadog/core/vendor/multipart-post/multipart/post/parts.rbs:34
└── def initialize: (untyped boundary, untyped name, untyped io, ?::Hash[untyped, untyped] headers) -> void
sig/datadog/core/vendor/multipart-post/multipart/post/parts.rbs:35
└── def build_head: (untyped boundary, untyped name, untyped filename, untyped `type`, untyped content_len, ?::Hash[untyped, untyped] opts) -> untyped
sig/datadog/data_streams/processor.rbs:56
└── def process_kafka_produce_event: (::Hash[::Symbol, untyped] event) -> void
sig/datadog/data_streams/processor.rbs:57
└── def process_kafka_consume_event: (::Hash[::Symbol, untyped] event) -> void
sig/datadog/data_streams/processor.rbs:58
└── def process_checkpoint_event: (::Hash[::Symbol, untyped] event) -> void
sig/datadog/data_streams/processor.rbs:71
└── def send_stats_to_agent: (::Hash[::String, untyped] payload) -> void
sig/datadog/data_streams/processor.rbs:72
└── def send_dsm_payload: (::String data, ::Hash[::String, ::String] headers) -> untyped
sig/datadog/data_streams/processor.rbs:75
└── def serialize_buckets: () -> ::Array[::Hash[::String, untyped]]
sig/datadog/data_streams/processor.rbs:76
└── def serialize_consumer_backlogs: () -> ::Array[::Hash[::String, untyped]]
sig/datadog/di/logger.rbs:10
└── def initialize: (untyped settings, ::Logger target) -> void
sig/datadog/di/logger.rbs:16
└── def debug: () { (?) -> untyped } -> void
sig/datadog/di/logger.rbs:17
└── def trace: () { (?) -> untyped } -> void
sig/datadog/di/probe.rbs:31
└── def initialize: (id: String, type: Symbol, ?file: String?, ?line_no: Integer?, ?type_name: String?, ?method_name: String?, ?template: String?, ?template_segments: Array[untyped]?, ?capture_snapshot: bool,
sig/datadog/di/serializer.rbs:15
└── def initialize: (untyped settings, untyped redactor, ?telemetry: Core::Telemetry::Component?) -> void
sig/datadog/di/serializer.rbs:24
└── def serialize_args: (untyped args, untyped kwargs, untyped instance_vars, ?depth: Integer, ?attribute_count: Integer?) -> untyped
sig/datadog/di/serializer.rbs:25
└── def serialize_vars: (untyped vars, ?depth: Integer, ?attribute_count: Integer?) -> untyped
sig/datadog/di/serializer.rbs:26
└── def serialize_value: (untyped value, ?name: String?, ?depth: Integer, ?attribute_count: Integer?, ?type: Class?) -> untyped
sig/datadog/di/serializer.rbs:27
└── def serialize_value_for_message: (untyped value, ?::Integer depth) -> untyped
sig/datadog/di/serializer.rbs:36
└── def class_name: (untyped cls) -> String
sig/datadog/kit/appsec/events/v2.rbs:37
└── def self.set_span_tags: (Tracing::SpanOperation span, ::Hash[::Symbol, untyped] tags, namespace: ::String) -> void
sig/datadog/open_feature/exposures/worker.rbs:51
└── def perform: (*untyped) -> void
sig/datadog/profiling/collectors/cpu_and_wall_time_worker.rbs:49
└── def stats: () -> ::Hash[::Symbol, untyped]
sig/datadog/profiling/collectors/cpu_and_wall_time_worker.rbs:50
└── def stats_and_reset_not_thread_safe: () -> ::Hash[::Symbol, untyped]
sig/datadog/profiling/collectors/cpu_and_wall_time_worker.rbs:51
└── def self._native_stats: (CpuAndWallTimeWorker self_instance) -> ::Hash[::Symbol, untyped]
sig/datadog/profiling/collectors/info.rbs:30
└── def collect_application_info: (untyped settings) -> application_info
sig/datadog/profiling/collectors/info.rbs:31
└── def collect_profiler_info: (untyped settings) -> profiler_info
sig/datadog/tracing/contrib/waterdrop.rbs:8
└── def self.inject: (Tracing::TraceDigest digest, ::Hash[untyped, untyped] data) -> void
sig/datadog/tracing/contrib/waterdrop.rbs:11
└── def self.extract: (::Hash[untyped, untyped] data) -> Tracing::TraceDigest?
sig/datadog/tracing/distributed/b3_multi.rbs:18
└── def inject!: (untyped digest, ?::Hash[untyped, untyped] data) -> (nil | untyped)
sig/datadog/tracing/distributed/b3_multi.rbs:20
└── def extract: (untyped data) -> (nil | untyped)
sig/datadog/tracing/distributed/b3_single.rbs:12
└── def inject!: (untyped digest, untyped env) -> (nil | untyped)
sig/datadog/tracing/distributed/b3_single.rbs:14
└── def extract: (untyped env) -> (nil | untyped)
sig/datadog/tracing/distributed/baggage.rbs:16
└── def initialize: (fetcher: untyped, ?baggage_key: String, ?baggage_tag_keys: untyped) -> void
sig/datadog/tracing/distributed/baggage.rbs:18
└── def inject!: (untyped digest, untyped data) -> (nil | untyped)
sig/datadog/tracing/distributed/baggage.rbs:20
└── def extract: (untyped data) -> (nil | untyped)
sig/datadog/tracing/metadata/metastruct.rbs:11
└── def []: (String | Symbol key) -> untyped
sig/datadog/tracing/metadata/metastruct.rbs:13
└── def []=: (String | Symbol key, untyped value) -> untyped
sig/datadog/tracing/metadata/metastruct.rbs:15
└── def to_h: () -> ::Hash[String | Symbol, untyped]
sig/datadog/tracing/metadata/metastruct.rbs:17
└── def pretty_print: (untyped q) -> void
sig/datadog/tracing/sampling/rate_by_key_sampler.rbs:11
└── def initialize: (untyped default_key, ?::Float default_rate, ?decision: untyped?) ?{ (TraceOperation trace) -> String } -> void
sig/datadog/tracing/sampling/rate_by_key_sampler.rbs:29
└── def delete_if: () { (String, RateSampler) -> bool } -> untyped
sig/datadog/tracing/sampling/rate_sampler.rbs:11
└── def initialize: (?::Float sample_rate, ?decision: untyped?) -> void
sig/datadog/tracing/sampling/rate_sampler.rbs:19
└── def sample!: (untyped trace) -> (false | true)
sig/datadog/tracing/span.rbs:51
└── def to_hash: -> Hash[Symbol, untyped]
sig/datadog/tracing/span_operation.rbs:70
└── def start: (?untyped? start_time) -> self
sig/datadog/tracing/span_operation.rbs:134
└── def initialize: (untyped default, ?logger: Core::Logger) -> void
sig/datadog/tracing/span_operation.rbs:138
└── def publish: (*untyped args) -> true
sig/datadog/tracing/transport/serializable_trace.rbs:11
└── def initialize: (untyped trace, native_events_supported: bool) -> void
sig/datadog/tracing/transport/serializable_trace.rbs:24
└── def initialize: (untyped span, native_events_supported: bool) -> void
✅ Cleared:
sig/datadog/appsec/actions_handler/serializable_backtrace.rbs:8
└── def to_msgpack: (?untyped? packer) -> void
sig/datadog/appsec/security_engine/engine.rbs:23
└── def add_or_update_config: (::Hash[::String, untyped] config, path: ::String) -> WAF::diagnostics
sig/datadog/core/feature_flags.rbs:46
└── def json?: (untyped) -> bool
sig/datadog/core/telemetry/component.rbs:23
└── def self.build: (untyped settings, Datadog::Core::Configuration::AgentSettings agent_settings, Datadog::Core::Logger logger) -> Component
sig/datadog/core/telemetry/component.rbs:25
└── def initialize: (logger: Core::Logger, settings: untyped, agent_settings: Datadog::Core::Configuration::AgentSettings, enabled: true | false) -> void
sig/datadog/core/telemetry/emitter.rbs:13
└── def initialize: (untyped transport, ?logger: Core::Logger, ?debug: bool) -> void
sig/datadog/core/telemetry/event/app_started.rbs:10
└── def payload: () -> { products: untyped, configuration: untyped, install_signature: untyped }
sig/datadog/core/telemetry/event/app_started.rbs:17
└── def configuration: (untyped settings, Core::Configuration::AgentSettings agent_settings) -> Array[Hash[Symbol, untyped]]
sig/datadog/core/telemetry/event/app_started.rbs:21
└── def conf_value: (String name, untyped value, Integer seq_id, String origin) -> Hash[Symbol, untyped]
sig/datadog/core/telemetry/event/app_started.rbs:25
└── def install_signature: (untyped settings) -> Hash[Symbol, Object]
sig/datadog/core/telemetry/event/app_started.rbs:27
└── def get_telemetry_origin: (untyped settings, String config_path) -> String
sig/datadog/core/telemetry/event/synth_app_client_configuration_change.rbs:8
└── def payload: () -> { configuration: untyped }
sig/datadog/core/utils/sequence.rbs:5
└── def initialize: (?::Integer seed) ?{ () -> untyped } -> untyped
sig/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rbs:28
└── def initialize: (untyped filename_or_io, untyped content_type, ?untyped? filename, ?::Hash[untyped, untyped] opts) -> void
sig/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rbs:34
└── def respond_to?: (untyped meth, ?bool include_all) -> untyped
sig/datadog/core/vendor/multipart-post/multipart/post/parts.rbs:8
└── def self.new: (untyped boundary, untyped name, untyped value, ?::Hash[untyped, untyped] headers) -> untyped
sig/datadog/core/vendor/multipart-post/multipart/post/parts.rbs:18
└── def initialize: (untyped boundary, untyped name, untyped value, ?::Hash[untyped, untyped] headers) -> void
sig/datadog/core/vendor/multipart-post/multipart/post/parts.rbs:21
└── def build_part: (untyped boundary, untyped name, untyped value, ?::Hash[untyped, untyped] headers) -> untyped
sig/datadog/core/vendor/multipart-post/multipart/post/parts.rbs:27
└── def initialize: (untyped boundary, untyped name, untyped io, ?::Hash[untyped, untyped] headers) -> void
sig/datadog/core/vendor/multipart-post/multipart/post/parts.rbs:28
└── def build_head: (untyped boundary, untyped name, untyped filename, untyped `type`, untyped content_len, ?::Hash[untyped, untyped] opts) -> untyped
sig/datadog/data_streams/processor.rbs:52
└── def process_kafka_produce_event: (::Hash[::Symbol, untyped] event) -> void
sig/datadog/data_streams/processor.rbs:53
└── def process_kafka_consume_event: (::Hash[::Symbol, untyped] event) -> void
sig/datadog/data_streams/processor.rbs:54
└── def process_checkpoint_event: (::Hash[::Symbol, untyped] event) -> void
sig/datadog/data_streams/processor.rbs:67
└── def send_stats_to_agent: (::Hash[::String, untyped] payload) -> void
sig/datadog/data_streams/processor.rbs:68
└── def send_dsm_payload: (::String data, ::Hash[::String, ::String] headers) -> untyped
sig/datadog/data_streams/processor.rbs:71
└── def serialize_buckets: () -> ::Array[::Hash[::String, untyped]]
sig/datadog/data_streams/processor.rbs:72
└── def serialize_consumer_backlogs: () -> ::Array[::Hash[::String, untyped]]
sig/datadog/di/logger.rbs:8
└── def initialize: (untyped settings, ::Logger target) -> void
sig/datadog/di/logger.rbs:14
└── def debug: () { (?) -> untyped } -> void
sig/datadog/di/logger.rbs:15
└── def trace: () { (?) -> untyped } -> void
sig/datadog/di/probe.rbs:27
└── def initialize: (id: String, type: Symbol, ?file: String?, ?line_no: Integer?, ?type_name: String?, ?method_name: String?, ?template: String?, ?template_segments: Array[untyped]?, ?capture_snapshot: bool,
sig/datadog/di/serializer.rbs:13
└── def initialize: (untyped settings, untyped redactor, ?telemetry: Core::Telemetry::Component?) -> void
sig/datadog/di/serializer.rbs:22
└── def serialize_args: (untyped args, untyped kwargs, untyped instance_vars, ?depth: Integer, ?attribute_count: Integer?) -> untyped
sig/datadog/di/serializer.rbs:23
└── def serialize_vars: (untyped vars, ?depth: Integer, ?attribute_count: Integer?) -> untyped
sig/datadog/di/serializer.rbs:24
└── def serialize_value: (untyped value, ?name: String?, ?depth: Integer, ?attribute_count: Integer?, ?type: Class?) -> untyped
sig/datadog/di/serializer.rbs:25
└── def serialize_value_for_message: (untyped value, ?::Integer depth) -> untyped
sig/datadog/di/serializer.rbs:34
└── def class_name: (untyped cls) -> String
sig/datadog/kit/appsec/events/v2.rbs:34
└── def self.set_span_tags: (Tracing::SpanOperation span, ::Hash[::Symbol, untyped] tags, namespace: ::String) -> void
sig/datadog/open_feature/exposures/worker.rbs:48
└── def perform: (*untyped) -> void
sig/datadog/profiling/collectors/cpu_and_wall_time_worker.rbs:47
└── def stats: () -> ::Hash[::Symbol, untyped]
sig/datadog/profiling/collectors/cpu_and_wall_time_worker.rbs:48
└── def stats_and_reset_not_thread_safe: () -> ::Hash[::Symbol, untyped]
sig/datadog/profiling/collectors/cpu_and_wall_time_worker.rbs:49
└── def self._native_stats: (CpuAndWallTimeWorker self_instance) -> ::Hash[::Symbol, untyped]
sig/datadog/profiling/collectors/info.rbs:28
└── def collect_application_info: (untyped settings) -> application_info
sig/datadog/profiling/collectors/info.rbs:29
└── def collect_profiler_info: (untyped settings) -> profiler_info
sig/datadog/tracing/contrib/waterdrop.rbs:6
└── def self.inject: (Tracing::TraceDigest digest, ::Hash[untyped, untyped] data) -> void
sig/datadog/tracing/contrib/waterdrop.rbs:9
└── def self.extract: (::Hash[untyped, untyped] data) -> Tracing::TraceDigest?
sig/datadog/tracing/distributed/b3_multi.rbs:13
└── def inject!: (untyped digest, ?::Hash[untyped, untyped] data) -> (nil | untyped)
sig/datadog/tracing/distributed/b3_multi.rbs:15
└── def extract: (untyped data) -> (nil | untyped)
sig/datadog/tracing/distributed/b3_single.rbs:9
└── def inject!: (untyped digest, untyped env) -> (nil | untyped)
sig/datadog/tracing/distributed/b3_single.rbs:11
└── def extract: (untyped env) -> (nil | untyped)
sig/datadog/tracing/distributed/baggage.rbs:12
└── def initialize: (fetcher: untyped, ?baggage_key: string, ?baggage_tag_keys: untyped) -> void
sig/datadog/tracing/distributed/baggage.rbs:14
└── def inject!: (untyped digest, untyped data) -> (nil | untyped)
sig/datadog/tracing/distributed/baggage.rbs:16
└── def extract: (untyped data) -> (nil | untyped)
sig/datadog/tracing/metadata/metastruct.rbs:7
└── def []: (String | Symbol key) -> untyped
sig/datadog/tracing/metadata/metastruct.rbs:9
└── def []=: (String | Symbol key, untyped value) -> untyped
sig/datadog/tracing/metadata/metastruct.rbs:11
└── def to_h: () -> ::Hash[String | Symbol, untyped]
sig/datadog/tracing/metadata/metastruct.rbs:15
└── def pretty_print: (untyped q) -> void
sig/datadog/tracing/sampling/rate_by_key_sampler.rbs:7
└── def initialize: (untyped default_key, ?::Float default_rate, ?decision: untyped?) ?{ () -> untyped } -> void
sig/datadog/tracing/sampling/rate_sampler.rbs:7
└── def initialize: (?::Float sample_rate, ?decision: untyped?) -> void
sig/datadog/tracing/sampling/rate_sampler.rbs:15
└── def sample!: (untyped trace) -> (false | true)
sig/datadog/tracing/span.rbs:49
└── def to_hash: -> Hash[Symbol, untyped]
sig/datadog/tracing/span_operation.rbs:66
└── def start: (?untyped? start_time) -> self
sig/datadog/tracing/span_operation.rbs:126
└── def initialize: (untyped default, ?logger: Core::Logger) -> void
sig/datadog/tracing/span_operation.rbs:132
└── def publish: (*untyped args) -> true
sig/datadog/tracing/transport/serializable_trace.rbs:9
└── def initialize: (untyped trace, native_events_supported: bool) -> void
sig/datadog/tracing/transport/serializable_trace.rbs:22
└── def initialize: (untyped span, native_events_supported: bool) -> void
Untyped other declarations
This PR introduces 29 untyped other declarations and 7 partially typed other declarations, and clears 29 untyped other declarations and 5 partially typed other declarations. It increases the percentage of typed other declarations from 72.23% to 73.53% (+1.3%).
Untyped other declarations (+29-29)
❌ Introduced:sig/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rbs:21
└── attr_reader content_type: untyped
sig/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rbs:23
└── attr_reader original_filename: untyped
sig/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rbs:25
└── attr_reader local_path: untyped
sig/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rbs:27
└── attr_reader io: untyped
sig/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rbs:29
└── attr_reader opts: untyped
sig/datadog/core/vendor/multipart-post/multipart/post/parts.rbs:29
└── attr_reader length: untyped
sig/datadog/di/logger.rbs:6
└── @settings: untyped
sig/datadog/di/logger.rbs:12
└── attr_reader settings: untyped
sig/datadog/di/serializer.rbs:9
└── @settings: untyped
sig/datadog/di/serializer.rbs:11
└── @redactor: untyped
sig/datadog/tracing/context_provider.rbs:16
└── UNIQUE_INSTANCE_MUTEX: untyped
sig/datadog/tracing/context_provider.rbs:18
└── UNIQUE_INSTANCE_GENERATOR: untyped
sig/datadog/tracing/sampling/rate_by_key_sampler.rbs:9
└── attr_reader default_key: untyped
sig/datadog/tracing/span_operation.rbs:17
└── attr_reader links: untyped
sig/datadog/tracing/span_operation.rbs:19
└── attr_reader span_events: untyped
sig/datadog/tracing/span_operation.rbs:23
└── attr_reader id: untyped
sig/datadog/tracing/span_operation.rbs:25
└── attr_reader name: untyped
sig/datadog/tracing/span_operation.rbs:27
└── attr_reader parent_id: untyped
sig/datadog/tracing/span_operation.rbs:29
└── attr_reader resource: untyped
sig/datadog/tracing/span_operation.rbs:31
└── attr_reader service: untyped
sig/datadog/tracing/span_operation.rbs:35
└── attr_reader trace_id: untyped
sig/datadog/tracing/span_operation.rbs:37
└── attr_reader type: untyped
sig/datadog/tracing/span_operation.rbs:39
└── attr_accessor status: untyped
sig/datadog/tracing/span_operation.rbs:107
└── attr_reader after_finish: untyped
sig/datadog/tracing/span_operation.rbs:109
└── attr_reader after_stop: untyped
sig/datadog/tracing/span_operation.rbs:111
└── attr_reader before_start: untyped
sig/datadog/tracing/span_operation.rbs:148
└── attr_reader events: untyped
sig/datadog/tracing/span_operation.rbs:150
└── attr_reader parent: untyped
sig/datadog/tracing/span_operation.rbs:152
└── attr_reader span: untyped
✅ Cleared:
sig/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rbs:19
└── attr_reader content_type: untyped
sig/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rbs:21
└── attr_reader original_filename: untyped
sig/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rbs:23
└── attr_reader local_path: untyped
sig/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rbs:25
└── attr_reader io: untyped
sig/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rbs:27
└── attr_reader opts: untyped
sig/datadog/core/vendor/multipart-post/multipart/post/parts.rbs:26
└── attr_reader length: untyped
sig/datadog/di/logger.rbs:4
└── @settings: untyped
sig/datadog/di/logger.rbs:10
└── attr_reader settings: untyped
sig/datadog/di/serializer.rbs:7
└── @settings: untyped
sig/datadog/di/serializer.rbs:9
└── @redactor: untyped
sig/datadog/tracing/context_provider.rbs:12
└── UNIQUE_INSTANCE_MUTEX: untyped
sig/datadog/tracing/context_provider.rbs:14
└── UNIQUE_INSTANCE_GENERATOR: untyped
sig/datadog/tracing/sampling/rate_by_key_sampler.rbs:5
└── attr_reader default_key: untyped
sig/datadog/tracing/span_operation.rbs:13
└── attr_reader links: untyped
sig/datadog/tracing/span_operation.rbs:15
└── attr_reader span_events: untyped
sig/datadog/tracing/span_operation.rbs:19
└── attr_reader id: untyped
sig/datadog/tracing/span_operation.rbs:21
└── attr_reader name: untyped
sig/datadog/tracing/span_operation.rbs:23
└── attr_reader parent_id: untyped
sig/datadog/tracing/span_operation.rbs:25
└── attr_reader resource: untyped
sig/datadog/tracing/span_operation.rbs:27
└── attr_reader service: untyped
sig/datadog/tracing/span_operation.rbs:31
└── attr_reader trace_id: untyped
sig/datadog/tracing/span_operation.rbs:33
└── attr_reader type: untyped
sig/datadog/tracing/span_operation.rbs:35
└── attr_accessor status: untyped
sig/datadog/tracing/span_operation.rbs:103
└── attr_reader after_finish: untyped
sig/datadog/tracing/span_operation.rbs:105
└── attr_reader after_stop: untyped
sig/datadog/tracing/span_operation.rbs:107
└── attr_reader before_start: untyped
sig/datadog/tracing/span_operation.rbs:142
└── attr_reader events: untyped
sig/datadog/tracing/span_operation.rbs:144
└── attr_reader parent: untyped
sig/datadog/tracing/span_operation.rbs:146
└── attr_reader span: untyped
Partially typed other declarations (+7-5)
❌ Introduced:sig/datadog/appsec/security_engine/engine.rbs:13
└── @default_ruleset: (::String | ::Symbol | ::File | ::StringIO | ::Hash[untyped, untyped])
sig/datadog/di/probe.rbs:54
└── attr_reader template_segments: Array[untyped]?
sig/datadog/di/serializer.rbs:7
└── @@flat_registry: ::Array[{condition: Proc?, proc: ^(Serializer serializer, untyped value, name: Symbol?, depth: Integer, ?attribute_count: Integer?) -> untyped}]
sig/datadog/profiling/exporter.rbs:16
└── attr_reader internal_metadata: ::Hash[::Symbol, untyped]
sig/datadog/tracing/span.rbs:16
└── attr_accessor links: Array[untyped]
sig/datadog/tracing/span.rbs:17
└── attr_accessor events: Array[untyped]
sig/datadog/tracing/span.rbs:23
└── attr_reader metastruct: Hash[String | Symbol, untyped]
✅ Cleared:
sig/datadog/di/probe.rbs:50
└── attr_reader template_segments: Array[untyped]?
sig/datadog/profiling/exporter.rbs:14
└── attr_reader internal_metadata: ::Hash[::Symbol, untyped]
sig/datadog/tracing/span.rbs:14
└── attr_accessor links: Array[untyped]
sig/datadog/tracing/span.rbs:15
└── attr_accessor events: Array[untyped]
sig/datadog/tracing/span.rbs:21
└── attr_reader metastruct: Hash[String | Symbol, untyped]
If you believe a method or an attribute is rightfully untyped or partially typed, you can add # untyped:accept to the end of the line to remove it from the stats.