checkoff 0.255.0 → 0.257.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -44,18 +44,15 @@ module Checkoff
44
44
 
45
45
  return next_week?(date_or_time) if period == :next_week
46
46
 
47
- # @sg-ignore
48
- return day_of_week?(date_or_time, period) if %i[monday tuesday wednesday thursday friday saturday
49
- sunday].include?(period)
47
+ return day_of_week?(date_or_time, T.cast(period, Symbol)) if %i[monday tuesday wednesday thursday friday
48
+ saturday sunday].include?(period)
50
49
 
51
50
  return true if period == :indefinite
52
51
 
53
52
  return now_or_before?(date_or_time) if period == :now_or_before
54
53
 
55
54
  if period.is_a?(Array)
56
- # @sg-ignore
57
- # @type [Symbol]
58
- period_name = period.first
55
+ period_name = T.cast(period.first, Symbol)
59
56
  args = period[1..]
60
57
 
61
58
  return compound_in_period?(date_or_time, period_name, *args)
@@ -209,7 +206,7 @@ module Checkoff
209
206
 
210
207
  # @param date_or_time [Date,Time,nil]
211
208
  # @param period_name [Symbol]
212
- # @param args [Object]
209
+ # @param args [Array<Object>]
213
210
  def compound_in_period?(date_or_time, period_name, *args)
214
211
  return less_than_n_days_ago?(date_or_time, *args) if period_name == :less_than_n_days_ago
215
212
 
@@ -225,7 +222,6 @@ module Checkoff
225
222
 
226
223
  return between_relative_days?(date_or_time, *args) if period_name == :between_relative_days
227
224
 
228
- # @sg-ignore
229
225
  raise "Teach me how to handle period [#{period_name.inspect}, #{args.map(&:inspect).join(', ')}]"
230
226
  end
231
227
 
@@ -4,5 +4,5 @@
4
4
  # Command-line and gem client for Asana (unofficial)
5
5
  module Checkoff
6
6
  # Version of library
7
- VERSION = '0.255.0'
7
+ VERSION = '0.257.0'
8
8
  end
@@ -44,7 +44,8 @@ module Checkoff
44
44
  cache_method :workspace, LONG_CACHE_TIME
45
45
 
46
46
  # @return [Asana::Resources::Workspace]
47
- # @sg-ignore
47
+ # @sg-ignore @asana_workspace.find_by_id return type could not be inferred — calling a
48
+ # class method through a Class<T>-typed ivar is a known Solargraph dispatch limitation
48
49
  def default_workspace
49
50
  @asana_workspace.find_by_id(client, default_workspace_gid)
50
51
  end
@@ -61,7 +62,9 @@ module Checkoff
61
62
  end
62
63
 
63
64
  # @return [String]
64
- # @sg-ignore
65
+ # @sg-ignore @config.fetch return type could not be inferred — @config is intentionally
66
+ # dual-typed [Hash, EnvFallbackConfigLoader] throughout this codebase; Solargraph can't
67
+ # unify #fetch across that union
65
68
  def default_workspace_gid
66
69
  @config.fetch(:default_workspace_gid)
67
70
  end
data/rbi/checkoff.rbi CHANGED
@@ -82,7 +82,7 @@ module Overcommit
82
82
  end
83
83
 
84
84
  module Checkoff
85
- VERSION = '0.255.0'
85
+ VERSION = '0.257.0'
86
86
 
87
87
  class Attachments
88
88
  include Logging
@@ -2449,7 +2449,7 @@ end
2449
2449
  # typed: ignore
2450
2450
  # Command-line and gem client for Asana (unofficial)
2451
2451
  module Checkoff
2452
- VERSION = T.let('0.255.0', T.untyped)
2452
+ VERSION = T.let('0.257.0', T.untyped)
2453
2453
 
2454
2454
  # Move tasks from one place to another
2455
2455
  class MvSubcommand
@@ -2536,7 +2536,7 @@ module Checkoff
2536
2536
  def run; end
2537
2537
 
2538
2538
  # _@param_ `project_arg`
2539
- sig { params(project_arg: String).returns(T.any(Symbol, String)) }
2539
+ sig { params(project_arg: T.any(Symbol, String)).returns(T.any(Symbol, String)) }
2540
2540
  def project_arg_to_name(project_arg); end
2541
2541
 
