packwerk 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (153) hide show
  1. checksums.yaml +7 -0
  2. data/.github/ISSUE_TEMPLATE/bug_report.md +27 -0
  3. data/.github/probots.yml +2 -0
  4. data/.github/pull_request_template.md +27 -0
  5. data/.github/workflows/ci.yml +50 -0
  6. data/.gitignore +12 -0
  7. data/.rubocop.yml +46 -0
  8. data/.ruby-version +1 -0
  9. data/CODEOWNERS +1 -0
  10. data/CODE_OF_CONDUCT.md +76 -0
  11. data/CONTRIBUTING.md +17 -0
  12. data/Gemfile +22 -0
  13. data/Gemfile.lock +236 -0
  14. data/LICENSE.md +7 -0
  15. data/README.md +73 -0
  16. data/Rakefile +13 -0
  17. data/TROUBLESHOOT.md +67 -0
  18. data/USAGE.md +250 -0
  19. data/bin/console +15 -0
  20. data/bin/setup +8 -0
  21. data/dev.yml +32 -0
  22. data/docs/cohesion.png +0 -0
  23. data/exe/packwerk +6 -0
  24. data/lib/packwerk.rb +44 -0
  25. data/lib/packwerk/application_validator.rb +343 -0
  26. data/lib/packwerk/association_inspector.rb +44 -0
  27. data/lib/packwerk/checking_deprecated_references.rb +40 -0
  28. data/lib/packwerk/cli.rb +238 -0
  29. data/lib/packwerk/configuration.rb +82 -0
  30. data/lib/packwerk/const_node_inspector.rb +44 -0
  31. data/lib/packwerk/constant_discovery.rb +60 -0
  32. data/lib/packwerk/constant_name_inspector.rb +22 -0
  33. data/lib/packwerk/dependency_checker.rb +28 -0
  34. data/lib/packwerk/deprecated_references.rb +92 -0
  35. data/lib/packwerk/file_processor.rb +43 -0
  36. data/lib/packwerk/files_for_processing.rb +67 -0
  37. data/lib/packwerk/formatters/progress_formatter.rb +46 -0
  38. data/lib/packwerk/generators/application_validation.rb +62 -0
  39. data/lib/packwerk/generators/configuration_file.rb +69 -0
  40. data/lib/packwerk/generators/inflections_file.rb +43 -0
  41. data/lib/packwerk/generators/root_package.rb +37 -0
  42. data/lib/packwerk/generators/templates/inflections.yml +6 -0
  43. data/lib/packwerk/generators/templates/package.yml +17 -0
  44. data/lib/packwerk/generators/templates/packwerk +23 -0
  45. data/lib/packwerk/generators/templates/packwerk.yml.erb +23 -0
  46. data/lib/packwerk/generators/templates/packwerk_validator_test.rb +11 -0
  47. data/lib/packwerk/graph.rb +74 -0
  48. data/lib/packwerk/inflections/custom.rb +33 -0
  49. data/lib/packwerk/inflections/default.rb +73 -0
  50. data/lib/packwerk/inflector.rb +41 -0
  51. data/lib/packwerk/node.rb +259 -0
  52. data/lib/packwerk/node_processor.rb +49 -0
  53. data/lib/packwerk/node_visitor.rb +22 -0
  54. data/lib/packwerk/offense.rb +44 -0
  55. data/lib/packwerk/output_styles.rb +41 -0
  56. data/lib/packwerk/package.rb +56 -0
  57. data/lib/packwerk/package_set.rb +59 -0
  58. data/lib/packwerk/parsed_constant_definitions.rb +62 -0
  59. data/lib/packwerk/parsers.rb +23 -0
  60. data/lib/packwerk/parsers/erb.rb +66 -0
  61. data/lib/packwerk/parsers/factory.rb +34 -0
  62. data/lib/packwerk/parsers/ruby.rb +42 -0
  63. data/lib/packwerk/privacy_checker.rb +45 -0
  64. data/lib/packwerk/reference.rb +6 -0
  65. data/lib/packwerk/reference_extractor.rb +81 -0
  66. data/lib/packwerk/reference_lister.rb +23 -0
  67. data/lib/packwerk/run_context.rb +103 -0
  68. data/lib/packwerk/sanity_checker.rb +10 -0
  69. data/lib/packwerk/spring_command.rb +28 -0
  70. data/lib/packwerk/updating_deprecated_references.rb +51 -0
  71. data/lib/packwerk/version.rb +6 -0
  72. data/lib/packwerk/violation_type.rb +13 -0
  73. data/library.yml +6 -0
  74. data/packwerk.gemspec +58 -0
  75. data/service.yml +6 -0
  76. data/shipit.rubygems.yml +1 -0
  77. data/sorbet/config +2 -0
  78. data/sorbet/rbi/gems/actioncable@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +840 -0
  79. data/sorbet/rbi/gems/actionmailbox@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +571 -0
  80. data/sorbet/rbi/gems/actionmailer@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +568 -0
  81. data/sorbet/rbi/gems/actionpack@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +5216 -0
  82. data/sorbet/rbi/gems/actiontext@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +663 -0
  83. data/sorbet/rbi/gems/actionview@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +2504 -0
  84. data/sorbet/rbi/gems/activejob@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +635 -0
  85. data/sorbet/rbi/gems/activemodel@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +1201 -0
  86. data/sorbet/rbi/gems/activerecord@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +8011 -0
  87. data/sorbet/rbi/gems/activestorage@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +904 -0
  88. data/sorbet/rbi/gems/activesupport@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +3888 -0
  89. data/sorbet/rbi/gems/ast@2.4.1.rbi +54 -0
  90. data/sorbet/rbi/gems/better_html@1.0.15.rbi +317 -0
  91. data/sorbet/rbi/gems/builder@3.2.4.rbi +8 -0
  92. data/sorbet/rbi/gems/byebug@11.1.3.rbi +8 -0
  93. data/sorbet/rbi/gems/coderay@1.1.3.rbi +8 -0
  94. data/sorbet/rbi/gems/colorize@0.8.1.rbi +40 -0
  95. data/sorbet/rbi/gems/commander@4.5.2.rbi +8 -0
  96. data/sorbet/rbi/gems/concurrent-ruby@1.1.6.rbi +1966 -0
  97. data/sorbet/rbi/gems/constant_resolver@0.1.5.rbi +26 -0
  98. data/sorbet/rbi/gems/crass@1.0.6.rbi +138 -0
  99. data/sorbet/rbi/gems/erubi@1.9.0.rbi +39 -0
  100. data/sorbet/rbi/gems/globalid@0.4.2.rbi +178 -0
  101. data/sorbet/rbi/gems/highline@2.0.3.rbi +8 -0
  102. data/sorbet/rbi/gems/html_tokenizer@0.0.7.rbi +46 -0
  103. data/sorbet/rbi/gems/i18n@1.8.2.rbi +633 -0
  104. data/sorbet/rbi/gems/jaro_winkler@1.5.4.rbi +8 -0
  105. data/sorbet/rbi/gems/loofah@2.5.0.rbi +272 -0
  106. data/sorbet/rbi/gems/m@1.5.1.rbi +108 -0
  107. data/sorbet/rbi/gems/mail@2.7.1.rbi +2490 -0
  108. data/sorbet/rbi/gems/marcel@0.3.3.rbi +30 -0
  109. data/sorbet/rbi/gems/method_source@1.0.0.rbi +76 -0
  110. data/sorbet/rbi/gems/mimemagic@0.3.5.rbi +47 -0
  111. data/sorbet/rbi/gems/mini_mime@1.0.2.rbi +71 -0
  112. data/sorbet/rbi/gems/mini_portile2@2.4.0.rbi +8 -0
  113. data/sorbet/rbi/gems/minitest@5.14.0.rbi +542 -0
  114. data/sorbet/rbi/gems/mocha@1.11.2.rbi +964 -0
  115. data/sorbet/rbi/gems/nio4r@2.5.2.rbi +89 -0
  116. data/sorbet/rbi/gems/nokogiri@1.10.9.rbi +1608 -0
  117. data/sorbet/rbi/gems/parallel@1.19.1.rbi +8 -0
  118. data/sorbet/rbi/gems/parlour@4.0.1.rbi +561 -0
  119. data/sorbet/rbi/gems/parser@2.7.1.4.rbi +1632 -0
  120. data/sorbet/rbi/gems/pry@0.13.1.rbi +8 -0
  121. data/sorbet/rbi/gems/rack-test@1.1.0.rbi +335 -0
  122. data/sorbet/rbi/gems/rack@2.2.2.rbi +1730 -0
  123. data/sorbet/rbi/gems/rails-dom-testing@2.0.3.rbi +123 -0
  124. data/sorbet/rbi/gems/rails-html-sanitizer@1.3.0.rbi +213 -0
  125. data/sorbet/rbi/gems/rails@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +8 -0
  126. data/sorbet/rbi/gems/railties@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +869 -0
  127. data/sorbet/rbi/gems/rainbow@3.0.0.rbi +155 -0
  128. data/sorbet/rbi/gems/rake@13.0.1.rbi +841 -0
  129. data/sorbet/rbi/gems/rexml@3.2.4.rbi +8 -0
  130. data/sorbet/rbi/gems/rubocop-performance@1.5.2.rbi +8 -0
  131. data/sorbet/rbi/gems/rubocop-shopify@1.0.2.rbi +8 -0
  132. data/sorbet/rbi/gems/rubocop-sorbet@0.3.7.rbi +8 -0
  133. data/sorbet/rbi/gems/rubocop@0.82.0.rbi +8 -0
  134. data/sorbet/rbi/gems/ruby-progressbar@1.10.1.rbi +8 -0
  135. data/sorbet/rbi/gems/smart_properties@1.15.0.rbi +168 -0
  136. data/sorbet/rbi/gems/spoom@1.0.4.rbi +418 -0
  137. data/sorbet/rbi/gems/spring@2.1.0.rbi +160 -0
  138. data/sorbet/rbi/gems/sprockets-rails@3.2.1.rbi +431 -0
  139. data/sorbet/rbi/gems/sprockets@4.0.0.rbi +1132 -0
  140. data/sorbet/rbi/gems/tapioca@0.4.5.rbi +518 -0
  141. data/sorbet/rbi/gems/thor@1.0.1.rbi +892 -0
  142. data/sorbet/rbi/gems/tzinfo@2.0.2.rbi +547 -0
  143. data/sorbet/rbi/gems/unicode-display_width@1.7.0.rbi +8 -0
  144. data/sorbet/rbi/gems/websocket-driver@0.7.1.rbi +438 -0
  145. data/sorbet/rbi/gems/websocket-extensions@0.1.4.rbi +71 -0
  146. data/sorbet/rbi/gems/zeitwerk@2.3.0.rbi +8 -0
  147. data/sorbet/tapioca/require.rb +25 -0
  148. data/static/packwerk-check-demo.png +0 -0
  149. data/static/packwerk_check.gif +0 -0
  150. data/static/packwerk_check_violation.gif +0 -0
  151. data/static/packwerk_update.gif +0 -0
  152. data/static/packwerk_validate.gif +0 -0
  153. metadata +341 -0
