format_parser 1.6.0 → 2.0.0.pre
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/.github/workflows/main.yml +4 -9
- data/CHANGELOG.md +12 -0
- data/README.md +1 -1
- data/format_parser.gemspec +9 -11
- data/lib/care.rb +5 -11
- data/lib/format_parser/version.rb +1 -1
- data/lib/format_parser.rb +8 -11
- data/lib/io_utils.rb +2 -6
- data/lib/parsers/aac_parser/adts_header_info.rb +3 -9
- data/lib/parsers/arw_parser.rb +50 -0
- data/lib/parsers/dpx_parser/dpx_structs.rb +1 -1
- data/lib/parsers/exif_parser.rb +2 -4
- data/lib/parsers/fdx_parser.rb +2 -2
- data/lib/parsers/flac_parser.rb +2 -6
- data/lib/parsers/jpeg_parser.rb +2 -2
- data/lib/parsers/moov_parser.rb +5 -7
- data/lib/parsers/mp3_parser.rb +2 -6
- data/lib/parsers/mpeg_parser.rb +1 -3
- data/lib/parsers/tiff_parser.rb +5 -6
- data/lib/parsers/wav_parser.rb +9 -12
- data/lib/parsers/zip_parser/file_reader.rb +45 -70
- data/lib/parsers/zip_parser.rb +1 -1
- data/lib/read_limiter.rb +8 -16
- data/lib/remote_io.rb +64 -34
- data/lib/string.rb +9 -0
- data/spec/attributes_json_spec.rb +0 -3
- data/spec/parsers/arw_parser_spec.rb +119 -0
- data/spec/parsers/tiff_parser_spec.rb +9 -15
- data/spec/remote_fetching_spec.rb +3 -8
- data/spec/remote_io_spec.rb +116 -60
- metadata +38 -75
data/spec/remote_io_spec.rb
CHANGED
@@ -4,130 +4,186 @@ describe FormatParser::RemoteIO do
|
|
4
4
|
it_behaves_like 'an IO object compatible with IOConstraint'
|
5
5
|
|
6
6
|
it 'returns the partial content when the server supplies a 206 status' do
|
7
|
-
|
7
|
+
url = 'https://images.invalid/img.jpg'
|
8
|
+
response = Net::HTTPPartialContent.new('2', '206', 'Partial Content')
|
9
|
+
response['Content-Range'] = '10-109/2577'
|
10
|
+
allow(response).to receive(:body).and_return('Response body')
|
8
11
|
|
9
|
-
|
10
|
-
|
11
|
-
allow(Faraday).to receive(:new).and_return(faraday_conn)
|
12
|
-
expect(faraday_conn).to receive(:get).with('https://images.invalid/img.jpg', nil, range: 'bytes=10-109')
|
12
|
+
allow(Net::HTTP).to receive(:start).and_yield(Net::HTTP).and_return(response)
|
13
|
+
allow(Net::HTTP).to receive(:request_get).and_return(response)
|
13
14
|
|
15
|
+
expect(Net::HTTP).to receive(:request_get).with(
|
16
|
+
an_object_satisfying { |uri| URI::HTTPS === uri && uri.to_s == url },
|
17
|
+
a_hash_including('range' => 'bytes=10-109')
|
18
|
+
)
|
19
|
+
|
20
|
+
rio = described_class.new(url)
|
14
21
|
rio.seek(10)
|
15
22
|
read_result = rio.read(100)
|
16
|
-
|
23
|
+
|
24
|
+
expect(read_result).to eq(response.body)
|
17
25
|
end
|
18
26
|
|
19
27
|
it 'returns the entire content when the server supplies the Content-Range response but sends a 200 status' do
|
20
|
-
|
28
|
+
url = 'https://images.invalid/img.jpg'
|
29
|
+
response = Net::HTTPOK.new('2', '200', 'OK')
|
30
|
+
allow(response).to receive(:body).and_return('Response body')
|
31
|
+
|
32
|
+
allow(Net::HTTP).to receive(:start).and_yield(Net::HTTP).and_return(response)
|
33
|
+
allow(Net::HTTP).to receive(:request_get).and_return(response)
|
21
34
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
35
|
+
expect(Net::HTTP).to receive(:request_get).with(
|
36
|
+
an_object_satisfying { |uri| URI::HTTPS === uri && uri.to_s == url },
|
37
|
+
a_hash_including('range' => 'bytes=10-109')
|
38
|
+
)
|
26
39
|
|
40
|
+
rio = described_class.new(url)
|
27
41
|
rio.seek(10)
|
28
42
|
read_result = rio.read(100)
|
29
|
-
|
43
|
+
|
44
|
+
expect(read_result).to eq(response.body)
|
30
45
|
end
|
31
46
|
|
32
47
|
it 'raises a specific error for all 4xx responses except 416' do
|
33
|
-
|
48
|
+
url = 'https://images.invalid/img.jpg'
|
49
|
+
response = Net::HTTPForbidden.new('2', '403', 'Forbidden')
|
50
|
+
|
51
|
+
allow(Net::HTTP).to receive(:start).and_yield(Net::HTTP).and_return(response)
|
52
|
+
allow(Net::HTTP).to receive(:request_get).and_return(response)
|
34
53
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
54
|
+
expect(Net::HTTP).to receive(:request_get).with(
|
55
|
+
an_object_satisfying { |uri| uri.to_s == url },
|
56
|
+
a_hash_including('range' => 'bytes=100-199')
|
57
|
+
)
|
39
58
|
|
59
|
+
rio = described_class.new(url)
|
40
60
|
rio.seek(100)
|
61
|
+
|
41
62
|
expect { rio.read(100) }.to raise_error(/replied with a 403 and refused/)
|
42
63
|
end
|
43
64
|
|
44
65
|
it 'returns nil on a 416 response' do
|
45
|
-
|
66
|
+
url = 'https://images.invalid/img.jpg'
|
67
|
+
response = Net::HTTPRangeNotSatisfiable.new('2', '416', 'Range Not Satisfiable')
|
46
68
|
|
47
|
-
|
48
|
-
|
49
|
-
allow(Faraday).to receive(:new).and_return(faraday_conn)
|
50
|
-
expect(faraday_conn).to receive(:get).with('https://images.invalid/img.jpg', nil, range: 'bytes=100-199')
|
69
|
+
allow(Net::HTTP).to receive(:start).and_yield(Net::HTTP).and_return(response)
|
70
|
+
allow(Net::HTTP).to receive(:request_get).and_return(response)
|
51
71
|
|
72
|
+
expect(Net::HTTP).to receive(:request_get).with(
|
73
|
+
an_object_satisfying { |uri| uri.to_s == url },
|
74
|
+
a_hash_including('range' => 'bytes=100-199')
|
75
|
+
)
|
76
|
+
|
77
|
+
rio = described_class.new(url)
|
52
78
|
rio.seek(100)
|
79
|
+
|
53
80
|
expect(rio.read(100)).to be_nil
|
54
81
|
end
|
55
82
|
|
56
83
|
it 'sets the status_code of the exception on a 4xx response from upstream' do
|
57
|
-
|
84
|
+
url = 'https://images.invalid/img.jpg'
|
85
|
+
response = Net::HTTPForbidden.new('2', '403', 'Forbidden')
|
86
|
+
|
87
|
+
allow(Net::HTTP).to receive(:start).and_yield(Net::HTTP).and_return(response)
|
88
|
+
allow(Net::HTTP).to receive(:request_get).and_return(response)
|
58
89
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
90
|
+
expect(Net::HTTP).to receive(:request_get).with(
|
91
|
+
an_object_satisfying { |uri| uri.to_s == url },
|
92
|
+
a_hash_including('range' => 'bytes=100-199')
|
93
|
+
)
|
63
94
|
|
95
|
+
rio = described_class.new(url)
|
64
96
|
rio.seek(100)
|
65
|
-
|
66
|
-
expect { rio.read(100) }.to raise_error { |e| expect(e.status_code).to eq(403) }
|
97
|
+
expect { rio.read(100) }.to(raise_error { |e| expect(e.status_code).to eq(403) })
|
67
98
|
end
|
68
99
|
|
69
100
|
it 'returns a nil when the range cannot be satisfied and the response is 416' do
|
70
|
-
|
101
|
+
url = 'https://images.invalid/img.jpg'
|
102
|
+
response = Net::HTTPRangeNotSatisfiable.new('2', '416', 'Range Not Satisfiable')
|
71
103
|
|
72
|
-
|
73
|
-
|
74
|
-
allow(Faraday).to receive(:new).and_return(faraday_conn)
|
75
|
-
expect(faraday_conn).to receive(:get).with('https://images.invalid/img.jpg', nil, range: 'bytes=100-199')
|
104
|
+
allow(Net::HTTP).to receive(:start).and_yield(Net::HTTP).and_return(response)
|
105
|
+
allow(Net::HTTP).to receive(:request_get).and_return(response)
|
76
106
|
|
107
|
+
expect(Net::HTTP).to receive(:request_get).with(
|
108
|
+
an_object_satisfying { |uri| uri.to_s == url },
|
109
|
+
a_hash_including('range' => 'bytes=100-199')
|
110
|
+
)
|
111
|
+
|
112
|
+
rio = described_class.new(url)
|
77
113
|
rio.seek(100)
|
114
|
+
|
78
115
|
expect(rio.read(100)).to be_nil
|
79
116
|
end
|
80
117
|
|
81
118
|
it 'does not overwrite size when the range cannot be satisfied and the response is 416' do
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
allow(
|
89
|
-
|
90
|
-
|
119
|
+
url = 'https://images.invalid/img.jpg'
|
120
|
+
response_1 = Net::HTTPPartialContent.new('2', '206', 'Partial Content')
|
121
|
+
response_1['Content-Range'] = 'bytes 0-0/13'
|
122
|
+
allow(response_1).to receive(:body).and_return('Response body')
|
123
|
+
response_2 = Net::HTTPRangeNotSatisfiable.new('2', '416', 'Range Not Satisfiable')
|
124
|
+
|
125
|
+
allow(Net::HTTP).to receive(:start).and_yield(Net::HTTP).and_return(response_1, response_2)
|
126
|
+
allow(Net::HTTP).to receive(:request_get).and_return(response_1, response_2)
|
127
|
+
|
128
|
+
expect(Net::HTTP).to receive(:request_get)
|
129
|
+
.with(
|
130
|
+
an_object_satisfying { |uri| uri.to_s == url },
|
131
|
+
a_hash_including('range' => 'bytes=0-0')
|
132
|
+
)
|
91
133
|
.ordered
|
92
|
-
|
93
|
-
|
94
|
-
|
134
|
+
expect(Net::HTTP).to receive(:request_get)
|
135
|
+
.with(
|
136
|
+
an_object_satisfying { |uri| uri.to_s == url },
|
137
|
+
a_hash_including('range' => 'bytes=100-199')
|
138
|
+
)
|
95
139
|
.ordered
|
96
|
-
.and_return(fake_resp2)
|
97
140
|
|
141
|
+
rio = described_class.new(url)
|
98
142
|
rio.read(1)
|
99
143
|
|
100
144
|
expect(rio.size).to eq(13)
|
101
145
|
|
102
146
|
rio.seek(100)
|
103
|
-
expect(rio.read(100)).to be_nil
|
104
147
|
|
148
|
+
expect(rio.read(100)).to be_nil
|
105
149
|
expect(rio.size).to eq(13)
|
106
150
|
end
|
107
151
|
|
108
152
|
it 'raises a specific error for all 5xx responses' do
|
109
|
-
|
153
|
+
url = 'https://images.invalid/img.jpg'
|
154
|
+
response = Net::HTTPBadGateway.new('2', '502', 'Bad Gateway')
|
155
|
+
|
156
|
+
allow(Net::HTTP).to receive(:start).and_yield(Net::HTTP).and_return(response)
|
157
|
+
allow(Net::HTTP).to receive(:request_get).and_return(response)
|
110
158
|
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
159
|
+
expect(Net::HTTP).to receive(:request_get).with(
|
160
|
+
an_object_satisfying { |uri| uri.to_s == url },
|
161
|
+
a_hash_including('range' => 'bytes=100-199')
|
162
|
+
)
|
115
163
|
|
164
|
+
rio = described_class.new(url)
|
116
165
|
rio.seek(100)
|
166
|
+
|
117
167
|
expect { rio.read(100) }.to raise_error(/replied with a 502 and we might want to retry/)
|
118
168
|
end
|
119
169
|
|
120
170
|
it 'maintains and exposes #pos' do
|
121
|
-
|
171
|
+
url = 'https://images.invalid/img.jpg'
|
172
|
+
response = Net::HTTPPartialContent.new('2', '206', 'Partial Content')
|
173
|
+
response['Content-Range'] = 'bytes 0-0/13'
|
174
|
+
allow(response).to receive(:body).and_return('a')
|
122
175
|
|
123
|
-
|
176
|
+
allow(Net::HTTP).to receive(:start).and_yield(Net::HTTP).and_return(response)
|
177
|
+
allow(Net::HTTP).to receive(:request_get).and_return(response)
|
124
178
|
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
rio.read(1)
|
179
|
+
expect(Net::HTTP).to receive(:request_get).with(
|
180
|
+
an_object_satisfying { |uri| uri.to_s == url },
|
181
|
+
a_hash_including('range' => 'bytes=0-0')
|
182
|
+
)
|
130
183
|
|
184
|
+
rio = described_class.new(url)
|
185
|
+
expect(rio.pos).to eq(0)
|
186
|
+
rio.read(1)
|
131
187
|
expect(rio.pos).to eq(1)
|
132
188
|
end
|
133
189
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: format_parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0.pre
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Noah Berman
|
@@ -9,29 +9,12 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date: 2022-
|
12
|
+
date: 2022-10-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
|
-
- !ruby/object:Gem::Dependency
|
15
|
-
name: ks
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
17
|
-
requirements:
|
18
|
-
- - "~>"
|
19
|
-
- !ruby/object:Gem::Version
|
20
|
-
version: '0.0'
|
21
|
-
type: :runtime
|
22
|
-
prerelease: false
|
23
|
-
version_requirements: !ruby/object:Gem::Requirement
|
24
|
-
requirements:
|
25
|
-
- - "~>"
|
26
|
-
- !ruby/object:Gem::Version
|
27
|
-
version: '0.0'
|
28
14
|
- !ruby/object:Gem::Dependency
|
29
15
|
name: exifr
|
30
16
|
requirement: !ruby/object:Gem::Requirement
|
31
17
|
requirements:
|
32
|
-
- - "~>"
|
33
|
-
- !ruby/object:Gem::Version
|
34
|
-
version: '1'
|
35
18
|
- - ">="
|
36
19
|
- !ruby/object:Gem::Version
|
37
20
|
version: 1.3.8
|
@@ -39,9 +22,6 @@ dependencies:
|
|
39
22
|
prerelease: false
|
40
23
|
version_requirements: !ruby/object:Gem::Requirement
|
41
24
|
requirements:
|
42
|
-
- - "~>"
|
43
|
-
- !ruby/object:Gem::Version
|
44
|
-
version: '1'
|
45
25
|
- - ">="
|
46
26
|
- !ruby/object:Gem::Version
|
47
27
|
version: 1.3.8
|
@@ -49,9 +29,6 @@ dependencies:
|
|
49
29
|
name: id3tag
|
50
30
|
requirement: !ruby/object:Gem::Requirement
|
51
31
|
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0.14'
|
55
32
|
- - ">="
|
56
33
|
- !ruby/object:Gem::Version
|
57
34
|
version: 0.14.2
|
@@ -59,126 +36,109 @@ dependencies:
|
|
59
36
|
prerelease: false
|
60
37
|
version_requirements: !ruby/object:Gem::Requirement
|
61
38
|
requirements:
|
62
|
-
- - "~>"
|
63
|
-
- !ruby/object:Gem::Version
|
64
|
-
version: '0.14'
|
65
39
|
- - ">="
|
66
40
|
- !ruby/object:Gem::Version
|
67
41
|
version: 0.14.2
|
68
42
|
- !ruby/object:Gem::Dependency
|
69
|
-
name:
|
70
|
-
requirement: !ruby/object:Gem::Requirement
|
71
|
-
requirements:
|
72
|
-
- - "~>"
|
73
|
-
- !ruby/object:Gem::Version
|
74
|
-
version: '0.13'
|
75
|
-
type: :runtime
|
76
|
-
prerelease: false
|
77
|
-
version_requirements: !ruby/object:Gem::Requirement
|
78
|
-
requirements:
|
79
|
-
- - "~>"
|
80
|
-
- !ruby/object:Gem::Version
|
81
|
-
version: '0.13'
|
82
|
-
- !ruby/object:Gem::Dependency
|
83
|
-
name: faraday_middleware
|
43
|
+
name: ks
|
84
44
|
requirement: !ruby/object:Gem::Requirement
|
85
45
|
requirements:
|
86
|
-
- - "
|
46
|
+
- - ">="
|
87
47
|
- !ruby/object:Gem::Version
|
88
|
-
version: '0
|
48
|
+
version: '0'
|
89
49
|
type: :runtime
|
90
50
|
prerelease: false
|
91
51
|
version_requirements: !ruby/object:Gem::Requirement
|
92
52
|
requirements:
|
93
|
-
- - "
|
53
|
+
- - ">="
|
94
54
|
- !ruby/object:Gem::Version
|
95
|
-
version: '0
|
55
|
+
version: '0'
|
96
56
|
- !ruby/object:Gem::Dependency
|
97
57
|
name: measurometer
|
98
58
|
requirement: !ruby/object:Gem::Requirement
|
99
59
|
requirements:
|
100
|
-
- - "
|
60
|
+
- - ">="
|
101
61
|
- !ruby/object:Gem::Version
|
102
|
-
version: '
|
62
|
+
version: '0'
|
103
63
|
type: :runtime
|
104
64
|
prerelease: false
|
105
65
|
version_requirements: !ruby/object:Gem::Requirement
|
106
66
|
requirements:
|
107
|
-
- - "
|
67
|
+
- - ">="
|
108
68
|
- !ruby/object:Gem::Version
|
109
|
-
version: '
|
69
|
+
version: '0'
|
110
70
|
- !ruby/object:Gem::Dependency
|
111
|
-
name:
|
71
|
+
name: parallel_tests
|
112
72
|
requirement: !ruby/object:Gem::Requirement
|
113
73
|
requirements:
|
114
|
-
- - "
|
74
|
+
- - ">="
|
115
75
|
- !ruby/object:Gem::Version
|
116
|
-
version: '
|
76
|
+
version: '0'
|
117
77
|
type: :development
|
118
78
|
prerelease: false
|
119
79
|
version_requirements: !ruby/object:Gem::Requirement
|
120
80
|
requirements:
|
121
|
-
- - "
|
81
|
+
- - ">="
|
122
82
|
- !ruby/object:Gem::Version
|
123
|
-
version: '
|
83
|
+
version: '0'
|
124
84
|
- !ruby/object:Gem::Dependency
|
125
85
|
name: rake
|
126
86
|
requirement: !ruby/object:Gem::Requirement
|
127
87
|
requirements:
|
128
|
-
- - "
|
88
|
+
- - ">="
|
129
89
|
- !ruby/object:Gem::Version
|
130
|
-
version: '
|
90
|
+
version: '0'
|
131
91
|
type: :development
|
132
92
|
prerelease: false
|
133
93
|
version_requirements: !ruby/object:Gem::Requirement
|
134
94
|
requirements:
|
135
|
-
- - "
|
95
|
+
- - ">="
|
136
96
|
- !ruby/object:Gem::Version
|
137
|
-
version: '
|
97
|
+
version: '0'
|
138
98
|
- !ruby/object:Gem::Dependency
|
139
|
-
name:
|
99
|
+
name: rspec
|
140
100
|
requirement: !ruby/object:Gem::Requirement
|
141
101
|
requirements:
|
142
|
-
- - "
|
102
|
+
- - ">="
|
143
103
|
- !ruby/object:Gem::Version
|
144
|
-
version: '0
|
104
|
+
version: '0'
|
145
105
|
type: :development
|
146
106
|
prerelease: false
|
147
107
|
version_requirements: !ruby/object:Gem::Requirement
|
148
108
|
requirements:
|
149
|
-
- - "
|
109
|
+
- - ">="
|
150
110
|
- !ruby/object:Gem::Version
|
151
|
-
version: '0
|
111
|
+
version: '0'
|
152
112
|
- !ruby/object:Gem::Dependency
|
153
|
-
name:
|
113
|
+
name: simplecov
|
154
114
|
requirement: !ruby/object:Gem::Requirement
|
155
115
|
requirements:
|
156
|
-
- - "
|
116
|
+
- - ">="
|
157
117
|
- !ruby/object:Gem::Version
|
158
|
-
version: '0
|
118
|
+
version: '0'
|
159
119
|
type: :development
|
160
120
|
prerelease: false
|
161
121
|
version_requirements: !ruby/object:Gem::Requirement
|
162
122
|
requirements:
|
163
|
-
- - "
|
123
|
+
- - ">="
|
164
124
|
- !ruby/object:Gem::Version
|
165
|
-
version: '0
|
125
|
+
version: '0'
|
166
126
|
- !ruby/object:Gem::Dependency
|
167
127
|
name: wetransfer_style
|
168
128
|
requirement: !ruby/object:Gem::Requirement
|
169
129
|
requirements:
|
170
130
|
- - '='
|
171
131
|
- !ruby/object:Gem::Version
|
172
|
-
version: 0.
|
132
|
+
version: 1.0.0
|
173
133
|
type: :development
|
174
134
|
prerelease: false
|
175
135
|
version_requirements: !ruby/object:Gem::Requirement
|
176
136
|
requirements:
|
177
137
|
- - '='
|
178
138
|
- !ruby/object:Gem::Version
|
179
|
-
version: 0.
|
139
|
+
version: 1.0.0
|
180
140
|
- !ruby/object:Gem::Dependency
|
181
|
-
name:
|
141
|
+
name: yard
|
182
142
|
requirement: !ruby/object:Gem::Requirement
|
183
143
|
requirements:
|
184
144
|
- - ">="
|
@@ -232,6 +192,7 @@ files:
|
|
232
192
|
- lib/parsers/aac_parser.rb
|
233
193
|
- lib/parsers/aac_parser/adts_header_info.rb
|
234
194
|
- lib/parsers/aiff_parser.rb
|
195
|
+
- lib/parsers/arw_parser.rb
|
235
196
|
- lib/parsers/bmp_parser.rb
|
236
197
|
- lib/parsers/cr2_parser.rb
|
237
198
|
- lib/parsers/dpx_parser.rb
|
@@ -262,6 +223,7 @@ files:
|
|
262
223
|
- lib/read_limiter.rb
|
263
224
|
- lib/read_limits_config.rb
|
264
225
|
- lib/remote_io.rb
|
226
|
+
- lib/string.rb
|
265
227
|
- lib/text.rb
|
266
228
|
- lib/video.rb
|
267
229
|
- spec/active_storage/blob_io_spec.rb
|
@@ -278,6 +240,7 @@ files:
|
|
278
240
|
- spec/parsers/aac_parser_spec.rb
|
279
241
|
- spec/parsers/adts_header_info_spec.rb
|
280
242
|
- spec/parsers/aiff_parser_spec.rb
|
243
|
+
- spec/parsers/arw_parser_spec.rb
|
281
244
|
- spec/parsers/bmp_parser_spec.rb
|
282
245
|
- spec/parsers/cr2_parser_spec.rb
|
283
246
|
- spec/parsers/dpx_parser_spec.rb
|
@@ -321,9 +284,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
321
284
|
version: '0'
|
322
285
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
323
286
|
requirements:
|
324
|
-
- - "
|
287
|
+
- - ">"
|
325
288
|
- !ruby/object:Gem::Version
|
326
|
-
version:
|
289
|
+
version: 1.3.1
|
327
290
|
requirements: []
|
328
291
|
rubygems_version: 3.1.6
|
329
292
|
signing_key:
|