2542
2542
  # Returns the value of attribute from_workspace_name.
@@ -2792,7 +2792,7 @@ module Checkoff
2792
2792
  def tasks_by_tag_gid(workspace_name, tag_gid, only_uncompleted: true, extra_fields: []); end
2793
2793
 
2794
2794
  # sord warn - Asana::Resources::Tag wasn't able to be resolved to a constant in this project
2795
- # @sg-ignore
2795
+ # @sg-ignore nil check above is not flow-sensitive
2796
2796
  #
2797
2797
  # _@param_ `workspace_name`
2798
2798
  #
@@ -2973,7 +2973,8 @@ module Checkoff
2973
2973
  # sord warn - Asana::Resources::Task wasn't able to be resolved to a constant in this project
2974
2974
  # Add a task
2975
2975
  #
2976
- # @sg-ignore
2976
+ # @sg-ignore @asana_task.create return type could not be inferred — calling a class method
2977
+ # through a Class<T>-typed ivar is a known Solargraph dispatch limitation
2977
2978
  #
2978
2979
  # _@param_ `name`
2979
2980
  #
@@ -2995,7 +2996,6 @@ module Checkoff
2995
2996
  # sord warn - Asana::Resources::Task wasn't able to be resolved to a constant in this project
2996
2997
  # True if any of the task's dependencies are marked incomplete
2997
2998
  #
2998
- # @sg-ignore
2999
2999
  # Include 'dependencies.gid' in extra_fields of task passed in.
3000
3000
  #
3001
3001
  # _@param_ `task`
@@ -3088,7 +3088,9 @@ module Checkoff
3088
3088
  sig { returns(Checkoff::Projects) }
3089
3089
  def projects; end
3090
3090
 
3091
- # @sg-ignore
3091
+ # @sg-ignore @config.fetch return type could not be inferred — @config is intentionally
3092
+ # dual-typed [Hash, EnvFallbackConfigLoader] throughout this codebase; Solargraph can't
3093
+ # unify #fetch across that union
3092
3094
  sig { returns(String) }
3093
3095
  def default_assignee_gid; end
3094
3096
 
@@ -3115,7 +3117,7 @@ module Checkoff
3115
3117
  sig { params(message: T.nilable(Object), block: T.untyped).void }
3116
3118
  def finer(message = nil, &block); end
3117
3119
 
3118
- # @sg-ignore
3120
+ # @sg-ignore return type could not be inferred — cascades from the ENV.fetch RBS gap below
3119
3121
  sig { returns(Symbol) }
3120
3122
  def log_level; end
3121
3123
 
@@ -3223,7 +3225,7 @@ module Checkoff
3223
3225
  sig { params(message: T.nilable(Object), block: T.untyped).void }
3224
3226
  def finer(message = nil, &block); end
3225
3227
 
3226
- # @sg-ignore
3228
+ # @sg-ignore return type could not be inferred — cascades from the ENV.fetch RBS gap below
3227
3229
  sig { returns(Symbol) }
3228
3230
  def log_level; end
3229
3231
 
@@ -3343,7 +3345,7 @@ module Checkoff
3343
3345
  # _@param_ `period_name`
3344
3346
  #
3345
3347
  # _@param_ `args`
3346
- sig { params(date_or_time: T.nilable(T.any(Date, Time)), period_name: Symbol, args: Object).returns(T::Boolean) }
3348
+ sig { params(date_or_time: T.nilable(T.any(Date, Time)), period_name: Symbol, args: T::Array[Object]).returns(T::Boolean) }
3347
3349
  def compound_in_period?(date_or_time, period_name, *args); end
3348
3350
 
3349
3351
  sig { void }
@@ -3372,7 +3374,7 @@ module Checkoff
3372
3374
  sig { params(message: T.nilable(Object), block: T.untyped).void }
3373
3375
  def finer(message = nil, &block); end
3374
3376
 
3375
- # @sg-ignore
3377
+ # @sg-ignore return type could not be inferred — cascades from the ENV.fetch RBS gap below
3376
3378
  sig { returns(Symbol) }
3377
3379
  def log_level; end
3378
3380
  end
@@ -3525,7 +3527,7 @@ module Checkoff
3525
3527
  def project(workspace_name, project_name, extra_fields: []); end
3526
3528
 
3527
3529
  # sord warn - Asana::Resources::Project wasn't able to be resolved to a constant in this project
