aemo 0.3.5 → 0.3.6

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: 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