aetherfield 0.4.2__tar.gz → 0.4.4__tar.gz
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.
- {aetherfield-0.4.2/src/aetherfield.egg-info → aetherfield-0.4.4}/PKG-INFO +8 -10
- {aetherfield-0.4.2 → aetherfield-0.4.4}/README.md +7 -9
- {aetherfield-0.4.2 → aetherfield-0.4.4}/pyproject.toml +1 -1
- {aetherfield-0.4.2 → aetherfield-0.4.4}/src/aetherfield/cli.py +9 -18
- {aetherfield-0.4.2 → aetherfield-0.4.4/src/aetherfield.egg-info}/PKG-INFO +8 -10
- {aetherfield-0.4.2 → aetherfield-0.4.4}/LICENSE +0 -0
- {aetherfield-0.4.2 → aetherfield-0.4.4}/setup.cfg +0 -0
- {aetherfield-0.4.2 → aetherfield-0.4.4}/src/aetherfield/__init__.py +0 -0
- {aetherfield-0.4.2 → aetherfield-0.4.4}/src/aetherfield/core.py +0 -0
- {aetherfield-0.4.2 → aetherfield-0.4.4}/src/aetherfield/iplocal.py +0 -0
- {aetherfield-0.4.2 → aetherfield-0.4.4}/src/aetherfield.egg-info/SOURCES.txt +0 -0
- {aetherfield-0.4.2 → aetherfield-0.4.4}/src/aetherfield.egg-info/dependency_links.txt +0 -0
- {aetherfield-0.4.2 → aetherfield-0.4.4}/src/aetherfield.egg-info/entry_points.txt +0 -0
- {aetherfield-0.4.2 → aetherfield-0.4.4}/src/aetherfield.egg-info/requires.txt +0 -0
- {aetherfield-0.4.2 → aetherfield-0.4.4}/src/aetherfield.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: aetherfield
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.4
|
|
4
4
|
Summary: AetherField runtime ephemeris
|
|
5
5
|
Author: WitchMithras
|
|
6
6
|
License: Other/Proprietary License
|
|
@@ -146,11 +146,9 @@ Creates a baseline field with no calibration applied.
|
|
|
146
146
|
Calibration adjusts how positions are interpreted.
|
|
147
147
|
|
|
148
148
|
```python
|
|
149
|
-
|
|
150
|
-
c = AetherField.load_calibration("AetherField") # Hosted calibration
|
|
149
|
+
af = af.load_calibration("AetherField")
|
|
151
150
|
```
|
|
152
151
|
|
|
153
|
-
* **Local**: Your own dataset
|
|
154
152
|
* **Hosted**: Pulled from my server
|
|
155
153
|
|
|
156
154
|
---
|
|
@@ -158,7 +156,7 @@ c = AetherField.load_calibration("AetherField") # Hosted calibration
|
|
|
158
156
|
### Sign Lookup
|
|
159
157
|
|
|
160
158
|
```python
|
|
161
|
-
af.sign(dt
|
|
159
|
+
af.sign(dt, "sun")
|
|
162
160
|
```
|
|
163
161
|
|
|
164
162
|
Returns the zodiac sign for a given celestial body.
|
|
@@ -168,7 +166,7 @@ Returns the zodiac sign for a given celestial body.
|
|
|
168
166
|
### Full Alignment
|
|
169
167
|
|
|
170
168
|
```python
|
|
171
|
-
af.alignments(dt
|
|
169
|
+
af.alignments(dt)
|
|
172
170
|
```
|
|
173
171
|
|
|
174
172
|
Returns all tracked bodies in a single call.
|
|
@@ -178,7 +176,7 @@ Returns all tracked bodies in a single call.
|
|
|
178
176
|
### Longitude
|
|
179
177
|
|
|
180
178
|
```python
|
|
181
|
-
af.longitude(dt
|
|
179
|
+
af.longitude(dt, "sun")
|
|
182
180
|
```
|
|
183
181
|
|
|
184
182
|
Returns the raw longitude in degrees.
|
|
@@ -197,13 +195,13 @@ AetherField accepts multiple time formats seamlessly:
|
|
|
197
195
|
### Python `datetime`
|
|
198
196
|
|
|
199
197
|
```python
|
|
200
|
-
af.sign(
|
|
198
|
+
af.sign(datetime.now(), "sun")
|
|
201
199
|
```
|
|
202
200
|
|
|
203
201
|
### MoonTime
|
|
204
202
|
|
|
205
203
|
```python
|
|
206
|
-
af.sign(
|
|
204
|
+
af.sign(MoonTime.now(), "sun")
|
|
207
205
|
```
|
|
208
206
|
|
|
209
207
|
### Skyfield
|
|
@@ -211,7 +209,7 @@ af.sign(dt=MoonTime.now(), body="sun")
|
|
|
211
209
|
```python
|
|
212
210
|
ts = load.timescale()
|
|
213
211
|
sf = ts.from_datetime(dt)
|
|
214
|
-
af.sign(
|
|
212
|
+
af.sign(sf, "sun")
|
|
215
213
|
```
|
|
216
214
|
|
|
217
215
|
---
|
|
@@ -128,11 +128,9 @@ Creates a baseline field with no calibration applied.
|
|
|
128
128
|
Calibration adjusts how positions are interpreted.
|
|
129
129
|
|
|
130
130
|
```python
|
|
131
|
-
|
|
132
|
-
c = AetherField.load_calibration("AetherField") # Hosted calibration
|
|
131
|
+
af = af.load_calibration("AetherField")
|
|
133
132
|
```
|
|
134
133
|
|
|
135
|
-
* **Local**: Your own dataset
|
|
136
134
|
* **Hosted**: Pulled from my server
|
|
137
135
|
|
|
138
136
|
---
|
|
@@ -140,7 +138,7 @@ c = AetherField.load_calibration("AetherField") # Hosted calibration
|
|
|
140
138
|
### Sign Lookup
|
|
141
139
|
|
|
142
140
|
```python
|
|
143
|
-
af.sign(dt
|
|
141
|
+
af.sign(dt, "sun")
|
|
144
142
|
```
|
|
145
143
|
|
|
146
144
|
Returns the zodiac sign for a given celestial body.
|
|
@@ -150,7 +148,7 @@ Returns the zodiac sign for a given celestial body.
|
|
|
150
148
|
### Full Alignment
|
|
151
149
|
|
|
152
150
|
```python
|
|
153
|
-
af.alignments(dt
|
|
151
|
+
af.alignments(dt)
|
|
154
152
|
```
|
|
155
153
|
|
|
156
154
|
Returns all tracked bodies in a single call.
|
|
@@ -160,7 +158,7 @@ Returns all tracked bodies in a single call.
|
|
|
160
158
|
### Longitude
|
|
161
159
|
|
|
162
160
|
```python
|
|
163
|
-
af.longitude(dt
|
|
161
|
+
af.longitude(dt, "sun")
|
|
164
162
|
```
|
|
165
163
|
|
|
166
164
|
Returns the raw longitude in degrees.
|
|
@@ -179,13 +177,13 @@ AetherField accepts multiple time formats seamlessly:
|
|
|
179
177
|
### Python `datetime`
|
|
180
178
|
|
|
181
179
|
```python
|
|
182
|
-
af.sign(
|
|
180
|
+
af.sign(datetime.now(), "sun")
|
|
183
181
|
```
|
|
184
182
|
|
|
185
183
|
### MoonTime
|
|
186
184
|
|
|
187
185
|
```python
|
|
188
|
-
af.sign(
|
|
186
|
+
af.sign(MoonTime.now(), "sun")
|
|
189
187
|
```
|
|
190
188
|
|
|
191
189
|
### Skyfield
|
|
@@ -193,7 +191,7 @@ af.sign(dt=MoonTime.now(), body="sun")
|
|
|
193
191
|
```python
|
|
194
192
|
ts = load.timescale()
|
|
195
193
|
sf = ts.from_datetime(dt)
|
|
196
|
-
af.sign(
|
|
194
|
+
af.sign(sf, "sun")
|
|
197
195
|
```
|
|
198
196
|
|
|
199
197
|
---
|
|
@@ -225,10 +225,7 @@ class CompareResult:
|
|
|
225
225
|
body: str
|
|
226
226
|
dt: Any
|
|
227
227
|
lon: float
|
|
228
|
-
#skyfield_lon: Optional[float]
|
|
229
|
-
#delta_deg: Optional[float]
|
|
230
228
|
sign: str
|
|
231
|
-
#skyfield_sign: Optional[str]
|
|
232
229
|
|
|
233
230
|
|
|
234
231
|
def _drift_longitude(a: af.AetherField, dt: Any, body: str, anchor_mode: str = 'end') -> float:
|
|
@@ -249,7 +246,6 @@ def _drift_longitude(a: af.AetherField, dt: Any, body: str, anchor_mode: str = '
|
|
|
249
246
|
|
|
250
247
|
|
|
251
248
|
def compare_once(a: af.AetherField, body: str, dt: Any, force_aether: bool = False, fit_rates: bool = False) -> CompareResult:
|
|
252
|
-
#a = af.AetherField()
|
|
253
249
|
if fit_rates:
|
|
254
250
|
try:
|
|
255
251
|
a.fit_rates()
|
|
@@ -278,16 +274,16 @@ def main(argv=None) -> int:
|
|
|
278
274
|
p = argparse.ArgumentParser(description="Compare AetherField with Skyfield for a single timestamp.")
|
|
279
275
|
p.add_argument('--body', required=True, help='Body (sun, moon, mercury, ... pluto)')
|
|
280
276
|
p.add_argument('--dt', default=None, help='ISO8601 datetime (UTC).')
|
|
281
|
-
p.add_argument('--
|
|
277
|
+
p.add_argument('--mt', default=None, help='MoonTime string (mt:...)')
|
|
282
278
|
p.add_argument('--sf', default=None, help='Skyfield time with astronomical year numbering (ISO 8601 YYYY-MM-DD[THH[:MM[:SS]][Z|+HH:MM]] or YEAR,MONTH,DAY). Overrides --dt/--moontime.')
|
|
283
|
-
p.add_argument('--force-aether', action='store_true', help='Use AetherField-only (drift).')
|
|
284
|
-
p.add_argument('--fit-rates', action='store_true', help='Fit mean drift from in-range samples.')
|
|
285
|
-
p.add_argument('--calibrate', action='store_true', help='Ensure anchors and piecewise segments (no-ops if present).')
|
|
286
|
-
p.add_argument('--save-calibration', default=None, help='Save calibration JSON path.')
|
|
279
|
+
#p.add_argument('--force-aether', action='store_true', help='Use AetherField-only (drift).')
|
|
280
|
+
#p.add_argument('--fit-rates', action='store_true', help='Fit mean drift from in-range samples.')
|
|
281
|
+
#p.add_argument('--calibrate', action='store_true', help='Ensure anchors and piecewise segments (no-ops if present).')
|
|
282
|
+
#p.add_argument('--save-calibration', default=None, help='Save calibration JSON path.')
|
|
287
283
|
p.add_argument('--load-calibration', default=None, help='Load calibration JSON path.')
|
|
288
284
|
p.add_argument('--drift-anchor', choices=['start','end','nearest'], default='end', help='Anchor for drift only mode.')
|
|
289
|
-
p.add_argument('--piecewise', action='store_true', help='Use piecewise segments when forcing aether.')
|
|
290
|
-
p.add_argument('--piecewise-step', type=int, default=30, help='Step in days for piecewise building.')
|
|
285
|
+
#p.add_argument('--piecewise', action='store_true', help='Use piecewise segments when forcing aether.')
|
|
286
|
+
#p.add_argument('--piecewise-step', type=int, default=30, help='Step in days for piecewise building.')
|
|
291
287
|
p.add_argument('--json', action='store_true', help='Emit JSON instead of text.')
|
|
292
288
|
args = p.parse_args(argv)
|
|
293
289
|
|
|
@@ -338,17 +334,12 @@ def main(argv=None) -> int:
|
|
|
338
334
|
print(json.dumps({
|
|
339
335
|
'body': res.body,
|
|
340
336
|
'dt': format_time_label(res.dt),
|
|
341
|
-
'lon': res.
|
|
342
|
-
|
|
343
|
-
#'delta_deg': res.delta_deg,
|
|
344
|
-
'sign': res.aether_sign,
|
|
345
|
-
#'skyfield_sign': res.skyfield_sign,
|
|
337
|
+
'lon': res.lon,
|
|
338
|
+
'sign': res.sign,
|
|
346
339
|
}, indent=2))
|
|
347
340
|
else:
|
|
348
341
|
print(f"{res.body} @ {format_time_label(res.dt)}\n"
|
|
349
342
|
f" Aether: {res.lon:8.3f} deg ({res.sign})")
|
|
350
|
-
#f" Skyfield: {'n/a' if res.skyfield_lon is None else f'{res.skyfield_lon:8.3f} deg ('+str(res.skyfield_sign)+')'}\n"
|
|
351
|
-
#f" Delta: {'n/a' if res.delta_deg is None else f'{res.delta_deg:+.3f} deg'}")
|
|
352
343
|
return 0
|
|
353
344
|
|
|
354
345
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: aetherfield
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.4
|
|
4
4
|
Summary: AetherField runtime ephemeris
|
|
5
5
|
Author: WitchMithras
|
|
6
6
|
License: Other/Proprietary License
|
|
@@ -146,11 +146,9 @@ Creates a baseline field with no calibration applied.
|
|
|
146
146
|
Calibration adjusts how positions are interpreted.
|
|
147
147
|
|
|
148
148
|
```python
|
|
149
|
-
|
|
150
|
-
c = AetherField.load_calibration("AetherField") # Hosted calibration
|
|
149
|
+
af = af.load_calibration("AetherField")
|
|
151
150
|
```
|
|
152
151
|
|
|
153
|
-
* **Local**: Your own dataset
|
|
154
152
|
* **Hosted**: Pulled from my server
|
|
155
153
|
|
|
156
154
|
---
|
|
@@ -158,7 +156,7 @@ c = AetherField.load_calibration("AetherField") # Hosted calibration
|
|
|
158
156
|
### Sign Lookup
|
|
159
157
|
|
|
160
158
|
```python
|
|
161
|
-
af.sign(dt
|
|
159
|
+
af.sign(dt, "sun")
|
|
162
160
|
```
|
|
163
161
|
|
|
164
162
|
Returns the zodiac sign for a given celestial body.
|
|
@@ -168,7 +166,7 @@ Returns the zodiac sign for a given celestial body.
|
|
|
168
166
|
### Full Alignment
|
|
169
167
|
|
|
170
168
|
```python
|
|
171
|
-
af.alignments(dt
|
|
169
|
+
af.alignments(dt)
|
|
172
170
|
```
|
|
173
171
|
|
|
174
172
|
Returns all tracked bodies in a single call.
|
|
@@ -178,7 +176,7 @@ Returns all tracked bodies in a single call.
|
|
|
178
176
|
### Longitude
|
|
179
177
|
|
|
180
178
|
```python
|
|
181
|
-
af.longitude(dt
|
|
179
|
+
af.longitude(dt, "sun")
|
|
182
180
|
```
|
|
183
181
|
|
|
184
182
|
Returns the raw longitude in degrees.
|
|
@@ -197,13 +195,13 @@ AetherField accepts multiple time formats seamlessly:
|
|
|
197
195
|
### Python `datetime`
|
|
198
196
|
|
|
199
197
|
```python
|
|
200
|
-
af.sign(
|
|
198
|
+
af.sign(datetime.now(), "sun")
|
|
201
199
|
```
|
|
202
200
|
|
|
203
201
|
### MoonTime
|
|
204
202
|
|
|
205
203
|
```python
|
|
206
|
-
af.sign(
|
|
204
|
+
af.sign(MoonTime.now(), "sun")
|
|
207
205
|
```
|
|
208
206
|
|
|
209
207
|
### Skyfield
|
|
@@ -211,7 +209,7 @@ af.sign(dt=MoonTime.now(), body="sun")
|
|
|
211
209
|
```python
|
|
212
210
|
ts = load.timescale()
|
|
213
211
|
sf = ts.from_datetime(dt)
|
|
214
|
-
af.sign(
|
|
212
|
+
af.sign(sf, "sun")
|
|
215
213
|
```
|
|
216
214
|
|
|
217
215
|
---
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|