aemo 0.3.3 → 0.4.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
- SHA1:
3
- metadata.gz: 41352e3abb0a92f4fab6978f7eec851f0b971a75
4
- data.tar.gz: 7ae346ad79a2813b3118b6abea86afa99dd83a45
2
+ SHA256:
3
+ metadata.gz: 93f9ebcff16cc36bbeff5a122eba112212b9b9a223025fc3bb82c1902dd36ffe
4
+ data.tar.gz: 067ddbe65233219d74da877fd464702ff1f3e08f4711b4170053624eda88a965
5
5
  SHA512:
6
- metadata.gz: bde1b5d502ddd6cc60be33e739b6085bf0857e9ed23320f8547b75c1e5a2153c27198cfa6ec36a651b45092c6d54648760d43f696fa2fccc1f34dd7b0fa6d5d9
7
- data.tar.gz: 95b7dc98cc9226cb581cfa95f3fe684a72fd402932a8825148a698151e3670f65aca05f9ddc0bccfaa7575b7a83dd1675f063c2529cfac86056c3cc6c5825541
6
+ metadata.gz: a45ff50caf542a750b1fafc09d7faf53a6195386c03aedcf181b210d9a379486748a84bfbed898229fabbd7f119580d8ab4e877c9ab9457d4924ddf83c5f2216
7
+ data.tar.gz: 2f62970b1bd326cf82c1293258de028dc402be413538fed97f0f89bddf4518fbe3a65452ba0cfed92c39f576916da1c8d743befb65706dffa51a986af45658b8
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
@@ -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.3'
27
+ VERSION = '0.4.0'
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.3
4
+ version: 0.4.0
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-05-16 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
@@ -99,20 +99,54 @@ dependencies:
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
+ - - ">="
114
+ - !ruby/object:Gem::Version
115
+ version: 1.10.4
116
+ - !ruby/object:Gem::Dependency
117
+ name: rexml
118
+ requirement: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
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:
134
+ - - "~>"
135
+ - !ruby/object:Gem::Version
136
+ version: '2.8'
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ version: 2.8.0
140
+ type: :development
141
+ prerelease: false
142
+ version_requirements: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - "~>"
145
+ - !ruby/object:Gem::Version
146
+ version: '2.8'
113
147
  - - ">="
114
148
  - !ruby/object:Gem::Version
115
- version: 1.8.5
149
+ version: 2.8.0
116
150
  - !ruby/object:Gem::Dependency
117
151
  name: awesome_print
118
152
  requirement: !ruby/object:Gem::Requirement
@@ -194,45 +228,45 @@ dependencies:
194
228
  - !ruby/object:Gem::Version
195
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
@@ -259,7 +293,7 @@ dependencies:
259
293
  requirements:
260
294
  - - "~>"
261
295
  - !ruby/object:Gem::Version
262
- version: '5.1'
296
+ version: '6.3'
263
297
  - - ">="
264
298
  - !ruby/object:Gem::Version
265
299
  version: 5.1.0
@@ -269,7 +303,7 @@ dependencies:
269
303
  requirements:
270
304
  - - "~>"
271
305
  - !ruby/object:Gem::Version
272
- version: '5.1'
306
+ version: '6.3'
273
307
  - - ">="
274
308
  - !ruby/object:Gem::Version
275
309
  version: 5.1.0
@@ -396,9 +430,9 @@ dependencies:
396
430
  description: Gem providing functionality for the Australian Energy Market Operator
397
431
  data. Supports NMIs, NEM12, MSATS Web Services and more
398
432
  email:
399
- - jcourtney@cozero.com.au
400
- - sauld@cozero.com.au
401
- - nparikh@cozero.com.au
433
+ - joel@aceteknologi.com
434
+ - stuart@aceteknologi.com
435
+ - neilparikh107@gmail.com
402
436
  - onsabimana@cozero.com.au
403
437
  executables: []
404
438
  extensions: []
@@ -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,16 +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
- rubyforge_project:
575
- rubygems_version: 2.5.2
576
- signing_key:
608
+ rubygems_version: 3.2.22
609
+ signing_key:
577
610
  specification_version: 4
578
611
  summary: Gem providing functionality for the Australian Energy Market Operator data
579
612
  test_files: