checkoff 0.258.0 → 0.261.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/lib/checkoff/attachments.rb +14 -15
  3. data/lib/checkoff/cli.rb +7 -12
  4. data/lib/checkoff/clients.rb +0 -2
  5. data/lib/checkoff/custom_fields.rb +13 -24
  6. data/lib/checkoff/internal/asana_event_enrichment.rb +11 -21
  7. data/lib/checkoff/internal/asana_event_filter.rb +1 -5
  8. data/lib/checkoff/internal/config_loader.rb +0 -2
  9. data/lib/checkoff/internal/logging.rb +0 -2
  10. data/lib/checkoff/internal/project_hashes.rb +26 -4
  11. data/lib/checkoff/internal/search_url/custom_field_param_converter.rb +9 -10
  12. data/lib/checkoff/internal/search_url/custom_field_variant.rb +7 -2
  13. data/lib/checkoff/internal/search_url/date_param_converter.rb +13 -10
  14. data/lib/checkoff/internal/search_url/parser.rb +2 -7
  15. data/lib/checkoff/internal/search_url/simple_param_converter.rb +1 -4
  16. data/lib/checkoff/internal/section_selector_evaluator.rb +1 -1
  17. data/lib/checkoff/internal/selector_classes/common/function_evaluator.rb +2 -2
  18. data/lib/checkoff/internal/selector_classes/common.rb +2 -3
  19. data/lib/checkoff/internal/selector_classes/function_evaluator.rb +9 -4
  20. data/lib/checkoff/internal/selector_classes/project/function_evaluator.rb +2 -2
  21. data/lib/checkoff/internal/selector_classes/project.rb +0 -1
  22. data/lib/checkoff/internal/selector_classes/section/function_evaluator.rb +2 -2
  23. data/lib/checkoff/internal/selector_classes/section.rb +1 -2
  24. data/lib/checkoff/internal/selector_classes/task/function_evaluator.rb +2 -2
  25. data/lib/checkoff/internal/selector_classes/task.rb +2 -26
  26. data/lib/checkoff/internal/selector_evaluator.rb +6 -5
  27. data/lib/checkoff/internal/task_hashes.rb +17 -9
  28. data/lib/checkoff/internal/task_timing.rb +0 -4
  29. data/lib/checkoff/internal/thread_local.rb +0 -2
  30. data/lib/checkoff/monkeypatches/resource_marshalling.rb +3 -3
  31. data/lib/checkoff/my_tasks.rb +1 -4
  32. data/lib/checkoff/portfolios.rb +0 -1
  33. data/lib/checkoff/project_selectors.rb +1 -1
  34. data/lib/checkoff/projects.rb +19 -8
  35. data/lib/checkoff/resources.rb +14 -3
  36. data/lib/checkoff/sections.rb +9 -9
  37. data/lib/checkoff/subtasks.rb +1 -2
  38. data/lib/checkoff/tags.rb +3 -4
  39. data/lib/checkoff/task_searches.rb +1 -8
  40. data/lib/checkoff/task_selectors.rb +25 -12
  41. data/lib/checkoff/tasks.rb +6 -14
  42. data/lib/checkoff/timelines.rb +3 -20
  43. data/lib/checkoff/timing.rb +1 -2
  44. data/lib/checkoff/version.rb +1 -1
  45. data/lib/checkoff/workspaces.rb +1 -7
  46. data/rbi/checkoff.rbi +99 -146
  47. data/sig/checkoff.rbs +86 -153
  48. metadata +2 -2
data/sig/checkoff.rbs CHANGED
@@ -127,7 +127,7 @@ module Checkoff
127
127
  String workspace_name,
128
128
  (String | Symbol) project_name,
129
129
  (String | Symbol)? section_name,
130
- (String | Symbol)? task_name,
130
+ String? task_name,
131
131
  ?config: (Checkoff::Internal::EnvFallbackConfigLoader | ::Hash[untyped, untyped]),
132
132
  ?projects: Checkoff::Projects,
133
133
  ?sections: Checkoff::Sections,
@@ -288,8 +288,6 @@ module Checkoff
288
288
  ) -> ::Enumerable[Asana::Resources::Task]
289
289
 
290
290
  # sord warn - Asana::Resources::Tag wasn't able to be resolved to a constant in this project
291
- # @sg-ignore nil check above is not flow-sensitive
292
- #
293
291
  # _@param_ `workspace_name`
294
292
  #
295
293
  # _@param_ `tag_name`
@@ -351,7 +349,7 @@ module Checkoff
351
349
  #
352
350
  # _@param_ `asana_task`
