Skip to content

Commit 80b01ec

Browse files
committed
Patch for leapsecond delayed finding/loading.
1 parent de4743d commit 80b01ec

File tree

5 files changed

+17
-12
lines changed

5 files changed

+17
-12
lines changed

curryer/kernels/attitude.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@
1616

1717
logger = logging.getLogger(__name__)
1818

19-
DEFAULT_LSK_FILE = str(spicetime.leapsecond.find_default_file())
20-
2119

2220
class AttitudeTypes(Enum):
2321
"""Attitude kernel types.
@@ -84,7 +82,7 @@ class AbstractAttitudeProperties(AbstractKernelProperties):
8482
ck_type: TypedDataDescriptor = TypedDataDescriptor(default=AttitudeTypes.LINEAR_QUAT, dtype=AttitudeTypes)
8583

8684
# Existing kernels that are required to build this one.
87-
leapsecond_kernel: str = DEFAULT_LSK_FILE
85+
leapsecond_kernel: str = None
8886
frame_kernel: str = None
8987
clock_kernel: str = None
9088
create_clock: bool = False # If true, writes to `clock_kernel`.

curryer/kernels/classes.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@
2222

2323
logger = logging.getLogger(__name__)
2424

25-
DEFAULT_LSK_FILE = str(spicetime.leapsecond.find_default_file())
26-
2725

2826
class TypedDataDescriptor:
2927
"""Data descriptor that enforces typing through casting.
@@ -68,7 +66,7 @@ class AbstractKernelProperties:
6866
input_gap_threshold: str = None
6967

7068
# Existing kernels that are required to build this one.
71-
leapsecond_kernel: str = DEFAULT_LSK_FILE
69+
leapsecond_kernel: str = None
7270

7371
# Misc.
7472
version: int = 1
@@ -80,6 +78,9 @@ def __post_init__(self):
8078
if self.SUPPORTED_INPUT_DATA_TYPES is not None and self.input_data_type not in self.SUPPORTED_INPUT_DATA_TYPES:
8179
raise ValueError(f'Invalid properties class for input type {self.input_data_type}')
8280

81+
if self.leapsecond_kernel is None:
82+
self.leapsecond_kernel = str(spicetime.leapsecond.find_default_file())
83+
8384
if self.relative_dir:
8485
self.relative_dir = Path(self.relative_dir)
8586
self._update_paths(['leapsecond_kernel'])

curryer/kernels/ephemeris.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@
1818

1919
logger = logging.getLogger(__name__)
2020

21-
DEFAULT_LSK_FILE = str(spicetime.leapsecond.find_default_file())
22-
2321

2422
class EphemerisTypes(Enum):
2523
"""Ephemeris kernel types.
@@ -88,7 +86,7 @@ class AbstractEphemerisProperties(AbstractKernelProperties):
8886
spk_type: str = None
8987

9088
# Existing kernels that are required to build this one.
91-
leapsecond_kernel: str = DEFAULT_LSK_FILE
89+
leapsecond_kernel: str = None
9290
planet_kernels: typing.List[str] = None # Optional
9391

9492
def __post_init__(self):

curryer/spicetime/leapsecond.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
"""
1313
import datetime
1414
import logging
15+
import os
1516
import re
1617
import time
1718
import warnings
@@ -30,6 +31,8 @@
3031
_LEAPSECOND_FILE_GLOB = 'naif*.tls'
3132
LEAPSECOND_BASE_URL = 'https://naif.jpl.nasa.gov/pub/naif/generic_kernels/lsk/'
3233

34+
LEAPSECOND_USER_FILE_PATH = None
35+
3336

3437
def find_default_file():
3538
"""Find the library's default leapsecond kernel file.
@@ -43,8 +46,13 @@ def find_default_file():
4346
# Locate the latest kernel file, relative to this module file.
4447
# Pylint thinks the `Path` class is really a `PurePath`.
4548
# pylint: disable=no-member
46-
path = Path(__file__).parent
47-
path = path.joinpath(_LEAPSECOND_FILE_PATH).resolve()
49+
if LEAPSECOND_USER_FILE_PATH is not None:
50+
path = Path(LEAPSECOND_USER_FILE_PATH)
51+
elif os.getenv('LEAPSECOND_FILE_ENV', None):
52+
path = Path(os.getenv('LEAPSECOND_FILE_ENV'))
53+
else:
54+
path = Path(__file__).parent
55+
path = path.joinpath(_LEAPSECOND_FILE_PATH).resolve()
4856
leapsecond_files = list(path.glob(_LEAPSECOND_FILE_GLOB))
4957
leapsecond_files.sort()
5058

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "lasp-curryer"
3-
version = "0.0.5"
3+
version = "0.0.6"
44
packages = [
55
{ include = "curryer" }
66
]

0 commit comments

Comments
 (0)