checkoff 0.226.0 → 0.228.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.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/checkoff.gemspec +1 -1
  3. data/lib/checkoff/attachments.rb +10 -10
  4. data/lib/checkoff/cli.rb +9 -9
  5. data/lib/checkoff/custom_fields.rb +3 -3
  6. data/lib/checkoff/events.rb +6 -6
  7. data/lib/checkoff/internal/asana_event_enrichment.rb +10 -10
  8. data/lib/checkoff/internal/asana_event_filter.rb +2 -2
  9. data/lib/checkoff/internal/project_selector_evaluator.rb +2 -2
  10. data/lib/checkoff/internal/project_timing.rb +1 -1
  11. data/lib/checkoff/internal/search_url/parser.rb +3 -3
  12. data/lib/checkoff/internal/search_url/simple_param_converter.rb +1 -1
  13. data/lib/checkoff/internal/section_selector_evaluator.rb +4 -4
  14. data/lib/checkoff/internal/selector_classes/project.rb +2 -2
  15. data/lib/checkoff/internal/selector_classes/task.rb +4 -4
  16. data/lib/checkoff/internal/selector_evaluator.rb +1 -1
  17. data/lib/checkoff/internal/task_hashes.rb +1 -1
  18. data/lib/checkoff/internal/task_selector_evaluator.rb +1 -1
  19. data/lib/checkoff/internal/task_timing.rb +1 -1
  20. data/lib/checkoff/my_tasks.rb +5 -5
  21. data/lib/checkoff/portfolios.rb +6 -6
  22. data/lib/checkoff/project_selectors.rb +8 -8
  23. data/lib/checkoff/projects.rb +13 -13
  24. data/lib/checkoff/resources.rb +6 -6
  25. data/lib/checkoff/section_selectors.rb +7 -7
  26. data/lib/checkoff/sections.rb +21 -21
  27. data/lib/checkoff/subtasks.rb +6 -6
  28. data/lib/checkoff/tags.rb +8 -8
  29. data/lib/checkoff/task_searches.rb +12 -12
  30. data/lib/checkoff/task_selectors.rb +11 -11
  31. data/lib/checkoff/tasks.rb +23 -23
  32. data/lib/checkoff/timelines.rb +6 -6
  33. data/lib/checkoff/version.rb +1 -1
  34. data/lib/checkoff/workspaces.rb +1 -1
  35. data/rbi/checkoff.rbi +2482 -49
  36. data/sig/checkoff.rbs +29 -9
  37. metadata +2 -2