3528
- # @sg-ignore
3530
+ # @sg-ignore nil check above is not flow-sensitive
3529
3531
  #
3530
3532
  # _@param_ `workspace_name`
3531
3533
  #
@@ -3645,7 +3647,7 @@ module Checkoff
3645
3647
  sig { params(message: T.nilable(Object), block: T.untyped).void }
3646
3648
  def finer(message = nil, &block); end
3647
3649
 
3648
- # @sg-ignore
3650
+ # @sg-ignore return type could not be inferred — cascades from the ENV.fetch RBS gap below
3649
3651
  sig { returns(Symbol) }
3650
3652
  def log_level; end
3651
3653
 
@@ -3730,7 +3732,7 @@ module Checkoff
3730
3732
  # _@param_ `extra_fields`
3731
3733
  sig do
3732
3734
  params(
3733
- workspace_name: String,
3735
+ workspace_name: T.any(String, Symbol),
3734
3736
  project_name: T.any(String, Symbol),
3735
3737
  only_uncompleted: T::Boolean,
3736
3738
  extra_fields: T::Array[String]
@@ -3909,7 +3911,7 @@ module Checkoff
3909
3911
  sig { params(message: T.nilable(Object), block: T.untyped).void }
3910
3912
  def finer(message = nil, &block); end
3911
3913
 
3912
- # @sg-ignore
3914
+ # @sg-ignore return type could not be inferred — cascades from the ENV.fetch RBS gap below
3913
3915
  sig { returns(Symbol) }
3914
3916
  def log_level; end
3915
3917
 
@@ -3987,10 +3989,10 @@ module Checkoff
3987
3989
  # expected to move to the new-style way of representing sections
3988
3990
  # as memberships with a separate API within a task.
3989
3991
  #
3990
- # @sg-ignore
3992
+ # @sg-ignore Checkoff::Subtasks#subtask_section? return type could not be inferred
3991
3993
  #
3992
3994
  # _@param_ `subtask`
3993
- sig { params(subtask: Asana::Resources::Task).returns(T::Boolean) }
3995
+ sig { params(subtask: Asana::Resources::Task).returns(T.nilable(T::Boolean)) }
3994
3996
  def subtask_section?(subtask); end
3995
3997
 
3996
3998
  # sord warn - Asana::Resources::Task wasn't able to be resolved to a constant in this project
@@ -4209,7 +4211,7 @@ module Checkoff
4209
4211
  def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), clients: Checkoff::Clients.new(config:), client: clients.client, projects: Checkoff::Projects.new(config:, client:), workspaces: Checkoff::Workspaces.new(config:, client:)); end
4210
4212
 
4211
4213
  # sord warn - Asana::Resources::Portfolio wasn't able to be resolved to a constant in this project
4212
- # @sg-ignore
4214
+ # @sg-ignore nil check above is not flow-sensitive
4213
4215
  #
4214
4216
  # _@param_ `workspace_name`
4215
4217
  #
@@ -4292,7 +4294,8 @@ module Checkoff
4292
4294
  def workspace(workspace_name); end
4293
4295
 
4294
4296
  # sord warn - Asana::Resources::Workspace wasn't able to be resolved to a constant in this project
4295
- # @sg-ignore
4297
+ # @sg-ignore @asana_workspace.find_by_id return type could not be inferred — calling a
4298
+ # class method through a Class<T>-typed ivar is a known Solargraph dispatch limitation
4296
4299
  sig { returns(Asana::Resources::Workspace) }
4297
4300
  def default_workspace; end
4298
4301
 
@@ -4303,7 +4306,9 @@ module Checkoff
4303
4306
  sig { params(workspace_name: T.any(String, Symbol)).returns(Asana::Resources::Workspace) }
4304
4307
  def workspace_or_raise(workspace_name); end
4305
4308
 
4306
- # @sg-ignore
4309
+ # @sg-ignore @config.fetch return type could not be inferred — @config is intentionally
4310
+ # dual-typed [Hash, EnvFallbackConfigLoader] throughout this codebase; Solargraph can't
4311
+ # unify #fetch across that union
4307
4312
  sig { returns(String) }
4308
4313
  def default_workspace_gid; end
4309
4314
 
@@ -4340,6 +4345,7 @@ module Checkoff
4340
4345
  end