353
351
  def initialize: (
354
- ?config: (::Hash[untyped, untyped] | Checkoff::Internal::EnvFallbackConfigLoader),
352
+ ?config: (::Hash[Symbol, Object] | Checkoff::Internal::EnvFallbackConfigLoader),
355
353
  ?client: Asana::Client,
356
354
  ?workspaces: Checkoff::Workspaces,
357
355
  ?sections: Checkoff::Sections,
@@ -444,9 +442,6 @@ module Checkoff
444
442
  # sord warn - Asana::Resources::Task wasn't able to be resolved to a constant in this project
445
443
  # Add a task
446
444
  #
447
- # @sg-ignore @asana_task.create return type could not be inferred — calling a class method
448
- # through a Class<T>-typed ivar is a known Solargraph dispatch limitation
449
- #
450
445
  # _@param_ `name`
451
446
  #
452
447
  # _@param_ `workspace_gid`
@@ -494,13 +489,11 @@ module Checkoff
494
489
 
495
490
  # sord warn - Asana::Resources::Task wasn't able to be resolved to a constant in this project
496
491
  # _@param_ `task_data`
497
- def h_to_task: (::Hash[untyped, untyped] task_data) -> Asana::Resources::Task
492
+ def h_to_task: (::Hash[String, Object] task_data) -> Asana::Resources::Task
498
493
 
499
494
  # sord warn - Asana::Resources::Task wasn't able to be resolved to a constant in this project
500
495
  # True if the task is in a project which is in the given portfolio
501
496
  #
502
- # @sg-ignore Checkoff::Tasks#in_portfolio_named? return type could not be inferred
503
- #
504
497
  # _@param_ `task`
505
498
  #
506
499
  # _@param_ `portfolio_name`
@@ -544,9 +537,6 @@ module Checkoff
544
537
 
545
538
  def projects: () -> Checkoff::Projects
546
539
 
547
- # @sg-ignore @config.fetch return type could not be inferred — @config is intentionally
548
- # dual-typed [Hash, EnvFallbackConfigLoader] throughout this codebase; Solargraph can't
549
- # unify #fetch across that union
550
540
  def default_assignee_gid: () -> String
551
541
 
552
542
  def logger: () -> ::Logger
@@ -566,7 +556,6 @@ module Checkoff
566
556
  # _@param_ `message`
567
557
  def finer: (?Object? message) -> void
568
558
 
569
- # @sg-ignore return type could not be inferred — cascades from the ENV.fetch RBS gap below
570
559
  def log_level: () -> Symbol
571
560
 
572
561
  # sord warn - Asana::Client wasn't able to be resolved to a constant in this project
@@ -656,7 +645,6 @@ module Checkoff
656
645
  # _@param_ `message`
657
646
  def finer: (?Object? message) -> void
658
647
 
659
- # @sg-ignore return type could not be inferred — cascades from the ENV.fetch RBS gap below
660
648
  def log_level: () -> Symbol
661
649
 
662
650
  attr_reader projects: Checkoff::Projects
@@ -692,7 +680,7 @@ module Checkoff
692
680
  # _@param_ `date_or_time`
693
681
  #
694
682
  # _@param_ `period` — Valid values: :this_week, :now_or_before, :indefinite, [:less_than_n_days_ago, Integer]
695
- def in_period?: ((Date | Time)? date_or_time, (Symbol | [Symbol, Integer]) period) -> bool
683
+ def in_period?: ((Date | Time)? date_or_time, (Symbol | ::Array[(Symbol | Integer)]) period) -> bool
696
684
 
697
685
  # _@param_ `date_or_time`
698
686
  #
@@ -731,8 +719,6 @@ module Checkoff
731
719
  # _@param_ `num_days`
732
720
  def n_days_from_now: (Integer num_days) -> ActiveSupport::TimeWithZone
733
721
 
734
- # @sg-ignore Checkoff::Timing#n_days_from_today return type could not be inferred
735
- #
736
722
  # _@param_ `num_days`
737
723
  def n_days_from_today: (Integer num_days) -> Date
738
724
 
@@ -769,7 +755,6 @@ module Checkoff
769
755
  # _@param_ `message`
770
756
  def finer: (?Object? message) -> void
771
757
 
772
- # @sg-ignore return type could not be inferred — cascades from the ENV.fetch RBS gap below
773
758
  def log_level: () -> Symbol
774
759
  end
775
760
 
@@ -844,13 +829,13 @@ module Checkoff
844
829
  class Projects
845
830
  include Logging
846
831
  extend CacheMethod::ClassMethods
847
- MINUTE: untyped
848
- HOUR: untyped
849
- DAY: untyped
850
- REALLY_LONG_CACHE_TIME: untyped
851
- LONG_CACHE_TIME: untyped
852
- MEDIUM_CACHE_TIME: untyped
853
- SHORT_CACHE_TIME: untyped
832
+ MINUTE: Integer
833
+ HOUR: Integer
834
+ DAY: Integer
835
+ REALLY_LONG_CACHE_TIME: Integer
836
+ LONG_CACHE_TIME: Integer
837
+ MEDIUM_CACHE_TIME: Integer
838
+ SHORT_CACHE_TIME: Integer
854
839
 
855
840
  # sord warn - Asana::Client wasn't able to be resolved to a constant in this project
856
841
  # _@param_ `config`
@@ -878,6 +863,12 @@ module Checkoff
878
863
 
879
864
  # Default options used in Asana API to pull tasks
880
865
  #
866
+ # Keys are :per_page (Integer), :options (a Hash whose :fields is an
867
+ # Array<String>) and, when only_uncompleted is set, :completed_since
868
+ # (String). The value type is genuinely per-key, which a single YARD
869
+ # Hash value type cannot express.
870
+ # Callers who want the field list should call #task_fields directly.
871
+ #
881
872
  # _@param_ `extra_fields`
882
873
  #
883
874
  # _@param_ `only_uncompleted`
@@ -902,8 +893,6 @@ module Checkoff
902
893
  def project: ((String | Symbol) workspace_name, (String | Symbol) project_name, ?extra_fields: ::Array[String]) -> Asana::Resources::Project?
903
894
 
904
895
  # sord warn - Asana::Resources::Project wasn't able to be resolved to a constant in this project
905
- # @sg-ignore nil check above is not flow-sensitive
906
- #
907
896
  # _@param_ `workspace_name`
908
897
  #
909
898
  # _@param_ `project_name` — - :my_tasks or a project name
@@ -952,10 +941,12 @@ module Checkoff
952
941
  def projects_by_workspace_name: ((String | Symbol) workspace_name, ?extra_fields: ::Array[String]) -> ::Enumerable[Asana::Resources::Project]
953
942
 
954
943
  # sord warn - Asana::Resources::Project wasn't able to be resolved to a constant in this project
944
+ # sord warn - "\"unwrapped\"" does not appear to be a type
945
+ # sord warn - "Hash{\"custom_fields\" => Hash{String =" does not appear to be a type
955
946
  # _@param_ `project_obj`
956
947
  #
957
- # _@param_ `project` — - :not_specified, :my_tasks or a project name
958
- def project_to_h: (Asana::Resources::Project project_obj, ?project: (String | Symbol)) -> ::Hash[untyped, untyped]
948
+ # _@param_ `project` — - a String is a project name
949
+ def project_to_h: (Asana::Resources::Project project_obj, ?project: (String | Symbol)?) -> ::Hash[untyped, untyped]
959
950
 
960
951
  # sord warn - Asana::Resources::Project wasn't able to be resolved to a constant in this project
961
952
  # Indicates a project is ready for a person to work on it. This
@@ -968,7 +959,7 @@ module Checkoff
968
959
  # _@param_ `project`
969
960
  #
970
961
  # _@param_ `period` — See Checkoff::Timing#in_period? - :now_or_before,:this_week
971
- def project_ready?: (Asana::Resources::Project project, ?period: (Symbol | [Symbol, Integer])) -> bool
962
+ def project_ready?: (Asana::Resources::Project project, ?period: (Symbol | ::Array[(Symbol | Integer)])) -> bool
972
963
 
973
964
  # sord warn - Asana::Resources::Project wasn't able to be resolved to a constant in this project
974
965
  # _@param_ `project`
@@ -976,7 +967,7 @@ module Checkoff
976
967
  # _@param_ `field_name`
977
968
  #
978
969
  # _@param_ `period` — See Checkoff::Timing#in_period? - :now_or_before,:this_week
979
- def in_period?: (Asana::Resources::Project project, (Symbol | ::Array[untyped]) field_name, (Symbol | [Symbol, Integer]) period) -> bool
970
+ def in_period?: (Asana::Resources::Project project, (Symbol | ::Array[untyped]) field_name, (Symbol | ::Array[(Symbol | Integer)]) period) -> bool
980
971
 
981
972
  def as_cache_key: () -> ::Hash[untyped, untyped]
982
973
 
@@ -1004,7 +995,6 @@ module Checkoff
1004
995
  # _@param_ `message`
1005
996
  def finer: (?Object? message) -> void
1006
997
 
1007
- # @sg-ignore return type could not be inferred — cascades from the ENV.fetch RBS gap below
1008
998
  def log_level: () -> Symbol
1009
999
 
1010
1000
  attr_reader timing: Checkoff::Timing
@@ -1022,11 +1012,11 @@ module Checkoff
1022
1012
  include Logging
1023
1013
  extend CacheMethod::ClassMethods
1024
1014
  extend Forwardable
1025
- MINUTE: untyped
1026
- HOUR: untyped
1027
- REALLY_LONG_CACHE_TIME: untyped
1028
- LONG_CACHE_TIME: untyped
1029
- SHORT_CACHE_TIME: untyped
1015
+ MINUTE: Integer
1016
+ HOUR: Integer
1017
+ REALLY_LONG_CACHE_TIME: Integer
1018
+ LONG_CACHE_TIME: Integer
1019
+ SHORT_CACHE_TIME: Integer
1030
1020
 
1031
1021
  # sord warn - Asana::Client wasn't able to be resolved to a constant in this project
1032
1022
  # _@param_ `config`
@@ -1111,7 +1101,6 @@ module Checkoff
1111
1101
  ) -> ::Enumerable[Asana::Resources::Task]
