atdata 0.3.0b1__py3-none-any.whl → 0.3.1b1__py3-none-any.whl

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. atdata/__init__.py +9 -0
  2. atdata/_cid.py +0 -21
  3. atdata/_helpers.py +12 -0
  4. atdata/_hf_api.py +33 -1
  5. atdata/_protocols.py +64 -182
  6. atdata/_schema_codec.py +2 -2
  7. atdata/_stub_manager.py +5 -25
  8. atdata/atmosphere/__init__.py +12 -11
  9. atdata/atmosphere/_types.py +4 -4
  10. atdata/atmosphere/client.py +64 -12
  11. atdata/atmosphere/lens.py +11 -12
  12. atdata/atmosphere/records.py +9 -10
  13. atdata/atmosphere/schema.py +14 -16
  14. atdata/atmosphere/store.py +6 -7
  15. atdata/cli/__init__.py +16 -16
  16. atdata/cli/diagnose.py +2 -2
  17. atdata/cli/{local.py → infra.py} +10 -10
  18. atdata/dataset.py +155 -2
  19. atdata/index/__init__.py +54 -0
  20. atdata/{local → index}/_index.py +322 -64
  21. atdata/{local → index}/_schema.py +5 -5
  22. atdata/lexicons/__init__.py +121 -0
  23. atdata/lexicons/ac.foundation.dataset.arrayFormat.json +16 -0
  24. atdata/lexicons/ac.foundation.dataset.getLatestSchema.json +78 -0
  25. atdata/lexicons/ac.foundation.dataset.lens.json +99 -0
  26. atdata/lexicons/ac.foundation.dataset.record.json +96 -0
  27. atdata/lexicons/ac.foundation.dataset.schema.json +107 -0
  28. atdata/lexicons/ac.foundation.dataset.schemaType.json +16 -0
  29. atdata/lexicons/ac.foundation.dataset.storageBlobs.json +24 -0
  30. atdata/lexicons/ac.foundation.dataset.storageExternal.json +25 -0
  31. atdata/lexicons/ndarray_shim.json +16 -0
  32. atdata/local/__init__.py +12 -13
  33. atdata/local/_repo_legacy.py +3 -3
  34. atdata/promote.py +14 -10
  35. atdata/repository.py +7 -7
  36. atdata/stores/__init__.py +23 -0
  37. atdata/stores/_disk.py +123 -0
  38. atdata/testing.py +12 -8
  39. {atdata-0.3.0b1.dist-info → atdata-0.3.1b1.dist-info}/METADATA +2 -2
  40. atdata-0.3.1b1.dist-info/RECORD +67 -0
  41. atdata-0.3.0b1.dist-info/RECORD +0 -54
  42. /atdata/{local → index}/_entry.py +0 -0
  43. /atdata/{local → stores}/_s3.py +0 -0
  44. {atdata-0.3.0b1.dist-info → atdata-0.3.1b1.dist-info}/WHEEL +0 -0
  45. {atdata-0.3.0b1.dist-info → atdata-0.3.1b1.dist-info}/entry_points.txt +0 -0
  46. {atdata-0.3.0b1.dist-info → atdata-0.3.1b1.dist-info}/licenses/LICENSE +0 -0
atdata/promote.py CHANGED
@@ -6,29 +6,28 @@ federation while maintaining schema consistency.
6
6
 
7
7
  Examples:
8
8
  >>> from atdata.local import Index, Repo
9
- >>> from atdata.atmosphere import AtmosphereClient, AtmosphereIndex
9
+ >>> from atdata.atmosphere import Atmosphere
10
10
  >>> from atdata.promote import promote_to_atmosphere
11
11
  >>>
12
12
  >>> # Setup
13
13
  >>> local_index = Index()
14
- >>> client = AtmosphereClient()
15
- >>> client.login("handle.bsky.social", "app-password")
14
+ >>> atmo = Atmosphere.login("handle.bsky.social", "app-password")
16
15
  >>>
17
16
  >>> # Promote a dataset
18
17
  >>> entry = local_index.get_dataset("my-dataset")
19
- >>> at_uri = promote_to_atmosphere(entry, local_index, client)
18
+ >>> at_uri = promote_to_atmosphere(entry, local_index, atmo)
20
19
  """
21
20
 
22
21
  from typing import TYPE_CHECKING, Type
23
22
 
24
23
  if TYPE_CHECKING:
25
24
  from .local import LocalDatasetEntry, Index
26
- from .atmosphere import AtmosphereClient
25
+ from .atmosphere import Atmosphere
27
26
  from ._protocols import AbstractDataStore, Packable
28
27
 
29
28
 
30
29
  def _find_existing_schema(
31
- client: "AtmosphereClient",
30
+ client: "Atmosphere",
32
31
  name: str,
33
32
  version: str,
34
33
  ) -> str | None:
@@ -55,7 +54,7 @@ def _find_existing_schema(
55
54
  def _find_or_publish_schema(
56
55
  sample_type: "Type[Packable]",
57
56
  version: str,
58
- client: "AtmosphereClient",
57
+ client: "Atmosphere",
59
58
  description: str | None = None,
60
59
  ) -> str:
61
60
  """Find existing schema or publish a new one.