4341
4346
  def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), workspaces: Checkoff::Workspaces.new(config:), clients: Checkoff::Clients.new(config:), client: clients.client); end
4342
4347
 
4348
+ # sord warn - Asana::Resources::Task wasn't able to be resolved to a constant in this project
4343
4349
  # sord warn - Asana::Resources::Attachment wasn't able to be resolved to a constant in this project
4344
4350
  # _@param_ `url`
4345
4351
  #
@@ -4353,7 +4359,7 @@ module Checkoff
4353
4359
  sig do
4354
4360
  params(
4355
4361
  url: String,
4356
- resource: Asana::Resources::Resource,
4362
+ resource: Asana::Resources::Task,
4357
4363
  attachment_name: T.nilable(String),
4358
4364
  verify_mode: Integer,
4359
4365
  just_the_url: T::Boolean
@@ -4361,7 +4367,6 @@ module Checkoff
4361
4367
  end
4362
4368
  def create_attachment_from_url!(url, resource, attachment_name: nil, verify_mode: OpenSSL::SSL::VERIFY_PEER, just_the_url: false); end
4363
4369
 
4364
- # sord warn - URI wasn't able to be resolved to a constant in this project
4365
4370
  # Writes contents of URL to a temporary file with the same
4366
4371
  # extension as the URL using Net::HTTP, raising an exception if
4367
4372
  # not succesful
@@ -4369,7 +4374,7 @@ module Checkoff
4369
4374
  # _@param_ `uri`
4370
4375
  #
4371
4376
  # _@param_ `verify_mode` — - e.g., OpenSSL::SSL::VERIFY_NONE,OpenSSL::SSL::VERIFY_PEER
4372
- sig { params(uri: URI, verify_mode: Integer, block: T.untyped).returns(Object) }
4377
+ sig { params(uri: URI::Generic, verify_mode: Integer, block: T.untyped).returns(Object) }
4373
4378
  def download_uri(uri, verify_mode: OpenSSL::SSL::VERIFY_PEER, &block); end
4374
4379
 
4375
4380
  # sord duck - #read_body looks like a duck type, replacing with untyped
@@ -4377,6 +4382,7 @@ module Checkoff
4377
4382
  sig { params(response: T.untyped).void }
4378
4383
  def write_tempfile_from_response(response); end
4379
4384
 
4385
+ # sord warn - Asana::Resources::Task wasn't able to be resolved to a constant in this project
4380
4386
  # sord warn - Asana::Resources::Attachment wasn't able to be resolved to a constant in this project
4381
4387
  # _@param_ `url`
4382
4388
  #
@@ -4388,20 +4394,21 @@ module Checkoff
4388
4394
  sig do
4389
4395
  params(
4390
4396
  url: String,
4391
- resource: Asana::Resources::Resource,
4397
+ resource: Asana::Resources::Task,
4392
4398
  attachment_name: T.nilable(String),
4393
4399
  verify_mode: Integer
4394
4400
  ).returns(Asana::Resources::Attachment)
4395
4401
  end
4396
4402
  def create_attachment_from_downloaded_url!(url, resource, attachment_name:, verify_mode: OpenSSL::SSL::VERIFY_PEER); end
4397
4403
 
4404
+ # sord warn - Asana::Resources::Task wasn't able to be resolved to a constant in this project
4398
4405
  # sord warn - Asana::Resources::Attachment wasn't able to be resolved to a constant in this project
4399
4406
  # _@param_ `url`
4400
4407
  #
4401
4408
  # _@param_ `resource`
4402
4409
  #
4403
4410
  # _@param_ `attachment_name`
4404
- sig { params(url: String, resource: Asana::Resources::Resource, attachment_name: T.nilable(String)).returns(Asana::Resources::Attachment) }
4411
+ sig { params(url: String, resource: Asana::Resources::Task, attachment_name: T.nilable(String)).returns(Asana::Resources::Attachment) }
4405
4412
  def create_attachment_from_url_alone!(url, resource, attachment_name:); end
4406
4413
 
4407
4414
  # _@param_ `filename`
@@ -4441,7 +4448,7 @@ module Checkoff
4441
4448
  sig { params(message: T.nilable(Object), block: T.untyped).void }
4442
4449
  def finer(message = nil, &block); end
4443
4450
 
4444
- # @sg-ignore
4451
+ # @sg-ignore return type could not be inferred — cascades from the ENV.fetch RBS gap below
4445
4452
  sig { returns(Symbol) }
4446
4453
  def log_level; end
4447
4454
 
@@ -4483,7 +4490,7 @@ module Checkoff
4483
4490
  client:)); end
