sec_id 6.1.0 → 7.0.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +14 -0
- data/MIGRATION.md +147 -0
- data/README.md +71 -44
- data/lib/sec_id/base.rb +36 -17
- data/lib/sec_id/cei.rb +7 -7
- data/lib/sec_id/cik.rb +1 -1
- data/lib/sec_id/concerns/checkable.rb +90 -46
- data/lib/sec_id/concerns/generatable.rb +5 -5
- data/lib/sec_id/concerns/normalizable.rb +4 -4
- data/lib/sec_id/concerns/validatable.rb +7 -7
- data/lib/sec_id/cusip.rb +8 -8
- data/lib/sec_id/deprecation.rb +26 -0
- data/lib/sec_id/dti.rb +8 -14
- data/lib/sec_id/figi.rb +9 -9
- data/lib/sec_id/iban.rb +20 -20
- data/lib/sec_id/isin.rb +9 -9
- data/lib/sec_id/lei.rb +10 -10
- data/lib/sec_id/occ.rb +1 -1
- data/lib/sec_id/sedol.rb +11 -11
- data/lib/sec_id/upi.rb +76 -0
- data/lib/sec_id/valoren.rb +2 -2
- data/lib/sec_id/version.rb +1 -1
- data/lib/sec_id/wkn.rb +1 -1
- data/lib/sec_id.rb +9 -3
- data/sec_id.gemspec +2 -2
- data/sig/sec_id/base.rbs +9 -4
- data/sig/sec_id/cei.rbs +4 -0
- data/sig/sec_id/concerns/checkable.rbs +17 -7
- data/sig/sec_id/concerns/generatable.rbs +1 -1
- data/sig/sec_id/concerns/validatable.rbs +1 -1
- data/sig/sec_id/cusip.rbs +4 -0
- data/sig/sec_id/deprecation.rbs +6 -0
- data/sig/sec_id/dti.rbs +6 -1
- data/sig/sec_id/figi.rbs +4 -0
- data/sig/sec_id/iban.rbs +7 -3
- data/sig/sec_id/isin.rbs +4 -0
- data/sig/sec_id/lei.rbs +5 -1
- data/sig/sec_id/sedol.rbs +4 -0
- data/sig/sec_id/upi.rbs +29 -0
- data/sig/sec_id.rbs +5 -2
- metadata +7 -3
data/sig/sec_id/dti.rbs
CHANGED
|
@@ -15,13 +15,18 @@ module SecID
|
|
|
15
15
|
GRANDFATHERED_CODES: Hash[String, String]
|
|
16
16
|
|
|
17
17
|
def initialize: (SecID::input dti) -> void
|
|
18
|
+
def calculate_checksum: () -> String
|
|
19
|
+
def self.checksum: (SecID::input id) -> String
|
|
20
|
+
# @deprecated v7 bridge alias for `calculate_checksum`; removed in v8.
|
|
18
21
|
def calculate_check_digit: () -> String
|
|
22
|
+
# @deprecated v7 bridge alias for `checksum`; removed in v8.
|
|
23
|
+
def self.check_digit: (SecID::input id) -> String
|
|
19
24
|
private def self.generate_body: (Random random) -> String
|
|
20
25
|
|
|
21
26
|
private
|
|
22
27
|
|
|
23
28
|
def components: () -> Hash[Symbol, untyped]
|
|
24
|
-
def
|
|
29
|
+
def grandfathered_checksum: (untyped base) -> String?
|
|
25
30
|
def iso7064_mod31_30_check_char: (untyped base) -> String
|
|
26
31
|
end
|
|
27
32
|
end
|
data/sig/sec_id/figi.rbs
CHANGED
|
@@ -17,7 +17,11 @@ module SecID
|
|
|
17
17
|
|
|
18
18
|
def initialize: (SecID::input figi) -> void
|
|
19
19
|
def to_pretty_s: () -> String?
|
|
20
|
+
def calculate_checksum: () -> Integer
|
|
21
|
+
def self.checksum: (SecID::input id) -> Integer
|
|
22
|
+
# @deprecated v7 bridge alias for `calculate_checksum`; removed in v8.
|
|
20
23
|
def calculate_check_digit: () -> Integer
|
|
24
|
+
# @deprecated v7 bridge alias for `checksum`; removed in v8.
|
|
21
25
|
def self.check_digit: (SecID::input id) -> Integer
|
|
22
26
|
private def self.generate_body: (Random random) -> String
|
|
23
27
|
|
data/sig/sec_id/iban.rbs
CHANGED
|
@@ -26,7 +26,11 @@ module SecID
|
|
|
26
26
|
|
|
27
27
|
def initialize: (SecID::input iban) -> void
|
|
28
28
|
def restore: () -> String
|
|
29
|
+
def calculate_checksum: () -> Integer
|
|
30
|
+
def self.checksum: (SecID::input id) -> Integer
|
|
31
|
+
# @deprecated v7 bridge alias for `calculate_checksum`; removed in v8.
|
|
29
32
|
def calculate_check_digit: () -> Integer
|
|
33
|
+
# @deprecated v7 bridge alias for `checksum`; removed in v8.
|
|
30
34
|
def self.check_digit: (SecID::input id) -> Integer
|
|
31
35
|
private def self.generate_body: (Random random) -> String
|
|
32
36
|
def valid_bban_format?: () -> bool
|
|
@@ -38,13 +42,13 @@ module SecID
|
|
|
38
42
|
private
|
|
39
43
|
|
|
40
44
|
def components: () -> Hash[Symbol, untyped]
|
|
41
|
-
def
|
|
45
|
+
def checksum_width: () -> Integer
|
|
42
46
|
def valid_format?: () -> bool
|
|
43
47
|
def detect_errors: () -> Array[Symbol]
|
|
44
48
|
def validation_message: (Symbol code) -> String?
|
|
45
|
-
def
|
|
49
|
+
def extract_checksum_and_bban: (String rest) -> void
|
|
46
50
|
def expected_bban_length_for_country: () -> Integer?
|
|
47
|
-
def
|
|
51
|
+
def checksum?: (untyped rest, Integer? expected_bban_length) -> bool
|
|
48
52
|
def extract_bban_components: () -> void
|
|
49
53
|
def valid_bban_length_only?: () -> bool
|
|
50
54
|
def numeric_string_for_check: () -> String
|
data/sig/sec_id/isin.rbs
CHANGED
|
@@ -19,7 +19,11 @@ module SecID
|
|
|
19
19
|
|
|
20
20
|
def initialize: (SecID::input isin) -> void
|
|
21
21
|
def to_pretty_s: () -> String?
|
|
22
|
+
def calculate_checksum: () -> Integer
|
|
23
|
+
def self.checksum: (SecID::input id) -> Integer
|
|
24
|
+
# @deprecated v7 bridge alias for `calculate_checksum`; removed in v8.
|
|
22
25
|
def calculate_check_digit: () -> Integer
|
|
26
|
+
# @deprecated v7 bridge alias for `checksum`; removed in v8.
|
|
23
27
|
def self.check_digit: (SecID::input id) -> Integer
|
|
24
28
|
private def self.generate_body: (Random random) -> String
|
|
25
29
|
def to_cusip: () -> CUSIP
|
data/sig/sec_id/lei.rbs
CHANGED
|
@@ -20,14 +20,18 @@ module SecID
|
|
|
20
20
|
|
|
21
21
|
def initialize: (SecID::input lei) -> void
|
|
22
22
|
def to_pretty_s: () -> String?
|
|
23
|
+
def calculate_checksum: () -> Integer
|
|
24
|
+
def self.checksum: (SecID::input id) -> Integer
|
|
25
|
+
# @deprecated v7 bridge alias for `calculate_checksum`; removed in v8.
|
|
23
26
|
def calculate_check_digit: () -> Integer
|
|
27
|
+
# @deprecated v7 bridge alias for `checksum`; removed in v8.
|
|
24
28
|
def self.check_digit: (SecID::input id) -> Integer
|
|
25
29
|
private def self.generate_body: (Random random) -> String
|
|
26
30
|
|
|
27
31
|
private
|
|
28
32
|
|
|
29
33
|
def components: () -> Hash[Symbol, untyped]
|
|
30
|
-
def
|
|
34
|
+
def checksum_width: () -> Integer
|
|
31
35
|
def numeric_identifier: () -> String
|
|
32
36
|
end
|
|
33
37
|
end
|
data/sig/sec_id/sedol.rbs
CHANGED
|
@@ -19,7 +19,11 @@ module SecID
|
|
|
19
19
|
|
|
20
20
|
def initialize: (SecID::input sedol) -> void
|
|
21
21
|
def to_isin: (?String country_code) -> ISIN
|
|
22
|
+
def calculate_checksum: () -> Integer
|
|
23
|
+
def self.checksum: (SecID::input id) -> Integer
|
|
24
|
+
# @deprecated v7 bridge alias for `calculate_checksum`; removed in v8.
|
|
22
25
|
def calculate_check_digit: () -> Integer
|
|
26
|
+
# @deprecated v7 bridge alias for `checksum`; removed in v8.
|
|
23
27
|
def self.check_digit: (SecID::input id) -> Integer
|
|
24
28
|
private def self.generate_body: (Random random) -> String
|
|
25
29
|
|
data/sig/sec_id/upi.rbs
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
module SecID
|
|
2
|
+
# Unique Product Identifier (UPI, ISO 4914).
|
|
3
|
+
class UPI < Base
|
|
4
|
+
include Checkable
|
|
5
|
+
extend Checkable::ClassMethods
|
|
6
|
+
|
|
7
|
+
FULL_NAME: String
|
|
8
|
+
ID_LENGTH: Integer
|
|
9
|
+
EXAMPLE: String
|
|
10
|
+
VALID_CHARS_REGEX: ::Regexp
|
|
11
|
+
ID_REGEX: ::Regexp
|
|
12
|
+
ALPHABET: Array[String]
|
|
13
|
+
ALPHABET_VALUE: Hash[String, Integer]
|
|
14
|
+
GENERATE_CHARSET: Array[String]
|
|
15
|
+
|
|
16
|
+
def initialize: (SecID::input upi) -> void
|
|
17
|
+
def calculate_checksum: () -> String
|
|
18
|
+
def self.checksum: (SecID::input id) -> String
|
|
19
|
+
# @deprecated v7 bridge alias for `calculate_checksum`; removed in v8.
|
|
20
|
+
def calculate_check_digit: () -> String
|
|
21
|
+
# @deprecated v7 bridge alias for `checksum`; removed in v8.
|
|
22
|
+
def self.check_digit: (SecID::input id) -> String
|
|
23
|
+
private def self.generate_body: (Random random) -> String
|
|
24
|
+
|
|
25
|
+
private
|
|
26
|
+
|
|
27
|
+
def components: () -> Hash[Symbol, untyped]
|
|
28
|
+
end
|
|
29
|
+
end
|
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
|
|
11
|
-
class
|
|
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
|
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:
|
|
4
|
+
version: 7.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Leonid Svyatov
|
|
@@ -11,10 +11,10 @@ date: 1980-01-02 00:00:00.000000000 Z
|
|
|
11
11
|
dependencies: []
|
|
12
12
|
description: Validate, normalize, parse, convert, generate, and classify securities
|
|
13
13
|
identifiers. Auto-detect identifier type from any string. Calculate and restore
|
|
14
|
-
|
|
14
|
+
checksums. Generate format-valid identifiers as test fixtures. Decode CFI codes
|
|
15
15
|
to full ISO 10962:2021 classifications. Includes an opt-in ActiveModel/Rails validator
|
|
16
16
|
that adds no runtime dependency. Supports ISIN, CUSIP, CEI, SEDOL, FIGI, LEI, IBAN,
|
|
17
|
-
CIK, OCC, WKN, Valoren, CFI, FISN, BIC, and
|
|
17
|
+
CIK, OCC, WKN, Valoren, CFI, FISN, BIC, DTI, and UPI.
|
|
18
18
|
email:
|
|
19
19
|
- leonid@svyatov.ru
|
|
20
20
|
executables: []
|
|
@@ -44,6 +44,7 @@ files:
|
|
|
44
44
|
- lib/sec_id/concerns/validatable.rb
|
|
45
45
|
- lib/sec_id/cusip.rb
|
|
46
46
|
- lib/sec_id/deep_freeze.rb
|
|
47
|
+
- lib/sec_id/deprecation.rb
|
|
47
48
|
- lib/sec_id/detector.rb
|
|
48
49
|
- lib/sec_id/dti.rb
|
|
49
50
|
- lib/sec_id/errors.rb
|
|
@@ -57,6 +58,7 @@ files:
|
|
|
57
58
|
- lib/sec_id/railtie.rb
|
|
58
59
|
- lib/sec_id/scanner.rb
|
|
59
60
|
- lib/sec_id/sedol.rb
|
|
61
|
+
- lib/sec_id/upi.rb
|
|
60
62
|
- lib/sec_id/valoren.rb
|
|
61
63
|
- lib/sec_id/version.rb
|
|
62
64
|
- lib/sec_id/wkn.rb
|
|
@@ -79,6 +81,7 @@ files:
|
|
|
79
81
|
- sig/sec_id/concerns/validatable.rbs
|
|
80
82
|
- sig/sec_id/cusip.rbs
|
|
81
83
|
- sig/sec_id/deep_freeze.rbs
|
|
84
|
+
- sig/sec_id/deprecation.rbs
|
|
82
85
|
- sig/sec_id/detector.rbs
|
|
83
86
|
- sig/sec_id/dti.rbs
|
|
84
87
|
- sig/sec_id/errors.rbs
|
|
@@ -91,6 +94,7 @@ files:
|
|
|
91
94
|
- sig/sec_id/occ.rbs
|
|
92
95
|
- sig/sec_id/scanner.rbs
|
|
93
96
|
- sig/sec_id/sedol.rbs
|
|
97
|
+
- sig/sec_id/upi.rbs
|
|
94
98
|
- sig/sec_id/valoren.rbs
|
|
95
99
|
- sig/sec_id/version.rbs
|
|
96
100
|
- sig/sec_id/wkn.rbs
|