aemo 0.3.3 → 0.4.0

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