1112
1102
 
1113
1103
  # Pulls just names of tasks from a given section.
1114
- # @sg-ignore Task#name is nilable; task names are assumed present here
1115
1104
  #
1116
1105
  # _@param_ `workspace_name`
1117
1106
  #
@@ -1121,8 +1110,6 @@ module Checkoff
1121
1110
  def section_task_names: (String workspace_name, (String | Symbol) project_name, String? section_name) -> ::Array[String]
1122
1111
 
1123
1112
  # sord warn - Asana::Resources::Section wasn't able to be resolved to a constant in this project
1124
- # @sg-ignore section() is nil-checked below
1125
- #
1126
1113
  # _@param_ `workspace_name`
1127
1114
  #
1128
1115
  # _@param_ `project_name`
@@ -1203,8 +1190,6 @@ module Checkoff
1203
1190
  def file_task_by_section: (::Hash[String?, ::Array[Asana::Resources::Task]] by_section, Asana::Resources::Task task, String project_gid) -> void
1204
1191
 
1205
1192
  # sord warn - Asana::Resources::Project wasn't able to be resolved to a constant in this project
1206
- # @sg-ignore projects.project may be nil but is raised below
1207
- #
1208
1193
  # _@param_ `workspace_name`
1209
1194
  #
1210
1195
  # _@param_ `project_name`
@@ -1227,7 +1212,6 @@ module Checkoff
1227
1212
  # _@param_ `message`
1228
1213
  def finer: (?Object? message) -> void
1229
1214
 
1230
- # @sg-ignore return type could not be inferred — cascades from the ENV.fetch RBS gap below
1231
1215
  def log_level: () -> Symbol
1232
1216
 
1233
1217
  attr_reader projects: Checkoff::Projects
@@ -1294,8 +1278,6 @@ module Checkoff
1294
1278
  # expected to move to the new-style way of representing sections
1295
1279
  # as memberships with a separate API within a task.
1296
1280
  #
1297
- # @sg-ignore Checkoff::Subtasks#subtask_section? return type could not be inferred
1298
- #
1299
1281
  # _@param_ `subtask`
1300
1282
  def subtask_section?: (Asana::Resources::Task subtask) -> bool?
1301
1283
 
@@ -1373,6 +1355,11 @@ module Checkoff
1373
1355
 
1374
1356
  def self.run: () -> void
1375
1357
 
1358
+ # _@param_ `resource_type`
1359
+ #
1360
+ # _@param_ `gid`
1361
+ def fetch_gid_by_type: (String resource_type, String gid) -> Asana::Resources::Resource?
1362
+
1376
1363
  attr_reader workspaces: Checkoff::Workspaces
1377
1364
 
1378
1365
  attr_reader projects: Checkoff::Projects
@@ -1445,7 +1432,7 @@ module Checkoff
1445
1432
  # _@param_ `task_data`
1446
1433
  #
1447
1434
  # _@param_ `section`
1448
- def task_data_dependent_on_previous_section_last_milestone?: (::Hash[untyped, untyped] task_data, Asana::Resources::Section section) -> bool
1435
+ def task_data_dependent_on_previous_section_last_milestone?: (::Hash[String, Object] task_data, Asana::Resources::Section section) -> bool
1449
1436
 
1450
1437
  def self.run: () -> void
1451
1438
 
@@ -1485,8 +1472,6 @@ module Checkoff
1485
1472
  ) -> void
1486
1473
 
1487
1474
  # sord warn - Asana::Resources::Portfolio wasn't able to be resolved to a constant in this project
1488
- # @sg-ignore nil check above is not flow-sensitive
1489
- #
1490
1475
  # _@param_ `workspace_name`
1491
1476
  #
1492
1477
  # _@param_ `portfolio_name`
@@ -1548,7 +1533,7 @@ module Checkoff
1548
1533
  # _@param_ `client`
1549
1534
  #
1550
1535
  # _@param_ `asana_workspace`
1551
- def initialize: (?config: (::Hash[untyped, untyped] | Checkoff::Internal::EnvFallbackConfigLoader), ?client: Asana::Client, ?asana_workspace: singleton(Asana::Resources::Workspace)) -> void
1536
+ def initialize: (?config: (::Hash[Symbol, Object] | Checkoff::Internal::EnvFallbackConfigLoader), ?client: Asana::Client, ?asana_workspace: singleton(Asana::Resources::Workspace)) -> void
1552
1537
 
1553
1538
  # sord warn - Asana::Resources::Workspace wasn't able to be resolved to a constant in this project
1554
1539
  # Pulls an Asana workspace object