@@ -0,0 +1,26 @@
1
+ # DO NOT EDIT MANUALLY
2
+ # This is an autogenerated file for types exported from the `constant_resolver` gem.
3
+ # Please instead update this file by running `dev typecheck update`.
4
+
5
+ # typed: true
6
+
7
+ class ConstantResolver
8
+ def initialize(root_path:, load_paths:, inflector: T.unsafe(nil)); end
9
+
10
+ def config; end
11
+ def file_map; end
12
+ def resolve(const_name, current_namespace_path: T.unsafe(nil)); end
13
+
14
+ private
15
+
16
+ def resolve_constant(const_name, current_namespace_path, original_name: T.unsafe(nil)); end
17
+ def resolve_traversing_namespace_path(const_name, current_namespace_path); end
18
+ end
19
+
20
+ class ConstantResolver::ConstantContext < ::Struct
21
+ end
22
+
23
+ class ConstantResolver::Error < ::StandardError
24
+ end
25
+
26
+ ConstantResolver::VERSION = T.let(T.unsafe(nil), String)
@@ -0,0 +1,138 @@
1
+ # DO NOT EDIT MANUALLY
2
+ # This is an autogenerated file for types exported from the `crass` gem.
3
+ # Please instead update this file by running `dev typecheck update`.
4
+
5
+ # typed: true
6
+
7
+ module Crass
8
+ class << self
9
+ def parse(input, options = T.unsafe(nil)); end
10
+ def parse_properties(input, options = T.unsafe(nil)); end
11
+ end
12
+ end
13
+
14
+ class Crass::Parser
15
+ def initialize(input, options = T.unsafe(nil)); end
16
+
17
+ def consume_at_rule(input = T.unsafe(nil)); end
18
+ def consume_component_value(input = T.unsafe(nil)); end
19
+ def consume_declaration(input = T.unsafe(nil)); end
20
+ def consume_declarations(input = T.unsafe(nil), options = T.unsafe(nil)); end
21
+ def consume_function(input = T.unsafe(nil)); end
22
+ def consume_qualified_rule(input = T.unsafe(nil)); end
23
+ def consume_rules(flags = T.unsafe(nil)); end
24
+ def consume_simple_block(input = T.unsafe(nil)); end
25
+ def create_node(type, properties = T.unsafe(nil)); end
26
+ def create_selector(input); end
27
+ def create_style_rule(rule); end
28
+ def parse_component_value(input = T.unsafe(nil)); end
29
+ def parse_component_values(input = T.unsafe(nil)); end
30
+ def parse_declaration(input = T.unsafe(nil)); end
31
+ def parse_declarations(input = T.unsafe(nil), options = T.unsafe(nil)); end
32
+ def parse_properties(input = T.unsafe(nil)); end
33
+ def parse_rule(input = T.unsafe(nil)); end
34
+ def parse_value(nodes); end
35
+ def tokens; end
36
+
37
+ class << self
38
+ def parse_properties(input, options = T.unsafe(nil)); end
39
+ def parse_rules(input, options = T.unsafe(nil)); end
40
+ def parse_stylesheet(input, options = T.unsafe(nil)); end
41
+ def stringify(nodes, options = T.unsafe(nil)); end
42
+ end
43
+ end
44
+
45
+ Crass::Parser::BLOCK_END_TOKENS = T.let(T.unsafe(nil), Hash)
46
+
47
+ class Crass::Scanner
48
+ def initialize(input); end
49
+
50
+ def consume; end
51
+ def consume_rest; end
52
+ def current; end
53
+ def eos?; end
54
+ def mark; end
55
+ def marked; end
56
+ def marker; end
57
+ def marker=(_); end
58
+ def peek(length = T.unsafe(nil)); end
59
+ def pos; end
60
+ def pos=(_); end
61
+ def reconsume; end
62
+ def reset; end
63
+ def scan(pattern); end
64
+ def scan_until(pattern); end
65
+ def string; end
66
+ end
67
+
68
+ class Crass::TokenScanner
69
+ def initialize(tokens); end
70
+
71
+ def collect; end
72
+ def consume; end
73
+ def current; end
74
+ def peek; end
75
+ def pos; end
76
+ def reconsume; end
77
+ def reset; end
78
+ def tokens; end
79
+ end
80
+
81
+ class Crass::Tokenizer
82
+ def initialize(input, options = T.unsafe(nil)); end
83
+
84
+ def consume; end
85
+ def consume_bad_url; end
86
+ def consume_comments; end
87
+ def consume_escaped; end
88
+ def consume_ident; end
89
+ def consume_name; end
90
+ def consume_number; end
91
+ def consume_numeric; end
92
+ def consume_string(ending = T.unsafe(nil)); end
93
+ def consume_unicode_range; end
94
+ def consume_url; end
95
+ def convert_string_to_number(str); end
96
+ def create_token(type, properties = T.unsafe(nil)); end
97
+ def preprocess(input); end
98
+ def start_identifier?(text = T.unsafe(nil)); end
99
+ def start_number?(text = T.unsafe(nil)); end
100
+ def tokenize; end
101
+ def valid_escape?(text = T.unsafe(nil)); end
102
+
103
+ class << self
104
+ def tokenize(input, options = T.unsafe(nil)); end
105
+ end
106
+ end
107
+
108
+ Crass::Tokenizer::RE_COMMENT_CLOSE = T.let(T.unsafe(nil), Regexp)
109
+
110
+ Crass::Tokenizer::RE_DIGIT = T.let(T.unsafe(nil), Regexp)
111
+
112
+ Crass::Tokenizer::RE_ESCAPE = T.let(T.unsafe(nil), Regexp)
113
+
114
+ Crass::Tokenizer::RE_HEX = T.let(T.unsafe(nil), Regexp)
115
+
116
+ Crass::Tokenizer::RE_NAME = T.let(T.unsafe(nil), Regexp)
117
+
118
+ Crass::Tokenizer::RE_NAME_START = T.let(T.unsafe(nil), Regexp)
119
+
120
+ Crass::Tokenizer::RE_NON_PRINTABLE = T.let(T.unsafe(nil), Regexp)
121
+
122
+ Crass::Tokenizer::RE_NUMBER_DECIMAL = T.let(T.unsafe(nil), Regexp)
123
+
124
+ Crass::Tokenizer::RE_NUMBER_EXPONENT = T.let(T.unsafe(nil), Regexp)
125
+
126
+ Crass::Tokenizer::RE_NUMBER_SIGN = T.let(T.unsafe(nil), Regexp)
127
+
128
+ Crass::Tokenizer::RE_NUMBER_STR = T.let(T.unsafe(nil), Regexp)
129
+
130
+ Crass::Tokenizer::RE_QUOTED_URL_START = T.let(T.unsafe(nil), Regexp)
131
+
132
+ Crass::Tokenizer::RE_UNICODE_RANGE_END = T.let(T.unsafe(nil), Regexp)
133
+
134
+ Crass::Tokenizer::RE_UNICODE_RANGE_START = T.let(T.unsafe(nil), Regexp)
135
+
136
+ Crass::Tokenizer::RE_WHITESPACE = T.let(T.unsafe(nil), Regexp)
137
+
138
+ Crass::Tokenizer::RE_WHITESPACE_ANCHORED = T.let(T.unsafe(nil), Regexp)
@@ -0,0 +1,39 @@
1
+ # DO NOT EDIT MANUALLY
2
+ # This is an autogenerated file for types exported from the `erubi` gem.
3
+ # Please instead update this file by running `dev typecheck update`.
4
+
5
+ # typed: true
6
+
7
+ module Erubi
8
+ class << self
9
+ def h(value); end
10
+ end
11
+ end
12
+
13
+ class Erubi::Engine
14
+ def initialize(input, properties = T.unsafe(nil)); end
15
+
16
+ def bufvar; end
17
+ def filename; end
18
+ def src; end
19
+
20
+ private
21
+
22
+ def add_code(code); end
23
+ def add_expression(indicator, code); end
24
+ def add_expression_result(code); end
25
+ def add_expression_result_escaped(code); end
26
+ def add_postamble(postamble); end
27
+ def add_text(text); end
28
+ def handle(indicator, code, tailch, rspace, lspace); end
29
+ end
30
+
31
+ Erubi::RANGE_ALL = T.let(T.unsafe(nil), Range)
32
+
33
+ Erubi::RANGE_FIRST = T.let(T.unsafe(nil), Integer)
34
+
35
+ Erubi::RANGE_LAST = T.let(T.unsafe(nil), Integer)
36
+
37
+ Erubi::TEXT_END = T.let(T.unsafe(nil), String)
38
+
39
+ Erubi::VERSION = T.let(T.unsafe(nil), String)
@@ -0,0 +1,178 @@
1
+ # DO NOT EDIT MANUALLY
2
+ # This is an autogenerated file for types exported from the `globalid` gem.
3
+ # Please instead update this file by running `dev typecheck update`.
4
+
5
+ # typed: true
6
+
7
+ class GlobalID
8
+ extend(::ActiveSupport::Autoload)
9
+
10
+ def initialize(gid, options = T.unsafe(nil)); end
11
+
12
+ def ==(other); end
13
+ def app(*args, &block); end
14
+ def eql?(other); end
15
+ def find(options = T.unsafe(nil)); end
16
+ def hash; end
17
+ def model_class; end
18
+ def model_id(*args, &block); end
19
+ def model_name(*args, &block); end
20
+ def params(*args, &block); end
21
+ def to_param; end
22
+ def to_s(*args, &block); end
23
+ def uri; end
24
+
25
+ class << self
26
+ def app; end
27
+ def app=(app); end
28
+ def create(model, options = T.unsafe(nil)); end
29
+ def eager_load!; end
30
+ def find(gid, options = T.unsafe(nil)); end
31
+ def parse(gid, options = T.unsafe(nil)); end
32
+
33
+ private
34
+
35
+ def parse_encoded_gid(gid, options); end
36
+ def repad_gid(gid); end
37
+ end
38
+ end
39
+
40
+ module GlobalID::Identification
41
+ extend(::ActiveSupport::Concern)
42
+
43
+ def to_gid(options = T.unsafe(nil)); end
44
+ def to_gid_param(options = T.unsafe(nil)); end
45
+ def to_global_id(options = T.unsafe(nil)); end
46
+ def to_sgid(options = T.unsafe(nil)); end
47
+ def to_sgid_param(options = T.unsafe(nil)); end
48
+ def to_signed_global_id(options = T.unsafe(nil)); end
49
+ end
50
+
51
+ module GlobalID::Locator
52
+ class << self
53
+ def locate(gid, options = T.unsafe(nil)); end
54
+ def locate_many(gids, options = T.unsafe(nil)); end
55
+ def locate_many_signed(sgids, options = T.unsafe(nil)); end
56
+ def locate_signed(sgid, options = T.unsafe(nil)); end
57
+ def use(app, locator = T.unsafe(nil), &locator_block); end
58
+
59
+ private
60
+
61
+ def find_allowed?(model_class, only = T.unsafe(nil)); end
62
+ def locator_for(gid); end
63
+ def normalize_app(app); end
64
+ def parse_allowed(gids, only = T.unsafe(nil)); end
65
+ end
66
+ end
67
+
68
+ class GlobalID::Locator::BaseLocator
69
+ def locate(gid); end
70
+ def locate_many(gids, options = T.unsafe(nil)); end
71
+
72
+ private
73
+
74
+ def find_records(model_class, ids, options); end
75
+ end
76
+
77
+ class GlobalID::Locator::BlockLocator
78
+ def initialize(block); end
79
+
80
+ def locate(gid); end
81
+ def locate_many(gids, options = T.unsafe(nil)); end
82
+ end
83
+
84
+ GlobalID::Locator::DEFAULT_LOCATOR = T.let(T.unsafe(nil), GlobalID::Locator::UnscopedLocator)
85
+
86
+ class GlobalID::Locator::UnscopedLocator < ::GlobalID::Locator::BaseLocator
87
+ def locate(gid); end
88
+
89
+ private
90
+
91
+ def find_records(model_class, ids, options); end
92
+ def unscoped(model_class); end
93
+ end
94
+
95
+ class GlobalID::Railtie < ::Rails::Railtie
96
+ end
97
+
98
+ class GlobalID::Verifier < ::ActiveSupport::MessageVerifier
99
+
100
+ private
101
+
102
+ def decode(data); end
103
+ def encode(data); end
104
+ end
105
+
106
+ class SignedGlobalID < ::GlobalID
107
+ def initialize(gid, options = T.unsafe(nil)); end
108
+
109
+ def ==(other); end
110
+ def expires_at; end
111
+ def purpose; end
112
+ def to_h; end
113
+ def to_param; end
114
+ def to_s; end
115
+ def verifier; end
116
+
117
+ private
118
+
119
+ def encoded_expiration; end
120
+ def pick_expiration(options); end
121
+
122
+ class << self
123
+ def expires_in; end
124
+ def expires_in=(_); end
125
+ def parse(sgid, options = T.unsafe(nil)); end
126
+ def pick_purpose(options); end
127
+ def pick_verifier(options); end
128
+ def verifier; end
129
+ def verifier=(_); end
130
+
131
+ private
132
+
133
+ def raise_if_expired(expires_at); end
134
+ def verify(sgid, options); end
135
+ end
136
+ end
137
+
138
+ class SignedGlobalID::ExpiredMessage < ::StandardError
139
+ end
140
+
141
+ class URI::GID < ::URI::Generic
142
+ def app; end
143
+ def model_id; end
144
+ def model_name; end
145
+ def params; end
146
+ def to_s; end
147
+
148
+ protected
149
+
150
+ def query=(query); end
151
+ def set_params(params); end
152
+ def set_path(path); end
153
+ def set_query(query); end
154
+
155
+ private
156
+
157
+ def check_host(host); end
158
+ def check_path(path); end
159
+ def check_scheme(scheme); end
160
+ def parse_query_params(query); end
161
+ def set_model_components(path, validate = T.unsafe(nil)); end
162
+ def validate_component(component); end
163
+ def validate_model_id(model_id, model_name); end
164
+
165
+ class << self
166
+ def build(args); end
167
+ def create(app, model, params = T.unsafe(nil)); end
168
+ def parse(uri); end
169
+ def validate_app(app); end
170
+ end
171
+ end
172
+
173
+ URI::GID::COMPONENT = T.let(T.unsafe(nil), Array)
174
+
175
+ class URI::GID::MissingModelIdError < ::URI::InvalidComponentError
176
+ end
177
+
178
+ URI::GID::PATH_REGEXP = T.let(T.unsafe(nil), Regexp)
@@ -0,0 +1,8 @@
1
+ # DO NOT EDIT MANUALLY
2
+ # This is an autogenerated file for types exported from the `highline` gem.
3
+ # Please instead update this file by running `dev typecheck update`.
4
+
5
+ # typed: true
6
+
7
+ # THIS IS AN EMPTY RBI FILE.
8
+ # see https://github.com/Shopify/tapioca/blob/master/README.md#manual-gem-requires
@@ -0,0 +1,46 @@
1
+ # DO NOT EDIT MANUALLY
2
+ # This is an autogenerated file for types exported from the `html_tokenizer` gem.
3
+ # Please instead update this file by running `dev typecheck update`.
4
+
5
+ # typed: true
6
+
7
+ module HtmlTokenizer
8
+ end
9
+
10
+ class HtmlTokenizer::Parser
11
+ def initialize; end
12
+
13
+ def append_placeholder(_); end
14
+ def attribute_name; end
15
+ def attribute_quoted?; end
16
+ def attribute_value; end
17
+ def cdata_text; end
18
+ def closing_tag?; end
19
+ def column_number; end
20
+ def comment_text; end
21
+ def context; end
22
+ def document; end
23
+ def document_length; end
24
+ def errors; end
25
+ def errors_count; end
26
+ def line_number; end
27
+ def parse(_); end
28
+ def quote_character; end
29
+ def rawtext_text; end
30
+ def self_closing_tag?; end
31
+ def tag_name; end
32
+ end
33
+
34
+ class HtmlTokenizer::ParserError < ::RuntimeError
35
+ def initialize(message, position, line, column); end
36
+
37
+ def column; end
38
+ def line; end
39
+ def position; end
40
+ end
41
+
42
+ class HtmlTokenizer::Tokenizer
43
+ def initialize; end
44
+
45
+ def tokenize(_); end
46
+ end
@@ -0,0 +1,633 @@
1
+ # DO NOT EDIT MANUALLY
2
+ # This is an autogenerated file for types exported from the `i18n` gem.
3
+ # Please instead update this file by running `dev typecheck update`.
4
+
5
+ # typed: true
6
+
7
+ module I18n
8
+ extend(::I18n::Base)
9
+
10
+ class << self
11
+ def interpolate(string, values); end
12
+ def interpolate_hash(string, values); end
13
+ def new_double_nested_cache; end
14
+ end
15
+ end
16
+
17
+ class I18n::ArgumentError < ::ArgumentError
18
+ end
19
+
20
+ module I18n::Backend
21
+ end
22
+
23
+ module I18n::Backend::Base
24
+ include(::I18n::Backend::Transliterator)
25
+
26
+ def available_locales; end
27
+ def eager_load!; end
28
+ def exists?(locale, key); end
29
+ def load_translations(*filenames); end
30
+ def localize(locale, object, format = T.unsafe(nil), options = T.unsafe(nil)); end
31
+ def reload!; end
32
+ def store_translations(locale, data, options = T.unsafe(nil)); end
33
+ def translate(locale, key, options = T.unsafe(nil)); end
34
+
35
+ protected
36
+
37
+ def deep_interpolate(locale, data, values = T.unsafe(nil)); end
38
+ def default(locale, object, subject, options = T.unsafe(nil)); end
39
+ def eager_loaded?; end
40
+ def interpolate(locale, subject, values = T.unsafe(nil)); end
41
+ def load_file(filename); end
42
+ def load_json(filename); end
43
+ def load_rb(filename); end
44
+ def load_yaml(filename); end
45
+ def load_yml(filename); end
46
+ def lookup(locale, key, scope = T.unsafe(nil), options = T.unsafe(nil)); end
47
+ def pluralization_key(entry, count); end
48
+ def pluralize(locale, entry, count); end
49
+ def resolve(locale, object, subject, options = T.unsafe(nil)); end
50
+ def subtrees?; end
51
+ def translate_localization_format(locale, object, format, options); end
52
+ end
53
+
54
+ module I18n::Backend::Cache
55
+ def translate(locale, key, options = T.unsafe(nil)); end
56
+
57
+ protected
58
+
59
+ def _fetch(cache_key, &block); end
60
+ def cache_key(locale, key, options); end
61
+ def fetch(cache_key, &block); end
62
+
63
+ private
64
+
65
+ def digest_item(key); end
66
+ end
67
+
68
+ module I18n::Backend::CacheFile
69
+ def path_roots; end
70
+ def path_roots=(_); end
71
+
72
+ protected
73
+
74
+ def load_file(filename); end
75
+ def normalized_path(file); end
76
+ end
77
+
78
+ module I18n::Backend::Cascade
79
+ def lookup(locale, key, scope = T.unsafe(nil), options = T.unsafe(nil)); end
80
+ end
81
+
82
+ class I18n::Backend::Chain
83
+ include(::I18n::Backend::Transliterator)
84
+ include(::I18n::Backend::Base)
85
+ include(::I18n::Backend::Chain::Implementation)
86
+ end
87
+
88
+ module I18n::Backend::Chain::Implementation
89
+ include(::I18n::Backend::Transliterator)
90
+ include(::I18n::Backend::Base)
91
+
92
+ def initialize(*backends); end
93
+
94
+ def available_locales; end
95
+ def backends; end
96
+ def backends=(_); end
97
+ def eager_load!; end
98
+ def exists?(locale, key); end
99
+ def initialized?; end
100
+ def localize(locale, object, format = T.unsafe(nil), options = T.unsafe(nil)); end
101
+ def reload!; end
102
+ def store_translations(locale, data, options = T.unsafe(nil)); end
103
+ def translate(locale, key, default_options = T.unsafe(nil)); end
104
+
105
+ protected
106
+
107
+ def init_translations; end
108
+ def namespace_lookup?(result, options); end
109
+ def translations; end
110
+
111
+ private
112
+
113
+ def _deep_merge(hash, other_hash); end
114
+ end
115
+
116
+ module I18n::Backend::Fallbacks
117
+ def exists?(locale, key); end
118
+ def extract_non_symbol_default!(options); end
119
+ def translate(locale, key, options = T.unsafe(nil)); end
120
+ end
121
+
122
+ module I18n::Backend::Flatten
123
+ def flatten_keys(hash, escape, prev_key = T.unsafe(nil), &block); end
124
+ def flatten_translations(locale, data, escape, subtree); end
125
+ def links; end
126
+ def normalize_flat_keys(locale, key, scope, separator); end
127
+
128
+ protected
129
+
130
+ def escape_default_separator(key); end
131
+ def find_link(locale, key); end
132
+ def resolve_link(locale, key); end
133
+ def store_link(locale, key, link); end
134
+
135
+ class << self
136
+ def escape_default_separator(key); end
137
+ def normalize_flat_keys(locale, key, scope, separator); end
138
+ end
139
+ end
140
+
141
+ I18n::Backend::Flatten::FLATTEN_SEPARATOR = T.let(T.unsafe(nil), String)
142
+
143
+ I18n::Backend::Flatten::SEPARATOR_ESCAPE_CHAR = T.let(T.unsafe(nil), String)
144
+
145
+ module I18n::Backend::Gettext
146
+
147
+ protected
148
+
149
+ def load_po(filename); end
150
+ def normalize(locale, data); end
151
+ def normalize_pluralization(locale, key, value); end
152
+ def parse(filename); end
153
+ end
154
+
155
+ class I18n::Backend::Gettext::PoData < ::Hash
156
+ def set_comment(msgid_or_sym, comment); end
157
+ end
158
+
159
+ module I18n::Backend::InterpolationCompiler
160
+ def interpolate(locale, string, values); end
161
+ def store_translations(locale, data, options = T.unsafe(nil)); end
162
+
163
+ protected
164
+
165
+ def compile_all_strings_in(data); end
166
+ end
167
+
168
+ module I18n::Backend::InterpolationCompiler::Compiler
169
+ extend(::I18n::Backend::InterpolationCompiler::Compiler)
170
+
171
+ def compile_if_an_interpolation(string); end
172
+ def interpolated_str?(str); end
173
+
174
+ protected
175
+
176
+ def compile_interpolation_token(key); end
177
+ def compiled_interpolation_body(str); end
178
+ def direct_key(key); end
179
+ def escape_key_sym(key); end
180
+ def escape_plain_str(str); end
181
+ def handle_interpolation_token(interpolation, matchdata); end
182
+ def interpolate_key(key); end
183
+ def interpolate_or_raise_missing(key); end
184
+ def missing_key(key); end
185
+ def nil_key(key); end
186
+ def reserved_key(key); end
187
+ def tokenize(str); end
188
+ end
189
+
190
+ I18n::Backend::InterpolationCompiler::Compiler::INTERPOLATION_SYNTAX_PATTERN = T.let(T.unsafe(nil), Regexp)
191
+
192
+ I18n::Backend::InterpolationCompiler::Compiler::TOKENIZER = T.let(T.unsafe(nil), Regexp)
193
+
194
+ class I18n::Backend::KeyValue
195
+ include(::I18n::Backend::Flatten)
196
+ include(::I18n::Backend::Transliterator)
197
+ include(::I18n::Backend::Base)
198
+ include(::I18n::Backend::KeyValue::Implementation)
199
+ end
200
+
201
+ module I18n::Backend::KeyValue::Implementation
202
+ include(::I18n::Backend::Flatten)
203
+ include(::I18n::Backend::Transliterator)
204
+ include(::I18n::Backend::Base)
205
+
206
+ def initialize(store, subtrees = T.unsafe(nil)); end
207
+
208
+ def available_locales; end
209
+ def initialized?; end
210
+ def store; end
211
+ def store=(_); end
212
+ def store_translations(locale, data, options = T.unsafe(nil)); end
213
+
214
+ protected
215
+
216
+ def init_translations; end
217
+ def lookup(locale, key, scope = T.unsafe(nil), options = T.unsafe(nil)); end
218
+ def pluralize(locale, entry, count); end
219
+ def subtrees?; end
220
+ def translations; end
221
+ end
222
+
223
+ class I18n::Backend::KeyValue::SubtreeProxy
224
+ def initialize(master_key, store); end
225
+
226
+ def [](key); end
227
+ def has_key?(key); end
228
+ def inspect; end
229
+ def instance_of?(klass); end
230
+ def is_a?(klass); end
231
+ def kind_of?(klass); end
232
+ def nil?; end
233
+ end
234
+
235
+ module I18n::Backend::Memoize
236
+ def available_locales; end
237
+ def eager_load!; end
238
+ def reload!; end
239
+ def store_translations(locale, data, options = T.unsafe(nil)); end
240
+
241
+ protected
242
+
243
+ def lookup(locale, key, scope = T.unsafe(nil), options = T.unsafe(nil)); end
244
+ def memoized_lookup; end
245
+ def reset_memoizations!(locale = T.unsafe(nil)); end
246
+ end
247
+
248
+ module I18n::Backend::Metadata
249
+ def interpolate(locale, entry, values = T.unsafe(nil)); end
250
+ def pluralize(locale, entry, count); end
251
+ def translate(locale, key, options = T.unsafe(nil)); end
252
+
253
+ protected
254
+
255
+ def with_metadata(metadata, &block); end
256
+
257
+ class << self
258
+ def included(base); end
259
+ end
260
+ end
261
+
262
+ module I18n::Backend::Pluralization
263
+ def pluralize(locale, entry, count); end
264
+
265
+ protected
266
+
267
+ def pluralizer(locale); end
268
+ def pluralizers; end
269
+ end
270
+
271
+ class I18n::Backend::Simple
272
+ include(::I18n::Backend::Transliterator)
273
+ include(::I18n::Backend::Base)
274
+ include(::I18n::Backend::Simple::Implementation)
275
+ end
276
+
277
+ module I18n::Backend::Simple::Implementation
278
+ include(::I18n::Backend::Transliterator)
279
+ include(::I18n::Backend::Base)
280
+
281
+ def available_locales; end
282
+ def eager_load!; end
283
+ def initialized?; end
284
+ def reload!; end
285
+ def store_translations(locale, data, options = T.unsafe(nil)); end
286
+ def translations(do_init: T.unsafe(nil)); end
287
+
288
+ protected
289
+
290
+ def init_translations; end
291
+ def lookup(locale, key, scope = T.unsafe(nil), options = T.unsafe(nil)); end
292
+ end
293
+
294
+ module I18n::Backend::Transliterator
295
+ def transliterate(locale, string, replacement = T.unsafe(nil)); end
296
+
297
+ class << self
298
+ def get(rule = T.unsafe(nil)); end
299
+ end
300
+ end
301
+
302
+ I18n::Backend::Transliterator::DEFAULT_REPLACEMENT_CHAR = T.let(T.unsafe(nil), String)
303
+
304
+ class I18n::Backend::Transliterator::HashTransliterator
305
+ def initialize(rule = T.unsafe(nil)); end
306
+
307
+ def transliterate(string, replacement = T.unsafe(nil)); end
308
+
309
+ private
310
+
311
+ def add(hash); end
312
+ def add_default_approximations; end
313
+ def approximations; end
314
+ end
315
+
316
+ I18n::Backend::Transliterator::HashTransliterator::DEFAULT_APPROXIMATIONS = T.let(T.unsafe(nil), Hash)
317
+
318
+ class I18n::Backend::Transliterator::ProcTransliterator
319
+ def initialize(rule); end
320
+
321
+ def transliterate(string, replacement = T.unsafe(nil)); end
322
+ end
323
+
324
+ module I18n::Base
325
+ def available_locales; end
326
+ def available_locales=(value); end
327
+ def available_locales_initialized?; end
328
+ def backend; end
329
+ def backend=(value); end
330
+ def config; end
331
+ def config=(value); end
332
+ def default_locale; end
333
+ def default_locale=(value); end
334
+ def default_separator; end
335
+ def default_separator=(value); end
336
+ def eager_load!; end
337
+ def enforce_available_locales; end
338
+ def enforce_available_locales!(locale); end
339
+ def enforce_available_locales=(value); end
340
+ def exception_handler; end
341
+ def exception_handler=(value); end
342
+ def exists?(key, _locale = T.unsafe(nil), locale: T.unsafe(nil)); end
343
+ def l(object, locale: T.unsafe(nil), format: T.unsafe(nil), **options); end
344
+ def load_path; end
345
+ def load_path=(value); end
346
+ def locale; end
347
+ def locale=(value); end
348
+ def locale_available?(locale); end
349
+ def localize(object, locale: T.unsafe(nil), format: T.unsafe(nil), **options); end
350
+ def normalize_keys(locale, key, scope, separator = T.unsafe(nil)); end
351
+ def reload!; end
352
+ def t(key = T.unsafe(nil), *_, throw: T.unsafe(nil), raise: T.unsafe(nil), locale: T.unsafe(nil), **options); end
353
+ def t!(key, options = T.unsafe(nil)); end
354
+ def translate(key = T.unsafe(nil), *_, throw: T.unsafe(nil), raise: T.unsafe(nil), locale: T.unsafe(nil), **options); end
355
+ def translate!(key, options = T.unsafe(nil)); end
356
+ def transliterate(key, *_, throw: T.unsafe(nil), raise: T.unsafe(nil), locale: T.unsafe(nil), replacement: T.unsafe(nil), **options); end
357
+ def with_locale(tmp_locale = T.unsafe(nil)); end
358
+
359
+ private
360
+
361
+ def handle_exception(handling, exception, locale, key, options); end
362
+ def normalize_key(key, separator); end
363
+ end
364
+
365
+ class I18n::Config
366
+ def available_locales; end
367
+ def available_locales=(locales); end
368
+ def available_locales_initialized?; end
369
+ def available_locales_set; end
370
+ def backend; end
371
+ def backend=(backend); end
372
+ def clear_available_locales_set; end
373
+ def default_locale; end
374
+ def default_locale=(locale); end
375
+ def default_separator; end
376
+ def default_separator=(separator); end
377
+ def enforce_available_locales; end
378
+ def enforce_available_locales=(enforce_available_locales); end
379
+ def exception_handler; end
380
+ def exception_handler=(exception_handler); end
381
+ def interpolation_patterns; end
382
+ def interpolation_patterns=(interpolation_patterns); end
383
+ def load_path; end
384
+ def load_path=(load_path); end
385
+ def locale; end
386
+ def locale=(locale); end
387
+ def missing_interpolation_argument_handler; end
388
+ def missing_interpolation_argument_handler=(exception_handler); end
389
+ end
390
+
391
+ I18n::DEFAULT_INTERPOLATION_PATTERNS = T.let(T.unsafe(nil), Array)
392
+
393
+ class I18n::Disabled < ::I18n::ArgumentError
394
+ def initialize(method); end
395
+ end
396
+
397
+ I18n::EMPTY_HASH = T.let(T.unsafe(nil), Hash)
398
+
399
+ class I18n::ExceptionHandler
400
+ def call(exception, _locale, _key, _options); end
401
+ end
402
+
403
+ module I18n::Gettext
404
+ class << self
405
+ def extract_scope(msgid, separator); end
406
+ def plural_keys(*args); end
407
+ end
408
+ end
409
+
410
+ I18n::Gettext::CONTEXT_SEPARATOR = T.let(T.unsafe(nil), String)
411
+
412
+ module I18n::Gettext::Helpers
413
+ def N_(msgsid); end
414
+ def _(msgid, options = T.unsafe(nil)); end
415
+ def gettext(msgid, options = T.unsafe(nil)); end
416
+ def n_(msgid, msgid_plural, n = T.unsafe(nil)); end
417
+ def ngettext(msgid, msgid_plural, n = T.unsafe(nil)); end
418
+ def np_(msgctxt, msgid, msgid_plural, n = T.unsafe(nil)); end
419
+ def npgettext(msgctxt, msgid, msgid_plural, n = T.unsafe(nil)); end
420
+ def ns_(msgid, msgid_plural, n = T.unsafe(nil), separator = T.unsafe(nil)); end
421
+ def nsgettext(msgid, msgid_plural, n = T.unsafe(nil), separator = T.unsafe(nil)); end
422
+ def p_(msgctxt, msgid); end
423
+ def pgettext(msgctxt, msgid); end
424
+ def s_(msgid, separator = T.unsafe(nil)); end
425
+ def sgettext(msgid, separator = T.unsafe(nil)); end
426
+ end
427
+
428
+ I18n::Gettext::PLURAL_SEPARATOR = T.let(T.unsafe(nil), String)
429
+
430
+ I18n::INTERPOLATION_PATTERN = T.let(T.unsafe(nil), Regexp)
431
+
432
+ class I18n::InvalidLocale < ::I18n::ArgumentError
433
+ def initialize(locale); end
434
+
435
+ def locale; end
436
+ end
437
+
438
+ class I18n::InvalidLocaleData < ::I18n::ArgumentError
439
+ def initialize(filename, exception_message); end
440
+
441
+ def filename; end
442
+ end
443
+
444
+ class I18n::InvalidPluralizationData < ::I18n::ArgumentError
445
+ def initialize(entry, count, key); end
446
+
447
+ def count; end
448
+ def entry; end
449
+ def key; end
450
+ end
451
+
452
+ module I18n::Locale
453
+ end
454
+
455
+ class I18n::Locale::Fallbacks < ::Hash
456
+ def initialize(*mappings); end
457
+
458
+ def [](locale); end
459
+ def defaults; end
460
+ def defaults=(defaults); end
461
+ def map(mappings); end
462
+
463
+ protected
464
+
465
+ def compute(tags, include_defaults = T.unsafe(nil), exclude = T.unsafe(nil)); end
466
+ end
467
+
468
+ module I18n::Locale::Tag
469
+ class << self
470
+ def implementation; end
471
+ def implementation=(implementation); end
472
+ def tag(tag); end
473
+ end
474
+ end
475
+
476
+ module I18n::Locale::Tag::Parents
477
+ def parent; end
478
+ def parents; end
479
+ def self_and_parents; end
480
+ end
481
+
482
+ class I18n::Locale::Tag::Rfc4646 < ::Struct
483
+ include(::I18n::Locale::Tag::Parents)
484
+
485
+ def language; end
486
+ def region; end
487
+ def script; end
488
+ def to_a; end
489
+ def to_s; end
490
+ def to_sym; end
491
+ def variant; end
492
+
493
+ class << self
494
+ def parser; end
495
+ def parser=(parser); end
496
+ def tag(tag); end
497
+ end
498
+ end
499
+
500
+ module I18n::Locale::Tag::Rfc4646::Parser
501
+ class << self
502
+ def match(tag); end
503
+ end
504
+ end
505
+
506
+ I18n::Locale::Tag::Rfc4646::Parser::PATTERN = T.let(T.unsafe(nil), Regexp)
507
+
508
+ class I18n::Locale::Tag::Simple
509
+ include(::I18n::Locale::Tag::Parents)
510
+
511
+ def initialize(*tag); end
512
+
513
+ def subtags; end
514
+ def tag; end
515
+ def to_a; end
516
+ def to_s; end
517
+ def to_sym; end
518
+
519
+ class << self
520
+ def tag(tag); end
521
+ end
522
+ end
523
+
524
+ class I18n::Middleware
525
+ def initialize(app); end
526
+
527
+ def call(env); end
528
+ end
529
+
530
+ class I18n::MissingInterpolationArgument < ::I18n::ArgumentError
531
+ def initialize(key, values, string); end
532
+
533
+ def key; end
534
+ def string; end
535
+ def values; end
536
+ end
537
+
538
+ class I18n::MissingTranslation < ::I18n::ArgumentError
539
+ include(::I18n::MissingTranslation::Base)
540
+ end
541
+
542
+ module I18n::MissingTranslation::Base
543
+ def initialize(locale, key, options = T.unsafe(nil)); end
544
+
545
+ def key; end
546
+ def keys; end
547
+ def locale; end
548
+ def message; end
549
+ def options; end
550
+ def to_exception; end
551
+ def to_s; end
552
+ end
553
+
554
+ class I18n::MissingTranslationData < ::I18n::ArgumentError
555
+ include(::I18n::MissingTranslation::Base)
556
+ end
557
+
558
+ I18n::RESERVED_KEYS = T.let(T.unsafe(nil), Array)
559
+
560
+ I18n::RESERVED_KEYS_PATTERN = T.let(T.unsafe(nil), Regexp)
561
+
562
+ class I18n::ReservedInterpolationKey < ::I18n::ArgumentError
563
+ def initialize(key, string); end
564
+
565
+ def key; end
566
+ def string; end
567
+ end
568
+
569
+ module I18n::Tests
570
+ end
571
+
572
+ module I18n::Tests::Localization
573
+ class << self
574
+ def included(base); end
575
+ end
576
+ end
577
+
578
+ module I18n::Tests::Localization::Date
579
+ def setup; end
580
+ end
581
+
582
+ class I18n::UnknownFileType < ::I18n::ArgumentError
583
+ def initialize(type, filename); end
584
+
585
+ def filename; end
586
+ def type; end
587
+ end
588
+
589
+ I18n::VERSION = T.let(T.unsafe(nil), String)
590
+
591
+ module I18n::HashRefinements
592
+ end
593
+
594
+ I18n::JSON = ActiveSupport::JSON
595
+
596
+ I18n::Locale::Tag::RFC4646_FORMATS = T.let(T.unsafe(nil), Hash)
597
+
598
+ I18n::Locale::Tag::RFC4646_SUBTAGS = T.let(T.unsafe(nil), Array)
599
+
600
+ module I18n::Tests::Basics
601
+ def teardown; end
602
+ end
603
+
604
+ module I18n::Tests::Defaults
605
+ def setup; end
606
+ end
607
+
608
+ module I18n::Tests::Interpolation
609
+ end
610
+
611
+ module I18n::Tests::Link
612
+ end
613
+
614
+ module I18n::Tests::Localization::DateTime
615
+ def setup; end
616
+ end
617
+
618
+ module I18n::Tests::Localization::Procs
619
+ end
620
+
621
+ module I18n::Tests::Localization::Time
622
+ def setup; end
623
+ end
624
+
625
+ module I18n::Tests::Lookup
626
+ def setup; end
627
+ end
628
+
629
+ module I18n::Tests::Pluralization
630
+ end
631
+
632
+ module I18n::Tests::Procs
633
+ end