data/rbi/checkoff.rbi CHANGED
@@ -1,4 +1,2414 @@
1
- # typed: strong
1
+ # typed: true
2
+ module Logging
3
+ sig { returns(T.untyped) }
4
+ def logger; end
5
+
6
+ sig { params(message: T.untyped, block: T.untyped).returns(T.untyped) }
7
+ def error(message = nil, &block); end
8
+
9
+ sig { params(message: T.untyped, block: T.untyped).returns(T.untyped) }
10
+ def warn(message = nil, &block); end
11
+
12
+ sig { params(message: T.untyped, block: T.untyped).returns(T.untyped) }
13
+ def info(message = nil, &block); end
14
+
15
+ sig { params(message: T.untyped, block: T.untyped).returns(T.untyped) }
16
+ def debug(message = nil, &block); end
17
+
18
+ sig { params(message: T.untyped, block: T.untyped).returns(T.untyped) }
19
+ def finer(message = nil, &block); end
20
+
21
+ sig { returns(T.untyped) }
22
+ def log_level; end
23
+ end
24
+
25
+ module Asana
26
+ module Resources
27
+ class Resource
28
+ sig { returns(T.untyped) }
29
+ def marshal_dump; end
30
+
31
+ sig { params(data: T.untyped).returns(T.untyped) }
32
+ def marshal_load(data); end
33
+ end
34
+ end
35
+ end
36
+
37
+ module Overcommit
38
+ module Hook
39
+ module PreCommit
40
+ class CircleCi < Base
41
+ sig { returns(T.untyped) }
42
+ def run; end
43
+ end
44
+
45
+ class Punchlist < Base
46
+ sig { params(stdout: T.untyped).returns(T.untyped) }
47
+ def parse_output(stdout); end
48
+
49
+ sig { returns(T.untyped) }
50
+ def files_glob; end
51
+
52
+ sig { returns(T.untyped) }
53
+ def run; end
54
+ end
55
+
56
+ class SolargraphTypecheck < Base
57
+ sig { returns(T.untyped) }
58
+ def run; end
59
+
60
+ sig { params(stderr: T.untyped).returns(T.untyped) }
61
+ def remove_harmless_glitches(stderr); end
62
+
63
+ sig { params(errors: T.untyped, files: T.untyped).returns(T.untyped) }
64
+ def generate_errors_for_files(errors, *files); end
65
+
66
+ sig { params(error: T.untyped).returns(T.untyped) }
67
+ def parse_error(error); end
68
+ end
69
+ end
70
+ end
71
+ end
72
+
73
+ module Checkoff
74
+ VERSION = '0.228.0'
75
+
76
+ class Attachments
77
+ include Logging
78
+ MINUTE = 60
79
+ HOUR = MINUTE * 60
80
+ DAY = 24 * HOUR
81
+ REALLY_LONG_CACHE_TIME = HOUR * 1
82
+ LONG_CACHE_TIME = MINUTE * 15
83
+ SHORT_CACHE_TIME = MINUTE
84
+
85
+ sig do
86
+ params(
87
+ config: T.untyped,
88
+ workspaces: T.untyped,
89
+ clients: T.untyped,
90
+ client: T.untyped
91
+ ).void
92
+ end
93
+ def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), workspaces: Checkoff::Workspaces.new(config:), clients: Checkoff::Clients.new(config:), client: clients.client); end
94
+
95
+ sig do
96
+ params(
97
+ url: T.untyped,
98
+ resource: T.untyped,
99
+ attachment_name: T.untyped,
100
+ verify_mode: T.untyped,
101
+ just_the_url: T.untyped
102
+ ).returns(T.untyped)
103
+ end
104
+ def create_attachment_from_url!(url, resource, attachment_name: nil, verify_mode: OpenSSL::SSL::VERIFY_PEER, just_the_url: false); end
105
+
106
+ sig { params(uri: T.untyped, verify_mode: T.untyped, block: T.untyped).returns(T.untyped) }
107
+ def download_uri(uri, verify_mode: OpenSSL::SSL::VERIFY_PEER, &block); end
108
+
109
+ sig { params(response: T.untyped).returns(T.untyped) }
110
+ def write_tempfile_from_response(response); end
111
+
112
+ sig do
113
+ params(
114
+ url: T.untyped,
115
+ resource: T.untyped,
116
+ attachment_name: T.untyped,
117
+ verify_mode: T.untyped
118
+ ).returns(T.untyped)
119
+ end
120
+ def create_attachment_from_downloaded_url!(url, resource, attachment_name:, verify_mode: OpenSSL::SSL::VERIFY_PEER); end
121
+
122
+ sig { params(url: T.untyped, resource: T.untyped, attachment_name: T.untyped).returns(T.untyped) }
123
+ def create_attachment_from_url_alone!(url, resource, attachment_name:); end
124
+
125
+ sig { params(filename: T.untyped).returns(T.untyped) }
126
+ def content_type_from_filename(filename); end
127
+
128
+ sig { params(response: T.untyped).returns(T.untyped) }
129
+ def parse(response); end
130
+
131
+ sig { returns(T.untyped) }
132
+ attr_reader :workspaces
133
+
134
+ sig { returns(T.untyped) }
135
+ attr_reader :client
136
+
137
+ sig { returns(T.untyped) }
138
+ def self.run; end
139
+ end
140
+
141
+ class MvSubcommand
142
+ sig { params(from_workspace_arg: T.untyped, from_project_arg: T.untyped, from_section_arg: T.untyped).returns(T.untyped) }
143
+ def validate_and_assign_from_location(from_workspace_arg, from_project_arg, from_section_arg); end
144
+
145
+ sig { params(to_project_arg: T.untyped).returns(T.untyped) }
146
+ def create_to_project_name(to_project_arg); end
147
+
148
+ sig { params(to_section_arg: T.untyped).returns(T.untyped) }
149
+ def create_to_section_name(to_section_arg); end
150
+
151
+ sig { params(to_workspace_arg: T.untyped, to_project_arg: T.untyped, to_section_arg: T.untyped).returns(T.untyped) }
152
+ def validate_and_assign_to_location(to_workspace_arg, to_project_arg, to_section_arg); end
153
+
154
+ sig do
155
+ params(
156
+ from_workspace_arg: T.untyped,
157
+ from_project_arg: T.untyped,
158
+ from_section_arg: T.untyped,
159
+ to_workspace_arg: T.untyped,
160
+ to_project_arg: T.untyped,
161
+ to_section_arg: T.untyped,
162
+ config: T.untyped,
163
+ projects: T.untyped,
164
+ sections: T.untyped,
165
+ logger: T.untyped
166
+ ).void
167
+ end
168
+ def initialize(from_workspace_arg:, from_project_arg:, from_section_arg:, to_workspace_arg:, to_project_arg:, to_section_arg:, config: Checkoff::Internal::ConfigLoader.load(:asana), projects: Checkoff::Projects.new(config:), sections: Checkoff::Sections.new(config:), logger: $stderr); end
169
+
170
+ sig { params(tasks: T.untyped, to_project: T.untyped, to_section: T.untyped).returns(T.untyped) }
171
+ def move_tasks(tasks, to_project, to_section); end
172
+
173
+ sig { params(from_workspace_name: T.untyped, from_project_name: T.untyped, from_section_name: T.untyped).returns(T.untyped) }
174
+ def fetch_tasks(from_workspace_name, from_project_name, from_section_name); end
175
+
176
+ sig { returns(T.untyped) }
177
+ def run; end
178
+
179
+ sig { returns(T.untyped) }
180
+ attr_reader :from_workspace_name
181
+
182
+ sig { returns(T.untyped) }
183
+ attr_reader :from_project_name
184
+
185
+ sig { returns(T.untyped) }
186
+ attr_reader :from_section_name
187
+
188
+ sig { returns(T.untyped) }
189
+ attr_reader :to_workspace_name
190
+
191
+ sig { returns(T.untyped) }
192
+ attr_reader :to_project_name
193
+
194
+ sig { returns(T.untyped) }
195
+ attr_reader :to_section_name
196
+
197
+ sig { returns(T.untyped) }
198
+ attr_reader :projects
199
+
200
+ sig { returns(T.untyped) }
201
+ attr_reader :sections
202
+
203
+ sig { params(project_arg: T.untyped).returns(T.untyped) }
204
+ def project_arg_to_name(project_arg); end
205
+ end
206
+
207
+ class ViewSubcommand
208
+ sig do
209
+ params(
210
+ workspace_name: T.untyped,
211
+ project_name: T.untyped,
212
+ section_name: T.untyped,
213
+ task_name: T.untyped,
214
+ config: T.untyped,
215
+ projects: T.untyped,
216
+ sections: T.untyped,
217
+ tasks: T.untyped,
218
+ stderr: T.untyped
219
+ ).void
220
+ end
221
+ def initialize(workspace_name, project_name, section_name, task_name, config: Checkoff::Internal::ConfigLoader.load(:asana), projects: Checkoff::Projects.new(config:), sections: Checkoff::Sections.new(config:,
222
+ projects:), tasks: Checkoff::Tasks.new(config:,
223
+ sections:), stderr: $stderr); end
224
+
225
+ sig { returns(T.untyped) }
226
+ def run; end
227
+
228
+ sig { params(project_name: T.untyped).returns(T.untyped) }
229
+ def validate_and_assign_project_name(project_name); end
230
+
231
+ sig { params(workspace: T.untyped, project: T.untyped).returns(T.untyped) }
232
+ def run_on_project(workspace, project); end
233
+
234
+ sig { params(workspace: T.untyped, project: T.untyped, section: T.untyped).returns(T.untyped) }
235
+ def run_on_section(workspace, project, section); end
236
+
237
+ sig do
238
+ params(
239
+ workspace: T.untyped,
240
+ project: T.untyped,
241
+ section: T.untyped,
242
+ task_name: T.untyped
243
+ ).returns(T.untyped)
244
+ end
245
+ def run_on_task(workspace, project, section, task_name); end
246
+
247
+ sig { params(task: T.untyped).returns(T.untyped) }
248
+ def task_to_hash(task); end
249
+
250
+ sig { params(tasks: T.untyped).returns(T.untyped) }
251
+ def tasks_to_hash(tasks); end
252
+
253
+ sig { returns(T.untyped) }
254
+ attr_reader :workspace_name
255
+
256
+ sig { returns(T.untyped) }
257
+ attr_reader :project_name
258
+
259
+ sig { returns(T.untyped) }
260
+ attr_reader :section_name
261
+
262
+ sig { returns(T.untyped) }
263
+ attr_reader :task_name
264
+
265
+ sig { returns(T.untyped) }
266
+ attr_reader :sections
267
+
268
+ sig { returns(T.untyped) }
269
+ attr_reader :tasks
270
+
271
+ sig { returns(T.untyped) }
272
+ attr_reader :stderr
273
+ end
274
+
275
+ class QuickaddSubcommand
276
+ sig do
277
+ params(
278
+ workspace_name: T.untyped,
279
+ task_name: T.untyped,
280
+ config: T.untyped,
281
+ workspaces: T.untyped,
282
+ tasks: T.untyped
283
+ ).void
284
+ end
285
+ def initialize(workspace_name, task_name, config: Checkoff::Internal::ConfigLoader.load(:asana), workspaces: Checkoff::Workspaces.new(config:), tasks: Checkoff::Tasks.new(config:)); end
286
+
287
+ sig { returns(T.untyped) }
288
+ def run; end
289
+
290
+ sig { returns(T.untyped) }
291
+ attr_reader :workspace_name
292
+
293
+ sig { returns(T.untyped) }
294
+ attr_reader :task_name
295
+ end
296
+
297
+ class CheckoffGLIApp
298
+ extend ::GLI::App
299
+ end
300
+
301
+ class Clients
302
+ MINUTE = 60
303
+ HOUR = MINUTE * 60
304
+ DAY = 24 * HOUR
305
+ REALLY_LONG_CACHE_TIME = HOUR * 1
306
+ LONG_CACHE_TIME = MINUTE * 15
307
+ SHORT_CACHE_TIME = MINUTE
308
+
309
+ sig { params(config: T.untyped, asana_client_class: T.untyped).void }
310
+ def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), asana_client_class: Asana::Client); end
311
+
312
+ sig { returns(T.untyped) }
313
+ def client; end
314
+
315
+ sig { returns(T.untyped) }
316
+ def self.run; end
317
+ end
318
+
319
+ class CustomFields
320
+ MINUTE = 60
321
+ HOUR = MINUTE * 60
322
+ DAY = 24 * HOUR
323
+ REALLY_LONG_CACHE_TIME = HOUR * 1
324
+ LONG_CACHE_TIME = MINUTE * 15
325
+ SHORT_CACHE_TIME = MINUTE
326
+
327
+ sig do
328
+ params(
329
+ config: T.untyped,
330
+ clients: T.untyped,
331
+ client: T.untyped,
332
+ workspaces: T.untyped
333
+ ).void
334
+ end
335
+ def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), clients: Checkoff::Clients.new(config:), client: clients.client, workspaces: Checkoff::Workspaces.new(config:,
336
+ client:)); end
337
+
338
+ sig { params(workspace_name: T.untyped, custom_field_name: T.untyped).returns(T.untyped) }
339
+ def custom_field_or_raise(workspace_name, custom_field_name); end
340
+
341
+ sig { params(workspace_name: T.untyped, custom_field_name: T.untyped).returns(T.untyped) }
342
+ def custom_field(workspace_name, custom_field_name); end
343
+
344
+ sig { params(resource: T.untyped, custom_field_gid: T.untyped).returns(T.untyped) }
345
+ def resource_custom_field_values_gids_or_raise(resource, custom_field_gid); end
346
+
347
+ sig { params(resource: T.untyped, custom_field_name: T.untyped).returns(T.untyped) }
348
+ def resource_custom_field_values_names_by_name(resource, custom_field_name); end
349
+
350
+ sig { params(resource: T.untyped, custom_field_name: T.untyped).returns(T.untyped) }
351
+ def resource_custom_field_by_name(resource, custom_field_name); end
352
+
353
+ sig { params(resource: T.untyped, custom_field_name: T.untyped).returns(T.untyped) }
354
+ def resource_custom_field_by_name_or_raise(resource, custom_field_name); end
355
+
356
+ sig { params(resource: T.untyped, custom_field_gid: T.untyped).returns(T.untyped) }
357
+ def resource_custom_field_by_gid_or_raise(resource, custom_field_gid); end
358
+
359
+ sig { params(custom_field: T.untyped).returns(T.untyped) }
360
+ def resource_custom_field_enum_values(custom_field); end
361
+
362
+ sig { params(custom_field: T.untyped, enum_value: T.untyped).returns(T.untyped) }
363
+ def find_gids(custom_field, enum_value); end
364
+
365
+ sig { returns(T.untyped) }
366
+ attr_reader :workspaces
367
+
368
+ sig { returns(T.untyped) }
369
+ attr_reader :client
370
+
371
+ sig { returns(T.untyped) }
372
+ def self.run; end
373
+ end
374
+
375
+ class Events
376
+ include Logging
377
+ MINUTE = 60
378
+ HOUR = MINUTE * 60
379
+ DAY = 24 * HOUR
380
+ REALLY_LONG_CACHE_TIME = HOUR * 1
381
+ LONG_CACHE_TIME = MINUTE * 15
382
+ SHORT_CACHE_TIME = MINUTE
383
+
384
+ sig do
385
+ params(
386
+ config: T.untyped,
387
+ workspaces: T.untyped,
388
+ tasks: T.untyped,
389
+ sections: T.untyped,
390
+ projects: T.untyped,
391
+ clients: T.untyped,
392
+ client: T.untyped,
393
+ asana_event_filter_class: T.untyped,
394
+ asana_event_enrichment: T.untyped
395
+ ).void
396
+ end
397
+ def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), workspaces: Checkoff::Workspaces.new(config:), tasks: Checkoff::Tasks.new(config:), sections: Checkoff::Sections.new(config:), projects: Checkoff::Projects.new(config:), clients: Checkoff::Clients.new(config:), client: clients.client, asana_event_filter_class: Checkoff::Internal::AsanaEventFilter, asana_event_enrichment: Checkoff::Internal::AsanaEventEnrichment.new); end
398
+
399
+ sig { params(filters: T.untyped, asana_events: T.untyped).returns(T.untyped) }
400
+ def filter_asana_events(filters, asana_events); end
401
+
402
+ sig { params(asana_event: T.untyped).returns(T.untyped) }
403
+ def enrich_event(asana_event); end
404
+
405
+ sig { params(filter: T.untyped).returns(T.untyped) }
406
+ def enrich_filter(filter); end
407
+
408
+ sig { params(webhook_subscription: T.untyped).returns(T.untyped) }
409
+ def enrich_webhook_subscription!(webhook_subscription); end
410
+
411
+ sig { returns(T.untyped) }
412
+ attr_reader :projects
413
+
414
+ sig { returns(T.untyped) }
415
+ attr_reader :sections
416
+
417
+ sig { returns(T.untyped) }
418
+ attr_reader :tasks
419
+
420
+ sig { returns(T.untyped) }
421
+ attr_reader :workspaces
422
+
423
+ sig { returns(T.untyped) }
424
+ attr_reader :client
425
+
426
+ sig { returns(T.untyped) }
427
+ attr_reader :asana_event_enrichment
428
+
429
+ sig { returns(T.untyped) }
430
+ def self.run; end
431
+ end
432
+
433
+ class ProjectSelectorEvaluator < SelectorEvaluator
434
+ COMMON_FUNCTION_EVALUATORS = (Checkoff::SelectorClasses::Common.constants.map do |const|
435
+ Checkoff::SelectorClasses::Common.const_get(const)
436
+ end - [Checkoff::SelectorClasses::Common::FunctionEvaluator]).freeze
437
+ PROJECT_FUNCTION_EVALUATORS = (Checkoff::SelectorClasses::Project.constants.map do |const|
438
+ Checkoff::SelectorClasses::Project.const_get(const)
439
+ end - [Checkoff::SelectorClasses::Project::FunctionEvaluator]).freeze
440
+ FUNCTION_EVALUTORS = (COMMON_FUNCTION_EVALUATORS + PROJECT_FUNCTION_EVALUATORS).freeze
441
+
442
+ sig do
443
+ params(
444
+ project: T.untyped,
445
+ projects: T.untyped,
446
+ custom_fields: T.untyped,
447
+ workspaces: T.untyped,
448
+ portfolios: T.untyped
449
+ ).void
450
+ end
451
+ def initialize(project:, projects: Checkoff::Projects.new, custom_fields: Checkoff::CustomFields.new, workspaces: Checkoff::Workspaces.new, portfolios: Checkoff::Portfolios.new); end
452
+
453
+ sig { returns(T.untyped) }
454
+ def function_evaluators; end
455
+
456
+ sig { returns(T.untyped) }
457
+ def initializer_kwargs; end
458
+
459
+ sig { returns(T.untyped) }
460
+ attr_reader :item
461
+
462
+ sig { returns(T.untyped) }
463
+ attr_reader :projects
464
+
465
+ sig { returns(T.untyped) }
466
+ attr_reader :custom_fields
467
+
468
+ sig { returns(T.untyped) }
469
+ attr_reader :workspaces
470
+
471
+ sig { returns(T.untyped) }
472
+ attr_reader :portfolios
473
+ end
474
+
475
+ class SectionSelectorEvaluator < SelectorEvaluator
476
+ COMMON_FUNCTION_EVALUATORS = (Checkoff::SelectorClasses::Common.constants.map do |const|
477
+ Checkoff::SelectorClasses::Common.const_get(const)
478
+ end - [Checkoff::SelectorClasses::Common::FunctionEvaluator]).freeze
479
+ SECTION_FUNCTION_EVALUATORS = (Checkoff::SelectorClasses::Section.constants.map do |const|
480
+ Checkoff::SelectorClasses::Section.const_get(const)
481
+ end - [Checkoff::SelectorClasses::Section::FunctionEvaluator]).freeze
482
+ FUNCTION_EVALUTORS = (COMMON_FUNCTION_EVALUATORS + SECTION_FUNCTION_EVALUATORS).freeze
483
+
484
+ sig do
485
+ params(
486
+ section: T.untyped,
487
+ client: T.untyped,
488
+ projects: T.untyped,
489
+ sections: T.untyped,
490
+ custom_fields: T.untyped,
491
+ _kwargs: T.untyped
492
+ ).void
493
+ end
494
+ def initialize(section:, client:, projects: Checkoff::Projects.new(client:), sections: Checkoff::Sections.new(client:), custom_fields: Checkoff::CustomFields.new(client:), **_kwargs); end
495
+
496
+ sig { returns(T.untyped) }
497
+ def function_evaluators; end
498
+
499
+ sig { returns(T.untyped) }
500
+ def initializer_kwargs; end
501
+
502
+ sig { returns(T.untyped) }
503
+ attr_reader :item
504
+
505
+ sig { returns(T.untyped) }
506
+ attr_reader :sections
507
+
508
+ sig { returns(T.untyped) }
509
+ attr_reader :projects
510
+
511
+ sig { returns(T.untyped) }
512
+ attr_reader :custom_fields
513
+
514
+ sig { returns(T.untyped) }
515
+ attr_reader :client
516
+ end
517
+
518
+ class SelectorEvaluator
519
+ sig { params(selector: T.untyped).returns(T.untyped) }
520
+ def evaluate(selector); end
521
+
522
+ sig { returns(T.untyped) }
523
+ def initializer_kwargs; end
524
+
525
+ sig { returns(T.untyped) }
526
+ def function_evaluators; end
527
+
528
+ sig { params(selector: T.untyped, evaluator: T.untyped).returns(T.untyped) }
529
+ def evaluate_args(selector, evaluator); end
530
+
531
+ sig { params(selector: T.untyped, evaluator: T.untyped).returns(T.untyped) }
532
+ def try_this_evaluator(selector, evaluator); end
533
+
534
+ sig { returns(T.untyped) }
535
+ attr_reader :item
536
+ end
537
+
538
+ class TaskSelectorEvaluator < SelectorEvaluator
539
+ COMMON_FUNCTION_EVALUATORS = (Checkoff::SelectorClasses::Common.constants.map do |const|
540
+ Checkoff::SelectorClasses::Common.const_get(const)
541
+ end - [Checkoff::SelectorClasses::Common::FunctionEvaluator]).freeze
542
+ TASK_FUNCTION_EVALUATORS = (Checkoff::SelectorClasses::Task.constants.map do |const|
543
+ Checkoff::SelectorClasses::Task.const_get(const)
544
+ end - [Checkoff::SelectorClasses::Task::FunctionEvaluator]).freeze
545
+ FUNCTION_EVALUTORS = (COMMON_FUNCTION_EVALUATORS + TASK_FUNCTION_EVALUATORS).freeze
546
+
547
+ sig do
548
+ params(
549
+ task: T.untyped,
550
+ tasks: T.untyped,
551
+ timelines: T.untyped,
552
+ custom_fields: T.untyped
553
+ ).void
554
+ end
555
+ def initialize(task:, tasks: Checkoff::Tasks.new, timelines: Checkoff::Timelines.new, custom_fields: Checkoff::CustomFields.new); end
556
+
557
+ sig { returns(T.untyped) }
558
+ def function_evaluators; end
559
+
560
+ sig { returns(T.untyped) }
561
+ def initializer_kwargs; end
562
+
563
+ sig { returns(T.untyped) }
564
+ attr_reader :item
565
+
566
+ sig { returns(T.untyped) }
567
+ attr_reader :tasks
568
+
569
+ sig { returns(T.untyped) }
570
+ attr_reader :timelines
571
+
572
+ sig { returns(T.untyped) }
573
+ attr_reader :custom_fields
574
+ end
575
+
576
+ class MyTasks
577
+ MINUTE = 60
578
+ LONG_CACHE_TIME = MINUTE * 15
579
+ SHORT_CACHE_TIME = MINUTE * 5
580
+
581
+ sig { returns(T.untyped) }
582
+ attr_reader :projects
583
+
584
+ sig { params(config: T.untyped, client: T.untyped, projects: T.untyped).void }
585
+ def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), client: Checkoff::Clients.new(config:).client, projects: Checkoff::Projects.new(config:,
586
+ client:)); end
587
+
588
+ sig { params(project: T.untyped, only_uncompleted: T.untyped, extra_fields: T.untyped).returns(T.untyped) }
589
+ def tasks_by_section_for_my_tasks(project, only_uncompleted: true, extra_fields: []); end
590
+
591
+ sig { params(name: T.untyped).returns(T.untyped) }
592
+ def section_key(name); end
593
+
594
+ sig { params(tasks: T.untyped, project_gid: T.untyped).returns(T.untyped) }
595
+ def by_my_tasks_section(tasks, project_gid); end
596
+
597
+ sig { returns(T.untyped) }
598
+ attr_reader :client
599
+ end
600
+
601
+ class Portfolios
602
+ extend T::Sig
603
+ MINUTE = 60
604
+ HOUR = T.let(MINUTE * 60, Numeric)
605
+ DAY = T.let(24 * HOUR, Numeric)
606
+ REALLY_LONG_CACHE_TIME = T.let(HOUR * 1, Numeric)
607
+ LONG_CACHE_TIME = T.let(MINUTE * 15, Numeric)
608
+ SHORT_CACHE_TIME = T.let(MINUTE, Numeric)
609
+
610
+ sig do
611
+ params(
612
+ config: T.untyped,
613
+ clients: T.untyped,
614
+ client: T.untyped,
615
+ projects: T.untyped,
616
+ workspaces: T.untyped
617
+ ).void
618
+ end
619
+ 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
620
+
621
+ sig { params(workspace_name: T.untyped, portfolio_name: T.untyped).returns(T.untyped) }
622
+ def portfolio_or_raise(workspace_name, portfolio_name); end
623
+
624
+ sig { params(workspace_name: T.untyped, portfolio_name: T.untyped).returns(T.untyped) }
625
+ def portfolio(workspace_name, portfolio_name); end
626
+
627
+ sig { params(portfolio_gid: T.untyped, extra_fields: T.untyped).returns(T.untyped) }
628
+ def portfolio_by_gid(portfolio_gid, extra_fields: []); end
629
+
630
+ sig { params(workspace_name: T.untyped, portfolio_name: T.untyped, extra_project_fields: T.untyped).returns(T.untyped) }
631
+ def projects_in_portfolio(workspace_name, portfolio_name, extra_project_fields: []); end
632
+
633
+ sig { params(portfolio: T.untyped, extra_project_fields: T.untyped).returns(T.untyped) }
634
+ def projects_in_portfolio_obj(portfolio, extra_project_fields: []); end
635
+
636
+ sig { returns(T.untyped) }
637
+ attr_reader :workspaces
638
+
639
+ sig { returns(T.untyped) }
640
+ attr_reader :projects
641
+
642
+ sig { returns(T.untyped) }
643
+ attr_reader :client
644
+
645
+ sig { returns(T.untyped) }
646
+ def self.run; end
647
+ end
648
+
649
+ class ProjectSelectors
650
+ MINUTE = 60
651
+ HOUR = MINUTE * 60
652
+ DAY = 24 * HOUR
653
+ REALLY_LONG_CACHE_TIME = HOUR * 1
654
+ LONG_CACHE_TIME = MINUTE * 15
655
+ SHORT_CACHE_TIME = MINUTE
656
+
657
+ sig do
658
+ params(
659
+ config: T.untyped,
660
+ workspaces: T.untyped,
661
+ projects: T.untyped,
662
+ custom_fields: T.untyped,
663
+ portfolios: T.untyped,
664
+ clients: T.untyped,
665
+ client: T.untyped
666
+ ).void
667
+ end
668
+ def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), workspaces: Checkoff::Workspaces.new(config:), projects: Checkoff::Projects.new(config:), custom_fields: Checkoff::CustomFields.new(config:), portfolios: Checkoff::Portfolios.new(config:), clients: Checkoff::Clients.new(config:), client: clients.client); end
669
+
670
+ sig { params(project: T.untyped, project_selector: T.untyped).returns(T.untyped) }
671
+ def filter_via_project_selector(project, project_selector); end
672
+
673
+ sig { returns(T.untyped) }
674
+ attr_reader :workspaces
675
+
676
+ sig { returns(T.untyped) }
677
+ attr_reader :projects
678
+
679
+ sig { returns(T.untyped) }
680
+ attr_reader :custom_fields
681
+
682
+ sig { returns(T.untyped) }
683
+ attr_reader :portfolios
684
+
685
+ sig { returns(T.untyped) }
686
+ attr_reader :client
687
+
688
+ sig { returns(T.untyped) }
689
+ def self.run; end
690
+ end
691
+
692
+ class Projects
693
+ include Logging
694
+ MINUTE = 60
695
+ HOUR = MINUTE * 60
696
+ DAY = 24 * HOUR
697
+ REALLY_LONG_CACHE_TIME = MINUTE * 30
698
+ LONG_CACHE_TIME = MINUTE * 15
699
+ MEDIUM_CACHE_TIME = MINUTE * 5
700
+ SHORT_CACHE_TIME = MINUTE
701
+
702
+ sig do
703
+ params(
704
+ config: T.untyped,
705
+ client: T.untyped,
706
+ workspaces: T.untyped,
707
+ project_hashes: T.untyped,
708
+ project_timing: T.untyped,
709
+ timing: T.untyped
710
+ ).void
711
+ end
712
+ def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), client: Checkoff::Clients.new(config:).client, workspaces: Checkoff::Workspaces.new(config:,
713
+ client:), project_hashes: Checkoff::Internal::ProjectHashes.new, project_timing: Checkoff::Internal::ProjectTiming.new(client:), timing: Checkoff::Timing.new); end
714
+
715
+ sig { params(extra_fields: T.untyped).returns(T.untyped) }
716
+ def task_fields(extra_fields: []); end
717
+
718
+ sig { params(extra_fields: T.untyped, only_uncompleted: T.untyped).returns(T.untyped) }
719
+ def task_options(extra_fields: [], only_uncompleted: false); end
720
+
721
+ sig { params(extra_project_fields: T.untyped).returns(T.untyped) }
722
+ def project_fields(extra_project_fields: []); end
723
+
724
+ sig { params(extra_project_fields: T.untyped).returns(T.untyped) }
725
+ def project_options(extra_project_fields: []); end
726
+
727
+ sig { params(workspace_name: T.untyped, project_name: T.untyped, extra_fields: T.untyped).returns(T.untyped) }
728
+ def project(workspace_name, project_name, extra_fields: []); end
729
+
730
+ sig { params(workspace_name: T.untyped, project_name: T.untyped, extra_fields: T.untyped).returns(T.untyped) }
731
+ def project_or_raise(workspace_name, project_name, extra_fields: []); end
732
+
733
+ sig { params(gid: T.untyped, extra_fields: T.untyped).returns(T.untyped) }
734
+ def project_by_gid(gid, extra_fields: []); end
735
+
736
+ sig { params(tasks: T.untyped).returns(T.untyped) }
737
+ def active_tasks(tasks); end
738
+
739
+ sig { params(project: T.untyped, only_uncompleted: T.untyped, extra_fields: T.untyped).returns(T.untyped) }
740
+ def tasks_from_project(project, only_uncompleted: true, extra_fields: []); end
741
+
742
+ sig { params(project_gid: T.untyped, only_uncompleted: T.untyped, extra_fields: T.untyped).returns(T.untyped) }
743
+ def tasks_from_project_gid(project_gid, only_uncompleted: true, extra_fields: []); end
744
+
745
+ sig { params(workspace_name: T.untyped, extra_fields: T.untyped).returns(T.untyped) }
746
+ def projects_by_workspace_name(workspace_name, extra_fields: []); end
747
+
748
+ sig { params(project_obj: T.untyped, project: T.untyped).returns(T.untyped) }
749
+ def project_to_h(project_obj, project: :not_specified); end
750
+
751
+ sig { params(project: T.untyped, period: T.untyped).returns(T.untyped) }
752
+ def project_ready?(project, period: :now_or_before); end
753
+
754
+ sig { params(project: T.untyped, field_name: T.untyped, period: T.untyped).returns(T.untyped) }
755
+ def in_period?(project, field_name, period); end
756
+
757
+ sig { returns(T.untyped) }
758
+ def as_cache_key; end
759
+
760
+ sig { returns(T.untyped) }
761
+ attr_reader :timing
762
+
763
+ sig { returns(T.untyped) }
764
+ attr_reader :project_timing
765
+
766
+ sig { returns(T.untyped) }
767
+ attr_reader :project_hashes
768
+
769
+ sig { returns(T.untyped) }
770
+ attr_reader :client
771
+
772
+ sig { returns(T.untyped) }
773
+ def projects; end
774
+
775
+ sig { params(workspace_name: T.untyped).returns(T.untyped) }
776
+ def my_tasks(workspace_name); end
777
+ end
778
+
779
+ class Resources
780
+ MINUTE = 60
781
+ HOUR = MINUTE * 60
782
+ DAY = 24 * HOUR
783
+ REALLY_LONG_CACHE_TIME = HOUR * 1
784
+ LONG_CACHE_TIME = MINUTE * 15
785
+ SHORT_CACHE_TIME = MINUTE
786
+
787
+ sig do
788
+ params(
789
+ config: T.untyped,
790
+ workspaces: T.untyped,
791
+ tasks: T.untyped,
792
+ sections: T.untyped,
793
+ projects: T.untyped,
794
+ clients: T.untyped,
795
+ client: T.untyped
796
+ ).void
797
+ end
798
+ def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), workspaces: Checkoff::Workspaces.new(config:), tasks: Checkoff::Tasks.new(config:), sections: Checkoff::Sections.new(config:), projects: Checkoff::Projects.new(config:), clients: Checkoff::Clients.new(config:), client: clients.client); end
799
+
800
+ sig { params(gid: T.untyped, resource_type: T.untyped).returns(T.untyped) }
801
+ def resource_by_gid(gid, resource_type: nil); end
802
+
803
+ sig { params(gid: T.untyped).returns(T.untyped) }
804
+ def fetch_task_gid(gid); end
805
+
806
+ sig { params(section_gid: T.untyped).returns(T.untyped) }
807
+ def fetch_section_gid(section_gid); end
808
+
809
+ sig { params(project_gid: T.untyped).returns(T.untyped) }
810
+ def fetch_project_gid(project_gid); end
811
+
812
+ sig { returns(T.untyped) }
813
+ attr_reader :workspaces
814
+
815
+ sig { returns(T.untyped) }
816
+ attr_reader :projects
817
+
818
+ sig { returns(T.untyped) }
819
+ attr_reader :sections
820
+
821
+ sig { returns(T.untyped) }
822
+ attr_reader :tasks
823
+
824
+ sig { returns(T.untyped) }
825
+ attr_reader :client
826
+
827
+ sig { returns(T.untyped) }
828
+ def self.run; end
829
+ end
830
+
831
+ class SectionSelectors
832
+ MINUTE = 60
833
+ HOUR = MINUTE * 60
834
+ DAY = 24 * HOUR
835
+ REALLY_LONG_CACHE_TIME = HOUR * 1
836
+ LONG_CACHE_TIME = MINUTE * 15
837
+ SHORT_CACHE_TIME = MINUTE
838
+
839
+ sig do
840
+ params(
841
+ config: T.untyped,
842
+ workspaces: T.untyped,
843
+ sections: T.untyped,
844
+ custom_fields: T.untyped,
845
+ clients: T.untyped,
846
+ client: T.untyped
847
+ ).void
848
+ end
849
+ def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), workspaces: Checkoff::Workspaces.new(config:), sections: Checkoff::Sections.new(config:), custom_fields: Checkoff::CustomFields.new(config:), clients: Checkoff::Clients.new(config:), client: clients.client); end
850
+
851
+ sig { params(section: T.untyped, section_selector: T.untyped).returns(T.untyped) }
852
+ def filter_via_section_selector(section, section_selector); end
853
+
854
+ sig { returns(T.untyped) }
855
+ attr_reader :workspaces
856
+
857
+ sig { returns(T.untyped) }
858
+ attr_reader :sections
859
+
860
+ sig { returns(T.untyped) }
861
+ attr_reader :custom_fields
862
+
863
+ sig { returns(T.untyped) }
864
+ attr_reader :client
865
+
866
+ sig { returns(T.untyped) }
867
+ def self.run; end
868
+ end
869
+
870
+ class Sections
871
+ include Logging
872
+ extend Forwardable
873
+ MINUTE = 60
874
+ HOUR = MINUTE * 60
875
+ REALLY_LONG_CACHE_TIME = MINUTE * 30
876
+ LONG_CACHE_TIME = MINUTE * 15
877
+ SHORT_CACHE_TIME = MINUTE * 5
878
+
879
+ sig { returns(T.untyped) }
880
+ attr_reader :projects
881
+
882
+ sig { returns(T.untyped) }
883
+ attr_reader :workspaces
884
+
885
+ sig { returns(T.untyped) }
886
+ attr_reader :time
887
+
888
+ sig { returns(T.untyped) }
889
+ attr_reader :my_tasks
890
+
891
+ sig do
892
+ params(
893
+ config: T.untyped,
894
+ client: T.untyped,
895
+ projects: T.untyped,
896
+ workspaces: T.untyped,
897
+ time: T.untyped
898
+ ).void
899
+ end
900
+ def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), client: Checkoff::Clients.new(config:).client, projects: Checkoff::Projects.new(config:,
901
+ client:), workspaces: Checkoff::Workspaces.new(config:,
902
+ client:), time: Time); end
903
+
904
+ sig { params(workspace_name: T.untyped, project_name: T.untyped, extra_fields: T.untyped).returns(T.untyped) }
905
+ def sections_or_raise(workspace_name, project_name, extra_fields: []); end
906
+
907
+ sig { params(project_gid: T.untyped, extra_fields: T.untyped).returns(T.untyped) }
908
+ def sections_by_project_gid(project_gid, extra_fields: []); end
909
+
910
+ sig do
911
+ params(
912
+ workspace_name: T.untyped,
913
+ project_name: T.untyped,
914
+ only_uncompleted: T.untyped,
915
+ extra_fields: T.untyped
916
+ ).returns(T.untyped)
917
+ end
918
+ def tasks_by_section(workspace_name, project_name, only_uncompleted: true, extra_fields: []); end
919
+
920
+ sig { params(section_gid: T.untyped, only_uncompleted: T.untyped, extra_fields: T.untyped).returns(T.untyped) }
921
+ def tasks_by_section_gid(section_gid, only_uncompleted: true, extra_fields: []); end
922
+
923
+ sig do
924
+ params(
925
+ workspace_name: T.untyped,
926
+ project_name: T.untyped,
927
+ section_name: T.untyped,
928
+ only_uncompleted: T.untyped,
929
+ extra_fields: T.untyped
930
+ ).returns(T.untyped)
931
+ end
932
+ def tasks(workspace_name, project_name, section_name, only_uncompleted: true, extra_fields: []); end
933
+
934
+ sig { params(workspace_name: T.untyped, project_name: T.untyped, section_name: T.untyped).returns(T.untyped) }
935
+ def section_task_names(workspace_name, project_name, section_name); end
936
+
937
+ sig do
938
+ params(
939
+ workspace_name: T.untyped,
940
+ project_name: T.untyped,
941
+ section_name: T.untyped,
942
+ extra_section_fields: T.untyped
943
+ ).returns(T.untyped)
944
+ end
945
+ def section_or_raise(workspace_name, project_name, section_name, extra_section_fields: []); end
946
+
947
+ sig { params(name: T.untyped).returns(T.untyped) }
948
+ def section_key(name); end
949
+
950
+ sig { params(section: T.untyped).returns(T.untyped) }
951
+ def previous_section(section); end
952
+
953
+ sig { params(gid: T.untyped).returns(T.untyped) }
954
+ def section_by_gid(gid); end
955
+
956
+ sig { returns(T.untyped) }
957
+ def as_cache_key; end
958
+
959
+ sig do
960
+ params(
961
+ workspace_name: T.untyped,
962
+ project_name: T.untyped,
963
+ section_name: T.untyped,
964
+ extra_section_fields: T.untyped
965
+ ).returns(T.untyped)
966
+ end
967
+ def section(workspace_name, project_name, section_name, extra_section_fields: []); end
968
+
969
+ sig { params(response: T.untyped).returns(T.untyped) }
970
+ def parse(response); end
971
+
972
+ sig { returns(T.untyped) }
973
+ attr_reader :client
974
+
975
+ sig { params(project: T.untyped, only_uncompleted: T.untyped, extra_fields: T.untyped).returns(T.untyped) }
976
+ def tasks_by_section_for_project(project, only_uncompleted: true, extra_fields: []); end
977
+
978
+ sig { params(tasks: T.untyped, project_gid: T.untyped).returns(T.untyped) }
979
+ def by_section(tasks, project_gid); end
980
+
981
+ sig { params(by_section: T.untyped, task: T.untyped, project_gid: T.untyped).returns(T.untyped) }
982
+ def file_task_by_section(by_section, task, project_gid); end
983
+
984
+ sig { params(workspace_name: T.untyped, project_name: T.untyped).returns(T.untyped) }
985
+ def project_or_raise(workspace_name, project_name); end
986
+ end
987
+
988
+ class Subtasks
989
+ extend Forwardable
990
+ MINUTE = 60
991
+ LONG_CACHE_TIME = MINUTE * 15
992
+ SHORT_CACHE_TIME = MINUTE * 5
993
+
994
+ sig { params(config: T.untyped, projects: T.untyped, clients: T.untyped).void }
995
+ def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), projects: Checkoff::Projects.new(config:), clients: Checkoff::Clients.new(config:)); end
996
+
997
+ sig { params(task: T.untyped).returns(T.untyped) }
998
+ def all_subtasks_completed?(task); end
999
+
1000
+ sig { params(tasks: T.untyped).returns(T.untyped) }
1001
+ def by_section(tasks); end
1002
+
1003
+ sig { params(task: T.untyped).returns(T.untyped) }
1004
+ def raw_subtasks(task); end
1005
+
1006
+ sig { params(task_gid: T.untyped, extra_fields: T.untyped, only_uncompleted: T.untyped).returns(T.untyped) }
1007
+ def subtasks_by_gid(task_gid, extra_fields: [], only_uncompleted: true); end
1008
+
1009
+ sig { params(subtask: T.untyped).returns(T.untyped) }
1010
+ def subtask_section?(subtask); end
1011
+
1012
+ sig { returns(T.untyped) }
1013
+ attr_reader :projects
1014
+
1015
+ sig { returns(T.untyped) }
1016
+ attr_reader :client
1017
+
1018
+ sig { params(current_section: T.untyped, by_section: T.untyped, task: T.untyped).returns(T.untyped) }
1019
+ def file_task_by_section(current_section, by_section, task); end
1020
+ end
1021
+
1022
+ class Tags
1023
+ MINUTE = 60
1024
+ HOUR = T.let(MINUTE * 60, Numeric)
1025
+ DAY = T.let(24 * HOUR, Numeric)
1026
+ REALLY_LONG_CACHE_TIME = T.let(HOUR * 1, Numeric)
1027
+ LONG_CACHE_TIME = T.let(MINUTE * 15, Numeric)
1028
+ SHORT_CACHE_TIME = T.let(MINUTE, Numeric)
1029
+
1030
+ sig do
1031
+ params(
1032
+ config: T.untyped,
1033
+ clients: T.untyped,
1034
+ client: T.untyped,
1035
+ projects: T.untyped,
1036
+ workspaces: T.untyped
1037
+ ).void
1038
+ end
1039
+ 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
1040
+
1041
+ sig do
1042
+ params(
1043
+ workspace_name: T.untyped,
1044
+ tag_name: T.untyped,
1045
+ only_uncompleted: T.untyped,
1046
+ extra_fields: T.untyped
1047
+ ).returns(T.untyped)
1048
+ end
1049
+ def tasks(workspace_name, tag_name, only_uncompleted: true, extra_fields: []); end
1050
+
1051
+ sig do
1052
+ params(
1053
+ workspace_name: T.untyped,
1054
+ tag_gid: T.untyped,
1055
+ only_uncompleted: T.untyped,
1056
+ extra_fields: T.untyped
1057
+ ).returns(T.untyped)
1058
+ end
1059
+ def tasks_by_tag_gid(workspace_name, tag_gid, only_uncompleted: true, extra_fields: []); end
1060
+
1061
+ sig { params(workspace_name: T.untyped, tag_name: T.untyped).returns(T.untyped) }
1062
+ def tag_or_raise(workspace_name, tag_name); end
1063
+
1064
+ sig { params(workspace_name: T.untyped, tag_name: T.untyped).returns(T.untyped) }
1065
+ def tag(workspace_name, tag_name); end
1066
+
1067
+ sig { returns(T.untyped) }
1068
+ attr_reader :workspaces
1069
+
1070
+ sig { returns(T.untyped) }
1071
+ attr_reader :projects
1072
+
1073
+ sig { returns(T.untyped) }
1074
+ attr_reader :client
1075
+
1076
+ sig { params(options: T.untyped).returns(T.untyped) }
1077
+ def build_params(options); end
1078
+
1079
+ sig { params(response: T.untyped).returns(T.untyped) }
1080
+ def parse(response); end
1081
+
1082
+ sig { returns(T.untyped) }
1083
+ def self.run; end
1084
+ end
1085
+
1086
+ class TaskSearches
1087
+ include Logging
1088
+ include Asana::Resources::ResponseHelper
1089
+ MINUTE = 60
1090
+ HOUR = MINUTE * 60
1091
+ DAY = 24 * HOUR
1092
+ REALLY_LONG_CACHE_TIME = HOUR * 1
1093
+ LONG_CACHE_TIME = MINUTE * 15
1094
+ SHORT_CACHE_TIME = MINUTE
1095
+
1096
+ sig do
1097
+ params(
1098
+ config: T.untyped,
1099
+ workspaces: T.untyped,
1100
+ task_selectors: T.untyped,
1101
+ projects: T.untyped,
1102
+ clients: T.untyped,
1103
+ client: T.untyped,
1104
+ search_url_parser: T.untyped,
1105
+ asana_resources_collection_class: T.untyped
1106
+ ).void
1107
+ end
1108
+ def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), workspaces: Checkoff::Workspaces.new(config:), task_selectors: Checkoff::TaskSelectors.new(config:), projects: Checkoff::Projects.new(config:), clients: Checkoff::Clients.new(config:), client: clients.client, search_url_parser: Checkoff::Internal::SearchUrl::Parser.new, asana_resources_collection_class: Asana::Resources::Collection); end
1109
+
1110
+ sig { params(workspace_name: T.untyped, url: T.untyped, extra_fields: T.untyped).returns(T.untyped) }
1111
+ def task_search(workspace_name, url, extra_fields: []); end
1112
+
1113
+ sig do
1114
+ params(
1115
+ api_params: T.untyped,
1116
+ workspace_gid: T.untyped,
1117
+ extra_fields: T.untyped,
1118
+ task_selector: T.untyped,
1119
+ fetch_all: T.untyped
1120
+ ).returns(T.untyped)
1121
+ end
1122
+ def raw_task_search(api_params, workspace_gid:, extra_fields: [], task_selector: [], fetch_all: true); end
1123
+
1124
+ sig { returns(T.untyped) }
1125
+ def as_cache_key; end
1126
+
1127
+ sig { params(api_params: T.untyped, workspace_gid: T.untyped, extra_fields: T.untyped).returns(T.untyped) }
1128
+ def api_task_search_request(api_params, workspace_gid:, extra_fields:); end
1129
+
1130
+ sig { params(api_params: T.untyped, workspace_gid: T.untyped, extra_fields: T.untyped).returns(T.untyped) }
1131
+ def iterated_raw_task_search(api_params, workspace_gid:, extra_fields:); end
1132
+
1133
+ sig { params(extra_fields: T.untyped).returns(T.untyped) }
1134
+ def calculate_api_options(extra_fields); end
1135
+
1136
+ sig { returns(T.untyped) }
1137
+ def self.run; end
1138
+
1139
+ sig { returns(T.untyped) }
1140
+ attr_reader :task_selectors
1141
+
1142
+ sig { returns(T.untyped) }
1143
+ attr_reader :projects
1144
+
1145
+ sig { returns(T.untyped) }
1146
+ attr_reader :workspaces
1147
+
1148
+ sig { returns(T.untyped) }
1149
+ attr_reader :client
1150
+ end
1151
+
1152
+ class TaskSelectors
1153
+ MINUTE = 60
1154
+ HOUR = MINUTE * 60
1155
+ DAY = 24 * HOUR
1156
+ REALLY_LONG_CACHE_TIME = HOUR * 1
1157
+ LONG_CACHE_TIME = MINUTE * 15
1158
+ SHORT_CACHE_TIME = MINUTE
1159
+
1160
+ sig do
1161
+ params(
1162
+ config: T.untyped,
1163
+ client: T.untyped,
1164
+ tasks: T.untyped,
1165
+ timelines: T.untyped,
1166
+ custom_fields: T.untyped
1167
+ ).void
1168
+ end
1169
+ def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), client: Checkoff::Clients.new(config:).client, tasks: Checkoff::Tasks.new(config:,
1170
+ client:), timelines: Checkoff::Timelines.new(config:,
1171
+ client:), custom_fields: Checkoff::CustomFields.new(config:,
1172
+ client:)); end
1173
+
1174
+ sig { params(task: T.untyped, task_selector: T.untyped).returns(T.untyped) }
1175
+ def filter_via_task_selector(task, task_selector); end
1176
+
1177
+ sig { returns(T.untyped) }
1178
+ attr_reader :tasks
1179
+
1180
+ sig { returns(T.untyped) }
1181
+ attr_reader :timelines
1182
+
1183
+ sig { returns(T.untyped) }
1184
+ attr_reader :custom_fields
1185
+
1186
+ sig { returns(T.untyped) }
1187
+ def self.project_name; end
1188
+
1189
+ sig { returns(T.untyped) }
1190
+ def self.workspace_name; end
1191
+
1192
+ sig { returns(T.untyped) }
1193
+ def self.task_selector; end
1194
+
1195
+ sig { returns(T.untyped) }
1196
+ def self.run; end
1197
+ end
1198
+
1199
+ class Tasks
1200
+ include Logging
1201
+ extend T::Sig
1202
+ MINUTE = 60
1203
+ HOUR = MINUTE * 60
1204
+ DAY = 24 * HOUR
1205
+ REALLY_LONG_CACHE_TIME = MINUTE * 30
1206
+ LONG_CACHE_TIME = MINUTE * 15
1207
+ SHORT_CACHE_TIME = MINUTE * 5
1208
+
1209
+ sig do
1210
+ params(
1211
+ config: T.untyped,
1212
+ client: T.untyped,
1213
+ workspaces: T.untyped,
1214
+ sections: T.untyped,
1215
+ portfolios: T.untyped,
1216
+ custom_fields: T.untyped,
1217
+ time_class: T.untyped,
1218
+ date_class: T.untyped,
1219
+ asana_task: T.untyped
1220
+ ).void
1221
+ end
1222
+ def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), client: Checkoff::Clients.new(config:).client, workspaces: Checkoff::Workspaces.new(config:,
1223
+ client:), sections: Checkoff::Sections.new(config:,
1224
+ client:), portfolios: Checkoff::Portfolios.new(config:,
1225
+ client:), custom_fields: Checkoff::CustomFields.new(config:,
1226
+ client:), time_class: Time, date_class: Date, asana_task: Asana::Resources::Task); end
1227
+
1228
+ sig { params(task: T.untyped, period: T.untyped, ignore_dependencies: T.untyped).returns(T.untyped) }
1229
+ def task_ready?(task, period: :now_or_before, ignore_dependencies: false); end
1230
+
1231
+ sig { params(task: T.untyped, field_name: T.untyped, period: T.untyped).returns(T.untyped) }
1232
+ def in_period?(task, field_name, period); end
1233
+
1234
+ sig { params(task: T.untyped, field_name: T.untyped).returns(T.untyped) }
1235
+ def date_or_time_field_by_name(task, field_name); end
1236
+
1237
+ sig do
1238
+ params(
1239
+ workspace_name: T.untyped,
1240
+ project_name: T.untyped,
1241
+ task_name: T.untyped,
1242
+ section_name: T.untyped,
1243
+ only_uncompleted: T.untyped,
1244
+ extra_fields: T.untyped
1245
+ ).returns(T.untyped)
1246
+ end
1247
+ def task(workspace_name, project_name, task_name, section_name: :unspecified, only_uncompleted: true, extra_fields: []); end
1248
+
1249
+ sig do
1250
+ params(
1251
+ workspace_name: T.untyped,
1252
+ project_name: T.untyped,
1253
+ section_name: T.untyped,
1254
+ task_name: T.untyped
1255
+ ).returns(T.untyped)
1256
+ end
1257
+ def gid_for_task(workspace_name, project_name, section_name, task_name); end
1258
+
1259
+ sig { params(task_gid: T.untyped, extra_fields: T.untyped, only_uncompleted: T.untyped).returns(T.untyped) }
1260
+ def task_by_gid(task_gid, extra_fields: [], only_uncompleted: true); end
1261
+
1262
+ sig { params(name: T.untyped, workspace_gid: T.untyped, assignee_gid: T.untyped).returns(T.untyped) }
1263
+ def add_task(name, workspace_gid: @workspaces.default_workspace_gid, assignee_gid: default_assignee_gid); end
1264
+
1265
+ sig { params(task: T.untyped).returns(T.untyped) }
1266
+ def url_of_task(task); end
1267
+
1268
+ sig { params(task: T.untyped).returns(T.untyped) }
1269
+ def incomplete_dependencies?(task); end
1270
+
1271
+ sig { params(task: T.untyped, extra_task_fields: T.untyped).returns(T.untyped) }
1272
+ def all_dependent_tasks(task, extra_task_fields: []); end
1273
+
1274
+ sig { params(task: T.untyped).returns(T.untyped) }
1275
+ def task_to_h(task); end
1276
+
1277
+ sig { params(task_data: T.untyped).returns(T.untyped) }
1278
+ def h_to_task(task_data); end
1279
+
1280
+ sig { params(task: T.untyped, portfolio_name: T.untyped, workspace_name: T.untyped).returns(T.untyped) }
1281
+ def in_portfolio_named?(task, portfolio_name, workspace_name: @workspaces.default_workspace.name); end
1282
+
1283
+ sig { params(task: T.untyped, portfolio_name: T.untyped, workspace_name: T.untyped).returns(T.untyped) }
1284
+ def in_portfolio_more_than_once?(task, portfolio_name, workspace_name: @workspaces.default_workspace.name); end
1285
+
1286
+ sig { returns(T.untyped) }
1287
+ def as_cache_key; end
1288
+
1289
+ sig { returns(T.untyped) }
1290
+ def task_timing; end
1291
+
1292
+ sig { returns(T.untyped) }
1293
+ def task_hashes; end
1294
+
1295
+ sig do
1296
+ params(
1297
+ workspace_name: T.untyped,
1298
+ project_name: T.untyped,
1299
+ only_uncompleted: T.untyped,
1300
+ extra_fields: T.untyped,
1301
+ section_name: T.untyped
1302
+ ).returns(T.untyped)
1303
+ end
1304
+ def tasks(workspace_name, project_name, only_uncompleted:, extra_fields: [], section_name: :unspecified); end
1305
+
1306
+ sig { returns(T.untyped) }
1307
+ attr_reader :client
1308
+
1309
+ sig { returns(T.untyped) }
1310
+ attr_reader :timing
1311
+
1312
+ sig { returns(T.untyped) }
1313
+ attr_reader :custom_fields
1314
+
1315
+ sig { returns(T.untyped) }
1316
+ def projects; end
1317
+
1318
+ sig { returns(T.untyped) }
1319
+ def default_assignee_gid; end
1320
+ end
1321
+
1322
+ class Timelines
1323
+ MINUTE = 60
1324
+ HOUR = MINUTE * 60
1325
+ DAY = 24 * HOUR
1326
+ REALLY_LONG_CACHE_TIME = HOUR * 1
1327
+ LONG_CACHE_TIME = MINUTE * 15
1328
+ SHORT_CACHE_TIME = MINUTE
1329
+
1330
+ sig do
1331
+ params(
1332
+ config: T.untyped,
1333
+ workspaces: T.untyped,
1334
+ sections: T.untyped,
1335
+ tasks: T.untyped,
1336
+ portfolios: T.untyped,
1337
+ clients: T.untyped,
1338
+ client: T.untyped
1339
+ ).void
1340
+ end
1341
+ def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), workspaces: Checkoff::Workspaces.new(config:), sections: Checkoff::Sections.new(config:), tasks: Checkoff::Tasks.new(config:), portfolios: Checkoff::Portfolios.new(config:), clients: Checkoff::Clients.new(config:), client: clients.client); end
1342
+
1343
+ sig { params(task: T.untyped, limit_to_portfolio_gid: T.untyped).returns(T.untyped) }
1344
+ def task_dependent_on_previous_section_last_milestone?(task, limit_to_portfolio_gid: nil); end
1345
+
1346
+ sig { params(task: T.untyped, limit_to_portfolio_name: T.untyped).returns(T.untyped) }
1347
+ def last_task_milestone_depends_on_this_task?(task, limit_to_portfolio_name: nil); end
1348
+
1349
+ sig { params(task: T.untyped, limit_to_portfolio_name: T.untyped).returns(T.untyped) }
1350
+ def any_milestone_depends_on_this_task?(task, limit_to_portfolio_name: nil); end
1351
+
1352
+ sig { params(section_gid: T.untyped).returns(T.untyped) }
1353
+ def last_milestone_in_section(section_gid); end
1354
+
1355
+ sig { params(task_data: T.untyped, section: T.untyped).returns(T.untyped) }
1356
+ def task_data_dependent_on_previous_section_last_milestone?(task_data, section); end
1357
+
1358
+ sig { returns(T.untyped) }
1359
+ attr_reader :workspaces
1360
+
1361
+ sig { returns(T.untyped) }
1362
+ attr_reader :client
1363
+
1364
+ sig { returns(T.untyped) }
1365
+ def self.run; end
1366
+ end
1367
+
1368
+ class Timing
1369
+ include Logging
1370
+ MINUTE = 60
1371
+ HOUR = MINUTE * 60
1372
+ DAY = 24 * HOUR
1373
+ REALLY_LONG_CACHE_TIME = HOUR * 1
1374
+ LONG_CACHE_TIME = MINUTE * 15
1375
+ SHORT_CACHE_TIME = MINUTE
1376
+ WDAY_FROM_DAY_OF_WEEK = {
1377
+ monday: 1,
1378
+ tuesday: 2,
1379
+ wednesday: 3,
1380
+ thursday: 4,
1381
+ friday: 5,
1382
+ saturday: 6,
1383
+ sunday: 0,
1384
+ }.freeze
1385
+
1386
+ sig { params(today_getter: T.untyped, now_getter: T.untyped).void }
1387
+ def initialize(today_getter: Date, now_getter: Time); end
1388
+
1389
+ sig { params(date_or_time: T.untyped, period: T.untyped).returns(T.untyped) }
1390
+ def in_period?(date_or_time, period); end
1391
+
1392
+ sig { params(date_or_time: T.untyped, num_days: T.untyped).returns(T.untyped) }
1393
+ def greater_than_or_equal_to_n_days_from_today?(date_or_time, num_days); end
1394
+
1395
+ sig { params(date_or_time: T.untyped, num_days: T.untyped).returns(T.untyped) }
1396
+ def greater_than_or_equal_to_n_days_from_now?(date_or_time, num_days); end
1397
+
1398
+ sig { params(date_or_time: T.untyped, num_days: T.untyped).returns(T.untyped) }
1399
+ def less_than_n_days_ago?(date_or_time, num_days); end
1400
+
1401
+ sig { params(date_or_time: T.untyped, num_days: T.untyped).returns(T.untyped) }
1402
+ def less_than_n_days_from_now?(date_or_time, num_days); end
1403
+
1404
+ sig { params(date_or_time: T.untyped).returns(T.untyped) }
1405
+ def this_week?(date_or_time); end
1406
+
1407
+ sig { params(date_or_time: T.untyped).returns(T.untyped) }
1408
+ def next_week?(date_or_time); end
1409
+
1410
+ sig { params(date_or_time: T.untyped, day_of_week: T.untyped).returns(T.untyped) }
1411
+ def day_of_week?(date_or_time, day_of_week); end
1412
+
1413
+ sig { params(date_or_time: T.untyped).returns(T.untyped) }
1414
+ def now_or_before?(date_or_time); end
1415
+
1416
+ sig { params(num_days: T.untyped).returns(T.untyped) }
1417
+ def n_days_from_now(num_days); end
1418
+
1419
+ sig { params(num_days: T.untyped).returns(T.untyped) }
1420
+ def n_days_from_today(num_days); end
1421
+
1422
+ sig { params(date_or_time: T.untyped, beginning_num_days_from_now: T.untyped, end_num_days_from_now: T.untyped).returns(T.untyped) }
1423
+ def between_relative_days?(date_or_time, beginning_num_days_from_now, end_num_days_from_now); end
1424
+
1425
+ sig { params(date_or_time: T.untyped, period_name: T.untyped, args: T.untyped).returns(T.untyped) }
1426
+ def compound_in_period?(date_or_time, period_name, *args); end
1427
+
1428
+ sig { returns(T.untyped) }
1429
+ def self.run; end
1430
+ end
1431
+
1432
+ class Workspaces
1433
+ MINUTE = 60
1434
+ HOUR = MINUTE * 60
1435
+ DAY = 24 * HOUR
1436
+ REALLY_LONG_CACHE_TIME = HOUR * 1
1437
+ LONG_CACHE_TIME = MINUTE * 15
1438
+ SHORT_CACHE_TIME = MINUTE
1439
+
1440
+ sig { params(config: T.untyped, client: T.untyped, asana_workspace: T.untyped).void }
1441
+ def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), client: Checkoff::Clients.new(config:).client, asana_workspace: Asana::Resources::Workspace); end
1442
+
1443
+ sig { params(workspace_name: T.untyped).returns(T.untyped) }
1444
+ def workspace(workspace_name); end
1445
+
1446
+ sig { returns(T.untyped) }
1447
+ def default_workspace; end
1448
+
1449
+ sig { params(workspace_name: T.untyped).returns(T.untyped) }
1450
+ def workspace_or_raise(workspace_name); end
1451
+
1452
+ sig { returns(T.untyped) }
1453
+ def default_workspace_gid; end
1454
+
1455
+ sig { returns(T.untyped) }
1456
+ attr_reader :client
1457
+ end
1458
+
1459
+ module Internal
1460
+ class AsanaEventEnrichment
1461
+ include Logging
1462
+
1463
+ sig do
1464
+ params(
1465
+ config: T.untyped,
1466
+ workspaces: T.untyped,
1467
+ tasks: T.untyped,
1468
+ sections: T.untyped,
1469
+ projects: T.untyped,
1470
+ resources: T.untyped,
1471
+ clients: T.untyped,
1472
+ client: T.untyped
1473
+ ).void
1474
+ end
1475
+ def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), workspaces: Checkoff::Workspaces.new(config:), tasks: Checkoff::Tasks.new(config:), sections: Checkoff::Sections.new(config:), projects: Checkoff::Projects.new(config:), resources: Checkoff::Resources.new(config:), clients: Checkoff::Clients.new(config:), client: clients.client); end
1476
+
1477
+ sig { params(asana_event: T.untyped).returns(T.untyped) }
1478
+ def enrich_event(asana_event); end
1479
+
1480
+ sig { params(filter: T.untyped).returns(T.untyped) }
1481
+ def enrich_filter(filter); end
1482
+
1483
+ sig { params(webhook_subscription: T.untyped).returns(T.untyped) }
1484
+ def enrich_webhook_subscription!(webhook_subscription); end
1485
+
1486
+ sig { params(gid: T.untyped, resource_type: T.untyped).returns(T.untyped) }
1487
+ def enrich_gid(gid, resource_type: nil); end
1488
+
1489
+ sig { params(filter: T.untyped).returns(T.untyped) }
1490
+ def enrich_filter_parent_gid!(filter); end
1491
+
1492
+ sig { params(filter: T.untyped).returns(T.untyped) }
1493
+ def enrich_filter_resource!(filter); end
1494
+
1495
+ sig { params(filter: T.untyped).returns(T.untyped) }
1496
+ def enrich_filter_section!(filter); end
1497
+
1498
+ sig { params(asana_event: T.untyped).returns(T.untyped) }
1499
+ def enrich_event_parent!(asana_event); end
1500
+
1501
+ sig { params(asana_event: T.untyped).returns(T.untyped) }
1502
+ def enrich_event_resource!(asana_event); end
1503
+
1504
+ sig { returns(T.untyped) }
1505
+ attr_reader :projects
1506
+
1507
+ sig { returns(T.untyped) }
1508
+ attr_reader :sections
1509
+
1510
+ sig { returns(T.untyped) }
1511
+ attr_reader :tasks
1512
+
1513
+ sig { returns(T.untyped) }
1514
+ attr_reader :workspaces
1515
+
1516
+ sig { returns(T.untyped) }
1517
+ attr_reader :resources
1518
+
1519
+ sig { returns(T.untyped) }
1520
+ attr_reader :client
1521
+ end
1522
+
1523
+ class AsanaEventFilter
1524
+ include Logging
1525
+
1526
+ sig do
1527
+ params(
1528
+ filters: T.untyped,
1529
+ clients: T.untyped,
1530
+ tasks: T.untyped,
1531
+ client: T.untyped
1532
+ ).void
1533
+ end
1534
+ def initialize(filters:, clients: Checkoff::Clients.new, tasks: Checkoff::Tasks.new, client: clients.client); end
1535
+
1536
+ sig { params(asana_event: T.untyped).returns(T.untyped) }
1537
+ def matches?(asana_event); end
1538
+
1539
+ sig { params(filter: T.untyped, asana_event: T.untyped, failures: T.untyped).returns(T.untyped) }
1540
+ def filter_matches_asana_event?(filter, asana_event, failures); end
1541
+
1542
+ sig { params(key: T.untyped, value: T.untyped, asana_event: T.untyped).returns(T.untyped) }
1543
+ def asana_event_matches_filter_item?(key, value, asana_event); end
1544
+
1545
+ sig { params(key: T.untyped, asana_event: T.untyped, fields: T.untyped).returns(T.untyped) }
1546
+ def uncached_fetch_task(key, asana_event, fields); end
1547
+ end
1548
+
1549
+ class EnvFallbackConfigLoader
1550
+ sig { params(config: T.untyped, sym: T.untyped, yaml_filename: T.untyped).void }
1551
+ def initialize(config, sym, yaml_filename); end
1552
+
1553
+ sig { params(key: T.untyped).returns(T.untyped) }
1554
+ def [](key); end
1555
+
1556
+ sig { params(key: T.untyped).returns(T.untyped) }
1557
+ def fetch(key); end
1558
+
1559
+ sig { params(key: T.untyped).returns(T.untyped) }
1560
+ def envvar_name(key); end
1561
+ end
1562
+
1563
+ class ConfigLoader
1564
+ sig { params(sym: T.untyped).returns(T.untyped) }
1565
+ def self.load(sym); end
1566
+
1567
+ sig { params(sym: T.untyped).returns(T.untyped) }
1568
+ def self.load_yaml_file(sym); end
1569
+
1570
+ sig { params(sym: T.untyped).returns(T.untyped) }
1571
+ def self.yaml_filename(sym); end
1572
+ end
1573
+
1574
+ class ProjectHashes
1575
+ sig { params(_deps: T.untyped).void }
1576
+ def initialize(_deps = {}); end
1577
+
1578
+ sig { params(project_obj: T.untyped, project: T.untyped).returns(T.untyped) }
1579
+ def project_to_h(project_obj, project: :not_specified); end
1580
+
1581
+ sig { params(project_hash: T.untyped).returns(T.untyped) }
1582
+ def unwrap_custom_fields(project_hash); end
1583
+ end
1584
+
1585
+ class ProjectTiming
1586
+ sig do
1587
+ params(
1588
+ time_class: T.untyped,
1589
+ date_class: T.untyped,
1590
+ client: T.untyped,
1591
+ custom_fields: T.untyped
1592
+ ).void
1593
+ end
1594
+ def initialize(time_class: Time, date_class: Date, client: Checkoff::Clients.new.client, custom_fields: Checkoff::CustomFields.new(client:)); end
1595
+
1596
+ sig { params(project: T.untyped).returns(T.untyped) }
1597
+ def start_date(project); end
1598
+
1599
+ sig { params(project: T.untyped).returns(T.untyped) }
1600
+ def due_date(project); end
1601
+
1602
+ sig { params(project: T.untyped, custom_field_name: T.untyped).returns(T.untyped) }
1603
+ def custom_field(project, custom_field_name); end
1604
+
1605
+ sig { params(project: T.untyped, field_name: T.untyped).returns(T.untyped) }
1606
+ def date_or_time_field_by_name(project, field_name); end
1607
+ end
1608
+
1609
+ class TaskHashes
1610
+ sig { params(task: T.untyped).returns(T.untyped) }
1611
+ def task_to_h(task); end
1612
+
1613
+ sig { params(task_data: T.untyped, client: T.untyped).returns(T.untyped) }
1614
+ def h_to_task(task_data, client:); end
1615
+
1616
+ sig { params(task_hash: T.untyped).returns(T.untyped) }
1617
+ def unwrap_custom_fields(task_hash); end
1618
+
1619
+ sig { params(task_hash: T.untyped, memberships: T.untyped).returns(T.untyped) }
1620
+ def add_user_task_list(task_hash, memberships); end
1621
+
1622
+ sig do
1623
+ params(
1624
+ task_hash: T.untyped,
1625
+ memberships: T.untyped,
1626
+ resource: T.untyped,
1627
+ key: T.untyped
1628
+ ).returns(T.untyped)
1629
+ end
1630
+ def unwrap_memberships(task_hash, memberships, resource, key); end
1631
+
1632
+ sig { params(task_hash: T.untyped).returns(T.untyped) }
1633
+ def unwrap_all_memberships(task_hash); end
1634
+ end
1635
+
1636
+ class TaskTiming
1637
+ sig do
1638
+ params(
1639
+ time_class: T.untyped,
1640
+ date_class: T.untyped,
1641
+ client: T.untyped,
1642
+ custom_fields: T.untyped
1643
+ ).void
1644
+ end
1645
+ def initialize(time_class: Time, date_class: Date, client: Checkoff::Clients.new.client, custom_fields: Checkoff::CustomFields.new(client:)); end
1646
+
1647
+ sig { params(task: T.untyped).returns(T.untyped) }
1648
+ def start_time(task); end
1649
+
1650
+ sig { params(task: T.untyped).returns(T.untyped) }
1651
+ def due_time(task); end
1652
+
1653
+ sig { params(task: T.untyped).returns(T.untyped) }
1654
+ def start_date_or_time(task); end
1655
+
1656
+ sig { params(task: T.untyped).returns(T.untyped) }
1657
+ def due_date_or_time(task); end
1658
+
1659
+ sig { params(task: T.untyped).returns(T.untyped) }
1660
+ def modified_time(task); end
1661
+
1662
+ sig { params(task: T.untyped, custom_field_name: T.untyped).returns(T.untyped) }
1663
+ def custom_field(task, custom_field_name); end
1664
+
1665
+ sig { params(task: T.untyped, field_name: T.untyped).returns(T.untyped) }
1666
+ def date_or_time_field_by_name(task, field_name); end
1667
+ end
1668
+
1669
+ class ThreadLocal
1670
+ sig { params(name: T.untyped, value: T.untyped, block: T.untyped).returns(T.untyped) }
1671
+ def with_thread_local_variable(name, value, &block); end
1672
+ end
1673
+
1674
+ module SearchUrl
1675
+ class CustomFieldParamConverter
1676
+ VARIANTS = {
1677
+ 'is' => CustomFieldVariant::Is,
1678
+ 'no_value' => CustomFieldVariant::NoValue,
1679
+ 'any_value' => CustomFieldVariant::AnyValue,
1680
+ 'is_not' => CustomFieldVariant::IsNot,
1681
+ 'less_than' => CustomFieldVariant::LessThan,
1682
+ 'greater_than' => CustomFieldVariant::GreaterThan,
1683
+ 'equals' => CustomFieldVariant::Equals,
1684
+ 'doesnt_contain_any' => CustomFieldVariant::DoesntContainAny,
1685
+ 'contains_any' => CustomFieldVariant::ContainsAny,
1686
+ 'contains_all' => CustomFieldVariant::ContainsAll,
1687
+ }.freeze
1688
+
1689
+ sig { params(custom_field_params: T.untyped).void }
1690
+ def initialize(custom_field_params:); end
1691
+
1692
+ sig { returns(T.untyped) }
1693
+ def convert; end
1694
+
1695
+ sig { returns(T.untyped) }
1696
+ def by_custom_field; end
1697
+
1698
+ sig { params(gid: T.untyped, single_custom_field_params: T.untyped).returns(T.untyped) }
1699
+ def convert_single_custom_field_params(gid, single_custom_field_params); end
1700
+
1701
+ sig { params(key: T.untyped).returns(T.untyped) }
1702
+ def gid_from_custom_field_key(key); end
1703
+
1704
+ sig { returns(T.untyped) }
1705
+ attr_reader :custom_field_params
1706
+ end
1707
+
1708
+ module CustomFieldVariant
1709
+ class CustomFieldVariant
1710
+ sig { params(gid: T.untyped, remaining_params: T.untyped).void }
1711
+ def initialize(gid, remaining_params); end
1712
+
1713
+ sig { returns(T.untyped) }
1714
+ attr_reader :gid
1715
+
1716
+ sig { returns(T.untyped) }
1717
+ attr_reader :remaining_params
1718
+
1719
+ sig { returns(T.untyped) }
1720
+ def ensure_no_remaining_params!; end
1721
+
1722
+ sig { params(param_name: T.untyped).returns(T.untyped) }
1723
+ def fetch_solo_param(param_name); end
1724
+ end
1725
+
1726
+ class LessThan < CustomFieldVariant
1727
+ sig { returns(T.untyped) }
1728
+ def convert; end
1729
+ end
1730
+
1731
+ class GreaterThan < CustomFieldVariant
1732
+ sig { returns(T.untyped) }
1733
+ def convert; end
1734
+ end
1735
+
1736
+ class Equals < CustomFieldVariant
1737
+ sig { returns(T.untyped) }
1738
+ def convert; end
1739
+ end
1740
+
1741
+ class IsNot < CustomFieldVariant
1742
+ sig { returns(T.untyped) }
1743
+ def convert; end
1744
+ end
1745
+
1746
+ class DoesntContainAny < CustomFieldVariant
1747
+ sig { returns(T.untyped) }
1748
+ def convert; end
1749
+ end
1750
+
1751
+ class ContainsAny < CustomFieldVariant
1752
+ sig { returns(T.untyped) }
1753
+ def convert; end
1754
+ end
1755
+
1756
+ class ContainsAll < CustomFieldVariant
1757
+ sig { returns(T.untyped) }
1758
+ def convert; end
1759
+ end
1760
+
1761
+ class NoValue < CustomFieldVariant
1762
+ sig { returns(T.untyped) }
1763
+ def convert; end
1764
+ end
1765
+
1766
+ class AnyValue < CustomFieldVariant
1767
+ sig { returns(T.untyped) }
1768
+ def convert; end
1769
+ end
1770
+
1771
+ class Is < CustomFieldVariant
1772
+ sig { returns(T.untyped) }
1773
+ def convert; end
1774
+ end
1775
+ end
1776
+
1777
+ class DateParamConverter
1778
+ API_PREFIX = {
1779
+ 'due_date' => 'due_on',
1780
+ 'start_date' => 'start_on',
1781
+ 'completion_date' => 'completed_on',
1782
+ }.freeze
1783
+
1784
+ sig { params(date_url_params: T.untyped).void }
1785
+ def initialize(date_url_params:); end
1786
+
1787
+ sig { returns(T.untyped) }
1788
+ def convert; end
1789
+
1790
+ sig { params(prefix: T.untyped).returns(T.untyped) }
1791
+ def convert_for_prefix(prefix); end
1792
+
1793
+ sig { params(prefix: T.untyped).returns(T.untyped) }
1794
+ def handle_through_next(prefix); end
1795
+
1796
+ sig { params(prefix: T.untyped).returns(T.untyped) }
1797
+ def handle_between(prefix); end
1798
+
1799
+ sig { params(prefix: T.untyped).returns(T.untyped) }
1800
+ def handle_within_last(prefix); end
1801
+
1802
+ sig { params(prefix: T.untyped).returns(T.untyped) }
1803
+ def handle_within_next(prefix); end
1804
+
1805
+ sig { params(param_key: T.untyped).returns(T.untyped) }
1806
+ def get_single_param(param_key); end
1807
+
1808
+ sig { params(prefix: T.untyped).returns(T.untyped) }
1809
+ def validate_unit_not_provided!(prefix); end
1810
+
1811
+ sig { params(prefix: T.untyped).returns(T.untyped) }
1812
+ def validate_unit_is_day!(prefix); end
1813
+
1814
+ sig { returns(T.untyped) }
1815
+ attr_reader :date_url_params
1816
+ end
1817
+
1818
+ class Parser
1819
+ sig { params(_deps: T.untyped).void }
1820
+ def initialize(_deps = {}); end
1821
+
1822
+ sig { params(url: T.untyped).returns(T.untyped) }
1823
+ def convert_params(url); end
1824
+
1825
+ sig { params(date_url_params: T.untyped).returns(T.untyped) }
1826
+ def convert_date_params(date_url_params); end
1827
+
1828
+ sig { params(simple_url_params: T.untyped).returns(T.untyped) }
1829
+ def convert_simple_params(simple_url_params); end
1830
+
1831
+ sig { params(custom_field_params: T.untyped).returns(T.untyped) }
1832
+ def convert_custom_field_params(custom_field_params); end
1833
+
1834
+ sig { params(url_params: T.untyped).returns(T.untyped) }
1835
+ def partition_url_params(url_params); end
1836
+ end
1837
+
1838
+ class ResultsMerger
1839
+ sig { params(args: T.untyped).returns(T.untyped) }
1840
+ def self.merge_args(*args); end
1841
+
1842
+ sig { params(task_selectors: T.untyped).returns(T.untyped) }
1843
+ def self.merge_task_selectors(*task_selectors); end
1844
+ end
1845
+
1846
+ module SimpleParam
1847
+ class SimpleParam
1848
+ sig { params(key: T.untyped, values: T.untyped).void }
1849
+ def initialize(key:, values:); end
1850
+
1851
+ sig { returns(T.untyped) }
1852
+ def single_value; end
1853
+
1854
+ sig { returns(T.untyped) }
1855
+ attr_reader :key
1856
+
1857
+ sig { returns(T.untyped) }
1858
+ attr_reader :values
1859
+
1860
+ sig { params(projects: T.untyped, sections: T.untyped).returns(T.untyped) }
1861
+ def parse_projects_and_sections(projects, sections); end
1862
+
1863
+ sig { params(verb: T.untyped).returns(T.untyped) }
1864
+ def convert_from_projects_and_sections(verb); end
1865
+ end
1866
+
1867
+ class PortfoliosIds < SimpleParam
1868
+ sig { returns(T.untyped) }
1869
+ def convert; end
1870
+ end
1871
+
1872
+ class AnyProjectsIds < SimpleParam
1873
+ sig { returns(T.untyped) }
1874
+ def convert; end
1875
+ end
1876
+
1877
+ class NotProjectsIds < SimpleParam
1878
+ sig { returns(T.untyped) }
1879
+ def convert; end
1880
+ end
1881
+
1882
+ class Completion < SimpleParam
1883
+ sig { returns(T.untyped) }
1884
+ def convert; end
1885
+ end
1886
+
1887
+ class NotTagsIds < SimpleParam
1888
+ sig { returns(T.untyped) }
1889
+ def convert; end
1890
+ end
1891
+
1892
+ class Subtask < SimpleParam
1893
+ sig { returns(T.untyped) }
1894
+ def convert; end
1895
+ end
1896
+
1897
+ class AnyTagsIds < SimpleParam
1898
+ sig { returns(T.untyped) }
1899
+ def convert; end
1900
+ end
1901
+
1902
+ class Sort < SimpleParam
1903
+ sig { returns(T.untyped) }
1904
+ def convert; end
1905
+ end
1906
+
1907
+ class Milestone < SimpleParam
1908
+ sig { returns(T.untyped) }
1909
+ def convert; end
1910
+ end
1911
+
1912
+ class SearchedType < SimpleParam
1913
+ sig { returns(T.untyped) }
1914
+ def convert; end
1915
+ end
1916
+ end
1917
+
1918
+ class SimpleParamConverter
1919
+ ARGS = {
1920
+ 'portfolios.ids' => SimpleParam::PortfoliosIds,
1921
+ 'any_projects.ids' => SimpleParam::AnyProjectsIds,
1922
+ 'not_projects.ids' => SimpleParam::NotProjectsIds,
1923
+ 'completion' => SimpleParam::Completion,
1924
+ 'not_tags.ids' => SimpleParam::NotTagsIds,
1925
+ 'any_tags.ids' => SimpleParam::AnyTagsIds,
1926
+ 'subtask' => SimpleParam::Subtask,
1927
+ 'sort' => SimpleParam::Sort,
1928
+ 'milestone' => SimpleParam::Milestone,
1929
+ 'searched_type' => SimpleParam::SearchedType,
1930
+ }.freeze
1931
+
1932
+ sig { params(simple_url_params: T.untyped).void }
1933
+ def initialize(simple_url_params:); end
1934
+
1935
+ sig { returns(T.untyped) }
1936
+ def convert; end
1937
+
1938
+ sig { params(key: T.untyped, values: T.untyped).returns(T.untyped) }
1939
+ def convert_arg(key, values); end
1940
+
1941
+ sig { returns(T.untyped) }
1942
+ attr_reader :simple_url_params
1943
+ end
1944
+ end
1945
+ end
1946
+
1947
+ module SelectorClasses
1948
+ class FunctionEvaluator
1949
+ include Logging
1950
+
1951
+ sig { params(_index: T.untyped).returns(T.untyped) }
1952
+ def evaluate_arg?(_index); end
1953
+
1954
+ sig { returns(T.untyped) }
1955
+ def matches?; end
1956
+
1957
+ sig { params(_task: T.untyped, _args: T.untyped).returns(T.untyped) }
1958
+ def evaluate(_task, *_args); end
1959
+
1960
+ sig { params(object: T.untyped, fn_name: T.untyped).returns(T.untyped) }
1961
+ def fn?(object, fn_name); end
1962
+ end
1963
+
1964
+ module Common
1965
+ class AndFunctionEvaluator < FunctionEvaluator
1966
+ FUNCTION_NAME = :and
1967
+
1968
+ sig { returns(T.untyped) }
1969
+ def matches?; end
1970
+
1971
+ sig { params(_resource: T.untyped, args: T.untyped).returns(T.untyped) }
1972
+ def evaluate(_resource, *args); end
1973
+ end
1974
+
1975
+ class OrFunctionEvaluator < FunctionEvaluator
1976
+ FUNCTION_NAME = :or
1977
+
1978
+ sig { returns(T.untyped) }
1979
+ def matches?; end
1980
+
1981
+ sig { params(_resource: T.untyped, args: T.untyped).returns(T.untyped) }
1982
+ def evaluate(_resource, *args); end
1983
+ end
1984
+
1985
+ class NotFunctionEvaluator < FunctionEvaluator
1986
+ FUNCTION_NAME = :not
1987
+
1988
+ sig { returns(T.untyped) }
1989
+ def matches?; end
1990
+
1991
+ sig { params(_resource: T.untyped, subvalue: T.untyped).returns(T.untyped) }
1992
+ def evaluate(_resource, subvalue); end
1993
+ end
1994
+
1995
+ class NilPFunctionEvaluator < FunctionEvaluator
1996
+ sig { returns(T.untyped) }
1997
+ def matches?; end
1998
+
1999
+ sig { params(_resource: T.untyped, subvalue: T.untyped).returns(T.untyped) }
2000
+ def evaluate(_resource, subvalue); end
2001
+ end
2002
+
2003
+ class EqualsPFunctionEvaluator < FunctionEvaluator
2004
+ FUNCTION_NAME = :equals?
2005
+
2006
+ sig { returns(T.untyped) }
2007
+ def matches?; end
2008
+
2009
+ sig { params(_resource: T.untyped, lhs: T.untyped, rhs: T.untyped).returns(T.untyped) }
2010
+ def evaluate(_resource, lhs, rhs); end
2011
+ end
2012
+
2013
+ class CustomFieldValueFunctionEvaluator < FunctionEvaluator
2014
+ FUNCTION_NAME = :custom_field_value
2015
+
2016
+ sig { returns(T.untyped) }
2017
+ def matches?; end
2018
+
2019
+ sig { params(_index: T.untyped).returns(T.untyped) }
2020
+ def evaluate_arg?(_index); end
2021
+
2022
+ sig { params(resource: T.untyped, custom_field_name: T.untyped).returns(T.untyped) }
2023
+ def evaluate(resource, custom_field_name); end
2024
+ end
2025
+
2026
+ class CustomFieldGidValueFunctionEvaluator < FunctionEvaluator
2027
+ sig { returns(T.untyped) }
2028
+ def matches?; end
2029
+
2030
+ sig { params(_index: T.untyped).returns(T.untyped) }
2031
+ def evaluate_arg?(_index); end
2032
+
2033
+ sig { params(resource: T.untyped, custom_field_gid: T.untyped).returns(T.untyped) }
2034
+ def evaluate(resource, custom_field_gid); end
2035
+ end
2036
+
2037
+ class CustomFieldGidValueContainsAnyGidPFunctionEvaluator < FunctionEvaluator
2038
+ FUNCTION_NAME = :custom_field_gid_value_contains_any_gid?
2039
+
2040
+ sig { returns(T.untyped) }
2041
+ def matches?; end
2042
+
2043
+ sig { params(_index: T.untyped).returns(T.untyped) }
2044
+ def evaluate_arg?(_index); end
2045
+
2046
+ sig { params(resource: T.untyped, custom_field_gid: T.untyped, custom_field_values_gids: T.untyped).returns(T.untyped) }
2047
+ def evaluate(resource, custom_field_gid, custom_field_values_gids); end
2048
+ end
2049
+
2050
+ class CustomFieldValueContainsAnyValuePFunctionEvaluator < FunctionEvaluator
2051
+ FUNCTION_NAME = :custom_field_value_contains_any_value?
2052
+
2053
+ sig { returns(T.untyped) }
2054
+ def matches?; end
2055
+
2056
+ sig { params(_index: T.untyped).returns(T.untyped) }
2057
+ def evaluate_arg?(_index); end
2058
+
2059
+ sig { params(resource: T.untyped, custom_field_name: T.untyped, custom_field_value_names: T.untyped).returns(T.untyped) }
2060
+ def evaluate(resource, custom_field_name, custom_field_value_names); end
2061
+ end
2062
+
2063
+ class CustomFieldGidValueContainsAllGidsPFunctionEvaluator < FunctionEvaluator
2064
+ FUNCTION_NAME = :custom_field_gid_value_contains_all_gids?
2065
+
2066
+ sig { returns(T.untyped) }
2067
+ def matches?; end
2068
+
2069
+ sig { params(_index: T.untyped).returns(T.untyped) }
2070
+ def evaluate_arg?(_index); end
2071
+
2072
+ sig { params(resource: T.untyped, custom_field_gid: T.untyped, custom_field_values_gids: T.untyped).returns(T.untyped) }
2073
+ def evaluate(resource, custom_field_gid, custom_field_values_gids); end
2074
+ end
2075
+
2076
+ class NameStartsWithPFunctionEvaluator < FunctionEvaluator
2077
+ FUNCTION_NAME = :name_starts_with?
2078
+
2079
+ sig { returns(T.untyped) }
2080
+ def matches?; end
2081
+
2082
+ sig { params(_index: T.untyped).returns(T.untyped) }
2083
+ def evaluate_arg?(_index); end
2084
+
2085
+ sig { params(resource: T.untyped, prefix: T.untyped).returns(T.untyped) }
2086
+ def evaluate(resource, prefix); end
2087
+ end
2088
+
2089
+ class StringLiteralEvaluator < FunctionEvaluator
2090
+ sig { returns(T.untyped) }
2091
+ def matches?; end
2092
+
2093
+ sig { params(_resource: T.untyped).returns(T.untyped) }
2094
+ def evaluate(_resource); end
2095
+ end
2096
+
2097
+ class FunctionEvaluator < ::Checkoff::SelectorClasses::FunctionEvaluator
2098
+ sig { params(selector: T.untyped, custom_fields: T.untyped, _kwargs: T.untyped).void }
2099
+ def initialize(selector:, custom_fields:, **_kwargs); end
2100
+
2101
+ sig { returns(T.untyped) }
2102
+ attr_reader :selector
2103
+ end
2104
+ end
2105
+
2106
+ module Project
2107
+ class DueDateFunctionEvaluator < FunctionEvaluator
2108
+ FUNCTION_NAME = :due_date
2109
+
2110
+ sig { returns(T.untyped) }
2111
+ def matches?; end
2112
+
2113
+ sig { params(resource: T.untyped).returns(T.untyped) }
2114
+ def evaluate(resource); end
2115
+ end
2116
+
2117
+ class ReadyPFunctionEvaluator < FunctionEvaluator
2118
+ FUNCTION_NAME = :ready?
2119
+
2120
+ sig { returns(T.untyped) }
2121
+ def matches?; end
2122
+
2123
+ sig { params(project: T.untyped, period: T.untyped).returns(T.untyped) }
2124
+ def evaluate(project, period = :now_or_before); end
2125
+ end
2126
+
2127
+ class InPortfolioNamedPFunctionEvaluator < FunctionEvaluator
2128
+ FUNCTION_NAME = :in_portfolio_named?
2129
+
2130
+ sig { returns(T.untyped) }
2131
+ def matches?; end
2132
+
2133
+ sig do
2134
+ params(
2135
+ project: T.untyped,
2136
+ portfolio_name: T.untyped,
2137
+ workspace_name: T.untyped,
2138
+ extra_project_fields: T.untyped
2139
+ ).returns(T.untyped)
2140
+ end
2141
+ def evaluate(project, portfolio_name, workspace_name: nil, extra_project_fields: []); end
2142
+ end
2143
+
2144
+ class FunctionEvaluator < ::Checkoff::SelectorClasses::FunctionEvaluator
2145
+ sig do
2146
+ params(
2147
+ selector: T.untyped,
2148
+ projects: T.untyped,
2149
+ portfolios: T.untyped,
2150
+ workspaces: T.untyped,
2151
+ _kwargs: T.untyped
2152
+ ).void
2153
+ end
2154
+ def initialize(selector:, projects:, portfolios:, workspaces:, **_kwargs); end
2155
+
2156
+ sig { returns(T.untyped) }
2157
+ attr_reader :selector
2158
+ end
2159
+ end
2160
+
2161
+ module Section
2162
+ class EndsWithMilestoneFunctionEvaluator < FunctionEvaluator
2163
+ FUNCTION_NAME = :ends_with_milestone
2164
+
2165
+ sig { returns(T.untyped) }
2166
+ def matches?; end
2167
+
2168
+ sig { params(section: T.untyped).returns(T.untyped) }
2169
+ def evaluate(section); end
2170
+ end
2171
+
2172
+ class HasTasksPFunctionEvaluator < FunctionEvaluator
2173
+ FUNCTION_NAME = :has_tasks?
2174
+
2175
+ sig { returns(T.untyped) }
2176
+ def matches?; end
2177
+
2178
+ sig { params(section: T.untyped).returns(T.untyped) }
2179
+ def evaluate(section); end
2180
+ end
2181
+
2182
+ class FunctionEvaluator < ::Checkoff::SelectorClasses::FunctionEvaluator
2183
+ sig do
2184
+ params(
2185
+ selector: T.untyped,
2186
+ sections: T.untyped,
2187
+ client: T.untyped,
2188
+ kwargs: T.untyped
2189
+ ).void
2190
+ end
2191
+ def initialize(selector:, sections:, client:, **kwargs); end
2192
+
2193
+ sig { returns(T.untyped) }
2194
+ attr_reader :selector
2195
+
2196
+ sig { returns(T.untyped) }
2197
+ attr_reader :client
2198
+ end
2199
+ end
2200
+
2201
+ module Task
2202
+ class InARealProjectPFunctionEvaluator < FunctionEvaluator
2203
+ sig { returns(T.untyped) }
2204
+ def matches?; end
2205
+
2206
+ sig { params(_index: T.untyped).returns(T.untyped) }
2207
+ def evaluate_arg?(_index); end
2208
+
2209
+ sig { params(task: T.untyped).returns(T.untyped) }
2210
+ def evaluate(task); end
2211
+ end
2212
+
2213
+ class SectionNameStartsWithPFunctionEvaluator < FunctionEvaluator
2214
+ sig { returns(T.untyped) }
2215
+ def matches?; end
2216
+
2217
+ sig { params(_index: T.untyped).returns(T.untyped) }
2218
+ def evaluate_arg?(_index); end
2219
+
2220
+ sig { params(task: T.untyped, section_name_prefix: T.untyped).returns(T.untyped) }
2221
+ def evaluate(task, section_name_prefix); end
2222
+ end
2223
+
2224
+ class InSectionNamedPFunctionEvaluator < FunctionEvaluator
2225
+ sig { returns(T.untyped) }
2226
+ def matches?; end
2227
+
2228
+ sig { params(_index: T.untyped).returns(T.untyped) }
2229
+ def evaluate_arg?(_index); end
2230
+
2231
+ sig { params(task: T.untyped, section_name: T.untyped).returns(T.untyped) }
2232
+ def evaluate(task, section_name); end
2233
+ end
2234
+
2235
+ class InProjectNamedPFunctionEvaluator < FunctionEvaluator
2236
+ sig { returns(T.untyped) }
2237
+ def matches?; end
2238
+
2239
+ sig { params(_index: T.untyped).returns(T.untyped) }
2240
+ def evaluate_arg?(_index); end
2241
+
2242
+ sig { params(task: T.untyped, project_name: T.untyped).returns(T.untyped) }
2243
+ def evaluate(task, project_name); end
2244
+ end
2245
+
2246
+ class InPortfolioMoreThanOncePFunctionEvaluator < FunctionEvaluator
2247
+ sig { returns(T.untyped) }
2248
+ def matches?; end
2249
+
2250
+ sig { params(_index: T.untyped).returns(T.untyped) }
2251
+ def evaluate_arg?(_index); end
2252
+
2253
+ sig { params(task: T.untyped, portfolio_name: T.untyped).returns(T.untyped) }
2254
+ def evaluate(task, portfolio_name); end
2255
+ end
2256
+
2257
+ class TagPFunctionEvaluator < FunctionEvaluator
2258
+ sig { returns(T.untyped) }
2259
+ def matches?; end
2260
+
2261
+ sig { params(_index: T.untyped).returns(T.untyped) }
2262
+ def evaluate_arg?(_index); end
2263
+
2264
+ sig { params(task: T.untyped, tag_name: T.untyped).returns(T.untyped) }
2265
+ def evaluate(task, tag_name); end
2266
+ end
2267
+
2268
+ class ReadyPFunctionEvaluator < FunctionEvaluator
2269
+ sig { returns(T.untyped) }
2270
+ def matches?; end
2271
+
2272
+ sig { params(_index: T.untyped).returns(T.untyped) }
2273
+ def evaluate_arg?(_index); end
2274
+
2275
+ sig { params(task: T.untyped, period: T.untyped, ignore_dependencies: T.untyped).returns(T.untyped) }
2276
+ def evaluate(task, period = :now_or_before, ignore_dependencies = false); end
2277
+ end
2278
+
2279
+ class InPeriodPFunctionEvaluator < FunctionEvaluator
2280
+ sig { returns(T.untyped) }
2281
+ def matches?; end
2282
+
2283
+ sig { params(_index: T.untyped).returns(T.untyped) }
2284
+ def evaluate_arg?(_index); end
2285
+
2286
+ sig { params(task: T.untyped, field_name: T.untyped, period: T.untyped).returns(T.untyped) }
2287
+ def evaluate(task, field_name, period); end
2288
+ end
2289
+
2290
+ class UnassignedPFunctionEvaluator < FunctionEvaluator
2291
+ sig { returns(T.untyped) }
2292
+ def matches?; end
2293
+
2294
+ sig { params(task: T.untyped).returns(T.untyped) }
2295
+ def evaluate(task); end
2296
+ end
2297
+
2298
+ class DueDateSetPFunctionEvaluator < FunctionEvaluator
2299
+ FUNCTION_NAME = :due_date_set?
2300
+
2301
+ sig { returns(T.untyped) }
2302
+ def matches?; end
2303
+
2304
+ sig { params(task: T.untyped).returns(T.untyped) }
2305
+ def evaluate(task); end
2306
+ end
2307
+
2308
+ class LastStoryCreatedLessThanNDaysAgoPFunctionEvaluator < FunctionEvaluator
2309
+ FUNCTION_NAME = :last_story_created_less_than_n_days_ago?
2310
+
2311
+ sig { returns(T.untyped) }
2312
+ def matches?; end
2313
+
2314
+ sig { params(_index: T.untyped).returns(T.untyped) }
2315
+ def evaluate_arg?(_index); end
2316
+
2317
+ sig { params(task: T.untyped, num_days: T.untyped, excluding_resource_subtypes: T.untyped).returns(T.untyped) }
2318
+ def evaluate(task, num_days, excluding_resource_subtypes); end
2319
+ end
2320
+
2321
+ class EstimateExceedsDurationPFunctionEvaluator < FunctionEvaluator
2322
+ FUNCTION_NAME = :estimate_exceeds_duration?
2323
+
2324
+ sig { returns(T.untyped) }
2325
+ def matches?; end
2326
+
2327
+ sig { params(task: T.untyped).returns(T.untyped) }
2328
+ def calculate_allocated_hours(task); end
2329
+
2330
+ sig { params(task: T.untyped).returns(T.untyped) }
2331
+ def evaluate(task); end
2332
+ end
2333
+
2334
+ class DependentOnPreviousSectionLastMilestonePFunctionEvaluator < FunctionEvaluator
2335
+ FUNCTION_NAME = :dependent_on_previous_section_last_milestone?
2336
+
2337
+ sig { returns(T.untyped) }
2338
+ def matches?; end
2339
+
2340
+ sig { params(task: T.untyped, limit_to_portfolio_gid: T.untyped).returns(T.untyped) }
2341
+ def evaluate(task, limit_to_portfolio_gid: nil); end
2342
+ end
2343
+
2344
+ class InPortfolioNamedPFunctionEvaluator < FunctionEvaluator
2345
+ FUNCTION_NAME = :in_portfolio_named?
2346
+
2347
+ sig { returns(T.untyped) }
2348
+ def matches?; end
2349
+
2350
+ sig { params(task: T.untyped, portfolio_name: T.untyped).returns(T.untyped) }
2351
+ def evaluate(task, portfolio_name); end
2352
+ end
2353
+
2354
+ class LastTaskMilestoneDoesNotDependOnThisTaskPFunctionEvaluator < FunctionEvaluator
2355
+ FUNCTION_NAME = :last_task_milestone_does_not_depend_on_this_task?
2356
+
2357
+ sig { returns(T.untyped) }
2358
+ def matches?; end
2359
+
2360
+ sig { params(_index: T.untyped).returns(T.untyped) }
2361
+ def evaluate_arg?(_index); end
2362
+
2363
+ sig { params(task: T.untyped, limit_to_portfolio_name: T.untyped).returns(T.untyped) }
2364
+ def evaluate(task, limit_to_portfolio_name = nil); end
2365
+ end
2366
+
2367
+ class MilestonePFunctionEvaluator < FunctionEvaluator
2368
+ FUNCTION_NAME = :milestone?
2369
+
2370
+ sig { returns(T.untyped) }
2371
+ def matches?; end
2372
+
2373
+ sig { params(_index: T.untyped).returns(T.untyped) }
2374
+ def evaluate_arg?(_index); end
2375
+
2376
+ sig { params(task: T.untyped).returns(T.untyped) }
2377
+ def evaluate(task); end
2378
+ end
2379
+
2380
+ class NoMilestoneDependsOnThisTaskPFunctionEvaluator < FunctionEvaluator
2381
+ FUNCTION_NAME = :no_milestone_depends_on_this_task?
2382
+
2383
+ sig { returns(T.untyped) }
2384
+ def matches?; end
2385
+
2386
+ sig { params(_index: T.untyped).returns(T.untyped) }
2387
+ def evaluate_arg?(_index); end
2388
+
2389
+ sig { params(task: T.untyped, limit_to_portfolio_name: T.untyped).returns(T.untyped) }
2390
+ def evaluate(task, limit_to_portfolio_name = nil); end
2391
+ end
2392
+
2393
+ class FunctionEvaluator < ::Checkoff::SelectorClasses::FunctionEvaluator
2394
+ sig do
2395
+ params(
2396
+ selector: T.untyped,
2397
+ tasks: T.untyped,
2398
+ timelines: T.untyped,
2399
+ custom_fields: T.untyped,
2400
+ _kwargs: T.untyped
2401
+ ).void
2402
+ end
2403
+ def initialize(selector:, tasks:, timelines:, custom_fields:, **_kwargs); end
2404
+
2405
+ sig { returns(T.untyped) }
2406
+ attr_reader :selector
2407
+ end
2408
+ end
2409
+ end
2410
+ end
2411
+ # typed: true
2
2412
  class ENV