@@ -1557,19 +1542,12 @@ module Checkoff
1557
1542
  def workspace: ((String | Symbol) workspace_name) -> Asana::Resources::Workspace?
1558
1543
 
1559
1544
  # sord warn - Asana::Resources::Workspace wasn't able to be resolved to a constant in this project
1560
- # @sg-ignore @asana_workspace.find_by_id return type could not be inferred — calling a
1561
- # class method through a Class<T>-typed ivar is a known Solargraph dispatch limitation
1562
1545
  def default_workspace: () -> Asana::Resources::Workspace
1563
1546
 
1564
1547
  # sord warn - Asana::Resources::Workspace wasn't able to be resolved to a constant in this project
1565
- # @sg-ignore workspace() is nil-checked below
1566
- #
1567
1548
  # _@param_ `workspace_name`
1568
1549
  def workspace_or_raise: ((String | Symbol) workspace_name) -> Asana::Resources::Workspace
1569
1550
 
1570
- # @sg-ignore @config.fetch return type could not be inferred — @config is intentionally
1571
- # dual-typed [Hash, EnvFallbackConfigLoader] throughout this codebase; Solargraph can't
1572
- # unify #fetch across that union
1573
1551
  def default_workspace_gid: () -> String
1574
1552
 
1575
1553
  # sord warn - Asana::Client wasn't able to be resolved to a constant in this project
@@ -1686,7 +1664,6 @@ module Checkoff
1686
1664
  # _@param_ `message`
1687
1665
  def finer: (?Object? message) -> void
1688
1666
 
1689
- # @sg-ignore return type could not be inferred — cascades from the ENV.fetch RBS gap below
1690
1667
  def log_level: () -> Symbol
1691
1668
 
1692
1669
  attr_reader workspaces: Checkoff::Workspaces
@@ -1721,8 +1698,6 @@ module Checkoff
1721
1698
  ) -> void
1722
1699
 
1723
1700
  # sord warn - Asana::Resources::CustomField wasn't able to be resolved to a constant in this project
1724
- # @sg-ignore nil check above is not flow-sensitive
1725
- #
1726
1701
  # _@param_ `workspace_name`
1727
1702
  #
1728
1703
  # _@param_ `custom_field_name`
@@ -1743,10 +1718,6 @@ module Checkoff
1743
1718
 
1744
1719
  # sord warn - Asana::Resources::Project wasn't able to be resolved to a constant in this project
1745
1720
  # sord warn - Asana::Resources::Task wasn't able to be resolved to a constant in this project
1746
- # @sg-ignore Declared return type Array<String> does not match inferred type Array,Array<Array> —
1747
- # fixing cleanly needs binding enum_value.fetch('name') to a typed local; leaving for a
1748
- # follow-up code PR to keep this one annotation-only.
1749
- #
1750
1721
  # _@param_ `resource`
1751
1722
  #
1752
1723
  # _@param_ `custom_field_name`
@@ -1757,37 +1728,37 @@ module Checkoff
1757
1728
  # _@param_ `resource`
1758
1729
  #
1759
1730
  # _@param_ `custom_field_name`
1760
- def resource_custom_field_by_name: ((Asana::Resources::Task | Asana::Resources::Project) resource, String custom_field_name) -> ::Hash[untyped, untyped]?
1731
+ def resource_custom_field_by_name: ((Asana::Resources::Task | Asana::Resources::Project) resource, String custom_field_name) -> ::Hash[String, Object]?
1761
1732
 
1762
1733
  # sord warn - Asana::Resources::Task wasn't able to be resolved to a constant in this project
1763
1734
  # sord warn - Asana::Resources::Project wasn't able to be resolved to a constant in this project
1764
- # @sg-ignore nil check above is not flow-sensitive
1765
- #
1766
1735
  # _@param_ `resource`
1767
1736
  #
1768
1737
  # _@param_ `custom_field_name`
1769
- def resource_custom_field_by_name_or_raise: ((Asana::Resources::Task | Asana::Resources::Project) resource, String custom_field_name) -> ::Hash[untyped, untyped]
1738
+ def resource_custom_field_by_name_or_raise: ((Asana::Resources::Task | Asana::Resources::Project) resource, String custom_field_name) -> ::Hash[String, Object]
1770
1739
 
1771
1740
  # sord warn - Asana::Resources::Project wasn't able to be resolved to a constant in this project
1772
1741
  # sord warn - Asana::Resources::Task wasn't able to be resolved to a constant in this project
1773
- # @sg-ignore nil check above is not flow-sensitive
1774
- #
1775
1742
  # _@param_ `resource`
1776
1743
  #
1777
1744
  # _@param_ `custom_field_gid`
1778
- def resource_custom_field_by_gid_or_raise: ((Asana::Resources::Project | Asana::Resources::Task) resource, String custom_field_gid) -> ::Hash[untyped, untyped]
1745
+ def resource_custom_field_by_gid_or_raise: ((Asana::Resources::Project | Asana::Resources::Task) resource, String custom_field_gid) -> ::Hash[String, Object]
1779
1746
 
1780
- # @sg-ignore Declared return type Array<Hash> does not match inferred type Array,Hash,Array<Hash>
1781
- # fixing cleanly needs restructuring the case/when to bind each branch to a typed local; leaving
1782
- # for a follow-up code PR to keep this one annotation-only.
1747
+ # sord warn - "\"resource_subtype\"" does not appear to be a type
1748
+ # sord warn - "String} & Hash{\"enum_value\"" does not appear to be a type
1749
+ # sord warn - "Hash} & Hash{\"multi_enum_values\"" does not appear to be a type
1750
+ # sord warn - "\"gid\"" does not appear to be a type
1751
+ # sord warn - "String} & Hash{\"name\"" does not appear to be a type
1752
+ # rubocop:disable Layout/LineLength, YARD/TagTypeSyntax
1753
+ # rubocop:enable Layout/LineLength, YARD/TagTypeSyntax
1783
1754
  #
1784
1755
  # _@param_ `custom_field`
1785
- def resource_custom_field_enum_values: (::Hash[String, (::Hash[untyped, untyped] | ::Array[::Hash[untyped, untyped]])] custom_field) -> ::Array[::Hash[untyped, untyped]]
1756
+ def resource_custom_field_enum_values: (::Hash[untyped, (untyped | (untyped | ::Array[::Hash[untyped, untyped]]))] custom_field) -> ::Array[::Hash[untyped, (untyped | String)]]
1786
1757
 
