sec_id 6.1.0 → 7.1.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 (46) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +20 -0
  3. data/MIGRATION.md +147 -0
  4. data/README.md +108 -45
  5. data/lib/sec_id/base.rb +36 -17
  6. data/lib/sec_id/cei.rb +8 -7
  7. data/lib/sec_id/cik.rb +1 -1
  8. data/lib/sec_id/concerns/checkable.rb +90 -46
  9. data/lib/sec_id/concerns/generatable.rb +5 -5
  10. data/lib/sec_id/concerns/normalizable.rb +4 -4
  11. data/lib/sec_id/concerns/suggestable.rb +168 -0
  12. data/lib/sec_id/concerns/validatable.rb +7 -7
  13. data/lib/sec_id/cusip.rb +9 -8
  14. data/lib/sec_id/deprecation.rb +26 -0
  15. data/lib/sec_id/dti.rb +9 -14
  16. data/lib/sec_id/figi.rb +10 -9
  17. data/lib/sec_id/iban.rb +21 -20
  18. data/lib/sec_id/isin.rb +10 -9
  19. data/lib/sec_id/lei.rb +11 -10
  20. data/lib/sec_id/occ.rb +1 -1
  21. data/lib/sec_id/sedol.rb +12 -11
  22. data/lib/sec_id/suggestion.rb +59 -0
  23. data/lib/sec_id/upi.rb +77 -0
  24. data/lib/sec_id/valoren.rb +2 -2
  25. data/lib/sec_id/version.rb +1 -1
  26. data/lib/sec_id/wkn.rb +1 -1
  27. data/lib/sec_id.rb +43 -3
  28. data/sec_id.gemspec +5 -4
  29. data/sig/sec_id/base.rbs +16 -5
  30. data/sig/sec_id/cei.rbs +4 -0
  31. data/sig/sec_id/concerns/checkable.rbs +18 -7
  32. data/sig/sec_id/concerns/generatable.rbs +1 -1
  33. data/sig/sec_id/concerns/suggestable.rbs +32 -0
  34. data/sig/sec_id/concerns/validatable.rbs +1 -1
  35. data/sig/sec_id/cusip.rbs +4 -0
  36. data/sig/sec_id/deprecation.rbs +6 -0
  37. data/sig/sec_id/dti.rbs +6 -1
  38. data/sig/sec_id/figi.rbs +4 -0
  39. data/sig/sec_id/iban.rbs +7 -3
  40. data/sig/sec_id/isin.rbs +4 -0
  41. data/sig/sec_id/lei.rbs +5 -1
  42. data/sig/sec_id/sedol.rbs +4 -0
  43. data/sig/sec_id/suggestion.rbs +23 -0
  44. data/sig/sec_id/upi.rbs +29 -0
  45. data/sig/sec_id.rbs +7 -2
  46. metadata +14 -5
data/sig/sec_id.rbs CHANGED
@@ -7,10 +7,13 @@ module SecID
7
7
  class InvalidFormatError < Error
8
8
  end
9
9
 
10
- # Raised when the check digit does not match the calculated value.
11
- class InvalidCheckDigitError < Error
10
+ # Raised when the checksum does not match the calculated value.
11
+ class InvalidChecksumError < Error
12
12
  end
13
13
 
14
+ # @deprecated v7 bridge constant alias for `InvalidChecksumError` (same class object); removed in v8.
15
+ InvalidCheckDigitError: singleton(InvalidChecksumError)
16
+
14
17
  # Raised for type-specific structural errors.
15
18
  class InvalidStructureError < Error
16
19
  end
@@ -35,9 +38,11 @@ module SecID
35
38
  # against the `:first`/`:raise` arm's `Base?` and fail. Widening here keeps `result` untyped.
36
39
  def self.parse!: (SecID::input str, ?types: Array[Symbol]?, ?on_ambiguous: Symbol) -> (Base | Array[Base])
37
40
  def self.generate: (Symbol key, ?random: Random) -> Base
41
+ def self.suggest: (SecID::input str, ?types: Array[Symbol]?) -> Array[Suggestion]
38
42
 
39
43
  # Singleton-method privacy must be declared inline (`private def self.…`); a bare
40
44
  # `private` section only affects instance methods, leaving these public.