4484
4491
 
4485
4492
  # sord warn - Asana::Resources::CustomField wasn't able to be resolved to a constant in this project
4486
- # @sg-ignore
4493
+ # @sg-ignore nil check above is not flow-sensitive
4487
4494
  #
4488
4495
  # _@param_ `workspace_name`
4489
4496
  #
@@ -4508,7 +4515,9 @@ module Checkoff
4508
4515
 
4509
4516
  # sord warn - Asana::Resources::Project wasn't able to be resolved to a constant in this project
4510
4517
  # sord warn - Asana::Resources::Task wasn't able to be resolved to a constant in this project
4511
- # @sg-ignore
4518
+ # @sg-ignore Declared return type Array<String> does not match inferred type Array,Array<Array> —
4519
+ # fixing cleanly needs binding enum_value.fetch('name') to a typed local; leaving for a
4520
+ # follow-up code PR to keep this one annotation-only.
4512
4521
  #
4513
4522
  # _@param_ `resource`
4514
4523
  #
@@ -4526,7 +4535,7 @@ module Checkoff
4526
4535
 
4527
4536
  # sord warn - Asana::Resources::Task wasn't able to be resolved to a constant in this project
4528
4537
  # sord warn - Asana::Resources::Project wasn't able to be resolved to a constant in this project
4529
- # @sg-ignore
4538
+ # @sg-ignore nil check above is not flow-sensitive
4530
4539
  #
4531
4540
  # _@param_ `resource`
4532
4541
  #
@@ -4536,7 +4545,7 @@ module Checkoff
4536
4545
 
4537
4546
  # sord warn - Asana::Resources::Project wasn't able to be resolved to a constant in this project
4538
4547
  # sord warn - Asana::Resources::Task wasn't able to be resolved to a constant in this project
4539
- # @sg-ignore
4548
+ # @sg-ignore nil check above is not flow-sensitive
4540
4549
  #
4541
4550
  # _@param_ `resource`
4542
4551
  #
@@ -4544,7 +4553,9 @@ module Checkoff
4544
4553
  sig { params(resource: T.any(Asana::Resources::Project, Asana::Resources::Task), custom_field_gid: String).returns(T::Hash[T.untyped, T.untyped]) }
4545
4554
  def resource_custom_field_by_gid_or_raise(resource, custom_field_gid); end
4546
4555
 
4547
- # @sg-ignore
4556
+ # @sg-ignore Declared return type Array<Hash> does not match inferred type Array,Hash,Array<Hash> —
4557
+ # fixing cleanly needs restructuring the case/when to bind each branch to a typed local; leaving
4558
+ # for a follow-up code PR to keep this one annotation-only.
4548
4559
  #
4549
4560
  # _@param_ `custom_field`
4550
4561
  sig { params(custom_field: T::Hash[String, T.any(T::Hash[T.untyped, T.untyped], T::Array[T::Hash[T.untyped, T.untyped]])]).returns(T::Array[T::Hash[T.untyped, T.untyped]]) }
@@ -4689,10 +4700,11 @@ module Checkoff
4689
4700
  sig { params(api_params: T::Hash[String, Object], workspace_gid: String, extra_fields: T::Array[String]).returns(T::Enumerable[Asana::Resources::Task]) }
4690
4701
  def iterated_raw_task_search(api_params, workspace_gid:, extra_fields:); end
4691
4702
 
4692
- # @sg-ignore
4703
+ # @sg-ignore return type could not be inferred — bracket access on a Hash{Symbol=>undefined}
4704
+ # local doesn't narrow even with a T.cast on the return expression
4693
4705
  #
4694
4706
  # _@param_ `extra_fields`
4695
- sig { params(extra_fields: T::Array[String]).returns(T::Hash[Symbol, T.untyped]) }
4707
+ sig { params(extra_fields: T::Array[String]).returns(T::Hash[Symbol, T::Array[String]]) }
4696
4708
  def calculate_api_options(extra_fields); end
4697
4709
 
4698
4710
  sig { void }
@@ -4721,7 +4733,7 @@ module Checkoff
4721
4733
  sig { params(message: T.nilable(Object), block: T.untyped).void }