1787
1758
  # _@param_ `custom_field`
1788
1759
  #
1789
1760
  # _@param_ `enum_value`
1790
- def find_gids: (::Hash[untyped, untyped] custom_field, ::Hash[String, String]? enum_value) -> ::Array[String]
1761
+ def find_gids: (::Hash[String, Object] custom_field, ::Hash[String, String]? enum_value) -> ::Array[String]
1791
1762
 
1792
1763
  def self.run: () -> void
1793
1764
 
@@ -1909,9 +1880,6 @@ module Checkoff
1909
1880
  # _@param_ `extra_fields`
1910
1881
  def iterated_raw_task_search: (::Hash[String, Object] api_params, workspace_gid: String, extra_fields: ::Array[String]) -> ::Enumerable[Asana::Resources::Task]
1911
1882
 
1912
- # @sg-ignore return type could not be inferred — bracket access on a Hash{Symbol=>undefined}
1913
- # local doesn't narrow even with a T.cast on the return expression
1914
- #
1915
1883
  # _@param_ `extra_fields`
1916
1884
  def calculate_api_options: (::Array[String] extra_fields) -> ::Hash[Symbol, ::Array[String]]
1917
1885
 
@@ -1934,7 +1902,6 @@ module Checkoff
1934
1902
  # _@param_ `message`
1935
1903
  def finer: (?Object? message) -> void
1936
1904
 
1937
- # @sg-ignore return type could not be inferred — cascades from the ENV.fetch RBS gap below
1938
1905
  def log_level: () -> Symbol
1939
1906
 
1940
1907
  attr_reader task_selectors: Checkoff::TaskSelectors
@@ -1978,19 +1945,19 @@ module Checkoff
1978
1945
  # _@param_ `task`
1979
1946
  #
1980
1947
  # _@param_ `task_selector` — Filter based on task details. Examples: [:tag, 'foo'] [:not, [:tag, 'foo']] [:tag, 'foo']
1981
- def filter_via_task_selector: (Asana::Resources::Task task, (Symbol | ::Array[(Symbol | Integer | ::Array[untyped])]) task_selector) -> bool
1948
+ def filter_via_task_selector: (Asana::Resources::Task task, (Symbol | ::Array[(Symbol | String | Integer | ::Array[untyped])]) task_selector) -> bool
1982
1949
 
1983
- # @sg-ignore `x || raise(...)` isn't inferred as narrowing away the nil branch
1984
1950
  def self.project_name: () -> String
1985
1951
 
1986
- # @sg-ignore `x || raise(...)` isn't inferred as narrowing away the nil branch
1987
1952
  def self.workspace_name: () -> String
1988
1953
 
1989
- # @sg-ignore `x || raise(...)` isn't inferred as narrowing away the nil branch
1990
1954
  def self.task_selector: () -> [Symbol, ::Array[untyped]]
1991
1955
 
1992
1956
  def self.run: () -> void
1993
1957
 
1958
+ # _@param_ `parsed` — result of JSON.parse on a task selector
1959
+ def self.validate_task_selector: (Object parsed) -> [String, ::Array[untyped]]
1960
+
1994
1961
  attr_reader tasks: Checkoff::Tasks
1995
1962
 
1996
1963
  attr_reader timelines: Checkoff::Timelines
@@ -2035,7 +2002,7 @@ module Checkoff
2035
2002
  # _@param_ `project`
2036
2003
  #
2037
2004
  # _@param_ `project_selector` — Filter based on project details. Examples: [:tag, 'foo'] [:not, [:tag, 'foo']] [:tag, 'foo']
2038
- def filter_via_project_selector: (Asana::Resources::Project project, [Symbol, ::Array[untyped]] project_selector) -> bool
2005
+ def filter_via_project_selector: (Asana::Resources::Project project, ::Array[(Symbol | String | ::Array[untyped])] project_selector) -> bool
2039
2006
 
2040
2007
  def self.run: () -> void
2041
2008
 
@@ -2112,7 +2079,7 @@ module Checkoff
2112
2079
  # _@param_ `task_data`
2113
2080
  #
2114
2081
  # _@param_ `client`
2115
- def h_to_task: (::Hash[untyped, untyped] task_data, client: Asana::Client) -> Asana::Resources::Task
2082
+ def h_to_task: (::Hash[String, Object] task_data, client: Asana::Client) -> Asana::Resources::Task
2116
2083
 
2117
2084
  # _@param_ `task_hash`
2118
2085
  def unwrap_custom_fields: (::Hash[untyped, untyped] task_hash) -> void
@@ -2130,14 +2097,17 @@ module Checkoff
2130
2097
  #
2131
2098
  # _@param_ `key`
2132
2099
  def unwrap_memberships: (
2133
- ::Hash[untyped, untyped] task_hash,
2100
+ ::Hash[String, Object] task_hash,
2134
2101
  ::Array[::Hash[untyped, untyped]] memberships,
2135
2102
  String resource,
2136
2103
  String key
2137
2104
  ) -> void
2138
2105
 
2139
2106
  # _@param_ `task_hash`
2140
- def unwrap_all_memberships: (::Hash[untyped, untyped] task_hash) -> void
2107
+ def unwrap_all_memberships: (::Hash[String, Object] task_hash) -> void
2108
+
2109
+ # _@param_ `task_hash`
2110
+ def assignee_hash: (::Hash[String, (String | ::Hash[untyped, untyped] | ::Array[untyped])] task_hash) -> ::Hash[String, Object]
2141
2111
  end
2142
2112
 
2143
2113
  # Utility methods for working with task dates and times
@@ -2158,16 +2128,10 @@ module Checkoff
2158
2128
  ) -> void
2159
2129
 
2160
2130
  # sord warn - Asana::Resources::Task wasn't able to be resolved to a constant in this project
2161
- # @sg-ignore return type could not be inferred — #to_time called via &. on a Date|Time
2162
- # union receiver
2163
- #
2164
2131
  # _@param_ `task`
2165
2132
  def start_time: (Asana::Resources::Task task) -> Time?
2166
2133
 
2167
2134
  # sord warn - Asana::Resources::Task wasn't able to be resolved to a constant in this project
2168
- # @sg-ignore return type could not be inferred — #to_time called via &. on a Date|Time
2169
- # union receiver
2170
- #
2171
2135
  # _@param_ `task`
2172
2136
  def due_time: (Asana::Resources::Task task) -> Time?
2173
2137
 
