aemo 0.3.5 → 0.3.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2e036164503970b8109a8a7a8c26ebdb3dfffb05954cb3f1226aa547d2f48978
4
- data.tar.gz: 18d839838bf0da9a9e0d117b902e027405e8d1af750742ba51cb6dcaef60b321
3
+ metadata.gz: 23bf34dda3b788053ddf01fcd40497dc7f06a8cff209d03dac214d45391d753e
4
+ data.tar.gz: 1128cc1092cfe865449d4781da7f730fb2b528898bf8e7030f38dca21ce0ce87
5
5
  SHA512:
6
- metadata.gz: 2eefd5cbddfdc6fb6eb2e65f401a17ba9b66508d704c44c7a2dabfe8dc9a7760522f9c77affff4a1a2ec9aec5904ca805fc1523b6ddb3bc1b8cbf2482c1d583f
7
- data.tar.gz: b9c1267af166577899810bb0e7eac204f0aa47aaf36767a7440a48e40e15a5df860b34741a9a8be2f787be4a2f60b1810137d6f5c4d91e834843712b7546e3f2
6
+ metadata.gz: 7ba042960c1b4ce73347433c3814c20b8a36c6eba00c1c1ae8d250b8d9bf128cf360a5ec4f62fa61fdfa97836d6117f8ca24f524e27be131737e2ff07d6b4965
7
+ data.tar.gz: ab12814656e7a026ff59a945ee08308474fe91407a7516f863ff3ae765be37de100ebcc99a1a22c4fe3351fa91e8289e1bfed549c15afbf2d111ea7f569682ea
@@ -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
@@ -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, [])
@@ -24,7 +24,7 @@
24
24
  # @author Joel Courtney <euphemize@gmail.com>
25
25
  module AEMO
26
26
  # aemo version
27
- VERSION = '0.3.5'
27
+ VERSION = '0.3.6'
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,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aemo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.5
4
+ version: 0.3.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joel Courtney
@@ -571,7 +571,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
571
571
  - !ruby/object:Gem::Version
572
572
  version: '0'
573
573
  requirements: []
574
- rubygems_version: 3.0.1
574
+ rubygems_version: 3.0.3
575
575
  signing_key:
576
576
  specification_version: 4
577
577
  summary: Gem providing functionality for the Australian Energy Market Operator data