diff --git a/Steepfile b/Steepfile index 220e05b340b..6cf15ef45b0 100644 --- a/Steepfile +++ b/Steepfile @@ -19,10 +19,6 @@ target :datadog do # * `:information`, `:hint`: To see these, run `rake 'typecheck[--severity-level=information]'` # or `rake 'typecheck[--severity-level=hint]'` - # These first checks are likely the easiest to fix, given they capture a mismatch - # between the already declared type in `.rbs` and the actual type inferred by Steep. - hash[Ruby::IncompatibleAssignment] = :information - # These checks are a bit harder, because they represent the lack of sufficient type information. hash[Ruby::FallbackAny] = :information hash[Ruby::UnknownInstanceVariable] = :information diff --git a/lib/datadog/appsec/context.rb b/lib/datadog/appsec/context.rb index 0ff781fd4f6..48415b462c2 100644 --- a/lib/datadog/appsec/context.rb +++ b/lib/datadog/appsec/context.rb @@ -7,7 +7,8 @@ module AppSec # This class accumulates the context over the request life-cycle and exposes # interface sufficient for instrumentation to perform threat detection. class Context - ActiveContextError = Class.new(StandardError) + # Steep: https://github.com/soutaro/steep/issues/1880 + ActiveContextError = Class.new(StandardError) # steep:ignore IncompatibleAssignment # TODO: add delegators for active trace span attr_reader :trace, :span, :events diff --git a/lib/datadog/appsec/security_engine/result.rb b/lib/datadog/appsec/security_engine/result.rb index e1a364a1dff..98913856c9f 100644 --- a/lib/datadog/appsec/security_engine/result.rb +++ b/lib/datadog/appsec/security_engine/result.rb @@ -70,7 +70,8 @@ class Error def initialize(duration_ext_ns:, input_truncated:) @events = [] - @actions = @attributes = {} + @actions = {} + @attributes = {} @duration_ns = 0 @duration_ext_ns = duration_ext_ns @input_truncated = !!input_truncated diff --git a/lib/datadog/core/configuration/option_definition.rb b/lib/datadog/core/configuration/option_definition.rb index 56c9575299b..e7be0c18ec9 100644 --- a/lib/datadog/core/configuration/option_definition.rb +++ b/lib/datadog/core/configuration/option_definition.rb @@ -42,7 +42,8 @@ def build(context) # Acts as DSL for building OptionDefinitions # @public_api class Builder - InvalidOptionError = Class.new(StandardError) + # Steep: https://github.com/soutaro/steep/issues/1880 + InvalidOptionError = Class.new(StandardError) # steep:ignore IncompatibleAssignment attr_reader \ :helpers @@ -119,7 +120,8 @@ def apply_options!(options = {}) env_parser(&options[:env_parser]) if options.key?(:env_parser) after_set(&options[:after_set]) if options.key?(:after_set) resetter(&options[:resetter]) if options.key?(:resetter) - setter(&options[:setter]) if options.key?(:setter) + # Steep: https://github.com/soutaro/steep/issues/477 + setter(&options[:setter]) if options.key?(:setter) # steep:ignore BlockTypeMismatch type(options[:type], **(options[:type_options] || {})) if options.key?(:type) end diff --git a/lib/datadog/core/configuration/options.rb b/lib/datadog/core/configuration/options.rb index bafcef9aab2..87ef253cf6f 100644 --- a/lib/datadog/core/configuration/options.rb +++ b/lib/datadog/core/configuration/options.rb @@ -40,14 +40,16 @@ def option(name, meta = {}, &block) def default_helpers(name) option_name = name.to_sym - # @type var opt_getter: Configuration::OptionDefinition::helper_proc - opt_getter = proc do + # Steep: https://github.com/soutaro/steep/issues/335 + # @type var opt_getter: Configuration::OptionDefinition::generic_proc + opt_getter = proc do # steep:ignore IncompatibleAssignment # These Procs uses `get/set_option`, but we only add them to the OptionDefinition helpers here. # Steep is right that these methods are not defined, but we only run these Procs in instance context. get_option(option_name) # steep:ignore NoMethod end - # @type var opt_setter: Configuration::OptionDefinition::helper_proc - opt_setter = proc do |value| + # Steep: https://github.com/soutaro/steep/issues/335 + # @type var opt_setter: Configuration::OptionDefinition::generic_proc + opt_setter = proc do |value| # steep:ignore IncompatibleAssignment set_option(option_name, value) # steep:ignore NoMethod end { @@ -127,7 +129,8 @@ def assert_valid_option!(name) end end - InvalidOptionError = Class.new(StandardError) + # Steep: https://github.com/soutaro/steep/issues/1880 + InvalidOptionError = Class.new(StandardError) # steep:ignore IncompatibleAssignment end end end diff --git a/lib/datadog/core/rate_limiter.rb b/lib/datadog/core/rate_limiter.rb index 9c7e6da0bc2..2635f36c3e4 100644 --- a/lib/datadog/core/rate_limiter.rb +++ b/lib/datadog/core/rate_limiter.rb @@ -81,6 +81,10 @@ def effective_rate return current_window_rate if @prev_conforming_messages.nil? || @prev_total_messages.nil? + # Steep: Due to https://github.com/soutaro/steep/issues/477, + # the previous nil check does not narrow type to Integer + # The annotation fixes the typing error, but it takes effect in the method + # @type ivar @prev_total_messages: Integer (@conforming_messages.to_f + @prev_conforming_messages.to_f) / (@total_messages + @prev_total_messages) end @@ -154,7 +158,11 @@ def update_rate_counts(allowed) if @current_window.nil? @current_window = now # If more than 1 second has past since last window, reset - elsif now - @current_window >= 1 + # + # Steep: @current_window is a Float, but for some reason annotations does not work here + # Once a fix will be out for nil checks on instance variables, we can remove the steep:ignore + # https://github.com/soutaro/steep/issues/477 + elsif now - @current_window >= 1 # steep:ignore UnresolvedOverloading @prev_conforming_messages = @conforming_messages @prev_total_messages = @total_messages @conforming_messages = 0 diff --git a/lib/datadog/core/utils/time.rb b/lib/datadog/core/utils/time.rb index 63dc1b20419..c50d94bdf12 100644 --- a/lib/datadog/core/utils/time.rb +++ b/lib/datadog/core/utils/time.rb @@ -10,7 +10,7 @@ module Time # Current monotonic time # # @param unit [Symbol] unit for the resulting value, same as ::Process#clock_gettime, defaults to :float_second - # @return [Numeric] timestamp in the requested unit, since some unspecified starting point + # @return [Float|Integer] timestamp in the requested unit, since some unspecified starting point def get_time(unit = :float_second) Process.clock_gettime(Process::CLOCK_MONOTONIC, unit) end diff --git a/lib/datadog/di/el/compiler.rb b/lib/datadog/di/el/compiler.rb index e93d865cf60..9e0554483c4 100644 --- a/lib/datadog/di/el/compiler.rb +++ b/lib/datadog/di/el/compiler.rb @@ -22,7 +22,8 @@ def compile(ast) private - OPERATORS = { + # Steep: https://github.com/soutaro/steep/issues/363 + OPERATORS = { # steep:ignore IncompatibleAssignment 'eq' => '==', 'ne' => '!=', 'ge' => '>=', @@ -31,16 +32,19 @@ def compile(ast) 'lt' => '<', }.freeze + # Steep: https://github.com/soutaro/steep/issues/363 SINGLE_ARG_METHODS = %w[ len isEmpty isUndefined - ].freeze + ].freeze # steep:ignore IncompatibleAssignment + # Steep: https://github.com/soutaro/steep/issues/363 TWO_ARG_METHODS = %w[ startsWith endsWith contains matches getmember index instanceof - ].freeze + ].freeze # steep:ignore IncompatibleAssignment - MULTI_ARG_METHODS = { + # Steep: https://github.com/soutaro/steep/issues/363 + MULTI_ARG_METHODS = { # steep:ignore IncompatibleAssignment 'and' => '&&', 'or' => '||', }.freeze diff --git a/lib/datadog/di/probe_builder.rb b/lib/datadog/di/probe_builder.rb index 98ee87056d8..6a4bea327dc 100644 --- a/lib/datadog/di/probe_builder.rb +++ b/lib/datadog/di/probe_builder.rb @@ -20,7 +20,8 @@ module DI # # @api private module ProbeBuilder - PROBE_TYPES = { + # Steep: https://github.com/soutaro/steep/issues/363 + PROBE_TYPES = { # steep:ignore IncompatibleAssignment 'LOG_PROBE' => :log, }.freeze diff --git a/lib/datadog/di/probe_notification_builder.rb b/lib/datadog/di/probe_notification_builder.rb index bd4bc623dd7..2f70fb24b92 100644 --- a/lib/datadog/di/probe_notification_builder.rb +++ b/lib/datadog/di/probe_notification_builder.rb @@ -46,7 +46,7 @@ def build_executed(context) build_snapshot(context) end - NANOSECONDS = 10**9 + NANOSECONDS = 1_000_000_000 MILLISECONDS = 1000 def build_snapshot(context) diff --git a/lib/datadog/profiling/collectors/code_provenance.rb b/lib/datadog/profiling/collectors/code_provenance.rb index b9236620c44..4806cf30c2a 100644 --- a/lib/datadog/profiling/collectors/code_provenance.rb +++ b/lib/datadog/profiling/collectors/code_provenance.rb @@ -137,7 +137,8 @@ def initialize(kind:, name:, version:, path:, extra_paths:) end def to_json(arg = nil) - {kind: @kind, name: @name, version: @version, paths: @paths}.to_json(arg) + # Steep: https://github.com/ruby/rbs/pull/2691 + {kind: @kind, name: @name, version: @version, paths: @paths}.to_json(arg) # steep:ignore ArgumentTypeMismatch end def path diff --git a/lib/datadog/profiling/collectors/info.rb b/lib/datadog/profiling/collectors/info.rb index e3ce7933b48..7719e0e78a4 100644 --- a/lib/datadog/profiling/collectors/info.rb +++ b/lib/datadog/profiling/collectors/info.rb @@ -16,7 +16,8 @@ module Collectors class Info def initialize(settings) @profiler_info = nil - @info = { + # Steep: https://github.com/soutaro/steep/issues/363 + @info = { # steep:ignore IncompatibleAssignment platform: collect_platform_info, runtime: collect_runtime_info, application: collect_application_info(settings), diff --git a/lib/datadog/profiling/http_transport.rb b/lib/datadog/profiling/http_transport.rb index fe6d48c973a..d154c78a3f0 100644 --- a/lib/datadog/profiling/http_transport.rb +++ b/lib/datadog/profiling/http_transport.rb @@ -13,7 +13,10 @@ class HttpTransport def initialize(agent_settings:, site:, api_key:, upload_timeout_seconds:) @upload_timeout_milliseconds = (upload_timeout_seconds * 1_000).to_i - @exporter_configuration = + # Steep: multiple issues here + # first https://github.com/soutaro/steep/issues/363 + # then https://github.com/soutaro/steep/issues/1603 (remove the .freeze to see it) + @exporter_configuration = # steep:ignore IncompatibleAssignment if agentless?(site, api_key) [:agentless, site, api_key].freeze else diff --git a/lib/datadog/tracing/contrib/status_range_matcher.rb b/lib/datadog/tracing/contrib/status_range_matcher.rb index d3cee9d4be2..75c26f60f6e 100644 --- a/lib/datadog/tracing/contrib/status_range_matcher.rb +++ b/lib/datadog/tracing/contrib/status_range_matcher.rb @@ -8,7 +8,8 @@ class StatusRangeMatcher attr_reader :ranges def initialize(ranges) - @ranges = Array(ranges) + # Steep: https://github.com/ruby/rbs/issues/1874 + @ranges = Array(ranges) # steep:ignore IncompatibleAssignment end def +(other) diff --git a/lib/datadog/tracing/contrib/utils/quantization/hash.rb b/lib/datadog/tracing/contrib/utils/quantization/hash.rb index 521a1f18a2c..75b61fb8841 100644 --- a/lib/datadog/tracing/contrib/utils/quantization/hash.rb +++ b/lib/datadog/tracing/contrib/utils/quantization/hash.rb @@ -10,7 +10,9 @@ module Hash PLACEHOLDER = '?' EXCLUDE_KEYS = [].freeze SHOW_KEYS = [].freeze - DEFAULT_OPTIONS = { + + # Steep: https://github.com/soutaro/steep/issues/363 + DEFAULT_OPTIONS = { # steep:ignore IncompatibleAssignment exclude: EXCLUDE_KEYS, show: SHOW_KEYS, placeholder: PLACEHOLDER diff --git a/lib/datadog/tracing/span_event.rb b/lib/datadog/tracing/span_event.rb index b67e89a9905..9bf2974e68f 100644 --- a/lib/datadog/tracing/span_event.rb +++ b/lib/datadog/tracing/span_event.rb @@ -69,8 +69,8 @@ def to_native_format private - MIN_INT64_SIGNED = -2**63 - MAX_INT64_SIGNED = 2 << 63 - 1 + MIN_INT64_SIGNED = -2 << 62 + MAX_INT64_SIGNED = (2 << 62) - 1 # Checks the attributes hash to ensure it only contains serializable values. # Invalid values are removed from the hash. diff --git a/lib/datadog/tracing/span_operation.rb b/lib/datadog/tracing/span_operation.rb index 4dfae00ad6c..a9ada38896a 100644 --- a/lib/datadog/tracing/span_operation.rb +++ b/lib/datadog/tracing/span_operation.rb @@ -289,7 +289,8 @@ def finished? def duration return @duration_end - @duration_start if @duration_start && @duration_end - @end_time - @start_time if @start_time && @end_time + # Steep: https://github.com/soutaro/steep/issues/477 + @end_time - @start_time if @start_time && @end_time # steep:ignore NoMethod end def set_error(e) @@ -387,7 +388,8 @@ def pretty_print(q) class Events include Tracing::Events - DEFAULT_ON_ERROR = proc { |span_op, error| span_op&.set_error(error) } + # Steep: https://github.com/soutaro/steep/issues/335 + DEFAULT_ON_ERROR = proc { |span_op, error| span_op&.set_error(error) } # steep:ignore IncompatibleAssignment attr_reader \ :logger, @@ -395,7 +397,7 @@ class Events :after_stop, :before_start - def initialize(logger: Datadog.logger, on_error: nil) + def initialize(logger: Datadog.logger) @logger = logger @after_finish = AfterFinish.new @after_stop = AfterStop.new @@ -548,7 +550,10 @@ def duration_marker # Used for serialization # @return [Integer] in nanoseconds since Epoch def start_time_nano - @start_time.to_i * 1000000000 + @start_time.nsec + return 0 if @start_time.nil? + + # Steep: https://github.com/soutaro/steep/issues/477 + @start_time.to_i * 1000000000 + @start_time.nsec # steep:ignore NoMethod end # Used for serialization diff --git a/sig/datadog/appsec/context.rbs b/sig/datadog/appsec/context.rbs index 1aeb3370a9f..0da146469b8 100644 --- a/sig/datadog/appsec/context.rbs +++ b/sig/datadog/appsec/context.rbs @@ -15,7 +15,7 @@ module Datadog @interrupted: bool - ActiveContextError: ::StandardError + ActiveContextError: StandardError attr_reader trace: Tracing::TraceOperation diff --git a/sig/datadog/appsec/metrics/collector.rbs b/sig/datadog/appsec/metrics/collector.rbs index af7acb34745..9b3606d6ce4 100644 --- a/sig/datadog/appsec/metrics/collector.rbs +++ b/sig/datadog/appsec/metrics/collector.rbs @@ -17,7 +17,7 @@ module Datadog attr_accessor inputs_truncated: ::Integer - def self.new: (evals: ::Integer, matches: ::Integer, errors: ::Integer, timeouts: ::Integer, duration_ns: ::Integer, duration_ext_ns: ::Integer, inputs_truncated: ::Integer) -> void + def self.new: (evals: ::Integer, matches: ::Integer, errors: ::Integer, timeouts: ::Integer, duration_ns: ::Integer, duration_ext_ns: ::Integer, inputs_truncated: ::Integer) -> Store end @mutex: Mutex diff --git a/sig/datadog/appsec/security_engine/engine.rbs b/sig/datadog/appsec/security_engine/engine.rbs index 9958b76edfd..35b081515e3 100644 --- a/sig/datadog/appsec/security_engine/engine.rbs +++ b/sig/datadog/appsec/security_engine/engine.rbs @@ -8,7 +8,7 @@ module Datadog @ruleset_version: ::String - @reconfigured_ruleset_version: ::String? + @reconfigured_ruleset_version: ::String DEFAULT_RULES_CONFIG_PATH: ::String TELEMETRY_ACTIONS: ::Array[::String] diff --git a/sig/datadog/core/configuration/option_definition.rbs b/sig/datadog/core/configuration/option_definition.rbs index 85c58617683..ddf1b268f42 100644 --- a/sig/datadog/core/configuration/option_definition.rbs +++ b/sig/datadog/core/configuration/option_definition.rbs @@ -4,19 +4,31 @@ module Datadog class OptionDefinition type option_type = String | Integer | Float | Rational | Symbol | bool | Array[untyped] | Hash[untyped, untyped] | nil - type option_proc = (^(Options::GenericSettingsClass _settings) [self: Options::GenericSettingsClass] -> option_type) + type option_proc = (^(Options::GenericSettingsClass settings) [self: Options::GenericSettingsClass] -> option_type) - type helper_proc = (^(?) [self: Options::GenericSettingsClass] -> untyped) + type generic_proc = (^(?) [self: Options::GenericSettingsClass] -> untyped) type meta = { - default: (option_type | option_proc | Options::GenericSettingsClass)?, - default_proc: option_proc?, - env: String?, - env_parser: (^(String env_value) [self: Options::GenericSettingsClass] -> Option::env_value)?, - after_set: (^(option_type value, option_type old_value, Option::Precedence::Value precedence) [self: Options::GenericSettingsClass] -> void)?, - resetter: (^(option_type value) [self: Options::GenericSettingsClass] -> option_type)?, - setter: (^(option_type new_value, option_type old_value) [self: Options::GenericSettingsClass] -> option_type), - type: Symbol?, + ?default: (option_type | option_proc | Options::GenericSettingsClass)?, + ?default_proc: generic_proc?, + ?env: String?, + ?env_parser: (^(String env_value) [self: Options::GenericSettingsClass] -> Option::env_value)?, + ?after_set: (^(option_type value, option_type old_value, Option::Precedence::Value precedence) [self: Options::GenericSettingsClass] -> void)?, + ?resetter: (^(option_type value) [self: Options::GenericSettingsClass] -> option_type)?, + ?setter: (^(option_type new_value, option_type old_value) [self: Options::GenericSettingsClass] -> option_type)?, + ?type: Symbol?, + ?type_options: Hash[Symbol, untyped] + } + + type meta_with_type_options = { + ?default: (option_type | option_proc | Options::GenericSettingsClass)?, + ?default_proc: generic_proc?, + ?env: String?, + ?env_parser: (^(String env_value) [self: Options::GenericSettingsClass] -> Option::env_value)?, + ?after_set: (^(option_type value, option_type old_value, Option::Precedence::Value precedence) [self: Options::GenericSettingsClass] -> void)?, + ?resetter: (^(option_type value) [self: Options::GenericSettingsClass] -> option_type)?, + ?setter: (^(option_type new_value, option_type old_value) [self: Options::GenericSettingsClass] -> option_type)?, + ?type: Symbol?, type_options: Hash[Symbol, untyped] } @@ -24,7 +36,7 @@ module Datadog attr_reader default: option_type | option_proc | Options::GenericSettingsClass - attr_reader default_proc: option_proc? + attr_reader default_proc: generic_proc? attr_reader env: String? @@ -42,7 +54,7 @@ module Datadog attr_reader type_options: Hash[Symbol, untyped] - def initialize: (String | Symbol name, meta meta) ?{ (option_type new_value, option_type old_value) [self: Options::GenericSettingsClass] -> option_type } -> void + def initialize: (String | Symbol name, meta_with_type_options meta) ?{ (option_type new_value, option_type old_value) [self: Options::GenericSettingsClass] -> option_type } -> void def build: (Options::GenericSettingsClass context) -> Option @@ -50,13 +62,13 @@ module Datadog class InvalidOptionError < StandardError end - attr_reader helpers: Hash[Symbol, helper_proc] + attr_reader helpers: Hash[Symbol, generic_proc] @env: String? @env_parser: (^(String env_value) [self: Options::GenericSettingsClass] -> Option::env_value)? @default: option_type | option_proc | Options::GenericSettingsClass - @default_proc: option_proc? - @helpers: Hash[Symbol, helper_proc] + @default_proc: generic_proc? + @helpers: Hash[Symbol, generic_proc] @name: Symbol @after_set: (^(option_type value, option_type old_value, Option::Precedence::Value precedence) [self: Options::GenericSettingsClass] -> void)? @resetter: (^(option_type value) [self: Options::GenericSettingsClass] -> option_type)? @@ -71,9 +83,9 @@ module Datadog def env_parser: () ?{ (String env_value) [self: Options::GenericSettingsClass] -> Option::env_value } -> void # can also be a class that includes Configuration::Base for new settings - def default: (?(option_type | option_proc | Options::GenericSettingsClass) value) ?{ () -> (option_type | option_proc | Options::GenericSettingsClass) } -> void + def default: (?(option_type | option_proc | Options::GenericSettingsClass) value) ?{ (Options::GenericSettingsClass settings) [self: Options::GenericSettingsClass] -> option_type } -> void - def default_proc: () ?{ (Options::GenericSettingsClass _settings) [self: Options::GenericSettingsClass] -> option_type } -> void + def default_proc: () ?{ (?) [self: Options::GenericSettingsClass] -> untyped } -> void def type: (Symbol? value, ?nilable: bool) -> void diff --git a/sig/datadog/core/configuration/options.rbs b/sig/datadog/core/configuration/options.rbs index b9f97931c7c..3f06a9b4822 100644 --- a/sig/datadog/core/configuration/options.rbs +++ b/sig/datadog/core/configuration/options.rbs @@ -41,9 +41,9 @@ module Datadog private - def default_helpers: (Symbol | String name) -> Hash[Symbol, OptionDefinition::helper_proc] + def default_helpers: (Symbol | String name) -> Hash[Symbol, OptionDefinition::generic_proc] - def define_helpers: (Hash[Symbol, OptionDefinition::helper_proc] helpers) -> void + def define_helpers: (Hash[Symbol, OptionDefinition::generic_proc] helpers) -> void # Fake methods to make it work with RBS. RBS cannot understand that this module is only used in a class context. def superclass: () -> singleton(Options) diff --git a/sig/datadog/core/rate_limiter.rbs b/sig/datadog/core/rate_limiter.rbs index 62c3d18dbb6..247de4d4f39 100644 --- a/sig/datadog/core/rate_limiter.rbs +++ b/sig/datadog/core/rate_limiter.rbs @@ -7,10 +7,7 @@ module Datadog end class TokenBucket < RateLimiter - # This should be `::Numeric`, but it's used with `*` method on another - # `Numeric` which makes steep fail with an error `Ruby::UnresolvedOverloading` - # "Cannot find compatible overloading of method" - @rate: ::Float + @rate: ::Float | ::Integer @max_tokens: ::Numeric @@ -20,26 +17,19 @@ module Datadog @conforming_messages: ::Integer - # This should be `::Integer?` but steep can't see conditional branching - # which safe-guards us from errors like "undefined method for NilClass" - @prev_conforming_messages: ::Integer + @prev_conforming_messages: ::Integer? - # This should be `::Integer?` but steep can't see conditional branching - # which safe-guards us from errors like "undefined method for NilClass" - @prev_total_messages: ::Integer + @prev_total_messages: ::Integer? - # This should be `::Integer?`, but steep can't see conditional branching - # which safe-guards us from errors like "undefined method for NilClass" - @current_window: ::Numeric + @current_window: ::Float? @last_refill: ::Numeric - # This should be `::Numeric`, but has to follow `@rate` type definition - attr_reader rate: ::Float + attr_reader rate: ::Float | ::Integer attr_reader max_tokens: ::Numeric - def initialize: (::Numeric rate, ?::Numeric max_tokens) -> void + def initialize: (::Float | ::Integer rate, ?::Numeric max_tokens) -> void def allow?: (?::Integer size) -> bool diff --git a/sig/datadog/core/telemetry/worker.rbs b/sig/datadog/core/telemetry/worker.rbs index 4db805e7221..8a19e09899a 100644 --- a/sig/datadog/core/telemetry/worker.rbs +++ b/sig/datadog/core/telemetry/worker.rbs @@ -14,13 +14,13 @@ module Datadog @emitter: Emitter @metrics_manager: MetricsManager @sent_started_event: bool - @shutdown_timeout: Integer + @shutdown_timeout: Float | Integer @buffer_size: Integer @dependency_collection: bool @ticks_per_heartbeat: Integer @current_ticks: Integer @logger: ::Logger - + attr_reader logger: ::Logger attr_reader initial_event: Telemetry::Event::Base attr_reader initial_event_once: Datadog::Core::Utils::OnlyOnceSuccessful @@ -38,7 +38,7 @@ module Datadog def enqueue: (Event::Base event) -> void def dequeue: () -> Array[Event::Base] - + def flush: () -> (true | false) private diff --git a/sig/datadog/core/workers/polling.rbs b/sig/datadog/core/workers/polling.rbs index 43c1360a92c..6b978e54cd0 100644 --- a/sig/datadog/core/workers/polling.rbs +++ b/sig/datadog/core/workers/polling.rbs @@ -10,7 +10,7 @@ module Datadog def perform: (*untyped args) -> untyped end - def stop: (?bool force_stop, ?::Integer timeout) -> untyped + def stop: (?bool force_stop, ?::Integer | ::Float timeout) -> untyped def enabled?: () -> bool diff --git a/sig/datadog/di/instrumenter.rbs b/sig/datadog/di/instrumenter.rbs index ad750db14b5..c6744e69001 100644 --- a/sig/datadog/di/instrumenter.rbs +++ b/sig/datadog/di/instrumenter.rbs @@ -3,34 +3,34 @@ module Datadog class Instrumenter class Location def initialize: (String path, Integer lineno, String? label) -> void - + def path: () -> String def lineno: () -> Integer def label: () -> String? end - + @settings: untyped @serializer: Serializer - @code_tracker: CodeTracker - + @code_tracker: CodeTracker? + @logger: DI::Logger - + @telemetry: Core::Telemetry::Component? @lock: Mutex - def initialize: (untyped settings, Serializer serializer, DI::Logger logger, ?code_tracker: CodeTracker?, ?telemetry: Core::Telemetry::Component) -> void + def initialize: (untyped settings, Serializer serializer, DI::Logger logger, ?code_tracker: CodeTracker?, ?telemetry: Core::Telemetry::Component?) -> void attr_reader settings: untyped attr_reader serializer: Serializer - attr_reader code_tracker: CodeTracker - + attr_reader code_tracker: CodeTracker? + attr_reader logger: DI::Logger - + attr_reader telemetry: Core::Telemetry::Component? def hook_method: (Probe probe, untyped responder) -> void @@ -43,7 +43,7 @@ module Datadog def hook: (Probe probe, untyped responder) -> void def unhook: (Probe probe) -> void - + def self.get_local_variables: (TracePoint trace_point) -> Hash[untyped, untyped] def self.get_instance_variables: (Object self) -> Hash[untyped, untyped] diff --git a/sig/datadog/di/probe.rbs b/sig/datadog/di/probe.rbs index 39a9f5e3f25..91137eeb789 100644 --- a/sig/datadog/di/probe.rbs +++ b/sig/datadog/di/probe.rbs @@ -15,8 +15,8 @@ module Datadog @method_name: String? - @template: String - @template_segments: Array[untyped] + @template: String? + @template_segments: Array[untyped]? @capture_snapshot: bool @@ -26,7 +26,7 @@ module Datadog 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, ?condition: DI::EL::Expression?, - ?max_capture_depth: Integer, ?max_capture_attribute_count: Integer?, ?rate_limit: Integer) -> void + ?max_capture_depth: Integer?, ?max_capture_attribute_count: Integer?, ?rate_limit: Integer?) -> void attr_reader condition: DI::EL::Expression? @@ -46,8 +46,8 @@ module Datadog attr_reader max_capture_attribute_count: Integer? - attr_reader template: String - attr_reader template_segments: Array[untyped] + attr_reader template: String? + attr_reader template_segments: Array[untyped]? attr_reader rate_limiter: Datadog::Core::RateLimiter def capture_snapshot?: () -> bool diff --git a/sig/datadog/di/probe_notification_builder.rbs b/sig/datadog/di/probe_notification_builder.rbs index 30ec3871bcd..32cc99a5a8c 100644 --- a/sig/datadog/di/probe_notification_builder.rbs +++ b/sig/datadog/di/probe_notification_builder.rbs @@ -3,7 +3,7 @@ module Datadog class ProbeNotificationBuilder NANOSECONDS: Integer MILLISECONDS: Integer - + @serializer: Serializer def initialize: (untyped settings, Serializer serializer) -> void @@ -35,12 +35,12 @@ module Datadog def timestamp_now: () -> Integer def get_local_variables: (TracePoint trace_point) -> Hash[Symbol,untyped] - + def active_trace: () -> Datadog::Tracing::TraceSegment? def active_span: () -> Datadog::Tracing::SpanOperation? def tags: () -> untyped - + def serialized_tags: () -> untyped end end diff --git a/sig/datadog/di/serializer.rbs b/sig/datadog/di/serializer.rbs index 1ff7f85effc..f08329a19e8 100644 --- a/sig/datadog/di/serializer.rbs +++ b/sig/datadog/di/serializer.rbs @@ -8,15 +8,15 @@ module Datadog @redactor: untyped - @telemetry: Core::Telemetry::Component + @telemetry: Core::Telemetry::Component? - def initialize: (untyped settings, untyped redactor, ?telemetry: Core::Telemetry::Component) -> void + def initialize: (untyped settings, untyped redactor, ?telemetry: Core::Telemetry::Component?) -> void attr_reader settings: Datadog::Core::Configuration::Settings attr_reader redactor: Datadog::DI::Redactor - attr_reader telemetry: Core::Telemetry::Component + attr_reader telemetry: Core::Telemetry::Component? def combine_args: (untyped args, untyped kwargs, untyped target_self) -> untyped def serialize_args: (untyped args, untyped kwargs, untyped instance_vars, ?depth: Integer, ?attribute_count: Integer?) -> untyped @@ -24,7 +24,7 @@ module Datadog def serialize_value: (untyped value, ?name: String?, ?depth: Integer, ?attribute_count: Integer?, ?type: Class?) -> untyped def serialize_value_for_message: (untyped value, ?::Integer depth) -> untyped - def self.register: (?condition: Proc) { + def self.register: (?condition: Proc?) { (serializer: Serializer, value: untyped, name: Symbol, depth: Integer, ?attribute_count: Integer?) -> untyped } -> void private diff --git a/sig/datadog/error_tracking/ext.rbs b/sig/datadog/error_tracking/ext.rbs index 9d356f06ace..05745b5c3a9 100644 --- a/sig/datadog/error_tracking/ext.rbs +++ b/sig/datadog/error_tracking/ext.rbs @@ -11,7 +11,7 @@ module Datadog HANDLED_ERRORS_THIRD_PARTY: "third_party" - DEFAULT_HANDLED_ERRORS: "" + DEFAULT_HANDLED_ERRORS: nil VALID_HANDLED_ERRORS: ::Array[untyped] diff --git a/sig/datadog/profiling/collectors/code_provenance.rbs b/sig/datadog/profiling/collectors/code_provenance.rbs index 1bc6ce0ac05..3e52e1e10ea 100644 --- a/sig/datadog/profiling/collectors/code_provenance.rbs +++ b/sig/datadog/profiling/collectors/code_provenance.rbs @@ -3,7 +3,7 @@ module Datadog module Collectors class CodeProvenance def initialize: (?standard_library_path: String, ?ruby_native_filename: String?) -> void - def refresh: (?loaded_files: Array[String], ?loaded_specs: Array[Gem::Specification]) -> self + def refresh: (?loaded_files: Array[String], ?loaded_specs: Array[Gem::BasicSpecification]) -> self def generate_json: () -> ::String private @@ -16,7 +16,7 @@ module Datadog def record_library: (Library) -> void def sort_libraries_by_longest_path_first: () -> void - def record_loaded_specs: (Array[Gem::Specification]) -> void + def record_loaded_specs: (Array[Gem::BasicSpecification]) -> void def record_loaded_files: (Array[String]) -> void class Library @@ -32,7 +32,7 @@ module Datadog def version: -> String def path: -> String - def to_json: (?JSON::State state) -> String + def to_json: (?JSON::State? state) -> String end end end diff --git a/sig/datadog/profiling/http_transport.rbs b/sig/datadog/profiling/http_transport.rbs index 3e35adbc7ba..350faa55b38 100644 --- a/sig/datadog/profiling/http_transport.rbs +++ b/sig/datadog/profiling/http_transport.rbs @@ -1,7 +1,7 @@ module Datadog module Profiling class HttpTransport - type exporter_configuration_array = [:agentless | :agent, untyped] + type exporter_configuration_array = [:agentless, String?, String?] | [:agent, String] attr_reader exporter_configuration: exporter_configuration_array diff --git a/sig/datadog/tracing/contrib/graphql/unified_trace.rbs b/sig/datadog/tracing/contrib/graphql/unified_trace.rbs index e23a949034b..9e94f54b1f2 100644 --- a/sig/datadog/tracing/contrib/graphql/unified_trace.rbs +++ b/sig/datadog/tracing/contrib/graphql/unified_trace.rbs @@ -91,7 +91,7 @@ module Datadog private - def trace: (Proc callable, String trace_key, (String | nil) resource, ?^(SpanOperation) -> void before, ?^(SpanOperation) -> void after, **untyped kwargs) ?{ (SpanOperation) -> void } -> untyped + def trace: (Proc callable, String trace_key, (String | nil) resource, ?(^(SpanOperation) -> void)? before, ?(^(SpanOperation) -> void)? after, **untyped kwargs) ?{ (SpanOperation) -> void } -> untyped def multiplex_resource: (GraphQL::Execution::Multiplex? multiplex) -> String? diff --git a/sig/datadog/tracing/metadata/tagging.rbs b/sig/datadog/tracing/metadata/tagging.rbs index c140a142c02..abec99635e6 100644 --- a/sig/datadog/tracing/metadata/tagging.rbs +++ b/sig/datadog/tracing/metadata/tagging.rbs @@ -3,7 +3,7 @@ module Datadog module Metadata module Tagging NUMERIC_TAG_SIZE_RANGE: ::Range[untyped] - ENSURE_AGENT_TAGS: ::Hash[untyped, true] + ENSURE_AGENT_TAGS: ::Hash[untyped, bool] def get_tag: (untyped key) -> untyped def set_tag: (untyped key, ?untyped? value) -> untyped diff --git a/sig/datadog/tracing/span.rbs b/sig/datadog/tracing/span.rbs index 9195c3a5e8f..0beb7727234 100644 --- a/sig/datadog/tracing/span.rbs +++ b/sig/datadog/tracing/span.rbs @@ -27,7 +27,7 @@ module Datadog ?id: (Integer | nil), ?meta: (Hash[String, String] | nil), ?metrics: (Hash[String, Float] | nil), - ?metastruct: Hash[String | Symbol, untyped], + ?metastruct: Hash[String | Symbol, untyped]?, ?parent_id: Integer, ?resource: String, ?service: (String | nil), diff --git a/sig/datadog/tracing/span_event.rbs b/sig/datadog/tracing/span_event.rbs index 643c3062fc1..97f0b6e7e38 100644 --- a/sig/datadog/tracing/span_event.rbs +++ b/sig/datadog/tracing/span_event.rbs @@ -16,7 +16,7 @@ module Datadog attr_reader attributes: attributes attr_reader time_unix_nano: untyped # TODO: Typing this also makes to_hash internal typecheck fail - def initialize: (String name, ?attributes: attributes, ?time_unix_nano: Integer) -> void + def initialize: (String name, ?attributes: attributes?, ?time_unix_nano: Integer?) -> void def to_hash: -> Hash[String, untyped] # TODO: Steep does not track Hash keys when they are added with `hash[:key] = val`. @@ -44,4 +44,4 @@ module Datadog def validate_scalar_attribute!: (String key, attributeValue value)-> bool end end -end \ No newline at end of file +end diff --git a/sig/datadog/tracing/span_operation.rbs b/sig/datadog/tracing/span_operation.rbs index e08c06112cf..011f8f8a315 100644 --- a/sig/datadog/tracing/span_operation.rbs +++ b/sig/datadog/tracing/span_operation.rbs @@ -14,7 +14,7 @@ module Datadog attr_reader span_events: untyped - attr_reader end_time: ::Time + attr_reader end_time: ::Time? attr_reader id: untyped @@ -26,7 +26,7 @@ module Datadog attr_reader service: untyped - attr_reader start_time: ::Time + attr_reader start_time: ::Time? attr_reader trace_id: untyped @@ -37,8 +37,8 @@ module Datadog def initialize: ( String name, ?logger: Core::Logger, - ?events: Events, - ?on_error: on_error, + ?events: Events?, + ?on_error: on_error?, ?parent_id: Integer, ?resource: String, ?service: (String | nil), @@ -106,7 +106,7 @@ module Datadog attr_reader before_start: untyped - def initialize: (?logger: Core::Logger, ?on_error: on_error) -> void + def initialize: (?logger: Core::Logger) -> void def on_error: () -> OnError diff --git a/sig/datadog/version.rbs b/sig/datadog/version.rbs index 430a1e00940..10a73e6a08f 100644 --- a/sig/datadog/version.rbs +++ b/sig/datadog/version.rbs @@ -1,18 +1,18 @@ module Datadog module VERSION - MAJOR: 2 + MAJOR: Integer - MINOR: 0 + MINOR: Integer - PATCH: 0 + PATCH: Integer - PRE: "dev" + PRE: String? - BUILD: nil + BUILD: String? - STRING: untyped + STRING: String - MINIMUM_RUBY_VERSION: "2.5.0" - MAXIMUM_RUBY_VERSION: "3.4" + MINIMUM_RUBY_VERSION: String + MAXIMUM_RUBY_VERSION: String end end