@@ -2200,9 +2164,6 @@ module Checkoff
2200
2164
  class ThreadLocal
2201
2165
  # sord warn - T wasn't able to be resolved to a constant in this project
2202
2166
  # sord warn - T wasn't able to be resolved to a constant in this project
2203
- # @sg-ignore return type could not be inferred — Solargraph's generic/yield-return
2204
- # inference gap for #with_thread_local_variable
2205
- #
2206
2167
  # _@param_ `name`
2207
2168
  #
2208
2169
  # _@param_ `value`
@@ -2219,8 +2180,6 @@ module Checkoff
2219
2180
  # _@param_ `yaml_filename`
2220
2181
  def initialize: (::Hash[Symbol, untyped] config, Symbol sym, String yaml_filename) -> void
2221
2182
 
2222
- # @sg-ignore return type could not be inferred — cascades from the ENV.fetch RBS gap below
2223
- #
2224
2183
  # _@param_ `key`
2225
2184
  def []: (Symbol key) -> Object
2226
2185
 
@@ -2250,10 +2209,15 @@ module Checkoff
2250
2209
  def initialize: (?::Hash[untyped, untyped] _deps) -> void
2251
2210
 
2252
2211
  # sord warn - Asana::Resources::Project wasn't able to be resolved to a constant in this project
2212
+ # sord warn - "\"unwrapped\"" does not appear to be a type
2213
+ # sord warn - "Hash{\"custom_fields\" => Hash{String =" does not appear to be a type
2214
+ # The two custom_fields entries below hold the same records: the top-level
2215
+ # array is what Asana returns, and unwrapped re-keys those records by name.
2216
+ #
2253
2217
  # _@param_ `project_obj`
2254
2218
  #
2255
- # _@param_ `project` — - :not_specified, :my_tasks
2256
- def project_to_h: (Asana::Resources::Project project_obj, ?project: (String | Symbol)) -> ::Hash[untyped, untyped]
2219
+ # _@param_ `project` — - a String is a project name
2220
+ def project_to_h: (Asana::Resources::Project project_obj, ?project: (String | Symbol)?) -> ::Hash[untyped, untyped]
2257
2221
 
2258
2222
  # _@param_ `project_hash`
2259
2223
  def unwrap_custom_fields: (::Hash[untyped, untyped] project_hash) -> void
@@ -2343,6 +2307,9 @@ module Checkoff
2343
2307
  # _@param_ `param_name`
2344
2308
  def fetch_solo_param: (String param_name) -> String
2345
2309
 
2310
+ # Implemented by every subclass.
2311
+ def convert: () -> [::Hash[String, String], ::Array[(Symbol | ::Array[untyped])]]
2312
+
2346
2313
  attr_reader gid: String
2347
2314
 
2348
2315
  attr_reader remaining_params: ::Hash[String, ::Array[String]]
@@ -2417,7 +2384,6 @@ module Checkoff
2417
2384
  # _@param_ `date_url_params` — the simple params
2418
2385
  def initialize: (date_url_params: ::Hash[String, ::Array[String]]) -> void
2419
2386
 
2420
- # @sg-ignore out can genuinely be nil if none of the 3 known prefixes matched; relies on the raise above it
2421
2387
  def convert: () -> [::Hash[String, String], ::Array[(Symbol | ::Array[untyped])]]
2422
2388
 
2423
2389
  # _@param_ `prefix`
@@ -2443,8 +2409,6 @@ module Checkoff
2443
2409
  # _@return_ — See https://developers.asana.com/docs/search-tasks-in-a-workspace
2444
2410
  def handle_within_next: (String prefix) -> [::Hash[String, String], ::Array[(Symbol | ::Array[untyped])]]
2445
2411
 
2446
- # @sg-ignore value.length == 1 guard above isn't inferred as narrowing value[0] to non-nil
2447
- #
2448
2412
  # _@param_ `param_key`
2449
2413
  def get_single_param: (String param_key) -> String
2450
2414
 
@@ -2454,6 +2418,9 @@ module Checkoff
2454
2418
  # _@param_ `prefix`
2455
2419
  def validate_unit_is_day!: (String prefix) -> void
2456
2420
 
2421
+ # _@param_ `out`
2422
+ def ensure_matched!: ([::Hash[String, String], ::Array[(Symbol | ::Array[untyped])]]? _out) -> [::Hash[String, String], ::Array[(Symbol | ::Array[untyped])]]
2423
+
2457
2424
  attr_reader date_url_params: ::Hash[String, ::Array[String]]
2458
2425
  end
2459
2426
 
@@ -2484,7 +2451,6 @@ module Checkoff
2484
2451
  # _@param_ `verb`
2485
2452
  def convert_from_projects_and_sections: (String verb) -> ::Array[String]
2486
2453
 
2487
- # @sg-ignore abstract method always raises; declared type documents the override contract, not this body
2488
2454
  def convert: () -> ::Array[String]
2489
2455
 
2490
2456
  attr_reader key: String
@@ -2593,15 +2559,11 @@ module Checkoff
2593
2559
 
2594
2560
  def by_custom_field: () -> ::Hash[String, ::Hash[untyped, untyped]]
2595
2561
 
2596
- # @sg-ignore `unless variant_class.nil?` return value isn't inferred as the declared tuple type
2597
- #
2598
2562
  # _@param_ `gid`
2599
2563
  #
2600
2564
  # _@param_ `single_custom_field_params`
2601
2565
  def convert_single_custom_field_params: (String gid, ::Hash[String, ::Array[String]] single_custom_field_params) -> [::Hash[String, String], ::Array[(Symbol | ::Array[untyped])]]
2602
2566
 
2603
- # @sg-ignore split(...)[n]'s nilable Array indexing isn't inferred as the declared String return
2604
- #
2605
2567
  # _@param_ `key`
2606
2568
  def gid_from_custom_field_key: (String key) -> String
2607
2569
 
@@ -2644,7 +2606,7 @@ module Checkoff
2644
2606
  # _@param_ `asana_event`
2645
2607
  #
2646
2608
  # _@param_ `failures`
2647
- def filter_matches_asana_event?: (::Hash[untyped, untyped] filter, ::Hash[untyped, untyped] asana_event, ::Array[String] failures) -> bool
2609
+ def filter_matches_asana_event?: (::Hash[String, (String | ::Array[String])] filter, ::Hash[untyped, untyped] asana_event, ::Array[String] failures) -> bool
2648
2610
 
2649
2611
  # _@param_ `key`
2650
2612
  #
