aemo 0.1.45 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f3ceb15c442dc7315e7ade270453e3dfd07481a90c70863bcb99aa09c99e655d
4
- data.tar.gz: 45f8f2b2e20c9648460f999cdb65d8f1d21cd13c7d6e600f6151ea2a3840385e
3
+ metadata.gz: 8fab0b54e853b46255bf05a76153315da3a9304dc0908e5df7da171eb8b69ade
4
+ data.tar.gz: 4fbe172ca3ee050dcd8d01637356094d1648ce44ce04a09df31b613bc24399cf
5
5
  SHA512:
6
- metadata.gz: c31321a16878c752138e6207988c0cec6db772acb7e39eeeb819315b804e9c23b96f243ac9919f0b484320b8ef957ad57bd9bc6330a80b01679db1cc6177cbbb
7
- data.tar.gz: 053dddaad5b452b9d86789085919d27dc8c381a917b26f24ef0c3c7ea4045ee73865cad7b0e039c43e096f74989bcd87cba12e260ae356751210a53f4657d695
6
+ metadata.gz: 7f85be386b7744718b945821e56b623edafb5663901aad4fe0d31f2a4060a966d0d96de3c57b67ae7cada7ae1d9d373e089f3cc20b530add3fc7e20da2b45539
7
+ data.tar.gz: d1010f78df18bf1f4c5fe321bf25fed441df9399f67abbc2d849a25dc8456556a515d39ead27b9f5afb58c612a68fef47e09f5e135868a0dfd8989128242d824
@@ -13,7 +13,8 @@ module AEMO
13
13
  dispatch: 'Dispatch'
14
14
  }.freeze
15
15
 
16
- attr_accessor :datetime, :region, :total_demand, :rrp, :period_type
16
+ attr_accessor :region, :total_demand, :rrp, :period_type
17
+ attr_writer :datetime
17
18
 
18
19
  # Create a new instance of an Interval
19
20
  #
@@ -315,12 +315,12 @@ module AEMO
315
315
  # Parses the NMI Data Details
316
316
  # @param [String] line A single line in string format
317
317
  # @return [Hash] the line parsed into a hash of information
318
- def parse_nem12_200(line, _options = {})
318
+ def parse_nem12_200(line, options = {})
319
319
  csv = line.parse_csv
320
320
 
321
321
  raise ArgumentError, 'RecordIndicator is not 200' if csv[0] != '200'
322
322
  raise ArgumentError, 'NMI is not valid' unless AEMO::NMI.valid_nmi?(csv[1])
323
- if csv[2].nil? || csv[2].match(/.{1,240}/).nil?
323
+ if options[:strict] && (csv[2].nil? || csv[2].match(/.{1,240}/).nil?)
324
324
  raise ArgumentError, 'NMIConfiguration is not valid'
325
325
  end
326
326
  if !csv[3].nil? && csv[3].match(/.{1,10}/).nil?
@@ -514,14 +514,14 @@ module AEMO
514
514
 
515
515
  # @param [String] path_to_file the path to a file
516
516
  # @return [Array<AEMO::NEM12>] NEM12 object
517
- def self.parse_nem12_file(path_to_file, strict = false)
517
+ def self.parse_nem12_file(path_to_file, strict = true)
518
518
  parse_nem12(File.read(path_to_file), strict)
519
519
  end
520
520
 
521
521
  # @param [String] contents the path to a file
522
522
  # @param [Boolean] strict
523
523
  # @return [Array<AEMO::NEM12>] An array of NEM12 objects
524
- def self.parse_nem12(contents, strict = false)
524
+ def self.parse_nem12(contents, strict = true)
525
525
  file_contents = contents.tr("\r", "\n").tr("\n\n", "\n").split("\n").delete_if(&:empty?)
526
526
  raise ArgumentError, 'First row should be have a RecordIndicator of 100 and be of type Header Record' unless file_contents.first.parse_csv[0] == '100'
527
527
 
@@ -531,7 +531,7 @@ module AEMO
531
531
  case line[0..2].to_i
532
532
  when 200
533
533
  nem12s << AEMO::NEM12.new('')
534
- nem12s.last.parse_nem12_200(line)
534
+ nem12s.last.parse_nem12_200(line, strict: strict)
535
535
  when 300
536
536
  nem12s.last.parse_nem12_300(line)
537
537
  when 400
@@ -24,7 +24,7 @@
24
24
  # @author Joel Courtney <euphemize@gmail.com>
25
25
  module AEMO
26
26
  # aemo version
27
- VERSION = '0.1.45'
27
+ VERSION = '0.2.0'.freeze
28
28
 
29
29
  # aemo version split amongst different revisions
30
30
  MAJOR_VERSION, MINOR_VERSION, REVISION = VERSION.split('.').map(&:to_i)
@@ -0,0 +1,18 @@
1
+ 100,NEM12,200505181432,CNRGYMDP,NEMMCO
2
+ 200,NEM1201002,,E1,E1,N1,01002,KWH,30,
3
+ 300,20050315,300.000,266.100,191.550,247.800,288.600,280.800,282.450,206.100,204.750,289.500,390.600,360.150,407.700,432.600,435.000,491.850,600.900,541.950,474.600,565.350,548.550,491.850,593.250,602.400,571.350,450.150,509.400,559.950,522.000,520.950,541.200,538.050,484.800,330.900,329.250,331.650,330.750,333.750,335.250,294.150,185.250,184.800,186.450,256.800,329.700,320.100,316.500,321.150,A,,,20050316014209,
4
+ 200,NEM1201002,E1E2,E2,E2,N2,01002,KWH,30,
5
+ 300,20050315,113.100,87.600,33.750,60.600,81.900,79.500,81.150,39.750,25.650,58.800,174.300,197.100,390.600,392.550,394.200,418.500,484.950,407.700,407.700,466.500,455.700,386.850,486.900,489.450,465.150,360.000,387.450,458.700,381.900,424.800,446.250,444.450,383.550,172.650,154.050,164.400,164.250,174.450,170.100,110.100,44.550,44.250,39.900,72.300,109.050,102.450,103.950,103.050,A,,,20050316014209,
6
+ 200,NEM1201002,E1E2,E1,E1,N1,01002,KWH,30,
7
+ 300,20050316,321.900,326.400,302.700,298.650,304.500,295.350,309.750,312.300,312.000,338.100,376.950,411.900,546.450,548.250,497.850,528.450,580.800,525.000,435.600,569.400,587.400,577.050,487.350,492.150,588.450,455.550,553.650,515.400,539.700,561.600,540.300,555.600,493.800,349.500,323.700,321.300,322.200,317.550,318.450,324.450,324.600,324.600,321.900,318.750,318.600,317.850,317.100,321.300,A,,,20050317032944,
8
+ 200,NEM1201002,E1E2,E2,E2,N2,01002,KWH,30,
9
+ 300,20050316,104.850,103.500,82.950,64.800,72.300,71.400,72.900,80.100,94.500,121.050,185.100,282.900,427.800,427.950,322.800,381.450,464.400,413.400,332.250,442.950,472.800,466.350,401.550,400.200,470.700,352.800,426.300,381.300,435.450,453.750,433.200,453.000,388.350,226.050,148.050,149.550,142.650,115.650,105.750,107.100,109.350,111.450,107.100,104.250,103.050,101.850,103.200,107.550,A,,,20050317032944,
10
+ 200,NEM1201002,E1E2,E1,E1,N1,01002,KWH,30,
11
+ 300,20050317,322.350,318.000,302.400,294.450,298.650,296.400,315.150,315.600,326.550,358.200,389.700,397.200,513.150,511.200,520.650,510.300,543.450,549.900,419.850,529.200,527.850,506.100,535.050,538.050,369.600,380.850,555.150,558.600,477.900,334.500,337.200,335.250,339.150,335.550,316.200,312.750,312.600,320.250,320.250,315.750,317.250,315.600,314.700,315.300,315.000,315.750,314.400,315.900,A,,,20050318014032,
12
+ 200,NEM1201002,E1E2,E2,E2,N2,01002,KWH,30,
13
+ 300,20050317,104.100,100.800,85.800,70.500,70.950,69.450,53.250,55.650,66.600,106.800,182.100,266.550,408.900,402.150,410.700,414.450,436.200,427.800,325.350,442.200,439.200,432.150,435.300,418.800,283.500,294.000,450.450,455.400,368.400,156.000,160.500,137.550,138.000,134.400,112.350,105.600,103.350,111.750,111.150,107.550,106.500,103.950,102.300,105.750,103.800,97.500,99.750,102.000,A,,,20050318014032,
14
+ 200,NEM1201002,E1E2,E1,E1,N1,01002,KWH,30,
15
+ 300,20050318,315.150,313.800,296.550,298.500,295.200,298.950,300.750,322.950,330.450,350.700,345.750,346.950,345.900,348.600,300.150,337.500,336.750,345.900,330.450,327.150,334.800,345.750,335.850,320.100,325.500,325.200,326.400,330.600,332.700,332.250,321.000,316.500,299.850,302.400,301.050,263.850,255.450,142.050,138.300,138.300,136.800,138.300,136.050,135.750,135.750,136.650,136.050,130.800,A,,,20050319014041,
16
+ 200,NEM1201002,E1E2,E2,E2,N2,01002,KWH,30,
17
+ 300,20050318,103.050,98.850,81.150,75.600,72.150,73.950,74.550,81.150,89.250,124.200,125.700,128.700,136.800,151.050,177.900,174.450,204.000,210.150,180.150,164.400,187.950,211.950,193.800,122.850,124.800,121.200,129.300,131.250,130.950,130.050,118.050,105.750,77.100,75.900,75.000,51.150,44.400,12.300,12.750,12.150,12.450,11.550,14.400,14.550,15.000,14.700,15.750,21.900,A,,,20050319014041,
18
+ 900
@@ -48,9 +48,19 @@ describe AEMO::NEM12 do
48
48
  end
49
49
 
50
50
  describe '#parse_nem12_200' do
51
- # before(:each) do
52
- # @nem12 = AEMO::NEM12.parse_nem12_100('100,NEM12,201603010000,CNRGYMDP,NEMMCO', strict: true)
53
- # end
51
+ context 'non-strict mode' do
52
+ it 'should not raise validation warning with bad NMI configuration' do
53
+ expect(AEMO::NEM12.parse_nem12_file(fixture(File.join('NEM12-Errors', 'NEM12#DerpyNMIConfig#CNRGYMDP#NEMMCO.csv')), false))
54
+ .to be_truthy
55
+ end
56
+ end
57
+
58
+ context 'strict mode (default)' do
59
+ it 'should raise validation warning with bad NMI configuration' do
60
+ expect { AEMO::NEM12.parse_nem12_file(fixture(File.join('NEM12-Errors', 'NEM12#DerpyNMIConfig#CNRGYMDP#NEMMCO.csv'))) }
61
+ .to raise_error(ArgumentError, 'NMIConfiguration is not valid')
62
+ end
63
+ end
54
64
  end
55
65
 
56
66
  describe '#parse_nem12_300' do
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.1.45
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joel Courtney
@@ -392,6 +392,7 @@ files:
392
392
  - spec/fixtures/NEM12-Errors/NEM12#000000000000023#CNRGYMDP#NEMMCO
393
393
  - spec/fixtures/NEM12-Errors/NEM12#000000000000024#CNRGYMDP#NEMMCO
394
394
  - spec/fixtures/NEM12-Errors/NEM12#000000000000025#CNRGYMDP#NEMMCO
395
+ - spec/fixtures/NEM12-Errors/NEM12#DerpyNMIConfig#CNRGYMDP#NEMMCO.csv
395
396
  - spec/fixtures/NEM12/NEM12#000000000000001#CNRGYMDP#NEMMCO.csv
396
397
  - spec/fixtures/NEM12/NEM12#000000000000002#CNRGYMDP#NEMMCO.csv
397
398
  - spec/fixtures/NEM12/NEM12#000000000000003#CNRGYMDP#NEMMCO.csv
@@ -517,7 +518,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
517
518
  version: '0'
518
519
  requirements: []
519
520
  rubyforge_project:
520
- rubygems_version: 2.7.3
521
+ rubygems_version: 2.7.6
521
522
  signing_key:
522
523
  specification_version: 4
523
524
  summary: Gem providing functionality for the Australian Energy Market Operator data
@@ -538,6 +539,7 @@ test_files:
538
539
  - spec/fixtures/NEM12-Errors/NEM12#000000000000023#CNRGYMDP#NEMMCO
539
540
  - spec/fixtures/NEM12-Errors/NEM12#000000000000024#CNRGYMDP#NEMMCO
540
541
  - spec/fixtures/NEM12-Errors/NEM12#000000000000025#CNRGYMDP#NEMMCO
542
+ - spec/fixtures/NEM12-Errors/NEM12#DerpyNMIConfig#CNRGYMDP#NEMMCO.csv
541
543
  - spec/fixtures/NEM12/NEM12#000000000000001#CNRGYMDP#NEMMCO.csv
542
544
  - spec/fixtures/NEM12/NEM12#000000000000002#CNRGYMDP#NEMMCO.csv
543
545
  - spec/fixtures/NEM12/NEM12#000000000000003#CNRGYMDP#NEMMCO.csv