3
2413
  # _@param_ `key`
4
2414
  #
@@ -459,7 +2869,7 @@ end
459
2869
 
460
2870
  # Command-line and gem client for Asana (unofficial)
461
2871
  module Checkoff
462
- VERSION = T.let('0.226.0', T.untyped)
2872
+ VERSION = T.let('0.228.0', T.untyped)
463
2873
 
464
2874
  # Move tasks from one place to another
465
2875
  class MvSubcommand
@@ -489,7 +2899,7 @@ module Checkoff
489
2899
  logger: T.untyped
490
2900
  ).void
491
2901
  end
492
- def initialize(from_workspace_arg:, from_project_arg:, from_section_arg:, to_workspace_arg:, to_project_arg:, to_section_arg:, config: Checkoff::Internal::ConfigLoader.load(:asana), projects: Checkoff::Projects.new(config: config), sections: Checkoff::Sections.new(config: config), logger: $stderr); end
2902
+ def initialize(from_workspace_arg:, from_project_arg:, from_section_arg:, to_workspace_arg:, to_project_arg:, to_section_arg:, config: Checkoff::Internal::ConfigLoader.load(:asana), projects: Checkoff::Projects.new(config:), sections: Checkoff::Sections.new(config:), logger: $stderr); end
493
2903
 