@@ -2678,7 +2640,6 @@ module Checkoff
2678
2640
  # _@param_ `message`
2679
2641
  def finer: (?Object? message) -> void
2680
2642
 
2681
- # @sg-ignore return type could not be inferred — cascades from the ENV.fetch RBS gap below
2682
2643
  def log_level: () -> Symbol
2683
2644
  end
2684
2645
 
@@ -2770,7 +2731,6 @@ module Checkoff
2770
2731
  # _@param_ `message`
2771
2732
  def finer: (?Object? message) -> void
2772
2733
 
2773
- # @sg-ignore return type could not be inferred — cascades from the ENV.fetch RBS gap below
2774
2734
  def log_level: () -> Symbol
2775
2735
 
2776
2736
  attr_reader projects: Checkoff::Projects
@@ -2791,11 +2751,10 @@ module Checkoff
2791
2751
  # Base class to evaluate Asana resource selectors against an Asana resource
2792
2752
  class SelectorEvaluator
2793
2753
  # _@param_ `selector`
2794
- def evaluate: ((Symbol | ::Array[(Symbol | Integer | ::Array[untyped])]) selector) -> (bool | Object | ::Array[untyped])?
2754
+ def evaluate: ((Symbol | ::Array[(Symbol | String | Integer | ::Array[untyped])]) selector) -> (bool | Object | ::Array[untyped])?
2795
2755
 
2796
2756
  def initializer_kwargs: () -> ::Hash[untyped, untyped]
2797
2757
 
2798
- # @sg-ignore abstract method always raises; declared type documents the override contract, not this body
2799
2758
  def function_evaluators: () -> ::Array[singleton(Checkoff::SelectorClasses::FunctionEvaluator)]
2800
2759
 
2801
2760
  # _@param_ `selector`
@@ -2861,9 +2820,6 @@ module Checkoff
2861
2820
  def evaluate_arg?: (Integer _index) -> bool
2862
2821
 
2863
2822
  # sord warn - Asana::Resources::Task wasn't able to be resolved to a constant in this project
2864
- # @sg-ignore Hash#fetch generic<X> leak on rbs >= 4.1.0, fix in progress upstream
2865
- # https://github.com/castwide/solargraph/pull/1228
2866
- #
2867
2823
  # _@param_ `task`
2868
2824
  #
2869
2825
  # _@param_ `project_name`
@@ -2939,9 +2895,6 @@ module Checkoff
2939
2895
  def matches?: () -> bool
2940
2896
 
2941
2897
  # sord warn - Asana::Resources::Task wasn't able to be resolved to a constant in this project
2942
- # @sg-ignore Checkoff::SelectorClasses::Task::UnassignedPFunctionEvaluator#evaluate
2943
- # return type could not be inferred
2944
- #
2945
2898
  # _@param_ `task`
2946
2899
  def evaluate: (Asana::Resources::Task task) -> bool
2947
2900
  end
@@ -2953,9 +2906,6 @@ module Checkoff
2953
2906
  def matches?: () -> bool
2954
2907
 
2955
2908
  # sord warn - Asana::Resources::Task wasn't able to be resolved to a constant in this project
2956
- # @sg-ignore Checkoff::SelectorClasses::Task::DueDateSetPFunctionEvaluator#evaluate
2957
- # return type could not be inferred
2958
- #
2959
2909
  # _@param_ `task`
2960
2910
  def evaluate: (Asana::Resources::Task task) -> bool
2961
2911
  end
@@ -3042,9 +2992,6 @@ module Checkoff
3042
2992
  def evaluate_arg?: (Integer _index) -> bool
3043
2993
 
3044
2994
  # sord warn - Asana::Resources::Task wasn't able to be resolved to a constant in this project
3045
- # @sg-ignore Checkoff::SelectorClasses::Task::MilestonePFunctionEvaluator#evaluate
3046
- # return type could not be inferred
3047
- #
3048
2995
  # _@param_ `task`
3049
2996
  def evaluate: (Asana::Resources::Task task) -> bool
3050
2997
  end
@@ -3076,7 +3023,7 @@ module Checkoff
3076
3023
  #
3077
3024
  # _@param_ `_kwargs`
