iers 0.2.0 → 0.3.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: 4132b4709810d88306f0ea6bde33b1664d1fdbfeef985e0191cba65c98c01f8a
4
- data.tar.gz: 5e3bef64e668f1320bc9c3876e571bf4bb452ea2df52cd09539303bafbf03ea0
3
+ metadata.gz: 39a64a5333955d6d28a26abc77c01371004f91b8fb8ca4b958f3ac5d415cca13
4
+ data.tar.gz: 1f219ef6f35bc93ab6263832546a3af6534a7d2a29007425cfa54b2abea6c284
5
5
  SHA512:
6
- metadata.gz: c2bd5f8b1d3a088bc9aa8d822013a9c04570cea94c6036f080eb4d34d8ad53ac0346e6547092f5ce95fe61f95df6de32006e59371894e3b77768565be15354a1
7
- data.tar.gz: 8b32049edecc0955026664f02cbf89a1af9d518050374538cbf1b1c3b08d572509b971d522a1d368490d6d07bcbd90bb807bd9fd5c4223d074431a60583244f5
6
+ metadata.gz: cd2df5b1019640ac16f44d7289a5af2721fc90bef064785921701992fd6798c96c94ce9ef9f34f69323e79baba9b4d2ab28310520045b18c7ac1332d63fc6b69
7
+ data.tar.gz: 42cc738efcb811f3f01f2de2d303d89b333a33ae394cbacc27f261cda39ab00e8e982ff2e3706eaac93b40a25a0e2522cfeb3d2dfe78c196137f7e3fbb8fd7b0
data/CHANGELOG.md CHANGED
@@ -1,5 +1,69 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.3.0 - 2026-09-06
4
+
5
+ ### Fixed
6
+
7
+ - `DeltaT.at` answers every date in 1972 again. The switch from the Espenak &
8
+ Meeus polynomial to measured data was pinned to 1972-01-01, the start of the
9
+ modern UTC era, but the bundled EOP series only starts at 1973-01-02, so the
10
+ 367 days in between belonged to neither source and raised `OutOfRangeError`.
11
+
12
+ ### Changed
13
+
14
+ - `DeltaT.at` picks its source by asking what the loaded data actually covers
15
+ rather than by calendar date. The EOP series is used wherever it reaches, the
16
+ polynomial covers the rest of 1800–1986, and only a date outside both raises.
17
+ A configured or extended series therefore moves the seam with it, and no
18
+ fixed date can drift away from the data behind it again.
19
+
20
+ Two consequences for a series that does not span the query. A date past the
21
+ end of a short series now returns a polynomial estimate if it falls before
22
+ 1986, where it used to raise; this cannot arise with the bundled data, which
23
+ ends decades beyond 1986. And a date outside both sources now raises with
24
+ a message naming the polynomial range and the series range, instead of the
25
+ EOP range alone, which read as if the caller had asked for something out of
26
+ range when the polynomial covered it.
27
+
28
+ Where the polynomial and the series meet in the bundled data they differ by
29
+ about 61 ms, well inside the polynomial's own error in that era.
30
+
31
+ - Pointing the gem at a different data file now takes effect. `finals_path`,
32
+ `leap_second_path` and `cache_dir` memoised their parse on first read and
33
+ never dropped it, so setting any of them after a lookup kept serving the
34
+ previous file until `IERS.reset!`. Each now invalidates just the data it
35
+ governs; `interpolation`, `sources` and `download_timeout` leave the parse
36
+ in place, since they do not change which file is read, and a `Configuration`
37
+ the gem is not reading through governs nothing.
38
+
39
+ - `Data.clear_cache!` drops the parse along with the files it deletes. It
40
+ removed the cached files and left their contents in memory, so the process
41
+ kept serving a deleted cache while `Data.status` already reported `:bundled`.
42
+
43
+ - `Data.update!` drops the parse for each source as soon as it downloads it.
44
+ It replaced the files on disk but left the old contents in memory, so a
45
+ process that had already read them carried on with the pre-download data.
46
+
47
+ - `OutOfRangeError` raised by `DeltaT.at` no longer carries an
48
+ `available_range`. What the gem can answer is two disjoint spans, and naming
49
+ one of them in a field called available range is the same thing that made the
50
+ old message misleading. The message names both spans; `requested_mjd` is
51
+ unchanged.
52
+
53
+ - `Data.clear_loaded!` raises `ConfigurationError` for a source it does not
54
+ recognise, rather than clearing nothing and reporting success.
55
+
56
+ - `DeltaT.at` consults the EOP series for every query, so a finals file that
57
+ fails to parse now raises `ParseError` even for a date the polynomial owns
58
+ outright, where it used to answer without reading the file. A file that
59
+ parses to no rows is a series covering nothing and still falls back to the
60
+ polynomial. A corrupt data file is worth surfacing whichever query reaches
61
+ it.
62
+
63
+ - Refreshed the bundled `finals2000A.all` and `Leap_Second.dat` snapshots from
64
+ IERS. Final values now extend through 2026-08-27 (previously 2026-06-25) and
65
+ predictions through 2027-09-04 (previously 2027-07-03).
66
+
3
67
  ## 0.2.0 - 2026-07-25
4
68
 
5
69
  ### Added
data/README.md CHANGED
@@ -167,9 +167,10 @@ entry.observed? # => true
167
167
 
168
168
  ### Delta T
169
169
 
170
- Compute Delta T (TT − UT1). From 1972 onward the value is derived from IERS
171
- data; before 1972 (back to 1800) it uses Espenak & Meeus polynomial
172
- approximations:
170
+ Compute Delta T (TT − UT1). Wherever the loaded EOP series reaches, the value is
171
+ derived from IERS data. Outside it, Espenak & Meeus polynomial approximations
172
+ cover 1800 to 1986. The bundled series starts at MJD 41684 (1973-01-02), so
173
+ earlier dates are estimated; `measured?` and `estimated?` say which you got:
173
174
 
174
175
  ```ruby
175
176
  entry = IERS::DeltaT.at(Time.utc(2020, 6, 15))
data/Rakefile CHANGED
@@ -31,7 +31,6 @@ namespace :data do
31
31
  abort "IERS data update failed"
32
32
  end
33
33
 
34
- IERS::Data.clear_loaded!
35
34
  IERS::Data.ensure_fresh!(coverage_days_ahead: 90)
36
35
  IERS::Data.leap_second_entries
37
36
 
data/data/Leap_Second.dat CHANGED
@@ -1,10 +1,10 @@
1
1
  # Value of TAI-UTC in second valid beetween the initial value until
2
2
  # the epoch given on the next line. The last line reads that NO
3
3
  # leap second was introduced since the corresponding date
4
- # Updated through IERS Bulletin 71 issued in January 2026
4
+ # Updated through IERS Bulletin 72 issued in July 2026
5
5
  #
6
6
  #
7
- # File expires on 28 December 2026
7
+ # File expires on 28 June 2027
8
8
  #
9
9
  #
10
10
  # MJD Date TAI-UTC (s)