45
+ private def self.suggestable_types: (String input, Array[Symbol]? types) -> Array[singleton(Base)]
41
46
  private def self.register_identifier: (singleton(Base) klass) -> void
42
47
  private def self.parse_any: (SecID::input str) -> Base?
43
48
  private def self.parse_from: (SecID::input str, Array[Symbol] types) -> Base?
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sec_id
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.1.0
4
+ version: 7.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Leonid Svyatov
@@ -9,12 +9,13 @@ bindir: bin
9
9
  cert_chain: []
10
10
  date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies: []
12
- description: Validate, normalize, parse, convert, generate, and classify securities
12
+ description: Validate, normalize, parse, convert, generate, classify, and repair securities
13
13
  identifiers. Auto-detect identifier type from any string. Calculate and restore
14
- check digits. Generate format-valid identifiers as test fixtures. Decode CFI codes
14
+ checksums. Suggest confidence-ranked corrections for fat-fingered or OCR-mangled
15
+ identifiers. Generate format-valid identifiers as test fixtures. Decode CFI codes
15
16
  to full ISO 10962:2021 classifications. Includes an opt-in ActiveModel/Rails validator
16
17
  that adds no runtime dependency. Supports ISIN, CUSIP, CEI, SEDOL, FIGI, LEI, IBAN,
17
- CIK, OCC, WKN, Valoren, CFI, FISN, BIC, and DTI.
18
+ CIK, OCC, WKN, Valoren, CFI, FISN, BIC, DTI, and UPI.
18
19
  email:
19
20
  - leonid@svyatov.ru
20
21
  executables: []
@@ -41,9 +42,11 @@ files:
41
42
  - lib/sec_id/concerns/checkable.rb
42
43
  - lib/sec_id/concerns/generatable.rb
43
44
  - lib/sec_id/concerns/normalizable.rb
45
+ - lib/sec_id/concerns/suggestable.rb
44
46
  - lib/sec_id/concerns/validatable.rb
45
47
  - lib/sec_id/cusip.rb
46
48
  - lib/sec_id/deep_freeze.rb
49
+ - lib/sec_id/deprecation.rb
47
50
  - lib/sec_id/detector.rb
48
51
  - lib/sec_id/dti.rb
49
52
  - lib/sec_id/errors.rb
@@ -57,6 +60,8 @@ files:
57
60
  - lib/sec_id/railtie.rb
58
61
  - lib/sec_id/scanner.rb
59
62
  - lib/sec_id/sedol.rb
63
+ - lib/sec_id/suggestion.rb
64
+ - lib/sec_id/upi.rb
60
65
  - lib/sec_id/valoren.rb
61
66
  - lib/sec_id/version.rb
62
67
  - lib/sec_id/wkn.rb
@@ -76,9 +81,11 @@ files:
76
81
  - sig/sec_id/concerns/checkable.rbs
77
82
  - sig/sec_id/concerns/generatable.rbs
78
83
  - sig/sec_id/concerns/normalizable.rbs
84
+ - sig/sec_id/concerns/suggestable.rbs
79
85
  - sig/sec_id/concerns/validatable.rbs
80
86
  - sig/sec_id/cusip.rbs
81
87
  - sig/sec_id/deep_freeze.rbs
88
+ - sig/sec_id/deprecation.rbs
82
89
  - sig/sec_id/detector.rbs
83
90
  - sig/sec_id/dti.rbs
84
91
  - sig/sec_id/errors.rbs
@@ -91,6 +98,8 @@ files:
91
98
  - sig/sec_id/occ.rbs
92
99
  - sig/sec_id/scanner.rbs
93
100
  - sig/sec_id/sedol.rbs
101
+ - sig/sec_id/suggestion.rbs
102
+ - sig/sec_id/upi.rbs
94
103
  - sig/sec_id/valoren.rbs
95
104
  - sig/sec_id/version.rbs
96
105
  - sig/sec_id/wkn.rbs
@@ -120,5 +129,5 @@ requirements: []
120
129
  rubygems_version: 4.0.12
121
130
  specification_version: 4
122
131
  summary: A Ruby toolkit for securities identifiers — validate, parse, normalize, detect,
123
- convert, generate, and classify.
132
+ convert, generate, classify, and repair.
124
133
  test_files: []