@@ -95,7 +94,7 @@ def _find_or_publish_schema(
95
94
  def promote_to_atmosphere(
96
95
  local_entry: "LocalDatasetEntry",
97
96
  local_index: "Index",
98
- atmosphere_client: "AtmosphereClient",
97
+ atmosphere_client: "Atmosphere",
99
98
  *,
100
99
  data_store: "AbstractDataStore | None" = None,
101
100
  name: str | None = None,
@@ -108,10 +107,15 @@ def promote_to_atmosphere(
108
107
  This function takes a locally-indexed dataset and publishes it to ATProto,
109
108
  making it discoverable on the federated atmosphere network.
110
109
 
110
+ .. deprecated::
111
+ Prefer ``Index.promote_entry()`` or ``Index.promote_dataset()``
112
+ which provide the same functionality through the unified Index
113
+ interface without requiring separate client and index arguments.
114
+
111
115
  Args:
112
116
  local_entry: The LocalDatasetEntry to promote.
113
117
  local_index: Local index containing the schema for this entry.
114
- atmosphere_client: Authenticated AtmosphereClient.
118
+ atmosphere_client: Authenticated Atmosphere.
115
119
  data_store: Optional data store for copying data to new location.
116
120
  If None, the existing data_urls are used as-is.
117
121
  name: Override name for the atmosphere record. Defaults to local name.
@@ -128,7 +132,7 @@ def promote_to_atmosphere(
128
132
 
129
133
  Examples:
130
134
  >>> entry = local_index.get_dataset("mnist-train")
131
- >>> uri = promote_to_atmosphere(entry, local_index, client)
135
+ >>> uri = promote_to_atmosphere(entry, local_index, atmo)
132
136
  >>> print(uri)
133
137
  at://did:plc:abc123/ac.foundation.dataset.datasetIndex/...
134
138
  """
atdata/repository.py CHANGED
@@ -5,7 +5,7 @@ optional ``AbstractDataStore`` (shard storage), forming a named storage unit
5
5
  that can be mounted into an ``Index``.
6
6
 
7
7
  The ``_AtmosphereBackend`` is an internal adapter that wraps an
8
- ``AtmosphereClient`` to present the same operational surface as a repository,
8
+ ``Atmosphere`` to present the same operational surface as a repository,
9
9
  but routes through the ATProto network instead of a local provider.
10
10
 
11
11
  Examples:
@@ -105,7 +105,7 @@ def create_repository(
105
105
 
106
106
 
107
107
  class _AtmosphereBackend:
108
- """Internal adapter wrapping AtmosphereClient for Index routing.
108
+ """Internal adapter wrapping Atmosphere for Index routing.
109
109
 
110
110
  This class extracts the operational logic from ``AtmosphereIndex`` into an
111
111
  internal component that the unified ``Index`` uses for ATProto resolution.
@@ -117,15 +117,15 @@ class _AtmosphereBackend:
117
117
 
118
118
  def __init__(
119
119
  self,
120
- client: Any, # AtmosphereClient, typed as Any to avoid hard import
120
+ client: Any, # Atmosphere, typed as Any to avoid hard import
121
121
  *,
122
122
  data_store: Optional[AbstractDataStore] = None,
123
123
  ) -> None:
124
- from .atmosphere.client import AtmosphereClient
124
+ from .atmosphere.client import Atmosphere
125
125
 
126
- if not isinstance(client, AtmosphereClient):
127
- raise TypeError(f"Expected AtmosphereClient, got {type(client).__name__}")
128
- self.client: AtmosphereClient = client
126
+ if not isinstance(client, Atmosphere):
127
+ raise TypeError(f"Expected Atmosphere, got {type(client).__name__}")
128
+ self.client: Atmosphere = client
129
129
  self._data_store = data_store
130
130
  self._schema_publisher: Any = None
131
131
  self._schema_loader: Any = None
@@ -0,0 +1,23 @@
1
+ """Data stores for atdata datasets.
2
+
3
+ Key classes:
4
+
5
+ - ``LocalDiskStore``: Local filesystem data store.
6
+ - ``S3DataStore``: S3-compatible object storage.
7
+ """
8
+
9
+ from atdata.stores._disk import LocalDiskStore
10
+ from atdata.stores._s3 import (
11
+ S3DataStore,
12
+ _s3_env,
13
+ _s3_from_credentials,
14
+ _create_s3_write_callbacks,
15
+ )
16
+
17
+ __all__ = [
18
+ "LocalDiskStore",
19
+ "S3DataStore",
20
+ "_s3_env",
21
+ "_s3_from_credentials",
22
+ "_create_s3_write_callbacks",
23
+ ]
atdata/stores/_disk.py ADDED
@@ -0,0 +1,123 @@
1
+ """Local filesystem data store for WebDataset shards.
2
+
3
+ Writes and reads WebDataset tar archives on the local filesystem,
4
+ implementing the ``AbstractDataStore`` protocol.
5
+
6
+ Examples:
7
+ >>> store = LocalDiskStore(root="~/.atdata/data")
8
+ >>> urls = store.write_shards(dataset, prefix="mnist/v1")
9
+ >>> print(urls[0])
10
+ /home/user/.atdata/data/mnist/v1/data--a1b2c3--000000.tar
11
+ """
12
+
13
+ from __future__ import annotations
14
+
15
+ from pathlib import Path
16
+ from typing import TYPE_CHECKING, Any
17
+ from uuid import uuid4
18
+
19
+ import webdataset as wds
20
+
21
+ if TYPE_CHECKING:
22
+ from atdata.dataset import Dataset
23
+
24
+
25
+ class LocalDiskStore:
26
+ """Local filesystem data store.
27
+
28
+ Writes WebDataset shards to a directory on disk. Implements the
29
+ ``AbstractDataStore`` protocol for use with ``Index``.
30
+
31
+ Args:
32
+ root: Root directory for shard storage. Defaults to
33
+ ``~/.atdata/data/``. Created automatically if it does
34
+ not exist.
35
+
36
+ Examples:
37
+ >>> store = LocalDiskStore()
38
+ >>> urls = store.write_shards(dataset, prefix="my-dataset")
39
+ """
40
+
41
+ def __init__(self, root: str | Path | None = None) -> None:
42
+ if root is None:
43
+ root = Path.home() / ".atdata" / "data"
44
+ self._root = Path(root).expanduser().resolve()
45
+ self._root.mkdir(parents=True, exist_ok=True)
46
+
47
+ @property
48
+ def root(self) -> Path:
49
+ """Root directory for shard storage."""
50
+ return self._root
51
+
52
+ def write_shards(
53
+ self,
54
+ ds: "Dataset",
55
+ *,
56
+ prefix: str,
57
+ **kwargs: Any,
58
+ ) -> list[str]:
59
+ """Write dataset shards to the local filesystem.
60
+
61
+ Args:
62
+ ds: The Dataset to write.
63
+ prefix: Path prefix within root (e.g., ``'datasets/mnist/v1'``).
64
+ **kwargs: Additional args passed to ``wds.writer.ShardWriter``
65
+ (e.g., ``maxcount``, ``maxsize``).
66
+
67
+ Returns:
68
+ List of absolute file paths for the written shards.
69
+
70
+ Raises:
71
+ RuntimeError: If no shards were written.
72
+ """
73
+ shard_dir = self._root / prefix
74
+ shard_dir.mkdir(parents=True, exist_ok=True)
75
+
76
+ new_uuid = str(uuid4())[:8]
77
+ shard_pattern = str(shard_dir / f"data--{new_uuid}--%06d.tar")
78
+
79
+ written_shards: list[str] = []
80
+
81
+ def _track_shard(path: str) -> None:
82
+ written_shards.append(str(Path(path).resolve()))
83
+
84
+ # Filter out kwargs that are specific to other stores (e.g. S3)
85
+ # and not understood by wds.writer.ShardWriter / TarWriter.
86
+ writer_kwargs = {k: v for k, v in kwargs.items() if k not in ("cache_local",)}
87
+
88
+ with wds.writer.ShardWriter(
89
+ shard_pattern,
90
+ post=_track_shard,
91
+ **writer_kwargs,
92
+ ) as sink:
93
+ for sample in ds.ordered(batch_size=None):
94
+ sink.write(sample.as_wds)
95
+
96
+ if not written_shards:
97
+ raise RuntimeError(
98
+ f"No shards written for prefix {prefix!r} in {self._root}"
99
+ )
100
+
101
+ return written_shards
102
+
103
+ def read_url(self, url: str) -> str:
104
+ """Resolve a storage URL for reading.
105
+
106
+ Local filesystem paths are returned as-is since WebDataset
107
+ can read them directly.
108
+
109
+ Args:
110
+ url: Absolute file path to a shard.
111
+
112
+ Returns:
113
+ The same path, unchanged.
114
+ """
115
+ return url
116
+
117
+ def supports_streaming(self) -> bool:
118
+ """Whether this store supports streaming reads.
119
+
120
+ Returns:
121
+ ``True`` — local filesystem supports streaming.
122
+ """
123
+ return True
atdata/testing.py CHANGED
@@ -14,7 +14,7 @@ Usage::
14
14
  samples = at_test.make_samples(MyType, n=100)
15
15
 
16
16
  # Use mock atmosphere client
17
- client = at_test.MockAtmosphereClient()
17
+ client = at_test.MockAtmosphere()
18
18
 
19
19
  # Use in-memory index (SQLite backed, temporary)
20
20
  index = at_test.mock_index(tmp_path)
@@ -40,7 +40,7 @@ import webdataset as wds
40
40
 
41
41
  import atdata
42
42
  from atdata import Dataset, PackableSample
43
- from atdata.local._index import Index
43
+ from atdata.index._index import Index
44
44
  from atdata.providers._sqlite import SqliteProvider
45
45
 
46
46
  ST = TypeVar("ST")
@@ -51,14 +51,14 @@ ST = TypeVar("ST")
51
51
  # ---------------------------------------------------------------------------
52
52
 
53
53
 
54
- class MockAtmosphereClient:
55
- """In-memory mock of ``AtmosphereClient`` for testing.
54
+ class MockAtmosphere:
55
+ """In-memory mock of ``Atmosphere`` for testing.
56
56
 
57
57
  Simulates login, schema publishing, dataset publishing, and record
58
58
  retrieval without requiring a live ATProto PDS.
59
59
 
60
60
  Examples:
61
- >>> client = MockAtmosphereClient()
61
+ >>> client = MockAtmosphere()
62
62
  >>> client.login("alice.test", "password")
63
63
  >>> client.did
64
64
  'did:plc:mock000000000000'
@@ -294,8 +294,8 @@ try:
294
294
 
295
295
  @pytest.fixture
296
296
  def mock_atmosphere():
297
- """Provide a fresh ``MockAtmosphereClient`` for each test."""
298
- client = MockAtmosphereClient()
297
+ """Provide a fresh ``MockAtmosphere`` for each test."""
298
+ client = MockAtmosphere()
299
299
  client.login("test.mock.social", "test-password")
300
300
  yield client
301
301
  client.reset()
@@ -329,8 +329,12 @@ except ImportError:
329
329
  # Public API
330
330
  # ---------------------------------------------------------------------------
331
331
 
332
+ # Deprecated alias for backward compatibility
333
+ MockAtmosphereClient = MockAtmosphere
334
+
332
335
  __all__ = [
333
- "MockAtmosphereClient",
336
+ "MockAtmosphere",
337
+ "MockAtmosphereClient", # deprecated alias
334
338
  "make_dataset",
335
339
  "make_samples",
336
340
  "mock_index",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: atdata
3
- Version: 0.3.0b1
3
+ Version: 0.3.1b1
4
4
  Summary: A loose federation of distributed, typed datasets
5
5
  Author-email: Maxine Levesque <hello@maxine.science>, "Maxine @ Forecast Bio" <maxine@forecast.bio>
6
6
  License-File: LICENSE
@@ -30,7 +30,7 @@ Description-Content-Type: text/markdown
30
30
 
31
31
  # atdata
32
32
 
33
- [![codecov](https://codecov.io/gh/foundation-ac/atdata/branch/main/graph/badge.svg)](https://codecov.io/gh/foundation-ac/atdata)
33
+ [![codecov](https://codecov.io/gh/forecast-bio/atdata/branch/main/graph/badge.svg)](https://codecov.io/gh/forecast-bio/atdata)
34
34
 
35
35
  A loose federation of distributed, typed datasets built on WebDataset.
36
36
 
@@ -0,0 +1,67 @@
1
+ atdata/.gitignore,sha256=ROcLwaiURIGOAYGFpakac_WEeKS4hH4HxJuscfDGo2s,10
2
+ atdata/__init__.py,sha256=4Md8CpLcwSlmQtogXnXl5khztgOIK_0AOkIp6CyrzgM,3392
3
+ atdata/_cid.py,sha256=9EMJw_kcNchVF6bg5Pkl6ud99Xdm_fAEAxsgf1aV8A8,3500
4
+ atdata/_exceptions.py,sha256=a2IzmTJqLyIgQ0RkW3KhaaaSDdQJGLoXzuHfEX0DfB4,5390
5
+ atdata/_helpers.py,sha256=SBGrHBDPyg2ZALhVA9xLAWGERj9G7tySBx4Sn5fLvc0,2749
6
+ atdata/_hf_api.py,sha256=yN8CvB6V64H3LMGbANGTMCToURsV3Th6pyhG9vMp79Y,25522
7
+ atdata/_logging.py,sha256=Wj9MTe9xCP_awiQYfa7219Fb443Rkwu_jIqM-m2u2GA,2225
8
+ atdata/_protocols.py,sha256=xjqsxPG6KLoq6kqZaoGbUEWXiK-gMqHjCoK_9ad8j2Q,9412
9
+ atdata/_schema_codec.py,sha256=uje12k38EoHlkJsdtvZO14KpaAc1kzsd32QBCEOnBWE,14383
10
+ atdata/_sources.py,sha256=A7HMkS_dqN5Sx7rG1nZsO1Laxozt3C65_P2Hiv41VXk,16624
11
+ atdata/_stub_manager.py,sha256=ciA46WKqczE1cBYE4CJZeE37vhlgShl_VpejAmAZFEQ,18195
12
+ atdata/_type_utils.py,sha256=mhD0ywXgIEpVaAWpGVKGneUOh0cmI96zKz6g2O1bdg0,3762
13
+ atdata/dataset.py,sha256=NCc1LGKCaa-miwk2P4g8b7iRb4-Kho0SujU58IQbSJ4,46800
14
+ atdata/lens.py,sha256=s6Ebeacth4cF_yCmnH4MuZ6TwQJmUmrFZ3eIh1jQSZI,9914
15
+ atdata/promote.py,sha256=epFa4VXYbBigAXb_yYPiPQREPVAdmZ53Ab2sjSgybw8,6429
16
+ atdata/repository.py,sha256=n4Rdpi07b2EEQhHGMOnWnV8shqQZ_BD7oEongJdhoto,10163
17
+ atdata/testing.py,sha256=bvnu8knCeLJYm4KzsU9jzw0yHYappgPk41UN-O2aLT4,10949
18
+ atdata/atmosphere/__init__.py,sha256=C8YhxR9PHHUt5kDSfx9lFyMlyCPdQ1fhE6t_b7rYHfM,10024
19
+ atdata/atmosphere/_types.py,sha256=UTRe-jgn0IPFcK1D00Y9A2GGPmQKABevHbebtRRXHHY,9571
20
+ atdata/atmosphere/client.py,sha256=GZO6YX0SOtFr3G5y7Cpl9sckHsZfVeumUUXB7UVbW-4,17726
21
+ atdata/atmosphere/lens.py,sha256=3d7GDoSsYLWJqeAe2T7WFbF59w7BWVc_B1HfwxVeeb4,9203
22
+ atdata/atmosphere/records.py,sha256=1BPZjSJFL_O71SVdA-fKEEkmFdCnGkjRl88uy8XMvJ0,15815
23
+ atdata/atmosphere/schema.py,sha256=GcKSeIGgnqvxmPWWU23Z2sHO78WJX9raKQWtYK-difs,7636
24
+ atdata/atmosphere/store.py,sha256=WgMHoBUsuoM9DQ99ZmXJ3r-d8v3-qHDC6c3DMntHFBI,6273
25
+ atdata/cli/__init__.py,sha256=_snwVqTt1qOc_cuXuEEhTTQyrD2nqd2TncZF8PCngPM,5798
26
+ atdata/cli/diagnose.py,sha256=L1wY2xWOr-8XUd5PZngi4t_r72rQBa8YXsY71dxFA20,5483
27
+ atdata/cli/infra.py,sha256=pL3Dg89fM7QZO4j4R037eZKJnHUnGf8uZinTvYEzfmA,8057
28
+ atdata/cli/inspect.py,sha256=YoJkWeXj1cHcOuDH9Z3btWMhiFNOG6JG3x-tScee-84,2019
29
+ atdata/cli/preview.py,sha256=n90Eqj920JEi7nBl4NnbmEhZxKLzHoR2CfNI9lkbGuc,1735
30
+ atdata/cli/schema.py,sha256=JwbQOBOPcvDTF6QgptuqZF5VEEMHrjxlj959q6E1DQY,2882
31
+ atdata/index/__init__.py,sha256=dbJoHCgO3QbCAyilmEmdSsU7-RhifBa2N7h1L9Y8Gls,1329
32
+ atdata/index/_entry.py,sha256=Cea1uAbURlBVn3vlrcLD5mtwIaqYoHjgb1GVsBqrszw,5264
33
+ atdata/index/_index.py,sha256=XUGvSHEatqR1IHkVJ3F2YCJNPBppQ6tZzTMRfeBPpLQ,43726
34
+ atdata/index/_schema.py,sha256=_-1RgFaYyBHeMhX_PzOCh8ZvtH92aGUWrOVCvMSVQSo,11604
35
+ atdata/lexicons/__init__.py,sha256=rdkasqWXggLmvBQtLl-hjeVCvjxGmOZN5tjriJ88Ch4,3468
36
+ atdata/lexicons/ac.foundation.dataset.arrayFormat.json,sha256=XVXqKRJKxuWOxlGVxIvMWQNqV5movjtn9JPtocf93Mo,701
37
+ atdata/lexicons/ac.foundation.dataset.getLatestSchema.json,sha256=rtgPz5jZ2memj1HlWcqvF3xGTY0CBvM5ApzAhbtBBaU,2154
38
+ atdata/lexicons/ac.foundation.dataset.lens.json,sha256=JG-I2WXlvsDDbAtO9CTcUPm57B-CuOeLVvjkhB6w5R4,3050
39
+ atdata/lexicons/ac.foundation.dataset.record.json,sha256=dAJK7bKx_ng4AAlkdW8838GbMM12uxeonP89wvEHV4U,3174
40
+ atdata/lexicons/ac.foundation.dataset.schema.json,sha256=9hQRXu9WEuX68ljOOG4XLfy1jVn7Y0uPTlhvBO5lmx0,4511
41
+ atdata/lexicons/ac.foundation.dataset.schemaType.json,sha256=FK3YZuR1r_ozZJOpxfdyWm76xmKSjR9O8tvU1fLszn8,652
42
+ atdata/lexicons/ac.foundation.dataset.storageBlobs.json,sha256=NjeRm72N59GanJyyJwaS3JSph7Cu6nZZHoinInh-n8Q,700
43
+ atdata/lexicons/ac.foundation.dataset.storageExternal.json,sha256=iyZ1g20O7yG93cmwd6Q9aXrmR7tPsdq1H_GGt4Fb8oo,733
44
+ atdata/lexicons/ndarray_shim.json,sha256=RvcOsRByfEFPQeJyaPu_QfG_gDYLA6I525-_yrRQ5g4,932
45
+ atdata/local/__init__.py,sha256=699CAnyMUPCOIdaFDw-HStUUG_qj1rovWQuCkmrSx6U,1791
46
+ atdata/local/_repo_legacy.py,sha256=zP_mh4p4-tJlPbu7kaNdMjNNb2S0e8HcuINPcuchQ7I,7542
47
+ atdata/manifest/__init__.py,sha256=GB7V8OXLDAIuUX4JSBVL7_UV9CFALMiMfoeZvoNkug0,1309
48
+ atdata/manifest/_aggregates.py,sha256=yabfBJtdVqOBWbkNqg9gp0BgpG62wi3QsGYlHgAAcFk,4198
49
+ atdata/manifest/_builder.py,sha256=abU5cnRnIJZ_qf_BKr6-fMYU1HaJWkBVgmGL0WzRRzU,5252
50
+ atdata/manifest/_fields.py,sha256=4Mm31HGb3qRwvp5Kn9Pp-4dX0tlNrQHxEDZJnBzFpos,5003
51
+ atdata/manifest/_manifest.py,sha256=hPcURPjjPS5r3H_veVshwT6Qw-lC9eQll84Fos1xrCE,4852
52
+ atdata/manifest/_query.py,sha256=25_0i60jWQhuMXsuuVLvSPS8v9pejTi5Bik99e2L99A,4641
53
+ atdata/manifest/_writer.py,sha256=_g2YZof-GnN3nVLpAAE5fDmsV9GzlPYf2oa1BWYswxI,2206
54
+ atdata/providers/__init__.py,sha256=LDziQc6Dc0QCfJcr_sDDqxArstDB0dSZHGgXCIIXbzo,848
55
+ atdata/providers/_base.py,sha256=3ICfgo2AWrRyAHrH8AJM4F0ssDBVD_K5iZAuQcUFLGA,4402
56
+ atdata/providers/_factory.py,sha256=9clKbch3gxqJWufY-HIbbfaBstzoq1LOcMrJOKHTPhw,2039
57
+ atdata/providers/_postgres.py,sha256=BpbjiD9jifLO74aWttSq4JgVoecAypCoYzO_7DdAZuQ,7402
58
+ atdata/providers/_redis.py,sha256=VljNKSsLAX5H0NoOuqkuLQeQAFuuettq1MnpBJgnqhw,6054
59
+ atdata/providers/_sqlite.py,sha256=urZWl7ErgKJJ1uBpnmmdkz7uWnrKGkJDIaTvAdyN7Uo,6486
60
+ atdata/stores/__init__.py,sha256=juot7U0m8L5BauOvgsfq7mzdCYgSF5kzDjvSeo-KZ84,458
61
+ atdata/stores/_disk.py,sha256=vHwNtE9lE1on3YTBJw5t_0tiwZjPhskNxCjpprK3sUI,3599
62
+ atdata/stores/_s3.py,sha256=7KuIIZgqaiaNjULlKC3QPbLkKaj7rRVSYJt5zU_OEXI,12809
63
+ atdata-0.3.1b1.dist-info/METADATA,sha256=wVRVllAuP9wa20G9a43T7YO1kf3iHVCQ27o5DCO7Mqo,7408
64
+ atdata-0.3.1b1.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
65
+ atdata-0.3.1b1.dist-info/entry_points.txt,sha256=6-iQr1veSTq-ac94bLyfcyGHprrZWevPEd12BWX37tQ,39
66
+ atdata-0.3.1b1.dist-info/licenses/LICENSE,sha256=Pz2eACSxkhsGfW9_iN60pgy-enjnbGTj8df8O3ebnQQ,16726
67
+ atdata-0.3.1b1.dist-info/RECORD,,
@@ -1,54 +0,0 @@
1
- atdata/.gitignore,sha256=ROcLwaiURIGOAYGFpakac_WEeKS4hH4HxJuscfDGo2s,10
2
- atdata/__init__.py,sha256=TXEvc6R_VQ4zzjHr9OIqi_hhwfc6OqerVWajtDRwJTA,3249
3
- atdata/_cid.py,sha256=6wLV_dcQJy5Eb-wld7_h7Kcp7QoVixIqUDIIoSwpQms,3992
4
- atdata/_exceptions.py,sha256=a2IzmTJqLyIgQ0RkW3KhaaaSDdQJGLoXzuHfEX0DfB4,5390
5
- atdata/_helpers.py,sha256=e-1lChOY9jvihs5Q04Tp5Rp9oKIoVf5N4wuuwv0Hl64,2224
6
- atdata/_hf_api.py,sha256=ThNoVDIztbJCLtIKSCol4Tm7Lf1TqbU4E-fFsKt5FaA,24318
7
- atdata/_logging.py,sha256=Wj9MTe9xCP_awiQYfa7219Fb443Rkwu_jIqM-m2u2GA,2225
8
- atdata/_protocols.py,sha256=LYeM0eIn5nQ56DssdGFd-CvJFXh9C3YR2GLOSFxg1Kw,14479
9
- atdata/_schema_codec.py,sha256=OpRs8bfCPGCEJsBKlp8rfndBldco3jwQQ7k9npN-EPQ,14395
10
- atdata/_sources.py,sha256=A7HMkS_dqN5Sx7rG1nZsO1Laxozt3C65_P2Hiv41VXk,16624
11
- atdata/_stub_manager.py,sha256=Heh0HAYjVjnkUQcPWAEOrkkEKN3Mi9vTJPA-ZRseFw8,19141
12
- atdata/_type_utils.py,sha256=mhD0ywXgIEpVaAWpGVKGneUOh0cmI96zKz6g2O1bdg0,3762
13
- atdata/dataset.py,sha256=ogclAFyeDh8ZGvgiDViiDn_sbkh94rpXgR-jtwFpi6M,41123
14
- atdata/lens.py,sha256=s6Ebeacth4cF_yCmnH4MuZ6TwQJmUmrFZ3eIh1jQSZI,9914
15
- atdata/promote.py,sha256=W8I_OCTStKY_Mu1OJvtVyJrWqmXjRQaTQLJ_Id-nBmA,6274
16
- atdata/repository.py,sha256=5ZlYOw5VQdkuN0rntfw26CA_O_YsZLYMSGaRPPPn9Gc,10205
17
- atdata/testing.py,sha256=OUPXn8CBuxNVyhj-lgIiw_YkTNrewdEkgFyfwogLH3E,10858
18
- atdata/atmosphere/__init__.py,sha256=g8larX6DIA4AVFgt-g3vm6Ijsb4vU3YOAFPNCDMd-sk,10064
19
- atdata/atmosphere/_types.py,sha256=MRhXnmAuQLJPdoq1skrBGXCsaQYdtKG_nA3YlSjwJXY,9595
20
- atdata/atmosphere/client.py,sha256=acw82w3_cxWbWDtIRvH1VDHGJSroGqhSenFFostXTXo,16210
21
- atdata/atmosphere/lens.py,sha256=EnrddTD-SAnyxU0XF__QkePLUhb4lPwfFLaseL_STDc,9260
22
- atdata/atmosphere/records.py,sha256=Vkc7K0XFozwXVaDgXP706Z1-De1C95ZPtra1EQE3MGQ,15860
23
- atdata/atmosphere/schema.py,sha256=xvIyJbzbZrcAi7TOWFQXXfgqAyuhb5Yqttf9dSy9x50,7758
24
- atdata/atmosphere/store.py,sha256=NR4tGS9u3_ogvnyyOHDVF0tRKChruj_NE9Df4qrZiDU,6324
25
- atdata/cli/__init__.py,sha256=3ZtMcYmx78L_8LqzPHaLlEOlFXl_uHBJtffSL6UB-kE,5834
26
- atdata/cli/diagnose.py,sha256=Det9ozOvxXKd8Abu-xEsMjaXR34H_cuSX9MJJIlhnsA,5483
27
- atdata/cli/inspect.py,sha256=YoJkWeXj1cHcOuDH9Z3btWMhiFNOG6JG3x-tScee-84,2019
28
- atdata/cli/local.py,sha256=dYosOuVmp_PIM8re4DFsm00uspUJftTOZ0TBBNlTqAM,8105
29
- atdata/cli/preview.py,sha256=n90Eqj920JEi7nBl4NnbmEhZxKLzHoR2CfNI9lkbGuc,1735
30
- atdata/cli/schema.py,sha256=JwbQOBOPcvDTF6QgptuqZF5VEEMHrjxlj959q6E1DQY,2882
31
- atdata/local/__init__.py,sha256=ZBJspq-dKOYZESUfxnQ0vIqpyBXGo2Fy116RvfFtDgs,1872
32
- atdata/local/_entry.py,sha256=Cea1uAbURlBVn3vlrcLD5mtwIaqYoHjgb1GVsBqrszw,5264
33
- atdata/local/_index.py,sha256=lCl0JAmHxmhz9lFlMiMvO_TApYARK3dyiBAJTVUaYO4,34305
34
- atdata/local/_repo_legacy.py,sha256=7njQTp9HReyWNcIOyYG_Zg90nhEI8KRVCLI0ANnoUpY,7541
35
- atdata/local/_s3.py,sha256=7KuIIZgqaiaNjULlKC3QPbLkKaj7rRVSYJt5zU_OEXI,12809
36
- atdata/local/_schema.py,sha256=myCZ7eTJ0hKLQuF5qBvjzttyenKSqXd3YDdamFdRw1E,11634
37
- atdata/manifest/__init__.py,sha256=GB7V8OXLDAIuUX4JSBVL7_UV9CFALMiMfoeZvoNkug0,1309
38
- atdata/manifest/_aggregates.py,sha256=yabfBJtdVqOBWbkNqg9gp0BgpG62wi3QsGYlHgAAcFk,4198
39
- atdata/manifest/_builder.py,sha256=abU5cnRnIJZ_qf_BKr6-fMYU1HaJWkBVgmGL0WzRRzU,5252
40
- atdata/manifest/_fields.py,sha256=4Mm31HGb3qRwvp5Kn9Pp-4dX0tlNrQHxEDZJnBzFpos,5003
41
- atdata/manifest/_manifest.py,sha256=hPcURPjjPS5r3H_veVshwT6Qw-lC9eQll84Fos1xrCE,4852
42
- atdata/manifest/_query.py,sha256=25_0i60jWQhuMXsuuVLvSPS8v9pejTi5Bik99e2L99A,4641
43
- atdata/manifest/_writer.py,sha256=_g2YZof-GnN3nVLpAAE5fDmsV9GzlPYf2oa1BWYswxI,2206
44
- atdata/providers/__init__.py,sha256=LDziQc6Dc0QCfJcr_sDDqxArstDB0dSZHGgXCIIXbzo,848
45
- atdata/providers/_base.py,sha256=3ICfgo2AWrRyAHrH8AJM4F0ssDBVD_K5iZAuQcUFLGA,4402
46
- atdata/providers/_factory.py,sha256=9clKbch3gxqJWufY-HIbbfaBstzoq1LOcMrJOKHTPhw,2039
47
- atdata/providers/_postgres.py,sha256=BpbjiD9jifLO74aWttSq4JgVoecAypCoYzO_7DdAZuQ,7402
48
- atdata/providers/_redis.py,sha256=VljNKSsLAX5H0NoOuqkuLQeQAFuuettq1MnpBJgnqhw,6054
49
- atdata/providers/_sqlite.py,sha256=urZWl7ErgKJJ1uBpnmmdkz7uWnrKGkJDIaTvAdyN7Uo,6486
50
- atdata-0.3.0b1.dist-info/METADATA,sha256=zxCV6U6eMrtYZII4hBIrY7tZ9hs4ntTdAwPRhg_HISk,7410
51
- atdata-0.3.0b1.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
52
- atdata-0.3.0b1.dist-info/entry_points.txt,sha256=6-iQr1veSTq-ac94bLyfcyGHprrZWevPEd12BWX37tQ,39
53
- atdata-0.3.0b1.dist-info/licenses/LICENSE,sha256=Pz2eACSxkhsGfW9_iN60pgy-enjnbGTj8df8O3ebnQQ,16726
54
- atdata-0.3.0b1.dist-info/RECORD,,
File without changes
File without changes