4722
4734
  def finer(message = nil, &block); end
4723
4735
 
4724
- # @sg-ignore
4736
+ # @sg-ignore return type could not be inferred — cascades from the ENV.fetch RBS gap below
4725
4737
  sig { returns(Symbol) }
4726
4738
  def log_level; end
4727
4739
 
@@ -4994,14 +5006,16 @@ module Checkoff
4994
5006
  def initialize(time_class: Time, date_class: Date, client: Checkoff::Clients.new.client, custom_fields: Checkoff::CustomFields.new(client:)); end
4995
5007
 
4996
5008
  # sord warn - Asana::Resources::Task wasn't able to be resolved to a constant in this project
4997
- # @sg-ignore
5009
+ # @sg-ignore return type could not be inferred — #to_time called via &. on a Date|Time
5010
+ # union receiver
4998
5011
  #
4999
5012
  # _@param_ `task`
5000
5013
  sig { params(task: Asana::Resources::Task).returns(T.nilable(Time)) }
5001
5014
  def start_time(task); end
5002
5015
 
5003
5016
  # sord warn - Asana::Resources::Task wasn't able to be resolved to a constant in this project
5004
- # @sg-ignore
5017
+ # @sg-ignore return type could not be inferred — #to_time called via &. on a Date|Time
5018
+ # union receiver
5005
5019
  #
5006
5020
  # _@param_ `task`
5007
5021
  sig { params(task: Asana::Resources::Task).returns(T.nilable(Time)) }
@@ -5041,7 +5055,8 @@ module Checkoff
5041
5055
  class ThreadLocal
5042
5056
  # sord warn - T wasn't able to be resolved to a constant in this project
5043
5057
  # sord warn - T wasn't able to be resolved to a constant in this project
5044
- # @sg-ignore
5058
+ # @sg-ignore return type could not be inferred — Solargraph's generic/yield-return
5059
+ # inference gap for #with_thread_local_variable
5045
5060
  #
5046
5061
  # _@param_ `name`
5047
5062
  #
@@ -5061,7 +5076,7 @@ module Checkoff
5061
5076
  sig { params(config: T::Hash[Symbol, T.untyped], sym: Symbol, yaml_filename: String).void }
5062
5077
  def initialize(config, sym, yaml_filename); end
5063
5078
 
5064
- # @sg-ignore
5079
+ # @sg-ignore return type could not be inferred — cascades from the ENV.fetch RBS gap below
5065
5080
  #
5066
5081
  # _@param_ `key`
5067
5082
  sig { params(key: Symbol).returns(Object) }
@@ -5180,7 +5195,7 @@ module Checkoff
5180
5195
  def convert_custom_field_params(custom_field_params); end
5181
5196
 
5182
5197
  # _@param_ `url_params`
5183
- sig { params(url_params: T::Hash[String, String]).returns([T::Hash[String, T::Array[String]], T::Hash[String, T::Array[String]], T::Hash[String, T::Array[String]]]) }
5198
+ sig { params(url_params: T::Hash[String, T::Array[String]]).returns([T::Hash[String, T::Array[String]], T::Hash[String, T::Array[String]], T::Hash[String, T::Array[String]]]) }
5184
5199
  def partition_url_params(url_params); end
5185
5200
  end
5186
5201
 
@@ -5190,10 +5205,8 @@ module Checkoff
5190
5205
  sig { params(args: T::Array[T::Hash[String, String]]).returns(T::Hash[String, String]) }
5191
5206
  def self.merge_args(*args); end
5192
5207
 
5193
- # @sg-ignore
5194
- #
5195
5208
  # _@param_ `task_selectors`
5196
- sig { params(task_selectors: T::Array[T.any(Symbol, T::Array[T.untyped])]).returns([Symbol, T::Array[T.untyped], T::Array[T.untyped]]) }
5209
+ sig { params(task_selectors: T::Array[T.any(Symbol, T::Array[T.untyped])]).returns(T.any(Symbol, T::Array[T.untyped], [Symbol, T::Array[T.untyped], T::Array[T.untyped]])) }
5197
5210
  def self.merge_task_selectors(*task_selectors); end
5198
5211
  end
5199
5212
 
@@ -5386,6 +5399,10 @@ module Checkoff
5386
5399
  sig { params(verb: String).returns(T::Array[String]) }
