checkoff 0.226.0 → 0.227.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/lib/checkoff/attachments.rb +10 -10
  3. data/lib/checkoff/cli.rb +9 -9
  4. data/lib/checkoff/custom_fields.rb +3 -3
  5. data/lib/checkoff/events.rb +6 -6
  6. data/lib/checkoff/internal/asana_event_enrichment.rb +10 -10
  7. data/lib/checkoff/internal/asana_event_filter.rb +2 -2
  8. data/lib/checkoff/internal/project_selector_evaluator.rb +2 -2
  9. data/lib/checkoff/internal/project_timing.rb +1 -1
  10. data/lib/checkoff/internal/search_url/parser.rb +3 -3
  11. data/lib/checkoff/internal/search_url/simple_param_converter.rb +1 -1
  12. data/lib/checkoff/internal/section_selector_evaluator.rb +4 -4
  13. data/lib/checkoff/internal/selector_classes/project.rb +2 -2
  14. data/lib/checkoff/internal/selector_classes/task.rb +4 -4
  15. data/lib/checkoff/internal/selector_evaluator.rb +1 -1
  16. data/lib/checkoff/internal/task_hashes.rb +1 -1
  17. data/lib/checkoff/internal/task_selector_evaluator.rb +1 -1
  18. data/lib/checkoff/internal/task_timing.rb +1 -1
  19. data/lib/checkoff/my_tasks.rb +5 -5
  20. data/lib/checkoff/portfolios.rb +6 -6
  21. data/lib/checkoff/project_selectors.rb +8 -8
  22. data/lib/checkoff/projects.rb +13 -13
  23. data/lib/checkoff/resources.rb +6 -6
  24. data/lib/checkoff/section_selectors.rb +7 -7
  25. data/lib/checkoff/sections.rb +21 -21
  26. data/lib/checkoff/subtasks.rb +6 -6
  27. data/lib/checkoff/tags.rb +8 -8
  28. data/lib/checkoff/task_searches.rb +12 -12
  29. data/lib/checkoff/task_selectors.rb +11 -11
  30. data/lib/checkoff/tasks.rb +23 -23
  31. data/lib/checkoff/timelines.rb +6 -6
  32. data/lib/checkoff/version.rb +1 -1
  33. data/lib/checkoff/workspaces.rb +1 -1
  34. data/rbi/checkoff.rbi +2482 -49
  35. data/sig/checkoff.rbs +29 -9
  36. metadata +1 -1
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.227.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.227.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