494
2904
  sig { params(tasks: T.untyped, to_project: T.untyped, to_section: T.untyped).returns(T.untyped) }
495
2905
  def move_tasks(tasks, to_project, to_section); end
@@ -551,9 +2961,9 @@ module Checkoff
551
2961
  stderr: T.untyped
552
2962
  ).void
553
2963
  end
554
- def initialize(workspace_name, project_name, section_name, task_name, config: Checkoff::Internal::ConfigLoader.load(:asana), projects: Checkoff::Projects.new(config: config), sections: Checkoff::Sections.new(config: config,
555
- projects: projects), tasks: Checkoff::Tasks.new(config: config,
556
- sections: sections), stderr: $stderr); end
2964
+ def initialize(workspace_name, project_name, section_name, task_name, config: Checkoff::Internal::ConfigLoader.load(:asana), projects: Checkoff::Projects.new(config:), sections: Checkoff::Sections.new(config:,
2965
+ projects:), tasks: Checkoff::Tasks.new(config:,
2966
+ sections:), stderr: $stderr); end
557
2967
 
558
2968
  sig { returns(T.untyped) }
559
2969
  def run; end
@@ -623,7 +3033,7 @@ module Checkoff
623
3033
  tasks: T.untyped
624
3034
  ).void
625
3035
  end