5387
5400
  def convert_from_projects_and_sections(verb); end
5388
5401
 
5402
+ # @sg-ignore abstract method always raises; declared type documents the override contract, not this body
5403
+ sig { returns(T::Array[String]) }
5404
+ def convert; end
5405
+
5389
5406
  sig { returns(String) }
5390
5407
  attr_reader :key
5391
5408
 
@@ -5641,7 +5658,7 @@ module Checkoff
5641
5658
  sig { params(message: T.nilable(Object), block: T.untyped).void }
5642
5659
  def finer(message = nil, &block); end
5643
5660
 
5644
- # @sg-ignore
5661
+ # @sg-ignore return type could not be inferred — cascades from the ENV.fetch RBS gap below
5645
5662
  sig { returns(Symbol) }
5646
5663
  def log_level; end
5647
5664
  end
@@ -5709,10 +5726,8 @@ module Checkoff
5709
5726
  sig { params(gid: String, resource_type: T.nilable(String)).returns([T.untyped, T.untyped, T.untyped, T.untyped]) }
5710
5727
  def enrich_gid(gid, resource_type: nil); end
5711
5728
 
5712
- # @sg-ignore
5713
- #
5714
5729
  # _@param_ `filter`
5715
- sig { params(filter: T::Hash[String, T.any(String, T::Array[String])]).returns(T.nilable(String)) }
5730
+ sig { params(filter: T::Hash[String, T.any(String, T::Array[String])]).void }
5716
5731
  def enrich_filter_parent_gid!(filter); end
5717
5732
 
5718
5733
  # _@param_ `filter`
@@ -5723,14 +5738,12 @@ module Checkoff
5723
5738
  sig { params(filter: T::Hash[String, T.any(String, T::Array[String])]).void }
5724
5739
  def enrich_filter_section!(filter); end
5725
5740
 
5726
- # sord warn - "'resource'" does not appear to be a type
5727
5741
  # _@param_ `asana_event`
5728
- sig { params(asana_event: T::Hash[T.untyped, T::Hash[T.untyped, T.untyped]]).void }
5742
+ sig { params(asana_event: T::Hash[T.untyped, T.untyped]).void }
5729
5743
  def enrich_event_parent!(asana_event); end
5730
5744
 
5731
- # sord warn - "'resource'" does not appear to be a type
5732
5745
  # _@param_ `asana_event`
5733
- sig { params(asana_event: T::Hash[T.untyped, T::Hash[T.untyped, T.untyped]]).void }
5746
+ sig { params(asana_event: T::Hash[T.untyped, T.untyped]).void }
5734
5747
  def enrich_event_resource!(asana_event); end
5735
5748
 
5736
5749
  sig { returns(::Logger) }
@@ -5756,7 +5769,7 @@ module Checkoff
5756
5769
  sig { params(message: T.nilable(Object), block: T.untyped).void }
5757
5770
  def finer(message = nil, &block); end
5758
5771
 
5759
- # @sg-ignore
5772
+ # @sg-ignore return type could not be inferred — cascades from the ENV.fetch RBS gap below
5760
5773
  sig { returns(Symbol) }
5761
5774
  def log_level; end
5762
5775
 
@@ -6089,7 +6102,8 @@ module Checkoff
6089
6102
  def evaluate_arg?(_index); end
6090
6103
 
6091
6104
  # sord warn - Asana::Resources::Task wasn't able to be resolved to a constant in this project
6092
- # @sg-ignore
6105
+ # @sg-ignore Checkoff::SelectorClasses::Task::MilestonePFunctionEvaluator#evaluate
6106
+ # return type could not be inferred
6093
6107
  #
6094
6108
  # _@param_ `task`
6095
6109
  sig { params(task: Asana::Resources::Task).returns(T::Boolean) }
@@ -6358,7 +6372,8 @@ module Checkoff
6358
6372
  # sord warn - Asana::Resources::Project wasn't able to be resolved to a constant in this project
6359
6373
  # sord warn - boolish is probably not a type, but using anyway
6360
6374
  # sord warn - boolish wasn't able to be resolved to a constant in this project
6361
- # @sg-ignore
6375
+ # @sg-ignore Checkoff::SelectorClasses::Common::NameStartsWithPFunctionEvaluator#evaluate
6376
+ # return type could not be inferred
6362
6377
  #
6363
6378
  # _@param_ `resource`
