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.
Files changed (46) hide show
  1. {one_api-3.3.0 → one_api-3.4.1/ONE_api.egg-info}/PKG-INFO +1 -1
  2. {one_api-3.3.0 → one_api-3.4.1}/ONE_api.egg-info/SOURCES.txt +3 -1
  3. {one_api-3.3.0/ONE_api.egg-info → one_api-3.4.1}/PKG-INFO +1 -1
  4. {one_api-3.3.0 → one_api-3.4.1}/one/__init__.py +1 -1
  5. {one_api-3.3.0 → one_api-3.4.1}/one/api.py +18 -13
  6. one_api-3.4.1/one/tests/fixtures/rest_responses/coreapi.json +11756 -0
  7. one_api-3.4.1/one/tests/fixtures/rest_responses/openapiv3.json +15475 -0
  8. {one_api-3.3.0 → one_api-3.4.1}/one/util.py +12 -4
  9. {one_api-3.3.0 → one_api-3.4.1}/one/webclient.py +457 -131
  10. {one_api-3.3.0 → one_api-3.4.1}/LICENSE +0 -0
  11. {one_api-3.3.0 → one_api-3.4.1}/MANIFEST.in +0 -0
  12. {one_api-3.3.0 → one_api-3.4.1}/ONE_api.egg-info/dependency_links.txt +0 -0
  13. {one_api-3.3.0 → one_api-3.4.1}/ONE_api.egg-info/requires.txt +0 -0
  14. {one_api-3.3.0 → one_api-3.4.1}/ONE_api.egg-info/top_level.txt +0 -0
  15. {one_api-3.3.0 → one_api-3.4.1}/README.md +0 -0
  16. {one_api-3.3.0 → one_api-3.4.1}/one/alf/__init__.py +0 -0
  17. {one_api-3.3.0 → one_api-3.4.1}/one/alf/cache.py +0 -0
  18. {one_api-3.3.0 → one_api-3.4.1}/one/alf/exceptions.py +0 -0
  19. {one_api-3.3.0 → one_api-3.4.1}/one/alf/io.py +0 -0
  20. {one_api-3.3.0 → one_api-3.4.1}/one/alf/path.py +0 -0
  21. {one_api-3.3.0 → one_api-3.4.1}/one/alf/spec.py +0 -0
  22. {one_api-3.3.0 → one_api-3.4.1}/one/converters.py +0 -0
  23. {one_api-3.3.0 → one_api-3.4.1}/one/params.py +0 -0
  24. {one_api-3.3.0 → one_api-3.4.1}/one/registration.py +0 -0
  25. {one_api-3.3.0 → one_api-3.4.1}/one/remote/__init__.py +0 -0
  26. {one_api-3.3.0 → one_api-3.4.1}/one/remote/aws.py +0 -0
  27. {one_api-3.3.0 → one_api-3.4.1}/one/remote/base.py +0 -0
  28. {one_api-3.3.0 → one_api-3.4.1}/one/remote/globus.py +0 -0
  29. {one_api-3.3.0 → one_api-3.4.1}/one/tests/fixtures/datasets.pqt +0 -0
  30. {one_api-3.3.0 → one_api-3.4.1}/one/tests/fixtures/params/.caches +0 -0
  31. {one_api-3.3.0 → one_api-3.4.1}/one/tests/fixtures/params/.test.alyx.internationalbrainlab.org +0 -0
  32. {one_api-3.3.0 → one_api-3.4.1}/one/tests/fixtures/rest_responses/1f187d80fd59677b395fcdb18e68e4401bfa1cc9 +0 -0
  33. {one_api-3.3.0 → one_api-3.4.1}/one/tests/fixtures/rest_responses/3f51aa2e0baa42438467906f56a457c91a221898 +0 -0
  34. {one_api-3.3.0 → one_api-3.4.1}/one/tests/fixtures/rest_responses/47893cf67c985e6361cdee009334963f49fb0746 +0 -0
  35. {one_api-3.3.0 → one_api-3.4.1}/one/tests/fixtures/rest_responses/535d0e9a1e2c1efbdeba0d673b131e00361a2edb +0 -0
  36. {one_api-3.3.0 → one_api-3.4.1}/one/tests/fixtures/rest_responses/5618bea3484a52cd893616f07903f0e49e023ba1 +0 -0
  37. {one_api-3.3.0 → one_api-3.4.1}/one/tests/fixtures/rest_responses/6dc96f7e9bcc6ac2e7581489b9580a6cd3f28293 +0 -0
  38. {one_api-3.3.0 → one_api-3.4.1}/one/tests/fixtures/rest_responses/db1731fb8df0208944ae85f76718430813a8bf50 +0 -0
  39. {one_api-3.3.0 → one_api-3.4.1}/one/tests/fixtures/rest_responses/dcce48259bb929661f60a02a48563f70aa6185b3 +0 -0
  40. {one_api-3.3.0 → one_api-3.4.1}/one/tests/fixtures/rest_responses/f530d6022f61cdc9e38cc66beb3cb71f3003c9a1 +0 -0
  41. {one_api-3.3.0 → one_api-3.4.1}/one/tests/fixtures/sessions.pqt +0 -0
  42. {one_api-3.3.0 → one_api-3.4.1}/one/tests/fixtures/test_dbs.json +0 -0
  43. {one_api-3.3.0 → one_api-3.4.1}/one/tests/fixtures/test_img.png +0 -0
  44. {one_api-3.3.0 → one_api-3.4.1}/pyproject.toml +0 -0
  45. {one_api-3.3.0 → one_api-3.4.1}/requirements.txt +0 -0
  46. {one_api-3.3.0 → one_api-3.4.1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ONE-api
3
- Version: 3.3.0
3
+ Version: 3.4.1
4
4
  Summary: Open Neurophysiology Environment
5
5
  Author: IBL Staff
6
6
  License: MIT
@@ -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,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ONE-api
3
- Version: 3.3.0
3
+ Version: 3.4.1
4
4
  Summary: Open Neurophysiology Environment
5
5
  Author: IBL Staff
6
6
  License: MIT
@@ -1,2 +1,2 @@
1
1
  """The Open Neurophysiology Environment (ONE) API."""
2
- __version__ = '3.3.0'
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[endpoint]['list']['fields']
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: