aemo 0.3.4 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1443b588f5e1788990cd664a451296af4a5386c4851b894ae7de29e62b677d37
4
- data.tar.gz: c9638e4a8581a27b8797f44b42911b2543c36f7c70d32af809602baf43405e61
3
+ metadata.gz: 98c8087e9430d757f5f0326a10ce9a6f9b2eb8fb6b413335499289a02e70022a
4
+ data.tar.gz: 1a80168bf15d0046e74c055714a9b49d6b141ee24eeb35a7254d44ef5f6007ab
5
5
  SHA512:
6
- metadata.gz: 744c0200a98d66165f8b9d86808fd424a7c5bcf9e7ef0ccf9f6ed147ab5d7827d9c90eda79c6c2f8203413ce3b4bcf86de108691d31fc276857439014f0a48d2
7
- data.tar.gz: 6c23a44d9eb7231f14657b5dbb58d60a3da42b079901cedcd5554dd8014411c1bbdadb747bd4848963408707a5d35f827b0e5229032f78c7f633e15230f39fbf
6
+ metadata.gz: d5a42692ef180b3ae84da2cbc61e81d7c2b74b35bddeddf3d26491e8ea5158a352c02d7c74d1f5125c20cd4e1dd6a500e3c374d1407de4045f243d4775b34d96
7
+ data.tar.gz: cbcce7c2aa879525fc862549316ecbcf1db04dbd61d21c73fe59a20dc9d1db666a29c23e7eeef9ef5b8521265adc5956a1c428009dc458f4489a3d7dc291e9ea
data/lib/aemo/nem12.rb CHANGED
@@ -274,6 +274,8 @@ module AEMO
274
274
  attr_accessor :file_contents, :header, :nmi_data_details, :nmi
275
275
 
276
276
  # Initialize a NEM12 file
277
+ # @param [string] nmi
278
+ # @param [Hash] options
277
279
  def initialize(nmi, options = {})
278
280
  @nmi = AEMO::NMI.new(nmi) unless nmi.empty?
279
281
  @data_details = []
@@ -291,6 +293,7 @@ module AEMO
291
293
 
292
294
  # Parses the header record
293
295
  # @param [String] line A single line in string format
296
+ # @param [Hash] options
294
297
  # @return [Hash] the line parsed into a hash of information
295
298
  def self.parse_nem12_100(line, options = {})
296
299
  csv = line.parse_csv
@@ -312,6 +315,7 @@ module AEMO
312
315
 
313
316
  # Parses the NMI Data Details
314
317
  # @param [String] line A single line in string format
318
+ # @param [Hash] options
315
319
  # @return [Hash] the line parsed into a hash of information
316
320
  def parse_nem12_200(line, options = {})
317
321
  csv = line.parse_csv
@@ -338,7 +342,7 @@ module AEMO
338
342
  register_id: csv[3],
339
343
  nmi_suffix: csv[4],
340
344
  mdm_data_streaming_identifier: csv[5],
341
- meter_serial_nubmer: csv[6],
345
+ meter_serial_number: csv[6],
342
346
  uom: csv[7].upcase,
343
347
  interval_length: csv[8].to_i,
344
348
  next_scheduled_read_date: csv[9]
@@ -346,6 +350,7 @@ module AEMO
346
350
  end
347
351
 
348
352
  # @param [String] line A single line in string format
353
+ # @param [Hash] options
349
354
  # @return [Array of hashes] the line parsed into a hash of information
350
355
  def parse_nem12_300(line, options = {})
351
356
  csv = line.parse_csv
@@ -380,7 +385,7 @@ module AEMO
380
385
  if csv[intervals_offset + 3].match(/\d{14}/).nil? || csv[intervals_offset + 3] != Time.parse(csv[intervals_offset + 3].to_s).strftime('%Y%m%d%H%M%S')
381
386
  raise ArgumentError, 'UpdateDateTime is not valid'
382
387
  end
383
- if !csv[intervals_offset + 4].nil? && csv[intervals_offset + 4].match(/\d{14}/).nil? || csv[intervals_offset + 4] != Time.parse(csv[intervals_offset + 4].to_s).strftime('%Y%m%d%H%M%S')
388
+ if !csv[intervals_offset + 4].blank? && csv[intervals_offset + 4].match(/\d{14}/).nil? || !csv[intervals_offset + 4].blank? && csv[intervals_offset + 4] != Time.parse(csv[intervals_offset + 4].to_s).strftime('%Y%m%d%H%M%S')
384
389
  raise ArgumentError, 'MSATSLoadDateTime is not valid'
385
390
  end
386
391
  end
@@ -397,7 +402,23 @@ module AEMO
397
402
  flag[:reason_code] = csv[intervals_offset + 1].to_i unless csv[intervals_offset + 1].nil?
398
403
  end
399
404
 
400
- base_interval = { data_details: @data_details.last, datetime: Time.parse("#{csv[1]}000000+1000"), value: nil, flag: flag }
405
+ # Deal with updated_at & msats_load_at
406
+ updated_at = nil
407
+ msats_load_at = nil
408
+
409
+ if options[:strict]
410
+ updated_at = Time.parse(csv[intervals_offset + 3]) unless csv[intervals_offset + 3].blank?
411
+ msats_load_at = Time.parse(csv[intervals_offset + 4]) unless csv[intervals_offset + 4].blank?
412
+ end
413
+
414
+ base_interval = {
415
+ data_details: @data_details.last,
416
+ datetime: Time.parse("#{csv[1]}000000+1000"),
417
+ value: nil,
418
+ flag: flag,
419
+ updated_at: updated_at,
420
+ msats_load_at: msats_load_at
421
+ }
401
422
 
402
423
  intervals = []
403
424
  (2..(number_of_intervals + 1)).each do |i|
@@ -411,8 +432,9 @@ module AEMO
411
432
  end
412
433
 
413
434
  # @param [String] line A single line in string format
435
+ # @param [Hash] options
414
436
  # @return [Hash] the line parsed into a hash of information
415
- def parse_nem12_400(line)
437
+ def parse_nem12_400(line, options = {})
416
438
  csv = line.parse_csv
417
439
  raise ArgumentError, 'RecordIndicator is not 400' if csv[0] != '400'
418
440
  raise ArgumentError, 'StartInterval is not valid' if csv[1].nil? || csv[1].match(/^\d+$/).nil?
@@ -451,11 +473,17 @@ module AEMO
451
473
  interval_events
452
474
  end
453
475
 
476
+ # What even is a 500 row?
477
+ #
454
478
  # @param [String] line A single line in string format
479
+ # @param [Hash] _options
455
480
  # @return [Hash] the line parsed into a hash of information
456
481
  def parse_nem12_500(_line, _options = {}); end
457
482
 
483
+ # 900 is the last row a NEM12 should see...
484
+ #
458
485
  # @param [String] line A single line in string format
486
+ # @param [Hash] _options
459
487
  # @return [Hash] the line parsed into a hash of information
460
488
  def parse_nem12_900(_line, _options = {}); end
461
489
 
@@ -522,13 +550,13 @@ module AEMO
522
550
  nem12s << AEMO::NEM12.new('')
523
551
  nem12s.last.parse_nem12_200(line, strict: strict)
524
552
  when 300
525
- nem12s.last.parse_nem12_300(line)
553
+ nem12s.last.parse_nem12_300(line, strict: strict)
526
554
  when 400
527
- nem12s.last.parse_nem12_400(line)
555
+ nem12s.last.parse_nem12_400(line, strict: strict)
528
556
  # when 500
529
- # nem12s.last.parse_nem12_500(line)
557
+ # nem12s.last.parse_nem12_500(line, strict: strict)
530
558
  # when 900
531
- # nem12s.last.parse_nem12_900(line)
559
+ # nem12s.last.parse_nem12_900(line, strict: strict)
532
560
  end
533
561
  end
534
562
  # Return the array of NEM12 groups
@@ -440,7 +440,7 @@ module AEMO
440
440
  def initialize(title, type, opts = {})
441
441
  @title = title
442
442
  @type = parse_allocation_type(type)
443
- @identifier = opts.fetch(:identifier, title.upcase)
443
+ @identifier = opts.fetch(:participant_id, title.upcase)
444
444
  @friendly_title = opts.fetch(:friendly_title, title)
445
445
  @exclude_nmi_patterns = opts.fetch(:excludes, [])
446
446
  @include_nmi_patterns = opts.fetch(:includes, [])
data/lib/aemo/version.rb CHANGED
@@ -24,7 +24,7 @@
24
24
  # @author Joel Courtney <euphemize@gmail.com>
25
25
  module AEMO
26
26
  # aemo version
27
- VERSION = '0.3.4'
27
+ VERSION = '0.4.1'
28
28
 
29
29
  # aemo version split amongst different revisions
30
30
  MAJOR_VERSION, MINOR_VERSION, REVISION = VERSION.split('.').map(&:to_i)
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aemo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.4
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joel Courtney
8
8
  - Stuart Auld
9
9
  - Neil Parikh
10
10
  - Olivier Nsabimana
11
- autorequire:
11
+ autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2018-11-17 00:00:00.000000000 Z
14
+ date: 2020-12-11 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: activesupport
@@ -22,7 +22,7 @@ dependencies:
22
22
  version: 4.2.6
23
23
  - - "<"
24
24
  - !ruby/object:Gem::Version
25
- version: '5.2'
25
+ version: '7.1'
26
26
  type: :runtime
27
27
  prerelease: false
28
28
  version_requirements: !ruby/object:Gem::Requirement
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: 4.2.6
33
33
  - - "<"
34
34
  - !ruby/object:Gem::Version
35
- version: '5.2'
35
+ version: '7.1'
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: httparty
38
38
  requirement: !ruby/object:Gem::Requirement
@@ -77,62 +77,96 @@ dependencies:
77
77
  name: multi_xml
78
78
  requirement: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: 0.5.0
83
80
  - - "~>"
84
81
  - !ruby/object:Gem::Version
85
82
  version: '0.6'
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ version: 0.5.0
86
86
  type: :runtime
87
87
  prerelease: false
88
88
  version_requirements: !ruby/object:Gem::Requirement
89
89
  requirements:
90
- - - ">="
91
- - !ruby/object:Gem::Version
92
- version: 0.5.0
93
90
  - - "~>"
94
91
  - !ruby/object:Gem::Version
95
92
  version: '0.6'
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: 0.5.0
96
96
  - !ruby/object:Gem::Dependency
97
97
  name: nokogiri
98
98
  requirement: !ruby/object:Gem::Requirement
99
99
  requirements:
100
100
  - - "~>"
101
101
  - !ruby/object:Gem::Version
102
- version: '1.8'
102
+ version: '1.10'
103
103
  - - ">="
104
104
  - !ruby/object:Gem::Version
105
- version: 1.8.5
105
+ version: 1.10.4
106
106
  type: :runtime
107
107
  prerelease: false
108
108
  version_requirements: !ruby/object:Gem::Requirement
109
109
  requirements:
110
110
  - - "~>"
111
111
  - !ruby/object:Gem::Version
112
- version: '1.8'
112
+ version: '1.10'
113
113
  - - ">="
114
114
  - !ruby/object:Gem::Version
115
- version: 1.8.5
115
+ version: 1.10.4
116
116
  - !ruby/object:Gem::Dependency
117
- name: awesome_print
117
+ name: rexml
118
118
  requirement: !ruby/object:Gem::Requirement
119
119
  requirements:
120
120
  - - ">="
121
121
  - !ruby/object:Gem::Version
122
- version: 1.8.0
122
+ version: '0'
123
+ type: :runtime
124
+ prerelease: false
125
+ version_requirements: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - ">="
128
+ - !ruby/object:Gem::Version
129
+ version: '0'
130
+ - !ruby/object:Gem::Dependency
131
+ name: addressable
132
+ requirement: !ruby/object:Gem::Requirement
133
+ requirements:
123
134
  - - "~>"
124
135
  - !ruby/object:Gem::Version
125
- version: '1.8'
136
+ version: '2.8'
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ version: 2.8.0
126
140
  type: :development
127
141
  prerelease: false
128
142
  version_requirements: !ruby/object:Gem::Requirement
129
143
  requirements:
144
+ - - "~>"
145
+ - !ruby/object:Gem::Version
146
+ version: '2.8'
147
+ - - ">="
148
+ - !ruby/object:Gem::Version
149
+ version: 2.8.0
150
+ - !ruby/object:Gem::Dependency
151
+ name: awesome_print
152
+ requirement: !ruby/object:Gem::Requirement
153
+ requirements:
154
+ - - "~>"
155
+ - !ruby/object:Gem::Version
156
+ version: '1.8'
130
157
  - - ">="
131
158
  - !ruby/object:Gem::Version
132
159
  version: 1.8.0
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
133
164
  - - "~>"
134
165
  - !ruby/object:Gem::Version
135
166
  version: '1.8'
167
+ - - ">="
168
+ - !ruby/object:Gem::Version
169
+ version: 1.8.0
136
170
  - !ruby/object:Gem::Dependency
137
171
  name: coveralls
138
172
  requirement: !ruby/object:Gem::Requirement
@@ -177,62 +211,62 @@ dependencies:
177
211
  name: guard-yard
178
212
  requirement: !ruby/object:Gem::Requirement
179
213
  requirements:
180
- - - ">="
181
- - !ruby/object:Gem::Version
182
- version: 2.2.0
183
214
  - - "~>"
184
215
  - !ruby/object:Gem::Version
185
216
  version: '2.2'
217
+ - - ">="
218
+ - !ruby/object:Gem::Version
219
+ version: 2.2.0
186
220
  type: :development
187
221
  prerelease: false
188
222
  version_requirements: !ruby/object:Gem::Requirement
189
223
  requirements:
190
- - - ">="
191
- - !ruby/object:Gem::Version
192
- version: 2.2.0
193
224
  - - "~>"
194
225
  - !ruby/object:Gem::Version
195
226
  version: '2.2'
227
+ - - ">="
228
+ - !ruby/object:Gem::Version
229
+ version: 2.2.0
196
230
  - !ruby/object:Gem::Dependency
197
- name: jeweler
231
+ name: listen
198
232
  requirement: !ruby/object:Gem::Requirement
199
233
  requirements:
200
234
  - - "~>"
201
235
  - !ruby/object:Gem::Version
202
- version: '2.3'
236
+ version: '3.1'
203
237
  - - ">="
204
238
  - !ruby/object:Gem::Version
205
- version: 2.3.7
239
+ version: 3.5.0
206
240
  type: :development
207
241
  prerelease: false
208
242
  version_requirements: !ruby/object:Gem::Requirement
209
243
  requirements:
210
244
  - - "~>"
211
245
  - !ruby/object:Gem::Version
212
- version: '2.3'
246
+ version: '3.1'
213
247
  - - ">="
214
248
  - !ruby/object:Gem::Version
215
- version: 2.3.7
249
+ version: 3.5.0
216
250
  - !ruby/object:Gem::Dependency
217
- name: listen
251
+ name: minitest
218
252
  requirement: !ruby/object:Gem::Requirement
219
253
  requirements:
220
254
  - - "~>"
221
255
  - !ruby/object:Gem::Version
222
- version: '3.1'
223
- - - '='
256
+ version: '5.14'
257
+ - - ">="
224
258
  - !ruby/object:Gem::Version
225
- version: 3.1.5
259
+ version: 5.14.2
226
260
  type: :development
227
261
  prerelease: false
228
262
  version_requirements: !ruby/object:Gem::Requirement
229
263
  requirements:
230
264
  - - "~>"
231
265
  - !ruby/object:Gem::Version
232
- version: '3.1'
233
- - - '='
266
+ version: '5.14'
267
+ - - ">="
234
268
  - !ruby/object:Gem::Version
235
- version: 3.1.5
269
+ version: 5.14.2
236
270
  - !ruby/object:Gem::Dependency
237
271
  name: rack
238
272
  requirement: !ruby/object:Gem::Requirement
@@ -257,60 +291,60 @@ dependencies:
257
291
  name: rdoc
258
292
  requirement: !ruby/object:Gem::Requirement
259
293
  requirements:
294
+ - - "~>"
295
+ - !ruby/object:Gem::Version
296
+ version: '6.3'
260
297
  - - ">="
261
298
  - !ruby/object:Gem::Version
262
299
  version: 5.1.0
263
- - - "~>"
264
- - !ruby/object:Gem::Version
265
- version: '5.1'
266
300
  type: :development
267
301
  prerelease: false
268
302
  version_requirements: !ruby/object:Gem::Requirement
269
303
  requirements:
