ONE-api 3.3.0__tar.gz → 3.4.1__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.
- {one_api-3.3.0 → one_api-3.4.1/ONE_api.egg-info}/PKG-INFO +1 -1
- {one_api-3.3.0 → one_api-3.4.1}/ONE_api.egg-info/SOURCES.txt +3 -1
- {one_api-3.3.0/ONE_api.egg-info → one_api-3.4.1}/PKG-INFO +1 -1
- {one_api-3.3.0 → one_api-3.4.1}/one/__init__.py +1 -1
- {one_api-3.3.0 → one_api-3.4.1}/one/api.py +18 -13
- one_api-3.4.1/one/tests/fixtures/rest_responses/coreapi.json +11756 -0
- one_api-3.4.1/one/tests/fixtures/rest_responses/openapiv3.json +15475 -0
- {one_api-3.3.0 → one_api-3.4.1}/one/util.py +12 -4
- {one_api-3.3.0 → one_api-3.4.1}/one/webclient.py +457 -131
- {one_api-3.3.0 → one_api-3.4.1}/LICENSE +0 -0
- {one_api-3.3.0 → one_api-3.4.1}/MANIFEST.in +0 -0
- {one_api-3.3.0 → one_api-3.4.1}/ONE_api.egg-info/dependency_links.txt +0 -0
- {one_api-3.3.0 → one_api-3.4.1}/ONE_api.egg-info/requires.txt +0 -0
- {one_api-3.3.0 → one_api-3.4.1}/ONE_api.egg-info/top_level.txt +0 -0
- {one_api-3.3.0 → one_api-3.4.1}/README.md +0 -0
- {one_api-3.3.0 → one_api-3.4.1}/one/alf/__init__.py +0 -0
- {one_api-3.3.0 → one_api-3.4.1}/one/alf/cache.py +0 -0
- {one_api-3.3.0 → one_api-3.4.1}/one/alf/exceptions.py +0 -0
- {one_api-3.3.0 → one_api-3.4.1}/one/alf/io.py +0 -0
- {one_api-3.3.0 → one_api-3.4.1}/one/alf/path.py +0 -0
- {one_api-3.3.0 → one_api-3.4.1}/one/alf/spec.py +0 -0
- {one_api-3.3.0 → one_api-3.4.1}/one/converters.py +0 -0
- {one_api-3.3.0 → one_api-3.4.1}/one/params.py +0 -0
- {one_api-3.3.0 → one_api-3.4.1}/one/registration.py +0 -0
- {one_api-3.3.0 → one_api-3.4.1}/one/remote/__init__.py +0 -0
- {one_api-3.3.0 → one_api-3.4.1}/one/remote/aws.py +0 -0
- {one_api-3.3.0 → one_api-3.4.1}/one/remote/base.py +0 -0
- {one_api-3.3.0 → one_api-3.4.1}/one/remote/globus.py +0 -0
- {one_api-3.3.0 → one_api-3.4.1}/one/tests/fixtures/datasets.pqt +0 -0
- {one_api-3.3.0 → one_api-3.4.1}/one/tests/fixtures/params/.caches +0 -0
- {one_api-3.3.0 → one_api-3.4.1}/one/tests/fixtures/params/.test.alyx.internationalbrainlab.org +0 -0
- {one_api-3.3.0 → one_api-3.4.1}/one/tests/fixtures/rest_responses/1f187d80fd59677b395fcdb18e68e4401bfa1cc9 +0 -0
- {one_api-3.3.0 → one_api-3.4.1}/one/tests/fixtures/rest_responses/3f51aa2e0baa42438467906f56a457c91a221898 +0 -0
- {one_api-3.3.0 → one_api-3.4.1}/one/tests/fixtures/rest_responses/47893cf67c985e6361cdee009334963f49fb0746 +0 -0
- {one_api-3.3.0 → one_api-3.4.1}/one/tests/fixtures/rest_responses/535d0e9a1e2c1efbdeba0d673b131e00361a2edb +0 -0
- {one_api-3.3.0 → one_api-3.4.1}/one/tests/fixtures/rest_responses/5618bea3484a52cd893616f07903f0e49e023ba1 +0 -0
- {one_api-3.3.0 → one_api-3.4.1}/one/tests/fixtures/rest_responses/6dc96f7e9bcc6ac2e7581489b9580a6cd3f28293 +0 -0
- {one_api-3.3.0 → one_api-3.4.1}/one/tests/fixtures/rest_responses/db1731fb8df0208944ae85f76718430813a8bf50 +0 -0
- {one_api-3.3.0 → one_api-3.4.1}/one/tests/fixtures/rest_responses/dcce48259bb929661f60a02a48563f70aa6185b3 +0 -0
- {one_api-3.3.0 → one_api-3.4.1}/one/tests/fixtures/rest_responses/f530d6022f61cdc9e38cc66beb3cb71f3003c9a1 +0 -0
- {one_api-3.3.0 → one_api-3.4.1}/one/tests/fixtures/sessions.pqt +0 -0
- {one_api-3.3.0 → one_api-3.4.1}/one/tests/fixtures/test_dbs.json +0 -0
- {one_api-3.3.0 → one_api-3.4.1}/one/tests/fixtures/test_img.png +0 -0
- {one_api-3.3.0 → one_api-3.4.1}/pyproject.toml +0 -0
- {one_api-3.3.0 → one_api-3.4.1}/requirements.txt +0 -0
- {one_api-3.3.0 → one_api-3.4.1}/setup.cfg +0 -0
|
@@ -37,6 +37,8 @@ one/tests/fixtures/rest_responses/47893cf67c985e6361cdee009334963f49fb0746
|
|
|
37
37
|
one/tests/fixtures/rest_responses/535d0e9a1e2c1efbdeba0d673b131e00361a2edb
|
|
38
38
|
one/tests/fixtures/rest_responses/5618bea3484a52cd893616f07903f0e49e023ba1
|
|
39
39
|
one/tests/fixtures/rest_responses/6dc96f7e9bcc6ac2e7581489b9580a6cd3f28293
|
|
40
|
+
one/tests/fixtures/rest_responses/coreapi.json
|
|
40
41
|
one/tests/fixtures/rest_responses/db1731fb8df0208944ae85f76718430813a8bf50
|
|
41
42
|
one/tests/fixtures/rest_responses/dcce48259bb929661f60a02a48563f70aa6185b3
|
|
42
|
-
one/tests/fixtures/rest_responses/f530d6022f61cdc9e38cc66beb3cb71f3003c9a1
|
|
43
|
+
one/tests/fixtures/rest_responses/f530d6022f61cdc9e38cc66beb3cb71f3003c9a1
|
|
44
|
+
one/tests/fixtures/rest_responses/openapiv3.json
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"""The Open Neurophysiology Environment (ONE) API."""
|
|
2
|
-
__version__ = '3.
|
|
2
|
+
__version__ = '3.4.1'
|
|
@@ -42,6 +42,8 @@ _logger = logging.getLogger(__name__)
|
|
|
42
42
|
__all__ = ['ONE', 'One', 'OneAlyx']
|
|
43
43
|
SAVE_ON_DELETE = (os.environ.get('ONE_SAVE_ON_DELETE') or '0').casefold() in ('true', '1')
|
|
44
44
|
"""bool: Whether to save modified cache tables on delete."""
|
|
45
|
+
REVISION_LAST_BEFORE = os.environ.get('ONE_REVISION_LAST_BEFORE')
|
|
46
|
+
"""str: If set, the revision string to use when loading data before a given date."""
|
|
45
47
|
|
|
46
48
|
_logger.debug('ONE_SAVE_ON_DELETE: %s', SAVE_ON_DELETE)
|
|
47
49
|
|
|
@@ -1002,7 +1004,7 @@ class One(ConversionMixin):
|
|
|
1002
1004
|
The dataset revision (typically an ISO date). If no exact match, the previous
|
|
1003
1005
|
revision (ordered lexicographically) is returned. If None, the default revision is
|
|
1004
1006
|
returned (usually the most recent revision). Regular expressions/wildcards not
|
|
1005
|
-
permitted.
|
|
1007
|
+
permitted. May be set with `ONE_REVISION_LAST_BEFORE` environment variable.
|
|
1006
1008
|
query_type : str
|
|
1007
1009
|
Query cache ('local') or Alyx database ('remote').
|
|
1008
1010
|
download_only : bool
|
|
@@ -1042,6 +1044,7 @@ class One(ConversionMixin):
|
|
|
1042
1044
|
raise alferr.ALFObjectNotFound(obj)
|
|
1043
1045
|
|
|
1044
1046
|
dataset = {'object': obj, **kwargs}
|
|
1047
|
+
revision = revision or REVISION_LAST_BEFORE # Use env var if set
|
|
1045
1048
|
datasets = util.filter_datasets(datasets, dataset, collection, revision,
|
|
1046
1049
|
assert_unique=False, wildcards=self.wildcards)
|
|
1047
1050
|
|
|
@@ -1095,7 +1098,7 @@ class One(ConversionMixin):
|
|
|
1095
1098
|
The dataset revision (typically an ISO date). If no exact match, the previous
|
|
1096
1099
|
revision (ordered lexicographically) is returned. If None, the default revision is
|
|
1097
1100
|
returned (usually the most recent revision). Regular expressions/wildcards not
|
|
1098
|
-
permitted.
|
|
1101
|
+
permitted. May be set with `ONE_REVISION_LAST_BEFORE` environment variable.
|
|
1099
1102
|
query_type : str
|
|
1100
1103
|
Query cache ('local') or Alyx database ('remote')
|
|
1101
1104
|
download_only : bool
|
|
@@ -1151,6 +1154,7 @@ class One(ConversionMixin):
|
|
|
1151
1154
|
dataset += '.*'
|
|
1152
1155
|
_logger.debug('Appending extension wildcard: ' + dataset)
|
|
1153
1156
|
|
|
1157
|
+
revision = revision or REVISION_LAST_BEFORE # Use env var if set
|
|
1154
1158
|
assert_unique = ('/' if isinstance(dataset, str) else 'collection') not in dataset
|
|
1155
1159
|
# Check if wildcard was used (this is not an exhaustive check)
|
|
1156
1160
|
if not assert_unique and isinstance(dataset, str) and '*' in dataset:
|
|
@@ -1205,7 +1209,7 @@ class One(ConversionMixin):
|
|
|
1205
1209
|
The dataset revision (typically an ISO date). If no exact match, the previous
|
|
1206
1210
|
revision (ordered lexicographically) is returned. If None, the default revision is
|
|
1207
1211
|
returned (usually the most recent revision). Regular expressions/wildcards not
|
|
1208
|
-
permitted.
|
|
1212
|
+
permitted. May be set with `ONE_REVISION_LAST_BEFORE` environment variable.
|
|
1209
1213
|
query_type : str
|
|
1210
1214
|
Query cache ('local') or Alyx database ('remote')
|
|
1211
1215
|
assert_present : bool
|
|
@@ -1282,9 +1286,11 @@ class One(ConversionMixin):
|
|
|
1282
1286
|
# Check if rel paths have been used (e.g. the output of list_datasets)
|
|
1283
1287
|
is_frame = isinstance(datasets, pd.DataFrame)
|
|
1284
1288
|
if is_rel_paths := (is_frame or any('/' in x for x in datasets)):
|
|
1285
|
-
if not (collections, revisions) == (None, None):
|
|
1289
|
+
if not (collections, revisions) == (None, None) or REVISION_LAST_BEFORE:
|
|
1286
1290
|
raise ValueError(
|
|
1287
|
-
'collection and revision kwargs must be None when dataset is a relative path'
|
|
1291
|
+
'collection and revision kwargs must be None when dataset is a relative path '
|
|
1292
|
+
'(ONE_REVISION_LAST_BEFORE env var must also be unset)'
|
|
1293
|
+
)
|
|
1288
1294
|
if is_frame:
|
|
1289
1295
|
if 'eid' in datasets.index.names:
|
|
1290
1296
|
assert set(datasets.index.get_level_values('eid')) == {eid}
|
|
@@ -1323,6 +1329,7 @@ class One(ConversionMixin):
|
|
|
1323
1329
|
]
|
|
1324
1330
|
|
|
1325
1331
|
# Check input args
|
|
1332
|
+
revisions = revisions or REVISION_LAST_BEFORE
|
|
1326
1333
|
collections, revisions = _verify_specifiers([collections, revisions])
|
|
1327
1334
|
|
|
1328
1335
|
# If collections provided in datasets list, e.g. [collection/x.y.z], do not assert unique
|
|
@@ -1457,7 +1464,7 @@ class One(ConversionMixin):
|
|
|
1457
1464
|
The dataset revision (typically an ISO date). If no exact match, the previous
|
|
1458
1465
|
revision (ordered lexicographically) is returned. If None, the default revision is
|
|
1459
1466
|
returned (usually the most recent revision). Regular expressions/wildcards not
|
|
1460
|
-
permitted.
|
|
1467
|
+
permitted. May be set with `ONE_REVISION_LAST_BEFORE` environment variable.
|
|
1461
1468
|
query_type : str
|
|
1462
1469
|
Query cache ('local') or Alyx database ('remote')
|
|
1463
1470
|
download_only : bool
|
|
@@ -1496,6 +1503,7 @@ class One(ConversionMixin):
|
|
|
1496
1503
|
raise alferr.ALFError(f'{collection} not found for session {eid}')
|
|
1497
1504
|
|
|
1498
1505
|
dataset = {'object': object, **kwargs}
|
|
1506
|
+
revision = revision or REVISION_LAST_BEFORE # use env var if set
|
|
1499
1507
|
datasets = util.filter_datasets(datasets, dataset, revision,
|
|
1500
1508
|
assert_unique=False, wildcards=self.wildcards)
|
|
1501
1509
|
|
|
@@ -1816,7 +1824,7 @@ class OneAlyx(One):
|
|
|
1816
1824
|
|
|
1817
1825
|
endpoint = endpoint or self._search_endpoint
|
|
1818
1826
|
# Return search terms from REST schema
|
|
1819
|
-
fields = self.alyx.rest_schemes
|
|
1827
|
+
fields = self.alyx.rest_schemes.fields(endpoint, action='list')
|
|
1820
1828
|
excl = ('lab',) # 'laboratory' already in search terms
|
|
1821
1829
|
if endpoint != 'sessions':
|
|
1822
1830
|
return tuple(x['name'] for x in fields)
|
|
@@ -1982,6 +1990,9 @@ class OneAlyx(One):
|
|
|
1982
1990
|
|
|
1983
1991
|
>>> trials = one.load_aggregate('subjects', 'SP026', '_ibl_subjectTraining.table')
|
|
1984
1992
|
|
|
1993
|
+
Notes
|
|
1994
|
+
-----
|
|
1995
|
+
Unlike other loading functions, this function loads datasets with a matching revision.
|
|
1985
1996
|
"""
|
|
1986
1997
|
# If only two parts and wildcards are on, append ext wildcard
|
|
1987
1998
|
if self.wildcards and isinstance(dataset, str) and len(dataset.split('.')) == 2:
|
|
@@ -2361,12 +2372,6 @@ class OneAlyx(One):
|
|
|
2361
2372
|
# check that the input matches one of the defined filters
|
|
2362
2373
|
if field == 'date_range':
|
|
2363
2374
|
params[field] = [x.date().isoformat() for x in util.validate_date_range(value)]
|
|
2364
|
-
elif field == 'dataset':
|
|
2365
|
-
if not isinstance(value, str):
|
|
2366
|
-
raise TypeError(
|
|
2367
|
-
'"dataset" parameter must be a string. For lists use "datasets"')
|
|
2368
|
-
query = f'data_dataset_session_related__name__icontains,{value}'
|
|
2369
|
-
params['django'] += (',' if params['django'] else '') + query
|
|
2370
2375
|
elif field == 'laboratory':
|
|
2371
2376
|
params['lab'] = value
|
|
2372
2377
|
else:
|