626
- def initialize(workspace_name, task_name, config: Checkoff::Internal::ConfigLoader.load(:asana), workspaces: Checkoff::Workspaces.new(config: config), tasks: Checkoff::Tasks.new(config: config)); end
3036
+ def initialize(workspace_name, task_name, config: Checkoff::Internal::ConfigLoader.load(:asana), workspaces: Checkoff::Workspaces.new(config:), tasks: Checkoff::Tasks.new(config:)); end
627
3037
 
628
3038
  sig { returns(T.untyped) }
629
3039
  def run; end
@@ -670,7 +3080,7 @@ module Checkoff
670
3080
  workspaces: Checkoff::Workspaces
671
3081
  ).void
672
3082
  end
673
- def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), clients: Checkoff::Clients.new(config: config), client: clients.client, projects: Checkoff::Projects.new(config: config, client: client), workspaces: Checkoff::Workspaces.new(config: config, client: client)); end
3083
+ 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
674
3084
 
675
3085
  # _@param_ `workspace_name`
676
3086
  #
@@ -789,11 +3199,11 @@ module Checkoff
789
3199
  asana_task: T.class_of(Asana::Resources::Task)
790
3200
  ).void
791
3201
  end
792
- def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), client: Checkoff::Clients.new(config: config).client, workspaces: Checkoff::Workspaces.new(config: config,
793
- client: client), sections: Checkoff::Sections.new(config: config,
794
- client: client), portfolios: Checkoff::Portfolios.new(config: config,
795
- client: client), custom_fields: Checkoff::CustomFields.new(config: config,
796
- client: client), time_class: Time, date_class: Date, asana_task: Asana::Resources::Task); end
3202
+ def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), client: Checkoff::Clients.new(config:).client, workspaces: Checkoff::Workspaces.new(config:,
3203
+ client:), sections: Checkoff::Sections.new(config:,
3204
+ client:), portfolios: Checkoff::Portfolios.new(config:,
3205
+ client:), custom_fields: Checkoff::CustomFields.new(config:,
3206
+ client:), time_class: Time, date_class: Date, asana_task: Asana::Resources::Task); end
797
3207
 