304
+ - - "~>"
305
+ - !ruby/object:Gem::Version
306
+ version: '6.3'
270
307
  - - ">="
271
308
  - !ruby/object:Gem::Version
272
309
  version: 5.1.0
273
- - - "~>"
274
- - !ruby/object:Gem::Version
275
- version: '5.1'
276
310
  - !ruby/object:Gem::Dependency
277
311
  name: rspec
278
312
  requirement: !ruby/object:Gem::Requirement
279
313
  requirements:
280
- - - ">="
281
- - !ruby/object:Gem::Version
282
- version: 3.7.0
283
314
  - - "~>"
284
315
  - !ruby/object:Gem::Version
285
316
  version: '3.7'
317
+ - - ">="
318
+ - !ruby/object:Gem::Version
319
+ version: 3.7.0
286
320
  type: :development
287
321
  prerelease: false
288
322
  version_requirements: !ruby/object:Gem::Requirement
289
323
  requirements:
290
- - - ">="
291
- - !ruby/object:Gem::Version
292
- version: 3.7.0
293
324
  - - "~>"
294
325
  - !ruby/object:Gem::Version
295
326
  version: '3.7'
327
+ - - ">="
328
+ - !ruby/object:Gem::Version
329
+ version: 3.7.0
296
330
  - !ruby/object:Gem::Dependency
297
331
  name: rubocop
298
332
  requirement: !ruby/object:Gem::Requirement
299
333
  requirements:
300
- - - ">="
334
+ - - "~>"
301
335
  - !ruby/object:Gem::Version
302
336
  version: 0.52.1
303
- - - "~>"
337
+ - - ">="
304
338
  - !ruby/object:Gem::Version
305
339
  version: 0.52.1
306
340
  type: :development
307
341
  prerelease: false
308
342
  version_requirements: !ruby/object:Gem::Requirement
309
343
  requirements:
310
- - - ">="
344
+ - - "~>"
311
345
  - !ruby/object:Gem::Version
312
346
  version: 0.52.1
313
- - - "~>"
347
+ - - ">="
314
348
  - !ruby/object:Gem::Version
315
349
  version: 0.52.1
316
350
  - !ruby/object:Gem::Dependency
@@ -357,22 +391,22 @@ dependencies:
357
391
  name: webmock
358
392
  requirement: !ruby/object:Gem::Requirement
359
393
  requirements:
360
- - - ">="
361
- - !ruby/object:Gem::Version
362
- version: 3.1.0
363
394
  - - "~>"
364
395
  - !ruby/object:Gem::Version
365
396
  version: '3.1'
397
+ - - ">="
398
+ - !ruby/object:Gem::Version
399
+ version: 3.1.0
366
400
  type: :development
367
401
  prerelease: false
368
402
  version_requirements: !ruby/object:Gem::Requirement
369
403
  requirements:
370
- - - ">="
371
- - !ruby/object:Gem::Version
372
- version: 3.1.0
373
404
  - - "~>"
374
405
  - !ruby/object:Gem::Version
375
406
  version: '3.1'
407
+ - - ">="
408
+ - !ruby/object:Gem::Version
409
+ version: 3.1.0
376
410
  - !ruby/object:Gem::Dependency
377
411
  name: yard
378
412
  requirement: !ruby/object:Gem::Requirement
@@ -556,7 +590,7 @@ homepage: https://github.com/jufemaiz/aemo
556
590
  licenses:
557
591
  - MIT
558
592
  metadata: {}
559
- post_install_message:
593
+ post_install_message:
560
594
  rdoc_options: []
561
595
  require_paths:
562
596
  - lib
@@ -564,15 +598,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
564
598
  requirements:
565
599
  - - ">="
566
600
  - !ruby/object:Gem::Version
567
- version: 2.3.0
601
+ version: 2.6.0
568
602
  required_rubygems_version: !ruby/object:Gem::Requirement
569
603
  requirements:
570
604
  - - ">="
571
605
  - !ruby/object:Gem::Version
572
606
  version: '0'
573
607
  requirements: []
574
- rubygems_version: 3.0.1
575
- signing_key:
608
+ rubygems_version: 3.2.23
609
+ signing_key:
576
610
  specification_version: 4
577
611
  summary: Gem providing functionality for the Australian Energy Market Operator data
578
612
  test_files: