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 +5 -5
- data/lib/aemo/nem12.rb +35 -7
- data/lib/aemo/nmi/allocation.rb +1 -1
- data/lib/aemo/version.rb +1 -1
- metadata +64 -31
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 93f9ebcff16cc36bbeff5a122eba112212b9b9a223025fc3bb82c1902dd36ffe
|
|
4
|
+
data.tar.gz: 067ddbe65233219d74da877fd464702ff1f3e08f4711b4170053624eda88a965
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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].
|
|
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
|
-
|
|
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
|
data/lib/aemo/nmi/allocation.rb
CHANGED
|
@@ -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(:
|
|
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
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.
|
|
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:
|
|
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: '
|
|
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: '
|
|
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.
|
|
102
|
+
version: '1.10'
|
|
103
103
|
- - ">="
|
|
104
104
|
- !ruby/object:Gem::Version
|
|
105
|
-
version: 1.
|
|
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.
|
|
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:
|
|
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:
|
|
231
|
+
name: listen
|
|
198
232
|
requirement: !ruby/object:Gem::Requirement
|
|
199
233
|
requirements:
|
|
200
234
|
- - "~>"
|
|
201
235
|
- !ruby/object:Gem::Version
|
|
202
|
-
version: '
|
|
236
|
+
version: '3.1'
|
|
203
237
|
- - ">="
|
|
204
238
|
- !ruby/object:Gem::Version
|
|
205
|
-
version:
|
|
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: '
|
|
246
|
+
version: '3.1'
|
|
213
247
|
- - ">="
|
|
214
248
|
- !ruby/object:Gem::Version
|
|
215
|
-
version:
|
|
249
|
+
version: 3.5.0
|
|
216
250
|
- !ruby/object:Gem::Dependency
|
|
217
|
-
name:
|
|
251
|
+
name: minitest
|
|
218
252
|
requirement: !ruby/object:Gem::Requirement
|
|
219
253
|
requirements:
|
|
220
254
|
- - "~>"
|
|
221
255
|
- !ruby/object:Gem::Version
|
|
222
|
-
version: '
|
|
223
|
-
- -
|
|
256
|
+
version: '5.14'
|
|
257
|
+
- - ">="
|
|
224
258
|
- !ruby/object:Gem::Version
|
|
225
|
-
version:
|
|
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: '
|
|
233
|
-
- -
|
|
266
|
+
version: '5.14'
|
|
267
|
+
- - ">="
|
|
234
268
|
- !ruby/object:Gem::Version
|
|
235
|
-
version:
|
|
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: '
|
|
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: '
|
|
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
|
-
-
|
|
400
|
-
-
|
|
401
|
-
-
|
|
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.
|
|
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
|
-
|
|
575
|
-
|
|
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:
|