798
3208
  # Indicates a task is ready for a person to work on it. This is
799
3209
  # subtly different than what is used by Asana to mark a date as
@@ -1068,7 +3478,7 @@ module Checkoff
1068
3478
  asana_event_enrichment: Checkoff::Internal::AsanaEventEnrichment
1069
3479
  ).void
1070
3480
  end
1071
- def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), workspaces: Checkoff::Workspaces.new(config: config), tasks: Checkoff::Tasks.new(config: config), sections: Checkoff::Sections.new(config: config), projects: Checkoff::Projects.new(config: config), clients: Checkoff::Clients.new(config: config), client: clients.client, asana_event_filter_class: Checkoff::Internal::AsanaEventFilter, asana_event_enrichment: Checkoff::Internal::AsanaEventEnrichment.new); end
3481
+ def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), workspaces: Checkoff::Workspaces.new(config:), tasks: Checkoff::Tasks.new(config:), sections: Checkoff::Sections.new(config:), projects: Checkoff::Projects.new(config:), clients: Checkoff::Clients.new(config:), client: clients.client, asana_event_filter_class: Checkoff::Internal::AsanaEventFilter, asana_event_enrichment: Checkoff::Internal::AsanaEventEnrichment.new); end
1072
3482
 
1073
3483
  # _@param_ `filters` — The filters to match against