3078
3025
  def initialize: (
3079
- selector: ([Symbol, ::Array[untyped]] | String),
3026
+ selector: (::Array[(Symbol | ::Array[untyped])] | Symbol),
3080
3027
  tasks: Checkoff::Tasks,
3081
3028
  timelines: Checkoff::Timelines,
3082
3029
  custom_fields: Checkoff::CustomFields,
@@ -3089,7 +3036,7 @@ module Checkoff
3089
3036
 
3090
3037
  attr_reader custom_fields: Checkoff::CustomFields
3091
3038
 
3092
- attr_reader selector: [Symbol, ::Array[untyped]]
3039
+ attr_reader selector: (::Array[(Symbol | ::Array[untyped])] | Symbol)
3093
3040
  end
3094
3041
  end
3095
3042
 
@@ -3264,9 +3211,6 @@ module Checkoff
3264
3211
  # sord warn - Asana::Resources::Project wasn't able to be resolved to a constant in this project
3265
3212
  # sord warn - boolish is probably not a type, but using anyway
3266
3213
  # sord warn - boolish wasn't able to be resolved to a constant in this project
3267
- # @sg-ignore Checkoff::SelectorClasses::Common::NameStartsWithPFunctionEvaluator#evaluate
3268
- # return type could not be inferred
3269
- #
3270
3214
  # _@param_ `resource`
3271
3215
  #
3272
3216
  # _@param_ `prefix`
@@ -3279,8 +3223,6 @@ module Checkoff
3279
3223
 
3280
3224
  # sord warn - Asana::Resources::Task wasn't able to be resolved to a constant in this project
3281
3225
  # sord warn - Asana::Resources::Project wasn't able to be resolved to a constant in this project
3282
- # @sg-ignore selector is only String here per matches?'s is_a?(String) check, in another method
3283
- #
3284
3226
  # _@param_ `_resource`
3285
3227
  def evaluate: ((Asana::Resources::Task | Asana::Resources::Project) _resource) -> String
3286
3228
  end
@@ -3292,9 +3234,9 @@ module Checkoff
3292
3234
  # _@param_ `custom_fields`
3293
3235
  #
3294
3236
  # _@param_ `_kwargs`
3295
- def initialize: (selector: ([Symbol, ::Array[untyped]] | String), custom_fields: Checkoff::CustomFields, **::Hash[untyped, untyped] _kwargs) -> void
3237
+ def initialize: (selector: (::Array[(Symbol | ::Array[untyped])] | Symbol), custom_fields: Checkoff::CustomFields, **::Hash[untyped, untyped] _kwargs) -> void
3296
3238
 
3297
- attr_reader selector: ([Symbol, ::Array[untyped]] | String)
3239
+ attr_reader selector: (::Array[(Symbol | ::Array[untyped])] | Symbol)
3298
3240
 
3299
3241
  attr_reader custom_fields: Checkoff::CustomFields
3300
3242
  end
@@ -3309,8 +3251,6 @@ module Checkoff
3309
3251
  def matches?: () -> bool
3310
3252
 
3311
3253
  # sord warn - Asana::Resources::Project wasn't able to be resolved to a constant in this project
3312
- # @sg-ignore nilable return from an @!parse-declared method isn't inferred
3313
- #
3314
3254
  # _@param_ `resource`
3315
3255
  def evaluate: (Asana::Resources::Project resource) -> String?
3316
3256
  end
@@ -3362,14 +3302,14 @@ module Checkoff
3362
3302
  #
3363
3303
  # _@param_ `_kwargs`
3364
3304
  def initialize: (
3365
- selector: ([Symbol, ::Array[untyped]] | String),
3305
+ selector: (::Array[(Symbol | ::Array[untyped])] | Symbol),
3366
3306
  projects: Checkoff::Projects,
3367
3307
  portfolios: Checkoff::Portfolios,
3368
3308
  workspaces: Checkoff::Workspaces,
3369
3309
  **::Hash[untyped, untyped] _kwargs
3370
3310
  ) -> void
3371
3311
 
3372
- attr_reader selector: [Symbol, ::Array[untyped]]
3312
+ attr_reader selector: (::Array[(Symbol | ::Array[untyped])] | Symbol)
3373
3313
 
3374
3314
  attr_reader projects: Checkoff::Projects
3375
3315
 
@@ -3388,8 +3328,6 @@ module Checkoff
3388
3328
  def matches?: () -> bool
3389
3329
 
3390
3330
  # sord warn - Asana::Resources::Section wasn't able to be resolved to a constant in this project
3391
- # @sg-ignore String, nil safe-nav chain isn't inferred as returning Boolean
3392
- #
3393
3331
  # _@param_ `section`
3394
3332
  def evaluate: (Asana::Resources::Section section) -> bool
3395
3333
  end
@@ -3416,13 +3354,13 @@ module Checkoff
3416
3354
  #
3417
3355
  # _@param_ `kwargs`
3418
3356
  def initialize: (
3419
- selector: ([Symbol, ::Array[untyped]] | String),
3357
+ selector: (::Array[(Symbol | ::Array[untyped])] | Symbol),
3420
3358
  sections: Checkoff::Sections,
3421
3359
  client: Asana::Client,
3422
3360
  **::Hash[untyped, untyped] kwargs
3423
3361
  ) -> void
3424
3362
 
3425
- attr_reader selector: [Symbol, ::Array[untyped]]
3363
+ attr_reader selector: (::Array[(Symbol | ::Array[untyped])] | Symbol)
3426
3364
 
3427
3365
  # sord warn - Asana::Client wasn't able to be resolved to a constant in this project
3428
3366
  attr_reader client: Asana::Client
@@ -3438,12 +3376,9 @@ module Checkoff
3438
3376
  # _@param_ `_index`
3439
3377
  def evaluate_arg?: (Integer _index) -> bool
3440
3378
 
3441
- # @sg-ignore return type could not be inferred — abstract method body is only `raise`
3442
3379
  def matches?: () -> bool
3443
3380
 
3444
3381
  # sord warn - Asana::Resources::Task wasn't able to be resolved to a constant in this project
3445
- # @sg-ignore return type could not be inferred — abstract method body is only `raise`
3446
- #
3447
3382
  # _@param_ `_task`
3448
3383
  #
3449
3384
  # _@param_ `_args`
@@ -3452,7 +3387,7 @@ module Checkoff
3452
3387
  # _@param_ `object`
3453
3388
  #
3454
3389
  # _@param_ `fn_name`
3455
- def fn?: (Object object, Symbol fn_name) -> bool
3390
+ def fn?: ((::Array[(Symbol | ::Array[untyped])] | Symbol) object, Symbol fn_name) -> bool
3456
3391
 
3457
3392
  # Concrete subclasses each declare their own initialize with their
3458
3393
  # specific keyword args (and set @selector themselves before calling
@@ -3484,7 +3419,6 @@ module Checkoff
3484
3419
  # _@param_ `message`
3485
3420
  def finer: (?Object? message) -> void
3486
3421
 
3487
- # @sg-ignore return type could not be inferred — cascades from the ENV.fetch RBS gap below
3488
3422
  def log_level: () -> Symbol
3489
3423
  end
3490
3424
  end
@@ -3596,8 +3530,8 @@ module Checkoff
3596
3530
 
3597
3531
  def initializer_kwargs: () -> ::Hash[untyped, untyped]
3598
3532
 
3599
- # sord warn - Asana::Resources::Project wasn't able to be resolved to a constant in this project
3600
- attr_reader item: Asana::Resources::Project
3533
+ # sord warn - Asana::Resources::Section wasn't able to be resolved to a constant in this project
3534
+ attr_reader item: Asana::Resources::Section
3601
3535
 
3602
3536
  attr_reader sections: Checkoff::Sections
3603
3537
 
@@ -3629,7 +3563,6 @@ module Logging
3629
3563
  # _@param_ `message`
3630
3564
  def finer: (?Object? message) -> void
3631
3565
 
3632
- # @sg-ignore return type could not be inferred — cascades from the ENV.fetch RBS gap below
3633
3566
  def log_level: () -> Symbol
3634
3567
  end
3635
3568
 
@@ -3649,10 +3582,10 @@ module Asana
3649
3582
  # Public: The base resource class which provides some sugar over common
3650
3583
  # resource functionality.
3651
3584
  class Resource
3652
- def marshal_dump: () -> ::Hash[untyped, untyped]
3585
+ def marshal_dump: () -> ::Hash[String, Object]
3653
3586
 
3654
3587
  # _@param_ `data`
3655
- def marshal_load: (::Hash[untyped, untyped] data) -> void
3588
+ def marshal_load: (::Hash[String, Object] data) -> void
3656
3589
  end
3657
3590
  end
3658
3591
  end