6364
6379
  #
@@ -6393,6 +6408,9 @@ module Checkoff
6393
6408
 
6394
6409
  sig { returns(T.any([Symbol, T::Array[T.untyped]], String)) }
6395
6410
  attr_reader :selector
6411
+
6412
+ sig { returns(Checkoff::CustomFields) }
6413
+ attr_reader :custom_fields
6396
6414
  end
6397
6415
  end
6398
6416
 
@@ -6484,6 +6502,15 @@ module Checkoff
6484
6502
 
6485
6503
  sig { returns([Symbol, T::Array[T.untyped]]) }
6486
6504
  attr_reader :selector
6505
+
6506
+ sig { returns(Checkoff::Projects) }
6507
+ attr_reader :projects
6508
+
6509
+ sig { returns(Checkoff::Portfolios) }
6510
+ attr_reader :portfolios
6511
+
6512
+ sig { returns(Checkoff::Workspaces) }
6513
+ attr_reader :workspaces
6487
6514
  end
6488
6515
  end
6489
6516
 
@@ -6545,6 +6572,9 @@ module Checkoff
6545
6572
  # sord warn - Asana::Client wasn't able to be resolved to a constant in this project
6546
6573
  sig { returns(Asana::Client) }
6547
6574
  attr_reader :client
6575
+
6576
+ sig { returns(Checkoff::Sections) }
6577
+ attr_reader :sections
6548
6578
  end
6549
6579
  end
6550
6580
 
@@ -6556,12 +6586,12 @@ module Checkoff
6556
6586
  sig { params(_index: Integer).returns(T::Boolean) }
6557
6587
  def evaluate_arg?(_index); end
6558
6588
 
6559
- # @sg-ignore
6589
+ # @sg-ignore return type could not be inferred — abstract method body is only `raise`
6560
6590
  sig { returns(T::Boolean) }
6561
6591
  def matches?; end
6562
6592
 
6563
6593
  # sord warn - Asana::Resources::Task wasn't able to be resolved to a constant in this project
6564
- # @sg-ignore
6594
+ # @sg-ignore return type could not be inferred — abstract method body is only `raise`
6565
6595
  #
6566
6596
  # _@param_ `_task`
6567
6597
  #
@@ -6575,6 +6605,20 @@ module Checkoff
6575
6605
  sig { params(object: Object, fn_name: Symbol).returns(T::Boolean) }
6576
6606
  def fn?(object, fn_name); end
6577
6607
 
6608
+ # Concrete subclasses each declare their own initialize with their
6609
+ # specific keyword args (and set @selector themselves before calling
6610
+ # super()); this signature exists only so Solargraph can resolve
6611
+ # `evaluator_class.new(selector:, **kwargs)` call sites that hold a
6612
+ # `Class<FunctionEvaluator>` reference rather than a concrete subclass -
6613
+ # deliberately a no-op so a bare `super()` call from those subclasses
6614
+ # can't clobber the @selector they already set.
6615
+ #
6616
+ # _@param_ `selector`
6617
+ #
6618
+ # _@param_ `_kwargs`
6619
+ sig { params(selector: T.nilable(T.any(Symbol, T::Array[T.untyped], String)), _kwargs: T::Hash[T.untyped, T.untyped]).void }
6620
+ def initialize(selector: nil, **_kwargs); end
6621
+
6578
6622
  sig { returns(::Logger) }
6579
6623
  def logger; end
6580
6624
 
@@ -6598,7 +6642,7 @@ module Checkoff
6598
6642
  sig { params(message: T.nilable(Object), block: T.untyped).void }
6599
6643
  def finer(message = nil, &block); end
6600
6644
 
6601
- # @sg-ignore
6645
+ # @sg-ignore return type could not be inferred — cascades from the ENV.fetch RBS gap below
6602
6646
  sig { returns(Symbol) }
6603
6647
  def log_level; end
6604
6648
  end
@@ -6791,7 +6835,7 @@ module Logging
6791
6835
  sig { params(message: T.nilable(Object), block: T.untyped).void }
6792
6836
  def finer(message = nil, &block); end
6793
6837
 
6794
- # @sg-ignore
6838
+ # @sg-ignore return type could not be inferred — cascades from the ENV.fetch RBS gap below
6795
6839
  sig { returns(Symbol) }
6796
6840
  def log_level; end
6797
6841
  end