1074
3484
  #
@@ -1310,8 +3720,8 @@ module Checkoff
1310
3720
  #
1311
3721
  # _@param_ `projects`
1312
3722
  sig { params(config: Checkoff::Internal::EnvFallbackConfigLoader, client: Asana::Client, projects: Checkoff::Projects).void }
1313
- def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), client: Checkoff::Clients.new(config: config).client, projects: Checkoff::Projects.new(config: config,
1314
- client: client)); end
3723
+ def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), client: Checkoff::Clients.new(config:).client, projects: Checkoff::Projects.new(config:,
3724
+ client:)); end
1315
3725
 
1316
3726
  # Given a 'My Tasks' project object, pull all tasks, then provide
1317
3727
  # a Hash of tasks with section name -> task list of the
@@ -1378,8 +3788,8 @@ module Checkoff
1378
3788
  timing: Checkoff::Timing
1379
3789
  ).void
1380
3790
  end
1381
- def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), client: Checkoff::Clients.new(config: config).client, workspaces: Checkoff::Workspaces.new(config: config,
1382
- client: client), project_hashes: Checkoff::Internal::ProjectHashes.new, project_timing: Checkoff::Internal::ProjectTiming.new(client: client), timing: Checkoff::Timing.new); end
3791
+ def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), client: Checkoff::Clients.new(config:).client, workspaces: Checkoff::Workspaces.new(config:,
3792
+ client:), project_hashes: Checkoff::Internal::ProjectHashes.new, project_timing: Checkoff::Internal::ProjectTiming.new(client:), timing: Checkoff::Timing.new); end
1383
3793
 
1384
3794
  # _@param_ `extra_fields`
1385
3795
  sig { params(extra_fields: T::Array[String]).returns(T::Array[String]) }
@@ -1565,9 +3975,9 @@ module Checkoff
1565
3975
  time: T.class_of(Time)
1566
3976
  ).void
1567
3977
  end
1568
- def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), client: Checkoff::Clients.new(config: config).client, projects: Checkoff::Projects.new(config: config,
1569
- client: client), workspaces: Checkoff::Workspaces.new(config: config,
1570
- client: client), time: Time); end
3978
+ def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), client: Checkoff::Clients.new(config:).client, projects: Checkoff::Projects.new(config:,
3979
+ client:), workspaces: Checkoff::Workspaces.new(config:,
3980
+ client:), time: Time); end
1571
3981
 
1572
3982
  # Returns a list of Asana API section objects for a given project
1573
3983
  #
@@ -1808,8 +4218,8 @@ module Checkoff
1808
4218
  # _@param_ `projects`
1809
4219
  #
1810
4220
  # _@param_ `clients`
1811
- sig { params(config: T::Hash[T.untyped, T.untyped], projects: Checkoff::Projects, clients: Checkoff::Clients).void }
1812
- def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), projects: Checkoff::Projects.new(config: config), clients: Checkoff::Clients.new(config: config)); end
4221
+ sig { params(config: T.any(T::Hash[T.untyped, T.untyped], Checkoff::Internal::EnvFallbackConfigLoader), projects: Checkoff::Projects, clients: Checkoff::Clients).void }
4222
+ def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), projects: Checkoff::Projects.new(config:), clients: Checkoff::Clients.new(config:)); end
1813
4223
 
1814
4224
  # True if all subtasks of the task are completed
1815
4225
  #
@@ -1892,7 +4302,7 @@ module Checkoff
1892
4302
  # _@param_ `client`
1893
4303
  sig do
1894
4304
  params(
1895
- config: T::Hash[T.untyped, T.untyped],
4305
+ config: T.any(T::Hash[T.untyped, T.untyped], Checkoff::Internal::EnvFallbackConfigLoader),
1896
4306
  workspaces: Checkoff::Workspaces,
1897
4307
  tasks: Checkoff::Tasks,
1898
4308
  sections: Checkoff::Sections,
@@ -1901,7 +4311,7 @@ module Checkoff
1901
4311
  client: Asana::Client
1902
4312
  ).void
1903
4313
  end
1904
- def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), workspaces: Checkoff::Workspaces.new(config: config), tasks: Checkoff::Tasks.new(config: config), sections: Checkoff::Sections.new(config: config), projects: Checkoff::Projects.new(config: config), clients: Checkoff::Clients.new(config: config), client: clients.client); end
4314
+ def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), workspaces: Checkoff::Workspaces.new(config:), tasks: Checkoff::Tasks.new(config:), sections: Checkoff::Sections.new(config:), projects: Checkoff::Projects.new(config:), clients: Checkoff::Clients.new(config:), client: clients.client); end
1905
4315
 
1906
4316
  # sord warn - "[Asana::Resource" does not appear to be a type
1907
4317
  # sord warn - "nil]" does not appear to be a type
@@ -1972,7 +4382,7 @@ module Checkoff
1972
4382
  # _@param_ `client`
1973
4383
  sig do
1974
4384
  params(
1975
- config: T::Hash[T.untyped, T.untyped],
4385
+ config: T.any(T::Hash[T.untyped, T.untyped], Checkoff::Internal::EnvFallbackConfigLoader),
1976
4386
  workspaces: Checkoff::Workspaces,
1977
4387
  sections: Checkoff::Sections,
1978
4388
  tasks: Checkoff::Tasks,
@@ -1981,7 +4391,7 @@ module Checkoff
1981
4391
  client: Asana::Client
1982
4392
  ).void
1983
4393
  end
1984
- def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), workspaces: Checkoff::Workspaces.new(config: config), sections: Checkoff::Sections.new(config: config), tasks: Checkoff::Tasks.new(config: config), portfolios: Checkoff::Portfolios.new(config: config), clients: Checkoff::Clients.new(config: config), client: clients.client); end
4394
+ def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), workspaces: Checkoff::Workspaces.new(config:), sections: Checkoff::Sections.new(config:), tasks: Checkoff::Tasks.new(config:), portfolios: Checkoff::Portfolios.new(config:), clients: Checkoff::Clients.new(config:), client: clients.client); end
1985
4395
 
1986
4396
  # _@param_ `task`
1987
4397
  #
@@ -2052,7 +4462,7 @@ module Checkoff
2052
4462
  workspaces: Checkoff::Workspaces
2053
4463
  ).void
2054
4464
  end
2055
- def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), clients: Checkoff::Clients.new(config: config), client: clients.client, projects: Checkoff::Projects.new(config: config, client: client), workspaces: Checkoff::Workspaces.new(config: config, client: client)); end
4465
+ 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
2056
4466
 
2057
4467
  # _@param_ `workspace_name`
2058
4468
  #
@@ -2119,7 +4529,7 @@ module Checkoff
2119
4529
  #
2120
4530
  # _@param_ `asana_workspace`
2121
4531
  sig { params(config: Checkoff::Internal::EnvFallbackConfigLoader, client: Asana::Client, asana_workspace: T.class_of(Asana::Resources::Workspace)).void }
2122
- def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), client: Checkoff::Clients.new(config: config).client, asana_workspace: Asana::Resources::Workspace); end
4532
+ def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), client: Checkoff::Clients.new(config:).client, asana_workspace: Asana::Resources::Workspace); end
2123
4533
 
2124
4534
  # Pulls an Asana workspace object
2125
4535
  # @sg-ignore
@@ -2162,13 +4572,13 @@ module Checkoff
2162
4572
  # _@param_ `client`
2163
4573
  sig do
2164
4574
  params(
2165
- config: T::Hash[T.untyped, T.untyped],
4575
+ config: T.any(T::Hash[T.untyped, T.untyped], Checkoff::Internal::EnvFallbackConfigLoader),
2166
4576
  workspaces: Checkoff::Workspaces,
2167
4577
  clients: Checkoff::Clients,
2168
4578
  client: Asana::Client
2169
4579
  ).void
2170
4580
  end
2171
- def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), workspaces: Checkoff::Workspaces.new(config: config), clients: Checkoff::Clients.new(config: config), client: clients.client); end
4581
+ def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), workspaces: Checkoff::Workspaces.new(config:), clients: Checkoff::Clients.new(config:), client: clients.client); end
2172
4582
 
2173
4583
  # sord warn - Asana::Resources::Attachment wasn't able to be resolved to a constant in this project
2174
4584
  # _@param_ `url`
@@ -2313,8 +4723,8 @@ module Checkoff
2313
4723
  workspaces: Checkoff::Workspaces
2314
4724
  ).void
2315
4725
  end
2316
- def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), clients: Checkoff::Clients.new(config: config), client: clients.client, workspaces: Checkoff::Workspaces.new(config: config,
2317
- client: client)); end
4726
+ def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), clients: Checkoff::Clients.new(config:), client: clients.client, workspaces: Checkoff::Workspaces.new(config:,
4727
+ client:)); end
2318
4728
 
2319
4729
  # sord warn - Asana::Resources::CustomField wasn't able to be resolved to a constant in this project
2320
4730
  # _@param_ `workspace_name`
@@ -2419,7 +4829,7 @@ module Checkoff
2419
4829
  # _@param_ `asana_resources_collection_class`
2420
4830
  sig do
2421
4831
  params(
2422
- config: T::Hash[Symbol, Object],
4832
+ config: T.any(T::Hash[Symbol, Object], Checkoff::Internal::EnvFallbackConfigLoader),
2423
4833
  workspaces: Checkoff::Workspaces,
2424
4834
  task_selectors: Checkoff::TaskSelectors,
2425
4835
  projects: Checkoff::Projects,
@@ -2429,7 +4839,7 @@ module Checkoff
2429
4839
  asana_resources_collection_class: T.class_of(Asana::Resources::Collection)
2430
4840
  ).void
2431
4841
  end
2432
- def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), workspaces: Checkoff::Workspaces.new(config: config), task_selectors: Checkoff::TaskSelectors.new(config: config), projects: Checkoff::Projects.new(config: config), clients: Checkoff::Clients.new(config: config), client: clients.client, search_url_parser: Checkoff::Internal::SearchUrl::Parser.new, asana_resources_collection_class: Asana::Resources::Collection); end
4842
+ def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), workspaces: Checkoff::Workspaces.new(config:), task_selectors: Checkoff::TaskSelectors.new(config:), projects: Checkoff::Projects.new(config:), clients: Checkoff::Clients.new(config:), client: clients.client, search_url_parser: Checkoff::Internal::SearchUrl::Parser.new, asana_resources_collection_class: Asana::Resources::Collection); end
2433
4843
 
2434
4844
  # Perform an equivalent search API to an Asana search URL in the
2435
4845
  # web UI. Not all URL parameters are supported; each one must be
@@ -2575,17 +4985,17 @@ module Checkoff
2575
4985
  # _@param_ `timelines`
2576
4986
  sig do
2577
4987
  params(
2578
- config: T::Hash[T.untyped, T.untyped],
4988
+ config: T.any(T::Hash[T.untyped, T.untyped], Checkoff::Internal::EnvFallbackConfigLoader),
2579
4989
  client: Asana::Client,
2580
4990
  tasks: Checkoff::Tasks,
2581
4991
  timelines: Checkoff::Timelines,
2582
4992
  custom_fields: T.untyped
2583
4993
  ).void
2584
4994
  end
2585
- def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), client: Checkoff::Clients.new(config: config).client, tasks: Checkoff::Tasks.new(config: config,
2586
- client: client), timelines: Checkoff::Timelines.new(config: config,
2587
- client: client), custom_fields: Checkoff::CustomFields.new(config: config,
2588
- client: client)); end
4995
+ def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), client: Checkoff::Clients.new(config:).client, tasks: Checkoff::Tasks.new(config:,
4996
+ client:), timelines: Checkoff::Timelines.new(config:,
4997
+ client:), custom_fields: Checkoff::CustomFields.new(config:,
4998
+ client:)); end
2589
4999
 
2590
5000
  # _@param_ `task`
2591
5001
  #
@@ -2641,7 +5051,7 @@ module Checkoff
2641
5051
  # _@param_ `client`
2642
5052
  sig do
2643
5053
  params(
2644
- config: T::Hash[Symbol, Object],
5054
+ config: T.any(T::Hash[Symbol, Object], Checkoff::Internal::EnvFallbackConfigLoader),
2645
5055
  workspaces: Checkoff::Workspaces,
2646
5056
  projects: Checkoff::Projects,
2647
5057
  custom_fields: Checkoff::CustomFields,
@@ -2650,7 +5060,7 @@ module Checkoff
2650
5060
  client: Asana::Client
2651
5061
  ).void
2652
5062
  end
2653
- def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), workspaces: Checkoff::Workspaces.new(config: config), projects: Checkoff::Projects.new(config: config), custom_fields: Checkoff::CustomFields.new(config: config), portfolios: Checkoff::Portfolios.new(config: config), clients: Checkoff::Clients.new(config: config), client: clients.client); end
5063
+ def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), workspaces: Checkoff::Workspaces.new(config:), projects: Checkoff::Projects.new(config:), custom_fields: Checkoff::CustomFields.new(config:), portfolios: Checkoff::Portfolios.new(config:), clients: Checkoff::Clients.new(config:), client: clients.client); end
2654
5064
 
2655
5065
  # _@param_ `project`
2656
5066
  #
@@ -2699,7 +5109,7 @@ module Checkoff
2699
5109
  # _@param_ `client`
2700
5110
  sig do
2701
5111
  params(
2702
- config: T::Hash[Symbol, Object],
5112
+ config: T.any(T::Hash[Symbol, Object], Checkoff::Internal::EnvFallbackConfigLoader),
2703
5113
  workspaces: Checkoff::Workspaces,
2704
5114
  sections: Checkoff::Sections,
2705
5115
  custom_fields: Checkoff::CustomFields,
@@ -2707,7 +5117,7 @@ module Checkoff
2707
5117
  client: Asana::Client
2708
5118
  ).void
2709
5119
  end
2710
- def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), workspaces: Checkoff::Workspaces.new(config: config), sections: Checkoff::Sections.new(config: config), custom_fields: Checkoff::CustomFields.new(config: config), clients: Checkoff::Clients.new(config: config), client: clients.client); end
5120
+ def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), workspaces: Checkoff::Workspaces.new(config:), sections: Checkoff::Sections.new(config:), custom_fields: Checkoff::CustomFields.new(config:), clients: Checkoff::Clients.new(config:), client: clients.client); end
2711
5121
 
2712
5122
  # _@param_ `section`
2713
5123
  #
@@ -2795,7 +5205,7 @@ module Checkoff
2795
5205
  custom_fields: Checkoff::CustomFields
2796
5206
  ).void
2797
5207
  end
2798
- def initialize(time_class: Time, date_class: Date, client: Checkoff::Clients.new.client, custom_fields: Checkoff::CustomFields.new(client: client)); end
5208
+ def initialize(time_class: Time, date_class: Date, client: Checkoff::Clients.new.client, custom_fields: Checkoff::CustomFields.new(client:)); end
2799
5209
 
2800
5210
  # _@param_ `task`
2801
5211
  sig { params(task: Asana::Resources::Task).returns(T.nilable(Time)) }
@@ -2927,7 +5337,7 @@ module Checkoff
2927
5337
  custom_fields: Checkoff::CustomFields
2928
5338
  ).void
2929
5339
  end
2930
- def initialize(time_class: Time, date_class: Date, client: Checkoff::Clients.new.client, custom_fields: Checkoff::CustomFields.new(client: client)); end
5340
+ def initialize(time_class: Time, date_class: Date, client: Checkoff::Clients.new.client, custom_fields: Checkoff::CustomFields.new(client:)); end
2931
5341
 
2932
5342
  # @sg-ignore
2933
5343
  #
@@ -3484,7 +5894,7 @@ module Checkoff
3484
5894
  # _@param_ `asana_event_enrichment`
3485
5895
  sig do
3486
5896
  params(
3487
- config: T::Hash[T.untyped, T.untyped],
5897
+ config: T.any(T::Hash[T.untyped, T.untyped], Checkoff::Internal::EnvFallbackConfigLoader),
3488
5898
  workspaces: Checkoff::Workspaces,
3489
5899
  tasks: Checkoff::Tasks,
3490
5900
  sections: Checkoff::Sections,
@@ -3494,7 +5904,7 @@ module Checkoff
3494
5904
  client: Asana::Client
3495
5905
  ).void
3496
5906
  end
3497
- def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), workspaces: Checkoff::Workspaces.new(config: config), tasks: Checkoff::Tasks.new(config: config), sections: Checkoff::Sections.new(config: config), projects: Checkoff::Projects.new(config: config), resources: Checkoff::Resources.new(config: config), clients: Checkoff::Clients.new(config: config), client: clients.client); end
5907
+ def initialize(config: Checkoff::Internal::ConfigLoader.load(:asana), workspaces: Checkoff::Workspaces.new(config:), tasks: Checkoff::Tasks.new(config:), sections: Checkoff::Sections.new(config:), projects: Checkoff::Projects.new(config:), resources: Checkoff::Resources.new(config:), clients: Checkoff::Clients.new(config:), client: clients.client); end
3498
5908
 
3499
5909
  # Add useful info (like resource task names) into an event for
3500
5910
  # human consumption
@@ -4473,7 +6883,7 @@ end - [Checkoff::SelectorClasses::Section::FunctionEvaluator]).freeze, T.untyped
4473
6883
  _kwargs: T.untyped
4474
6884
  ).void
4475
6885
  end
4476
- def initialize(section:, client:, projects: Checkoff::Projects.new(client: client), sections: Checkoff::Sections.new(client: client), custom_fields: Checkoff::CustomFields.new(client: client), **_kwargs); end
6886
+ def initialize(section:, client:, projects: Checkoff::Projects.new(client:), sections: Checkoff::Sections.new(client:), custom_fields: Checkoff::CustomFields.new(client:), **_kwargs); end
4477
6887
 
4478
6888
  sig { returns(T::Array[T.class_of(Checkoff::SelectorClasses::Project::FunctionEvaluator)]) }
4479
6889
  def function_evaluators; end
@@ -4527,3 +6937,26 @@ module Logging
4527
6937
  sig { returns(Symbol) }
4528
6938
  def log_level; end
4529
6939
  end
6940
+
6941
+ module T
6942
+ # sord warn - T::Types::Base wasn't able to be resolved to a constant in this project
6943
+ # sord warn - T::Types::Base wasn't able to be resolved to a constant in this project
6944
+ # _@param_ `type`
6945
+ sig { params(type: T.any(T::Types::Base, T.class_of(Object))).returns(T::Types::Base) }
6946
+ def self.nilable(type); end
6947
+
6948
+ # sord warn - T::Types::Base wasn't able to be resolved to a constant in this project
6949
+ # _@param_ `obj`
6950
+ #
6951
+ # _@param_ `type`
6952
+ sig { params(obj: BasicObject, type: T.any(T::Types::Base, T.class_of(Object))).returns(BasicObject) }
6953
+ def self.let(obj, type); end
6954
+
6955
+ # sord warn - T::Types::Base wasn't able to be resolved to a constant in this project
6956
+ sig { returns(T::Types::Base) }
6957
+ def self.untyped; end
6958
+
6959
+ class Struct
6960
+ extend T::Props::ClassMethods
6961
+ end
6962
+ end