dataerai-sdk 0.2.0b20__tar.gz → 0.2.0.dev1__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 (230) hide show
  1. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/PKG-INFO +1 -137
  2. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/README.md +0 -127
  3. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/__init__.py +1 -18
  4. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/_daemon.py +6 -25
  5. dataerai_sdk-0.2.0.dev1/dataerai/_errors.py +17 -0
  6. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/_types.py +1 -62
  7. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/_version.py +1 -1
  8. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/client.py +30 -275
  9. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/ml/access.py +3 -55
  10. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/ml/attribution/client.py +1 -2
  11. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/ml/croissant.py +1 -1
  12. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/ml/lineage.py +6 -11
  13. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/ml/staging.py +2 -2
  14. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai_sdk.egg-info/PKG-INFO +1 -137
  15. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai_sdk.egg-info/SOURCES.txt +0 -12
  16. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai_sdk.egg-info/requires.txt +0 -11
  17. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/pyproject.toml +1 -13
  18. dataerai_sdk-0.2.0b20/dataerai/_errors.py +0 -59
  19. dataerai_sdk-0.2.0b20/dataerai/_transport.py +0 -278
  20. dataerai_sdk-0.2.0b20/dataerai/magics.py +0 -126
  21. dataerai_sdk-0.2.0b20/dataerai/nn/__init__.py +0 -20
  22. dataerai_sdk-0.2.0b20/dataerai/nn/system.py +0 -202
  23. dataerai_sdk-0.2.0b20/dataerai/nn/tensorflow.py +0 -535
  24. dataerai_sdk-0.2.0b20/dataerai/notebook.py +0 -264
  25. dataerai_sdk-0.2.0b20/dataerai/notebook_trace.py +0 -699
  26. dataerai_sdk-0.2.0b20/tests/test_collections.py +0 -195
  27. dataerai_sdk-0.2.0b20/tests/test_notebook.py +0 -223
  28. dataerai_sdk-0.2.0b20/tests/test_notebook_trace.py +0 -611
  29. dataerai_sdk-0.2.0b20/tests/test_terms_gate.py +0 -218
  30. dataerai_sdk-0.2.0b20/tests/test_transport.py +0 -151
  31. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/LICENSE +0 -0
  32. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/_agent.py +0 -0
  33. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/_framing.py +0 -0
  34. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/_timeparse.py +0 -0
  35. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/bambu/__init__.py +0 -0
  36. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/bambu/capture.py +0 -0
  37. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/bambu/cli.py +0 -0
  38. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/bambu/fleet_hub.py +0 -0
  39. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/bambu/integration.py +0 -0
  40. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/bambu/journal.py +0 -0
  41. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/bambu/models.py +0 -0
  42. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/bambu/recorder.py +0 -0
  43. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/__init__.py +0 -0
  44. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/api.py +0 -0
  45. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/bases.py +0 -0
  46. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/bio/__init__.py +0 -0
  47. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/bio/alignment.py +0 -0
  48. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/bio/fcs.py +0 -0
  49. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/bio/gff.py +0 -0
  50. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/bio/sequence.py +0 -0
  51. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/bio/vcf.py +0 -0
  52. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/checksum.py +0 -0
  53. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/compchem/__init__.py +0 -0
  54. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/compchem/molfile.py +0 -0
  55. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/compchem/qchem_output.py +0 -0
  56. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/compchem/structure.py +0 -0
  57. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/compchem/xyz.py +0 -0
  58. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/containers/__init__.py +0 -0
  59. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/containers/fits.py +0 -0
  60. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/containers/hdf5.py +0 -0
  61. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/containers/image.py +0 -0
  62. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/containers/matlab.py +0 -0
  63. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/containers/netcdf.py +0 -0
  64. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/containers/nexus.py +0 -0
  65. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/containers/numpy_array.py +0 -0
  66. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/containers/parquet.py +0 -0
  67. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/containers/tiff.py +0 -0
  68. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/containers/zarr_store.py +0 -0
  69. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/converter.py +0 -0
  70. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/converters/AFM/__init__.py +0 -0
  71. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/converters/AFM/oxfordAFM/__init__.py +0 -0
  72. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/converters/AFM/oxfordAFM/ibw.py +0 -0
  73. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/converters/RHEED/__init__.py +0 -0
  74. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/converters/RHEED/ksa/__init__.py +0 -0
  75. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/converters/RHEED/ksa/imm.py +0 -0
  76. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/converters/Xray/__init__.py +0 -0
  77. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/converters/Xray/panalytical/__init__.py +0 -0
  78. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/converters/Xray/panalytical/xrdml.py +0 -0
  79. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/converters/__init__.py +0 -0
  80. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/core.py +0 -0
  81. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/crystallography/__init__.py +0 -0
  82. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/crystallography/cif.py +0 -0
  83. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/crystallography/vasp.py +0 -0
  84. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/data_type.py +0 -0
  85. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/data_type_definitions.py +0 -0
  86. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/instruments/AFM/__init__.py +0 -0
  87. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/instruments/AFM/bandexcitation/__init__.py +0 -0
  88. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/instruments/AFM/bandexcitation/h5.py +0 -0
  89. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/instruments/AFM/bruker/__init__.py +0 -0
  90. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/instruments/AFM/bruker/nanoscope.py +0 -0
  91. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/instruments/AFM/oxfordAFM/__init__.py +0 -0
  92. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/instruments/AFM/oxfordAFM/ibw.py +0 -0
  93. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/instruments/EM/__init__.py +0 -0
  94. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/instruments/EM/dm/__init__.py +0 -0
  95. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/instruments/EM/dm/dm3.py +0 -0
  96. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/instruments/EM/dm/dm4.py +0 -0
  97. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/instruments/RHEED/__init__.py +0 -0
  98. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/instruments/RHEED/ksa/__init__.py +0 -0
  99. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/instruments/RHEED/ksa/imm.py +0 -0
  100. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/instruments/Xray/__init__.py +0 -0
  101. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/instruments/Xray/panalytical/__init__.py +0 -0
  102. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/instruments/Xray/panalytical/xrdml.py +0 -0
  103. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/instruments/__init__.py +0 -0
  104. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/massspec/__init__.py +0 -0
  105. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/massspec/imzml.py +0 -0
  106. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/massspec/mzml.py +0 -0
  107. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/massspec/mzxml.py +0 -0
  108. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/massspec/thermo_raw.py +0 -0
  109. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/medical/__init__.py +0 -0
  110. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/medical/dicom.py +0 -0
  111. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/medical/edf.py +0 -0
  112. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/medical/nifti.py +0 -0
  113. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/medical/nwb.py +0 -0
  114. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/microscopy/__init__.py +0 -0
  115. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/microscopy/czi.py +0 -0
  116. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/microscopy/leica_lif.py +0 -0
  117. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/microscopy/nd2.py +0 -0
  118. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/microscopy/olympus.py +0 -0
  119. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/registry.py +0 -0
  120. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/spectroscopy/__init__.py +0 -0
  121. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/spectroscopy/bruker_opus.py +0 -0
  122. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/spectroscopy/jcamp.py +0 -0
  123. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/spectroscopy/renishaw_wdf.py +0 -0
  124. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/spectroscopy/thermo_spc.py +0 -0
  125. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/units.py +0 -0
  126. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/utils.py +0 -0
  127. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/viz/__init__.py +0 -0
  128. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/viz/instruments/Xray/__init__.py +0 -0
  129. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/viz/instruments/Xray/panalytical/__init__.py +0 -0
  130. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/viz/instruments/Xray/panalytical/xrd.py +0 -0
  131. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/viz/instruments/__init__.py +0 -0
  132. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/viz/instruments/oxford/__init__.py +0 -0
  133. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/viz/instruments/oxford/afms/__init__.py +0 -0
  134. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/viz/instruments/oxford/afms/afm.py +0 -0
  135. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/viz/instruments/oxford/afms/dart_pfm.py +0 -0
  136. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/viz/instruments/oxford/afms/single_frequency_pfm.py +0 -0
  137. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/viz/instruments/oxford/afms/vector_pfm.py +0 -0
  138. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/viz/instruments/oxford/afms/visualize.py +0 -0
  139. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/viz/layout.py +0 -0
  140. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/viz/maps.py +0 -0
  141. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/viz/metadata.py +0 -0
  142. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/viz/metadata_schemas/__init__.py +0 -0
  143. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/viz/metadata_schemas/afm.py +0 -0
  144. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/metaextract/viz/router.py +0 -0
  145. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/ml/__init__.py +0 -0
  146. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/ml/ai_ready_reader.py +0 -0
  147. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/ml/attribution/__init__.py +0 -0
  148. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/ml/attribution/calibration.py +0 -0
  149. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/ml/attribution/codes.py +0 -0
  150. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/ml/attribution/hooks.py +0 -0
  151. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/ml/attribution/inference.py +0 -0
  152. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/ml/attribution/sae.py +0 -0
  153. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/ml/attribution/training.py +0 -0
  154. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/ml/bench.py +0 -0
  155. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/ml/cache.py +0 -0
  156. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/ml/gpu.py +0 -0
  157. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/ml/hls4ml.py +0 -0
  158. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/ml/io.py +0 -0
  159. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/ml/keras_dataset.py +0 -0
  160. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/ml/loader.py +0 -0
  161. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/ml/report.py +0 -0
  162. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/ml/stream/__init__.py +0 -0
  163. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/ml/stream/_docs.py +0 -0
  164. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/ml/stream/errors.py +0 -0
  165. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/ml/stream/live.py +0 -0
  166. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/ml/stream/reader.py +0 -0
  167. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/ml/stream/session.py +0 -0
  168. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/ml/stream/timeseries.py +0 -0
  169. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/ml/stream/video.py +0 -0
  170. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/ml/stream/writer.py +0 -0
  171. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/ml/telemetry.py +0 -0
  172. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/ml/train_reference.py +0 -0
  173. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/ml/zarr_dataset.py +0 -0
  174. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/runner/__init__.py +0 -0
  175. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/runner/__main__.py +0 -0
  176. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/runner/agent.py +0 -0
  177. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/runner/api.py +0 -0
  178. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/runner/artifacts.py +0 -0
  179. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/runner/capabilities.py +0 -0
  180. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/runner/cli.py +0 -0
  181. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/runner/config.py +0 -0
  182. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/runner/device_auth.py +0 -0
  183. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/runner/executor.py +0 -0
  184. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/runner/handlers/__init__.py +0 -0
  185. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/runner/handlers/bench.py +0 -0
  186. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/runner/handlers/stage.py +0 -0
  187. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/runner/handlers/train.py +0 -0
  188. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/runner/heartbeat.py +0 -0
  189. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/runner/sigv4.py +0 -0
  190. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/runner/state.py +0 -0
  191. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai/runner/telemetry.py +0 -0
  192. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai_sdk.egg-info/dependency_links.txt +0 -0
  193. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai_sdk.egg-info/entry_points.txt +0 -0
  194. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/dataerai_sdk.egg-info/top_level.txt +0 -0
  195. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/setup.cfg +0 -0
  196. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/tests/test_agent.py +0 -0
  197. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/tests/test_ai_ready_croissant_external.py +0 -0
  198. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/tests/test_ai_ready_croissant_external_mlc.py +0 -0
  199. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/tests/test_attribution_inference.py +0 -0
  200. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/tests/test_attribution_sae.py +0 -0
  201. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/tests/test_attribution_training.py +0 -0
  202. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/tests/test_client.py +0 -0
  203. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/tests/test_framing.py +0 -0
  204. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/tests/test_keras_hls4ml.py +0 -0
  205. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/tests/test_lineage_client.py +0 -0
  206. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/tests/test_ml_access_ttl.py +0 -0
  207. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/tests/test_ml_ai_ready_croissant.py +0 -0
  208. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/tests/test_ml_ai_ready_reader.py +0 -0
  209. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/tests/test_ml_bench.py +0 -0
  210. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/tests/test_ml_cache.py +0 -0
  211. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/tests/test_ml_content_pinning.py +0 -0
  212. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/tests/test_ml_cred_lifecycle.py +0 -0
  213. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/tests/test_ml_distributed.py +0 -0
  214. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/tests/test_ml_gpu.py +0 -0
  215. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/tests/test_ml_gpu_path.py +0 -0
  216. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/tests/test_ml_io.py +0 -0
  217. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/tests/test_ml_loader.py +0 -0
  218. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/tests/test_ml_packaging.py +0 -0
  219. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/tests/test_ml_read_path.py +0 -0
  220. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/tests/test_ml_review_followups.py +0 -0
  221. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/tests/test_ml_review_followups_torch.py +0 -0
  222. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/tests/test_ml_sampler_correctness.py +0 -0
  223. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/tests/test_ml_staging.py +0 -0
  224. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/tests/test_ml_telemetry.py +0 -0
  225. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/tests/test_stream_core.py +0 -0
  226. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/tests/test_stream_live.py +0 -0
  227. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/tests/test_stream_timeseries.py +0 -0
  228. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/tests/test_stream_video.py +0 -0
  229. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/tests/test_timeparse.py +0 -0
  230. {dataerai_sdk-0.2.0b20 → dataerai_sdk-0.2.0.dev1}/tests/test_zarr_dataset.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dataerai-sdk
3
- Version: 0.2.0b20
3
+ Version: 0.2.0.dev1
4
4
  Summary: Python SDK for the Dataerai transfer daemon
5
5
  Author: Dataerai
6
6
  License: DATAERAI PROPRIETARY SOFTWARE LICENSE AGREEMENT
@@ -370,15 +370,6 @@ License-File: LICENSE
370
370
  Provides-Extra: dev
371
371
  Requires-Dist: pytest>=8; extra == "dev"
372
372
  Requires-Dist: pytest-mock>=3; extra == "dev"
373
- Requires-Dist: ipython>=8; extra == "dev"
374
- Provides-Extra: notebook
375
- Requires-Dist: ipython>=8; extra == "notebook"
376
- Provides-Extra: nn-tensorflow
377
- Requires-Dist: ipython>=8; extra == "nn-tensorflow"
378
- Requires-Dist: tensorflow<2.19,>=2.18; extra == "nn-tensorflow"
379
- Requires-Dist: numpy<3,>=2; extra == "nn-tensorflow"
380
- Requires-Dist: psutil>=5.9; extra == "nn-tensorflow"
381
- Requires-Dist: nvidia-ml-py>=12; extra == "nn-tensorflow"
382
373
  Provides-Extra: bambu
383
374
  Requires-Dist: imageio-ffmpeg>=0.6; extra == "bambu"
384
375
  Provides-Extra: ml-io
@@ -495,8 +486,6 @@ Optional ML adapters are installed separately so the base SDK stays small:
495
486
  pip install --pre "dataerai-sdk[ml]>=0.2.0b1,<0.3" # PyTorch Zarr datasets
496
487
  pip install --pre "dataerai-sdk[ml-keras]>=0.2.0b1,<0.3" # Keras batches
497
488
  pip install --pre "dataerai-sdk[ml-hls4ml]>=0.2.0b1,<0.3" # HLS4ML conversion
498
- pip install --pre "dataerai-sdk[notebook]>=0.2.0b1,<0.3" # IPython %dataerai magic
499
- pip install --pre "dataerai-sdk[nn-tensorflow]>=0.2.0b1,<0.3" # TensorFlow provenance
500
489
  ```
501
490
 
502
491
  ## Quick start
@@ -548,126 +537,6 @@ with DataeraiClient(binary_path="/usr/local/bin/dataerai") as client:
548
537
  print(f"Linked via {relationship.type} to {related_id}")
549
538
  ```
550
539
 
551
- ## Notebook magic
552
-
553
- After signing in with the Dataerai CLI, a notebook only needs a destination
554
- path. The first component names the project; the notebook magic creates that
555
- project when it is missing, then creates any missing collection components
556
- beneath it:
557
-
558
- ```python
559
- DESTINATION_COLLECTION_PATH = "Research / Experiments / July"
560
-
561
- %load_ext dataerai.magics
562
- %dataerai $DESTINATION_COLLECTION_PATH
563
- ```
564
-
565
- The magic publishes a `dataerai_session` variable. Its uploads automatically
566
- target the selected project and collection:
567
-
568
- ```python
569
- dataset = dataerai_session.find_asset(
570
- "did:dataerai:beta:asset:...",
571
- title="input.csv",
572
- )
573
- dataerai_session.download(dataset, "source-data")
574
- result = dataerai_session.upload(
575
- "analysis.csv",
576
- metadata={"component": "derived-output"},
577
- )
578
- ```
579
-
580
- Use `%dataerai --as run $DESTINATION_COLLECTION_PATH` to choose a different
581
- session variable. Regular Python code can call
582
- `connect_notebook(DESTINATION_COLLECTION_PATH)` instead.
583
-
584
- ### Trace a notebook run
585
-
586
- Add `--trace` to capture every subsequent cell's source, timestamps, stdout,
587
- stderr, structured Python logging records, rich display outputs, returned
588
- value, and error. Uploads and downloads through the session join the same run
589
- automatically, following the run-centered provenance pattern used by the QICK
590
- integration:
591
-
592
- ```python
593
- %dataerai --trace --notebook analysis.ipynb --title "July analysis" $DESTINATION_COLLECTION_PATH
594
-
595
- # Run analysis cells and upload their products through dataerai_session.
596
- result = dataerai_session.upload(
597
- "analysis.csv",
598
- record_type="analysis",
599
- metadata={"component": "derived-output"},
600
- )
601
-
602
- %dataerai --finish
603
- ```
604
-
605
- `%dataerai --finish` waits until its cell completes, then uploads a JSON
606
- execution-log asset with `record_type="log"`. Every uploaded asset carries a
607
- shared `notebook_run_id` plus `dataerai-notebook-trace` and
608
- `notebook-run:<run-id>` tags. The log is linked to each recorded input and
609
- product with `records_telemetry`, and the published result is available as
610
- `dataerai_trace`. Run identity is merged onto an existing same-title asset, so
611
- re-running a fixed notebook or output filename keeps both run tags searchable.
612
- If a traced cell fails, its source, outputs, error, and traceback are published
613
- immediately; an explicit `%dataerai --finish` is not required for that failed
614
- run.
615
-
616
- Tracing is deliberately opt-in because cell source and output can contain
617
- secrets or sensitive research data. Review the notebook before enabling it.
618
- The recorder does not read environment-variable values or scan/upload arbitrary
619
- files; a file becomes a recorded product only when the notebook uploads it
620
- through the traced session. Finish an active trace before starting another one
621
- in the same Python kernel.
622
-
623
- ## TensorFlow neural-network provenance
624
-
625
- `TensorFlowProvenanceTracker` implements the complete preservation contract
626
- ported from
627
- [DataFed_TorchFlow](https://github.com/m3-learning/DataFed_TorchFlow). It saves
628
- native `.keras` checkpoints containing model and optimizer state, writes a
629
- machine-readable manifest, captures architecture and hyperparameters, data and
630
- training-code checksums, outcomes, and full runtime/system properties, and
631
- authors `derived-from` links to datasets, the notebook, and prior checkpoints.
632
-
633
- ```python
634
- from dataerai.nn import TensorFlowProvenanceTracker
635
-
636
- tracker = TensorFlowProvenanceTracker(
637
- model,
638
- session=dataerai_session,
639
- run_name="mnist-mlp",
640
- dataset_references=[
641
- {
642
- "asset_id": dataset_asset.asset_id,
643
- "source_asset_did": SOURCE_ASSET_DID,
644
- "filename": DATA_PATH.name,
645
- "sha256": dataset_sha,
646
- }
647
- ],
648
- notebook_path=NOTEBOOK_PATH,
649
- notebook_asset_id=notebook_asset.asset_id,
650
- )
651
- history = model.fit(
652
- x_train,
653
- y_train,
654
- epochs=2,
655
- callbacks=[tracker.callback(training_parameters={"batch_size": 128})],
656
- )
657
- final = tracker.save_checkpoint(
658
- epoch=2,
659
- label="final",
660
- record_name="mnist-mlp",
661
- metrics={"test_accuracy": 0.91},
662
- training_parameters={"batch_size": 128, "epochs": 2},
663
- )
664
- ```
665
-
666
- System capture intentionally does not enumerate environment variables. It
667
- records OS/host, CPU and memory properties, TensorFlow-visible devices,
668
- optional NVML GPU memory, Python/framework/package versions, and only a small
669
- allowlist of determinism and thread settings.
670
-
671
540
  ## API reference
672
541
 
673
542
  ### `DataeraiClient(*, socket_path, binary_path, auto_start, start_timeout_s, request_timeout_s)`
@@ -687,11 +556,6 @@ Use as a context manager (`with DataeraiClient(...) as client:`) for automatic c
687
556
  | Method | Returns | Description |
688
557
  |---|---|---|
689
558
  | `auth_status()` | `AuthStatus` | Logged-in user ID, email, and token expiry; `user_id` is `None` with older daemons |
690
- | `list_tree()` | `list[TreeNode]` | List visible workspaces, projects, and collections |
691
- | `create_collection(title, *, owner_type, owner_id, parent_id=None)` | `Collection` | Create a collection |
692
- | `ensure_collection_path(path, *, create_project=False, project_description="")` | `CollectionDestination` | Resolve `Project / Collection / ...`, creating missing collection components and optionally the project |
693
- | `search_assets(query, ...)` | `AssetSearchPage` | Search one page of visible assets |
694
- | `find_assets(query, ...)` | `list[AssetSummary]` | Search and collect every result page |
695
559
  | `create_project(name, *, description="")` | `Project` | Create a project (+ root collection, owner membership, default allocation); requires write scope |
696
560
  | `upload(local_path, *, title, owner_type, owner_id, record_type=None, ...)` | `UploadResult` | Upload a file with an optional server-validated record type; blocks until complete |
697
561
  | `download(asset_id, dest_dir, ...)` | `DownloadResult` | Download latest asset content; blocks until complete |
@@ -24,8 +24,6 @@ Optional ML adapters are installed separately so the base SDK stays small:
24
24
  pip install --pre "dataerai-sdk[ml]>=0.2.0b1,<0.3" # PyTorch Zarr datasets
25
25
  pip install --pre "dataerai-sdk[ml-keras]>=0.2.0b1,<0.3" # Keras batches
26
26
  pip install --pre "dataerai-sdk[ml-hls4ml]>=0.2.0b1,<0.3" # HLS4ML conversion
27
- pip install --pre "dataerai-sdk[notebook]>=0.2.0b1,<0.3" # IPython %dataerai magic
28
- pip install --pre "dataerai-sdk[nn-tensorflow]>=0.2.0b1,<0.3" # TensorFlow provenance
29
27
  ```
30
28
 
31
29
  ## Quick start
@@ -77,126 +75,6 @@ with DataeraiClient(binary_path="/usr/local/bin/dataerai") as client:
77
75
  print(f"Linked via {relationship.type} to {related_id}")
78
76
  ```
79
77
 
80
- ## Notebook magic
81
-
82
- After signing in with the Dataerai CLI, a notebook only needs a destination
83
- path. The first component names the project; the notebook magic creates that
84
- project when it is missing, then creates any missing collection components
85
- beneath it:
86
-
87
- ```python
88
- DESTINATION_COLLECTION_PATH = "Research / Experiments / July"
89
-
90
- %load_ext dataerai.magics
91
- %dataerai $DESTINATION_COLLECTION_PATH
92
- ```
93
-
94
- The magic publishes a `dataerai_session` variable. Its uploads automatically
95
- target the selected project and collection:
96
-
97
- ```python
98
- dataset = dataerai_session.find_asset(
99
- "did:dataerai:beta:asset:...",
100
- title="input.csv",
101
- )
102
- dataerai_session.download(dataset, "source-data")
103
- result = dataerai_session.upload(
104
- "analysis.csv",
105
- metadata={"component": "derived-output"},
106
- )
107
- ```
108
-
109
- Use `%dataerai --as run $DESTINATION_COLLECTION_PATH` to choose a different
110
- session variable. Regular Python code can call
111
- `connect_notebook(DESTINATION_COLLECTION_PATH)` instead.
112
-
113
- ### Trace a notebook run
114
-
115
- Add `--trace` to capture every subsequent cell's source, timestamps, stdout,
116
- stderr, structured Python logging records, rich display outputs, returned
117
- value, and error. Uploads and downloads through the session join the same run
118
- automatically, following the run-centered provenance pattern used by the QICK
119
- integration:
120
-
121
- ```python
122
- %dataerai --trace --notebook analysis.ipynb --title "July analysis" $DESTINATION_COLLECTION_PATH
123
-
124
- # Run analysis cells and upload their products through dataerai_session.
125
- result = dataerai_session.upload(
126
- "analysis.csv",
127
- record_type="analysis",
128
- metadata={"component": "derived-output"},
129
- )
130
-
131
- %dataerai --finish
132
- ```
133
-
134
- `%dataerai --finish` waits until its cell completes, then uploads a JSON
135
- execution-log asset with `record_type="log"`. Every uploaded asset carries a
136
- shared `notebook_run_id` plus `dataerai-notebook-trace` and
137
- `notebook-run:<run-id>` tags. The log is linked to each recorded input and
138
- product with `records_telemetry`, and the published result is available as
139
- `dataerai_trace`. Run identity is merged onto an existing same-title asset, so
140
- re-running a fixed notebook or output filename keeps both run tags searchable.
141
- If a traced cell fails, its source, outputs, error, and traceback are published
142
- immediately; an explicit `%dataerai --finish` is not required for that failed
143
- run.
144
-
145
- Tracing is deliberately opt-in because cell source and output can contain
146
- secrets or sensitive research data. Review the notebook before enabling it.
147
- The recorder does not read environment-variable values or scan/upload arbitrary
148
- files; a file becomes a recorded product only when the notebook uploads it
149
- through the traced session. Finish an active trace before starting another one
150
- in the same Python kernel.
151
-
152
- ## TensorFlow neural-network provenance
153
-
154
- `TensorFlowProvenanceTracker` implements the complete preservation contract
155
- ported from
156
- [DataFed_TorchFlow](https://github.com/m3-learning/DataFed_TorchFlow). It saves
157
- native `.keras` checkpoints containing model and optimizer state, writes a
158
- machine-readable manifest, captures architecture and hyperparameters, data and
159
- training-code checksums, outcomes, and full runtime/system properties, and
160
- authors `derived-from` links to datasets, the notebook, and prior checkpoints.
161
-
162
- ```python
163
- from dataerai.nn import TensorFlowProvenanceTracker
164
-
165
- tracker = TensorFlowProvenanceTracker(
166
- model,
167
- session=dataerai_session,
168
- run_name="mnist-mlp",
169
- dataset_references=[
170
- {
171
- "asset_id": dataset_asset.asset_id,
172
- "source_asset_did": SOURCE_ASSET_DID,
173
- "filename": DATA_PATH.name,
174
- "sha256": dataset_sha,
175
- }
176
- ],
177
- notebook_path=NOTEBOOK_PATH,
178
- notebook_asset_id=notebook_asset.asset_id,
179
- )
180
- history = model.fit(
181
- x_train,
182
- y_train,
183
- epochs=2,
184
- callbacks=[tracker.callback(training_parameters={"batch_size": 128})],
185
- )
186
- final = tracker.save_checkpoint(
187
- epoch=2,
188
- label="final",
189
- record_name="mnist-mlp",
190
- metrics={"test_accuracy": 0.91},
191
- training_parameters={"batch_size": 128, "epochs": 2},
192
- )
193
- ```
194
-
195
- System capture intentionally does not enumerate environment variables. It
196
- records OS/host, CPU and memory properties, TensorFlow-visible devices,
197
- optional NVML GPU memory, Python/framework/package versions, and only a small
198
- allowlist of determinism and thread settings.
199
-
200
78
  ## API reference
201
79
 
202
80
  ### `DataeraiClient(*, socket_path, binary_path, auto_start, start_timeout_s, request_timeout_s)`
@@ -216,11 +94,6 @@ Use as a context manager (`with DataeraiClient(...) as client:`) for automatic c
216
94
  | Method | Returns | Description |
217
95
  |---|---|---|
218
96
  | `auth_status()` | `AuthStatus` | Logged-in user ID, email, and token expiry; `user_id` is `None` with older daemons |
219
- | `list_tree()` | `list[TreeNode]` | List visible workspaces, projects, and collections |
220
- | `create_collection(title, *, owner_type, owner_id, parent_id=None)` | `Collection` | Create a collection |
221
- | `ensure_collection_path(path, *, create_project=False, project_description="")` | `CollectionDestination` | Resolve `Project / Collection / ...`, creating missing collection components and optionally the project |
222
- | `search_assets(query, ...)` | `AssetSearchPage` | Search one page of visible assets |
223
- | `find_assets(query, ...)` | `list[AssetSummary]` | Search and collect every result page |
224
97
  | `create_project(name, *, description="")` | `Project` | Create a project (+ root collection, owner membership, default allocation); requires write scope |
225
98
  | `upload(local_path, *, title, owner_type, owner_id, record_type=None, ...)` | `UploadResult` | Upload a file with an optional server-validated record type; blocks until complete |
226
99
  | `download(asset_id, dest_dir, ...)` | `DownloadResult` | Download latest asset content; blocks until complete |
@@ -3,25 +3,18 @@
3
3
  from ._version import __version__
4
4
  from .client import DataeraiClient
5
5
  from ._agent import DataeraiAgent, run_agent
6
- from ._errors import DaemonError, DaemonTimeoutError, TermsAcceptanceRequired
6
+ from ._errors import DaemonError, DaemonTimeoutError
7
7
  from ._types import (
8
8
  AssetMetadata,
9
- AssetSearchPage,
10
- AssetSummary,
11
9
  AuthStatus,
12
- Collection,
13
- CollectionDestination,
14
10
  CollectionDownloadResult,
15
11
  DownloadedFile,
16
12
  DownloadResult,
17
13
  Project,
18
14
  ProgressEvent,
19
15
  Relationship,
20
- TreeNode,
21
16
  UploadResult,
22
17
  )
23
- from .notebook import NotebookSession, connect_notebook
24
- from .notebook_trace import NotebookExecutionTrace, NotebookTraceResult
25
18
 
26
19
  __all__ = [
27
20
  "__version__",
@@ -30,14 +23,8 @@ __all__ = [
30
23
  "run_agent",
31
24
  "DaemonError",
32
25
  "DaemonTimeoutError",
33
- "TermsAcceptanceRequired",
34
26
  "AuthStatus",
35
27
  "Project",
36
- "Collection",
37
- "TreeNode",
38
- "CollectionDestination",
39
- "AssetSummary",
40
- "AssetSearchPage",
41
28
  "Relationship",
42
29
  "UploadResult",
43
30
  "DownloadedFile",
@@ -45,8 +32,4 @@ __all__ = [
45
32
  "CollectionDownloadResult",
46
33
  "ProgressEvent",
47
34
  "AssetMetadata",
48
- "NotebookSession",
49
- "NotebookExecutionTrace",
50
- "NotebookTraceResult",
51
- "connect_notebook",
52
35
  ]
@@ -3,39 +3,23 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  import os
6
- import re
7
6
  import subprocess
8
- import sys
9
7
  import tempfile
10
8
  import time
11
9
  from pathlib import Path
12
10
 
13
- from ._transport import endpoint_exists
14
-
15
11
 
16
12
  def default_socket_path() -> str:
17
- """Return the default daemon IPC endpoint for this platform.
13
+ """Return the default Unix socket path.
18
14
 
19
15
  Resolution order:
20
16
  1. ``$DATAERAI_SOCKET`` environment variable
21
- 2. Windows: ``\\\\.\\pipe\\dataerai-transfer-<USERNAME>`` (a named pipe —
22
- the daemon has no usable AF_UNIX transport there)
23
- 3. ``$XDG_RUNTIME_DIR/dataerai-transfer.sock`` (Linux / systemd)
24
- 4. ``<tempdir>/dataerai-transfer.sock`` (macOS and other platforms)
25
-
26
- The Windows derivation is kept in lockstep with the daemon's own default
27
- (``cli/cmd/dataerai-transfer/main.go`` ``defaultSocketPath``) and the Node
28
- SDK (``sdk/nodejs/src/daemon.ts``): same ``USERNAME`` source, same
29
- ``[^A-Za-z0-9._-] -> _`` sanitisation, so all three resolve to one pipe.
17
+ 2. ``$XDG_RUNTIME_DIR/dataerai-transfer.sock`` (Linux / systemd)
18
+ 3. ``<tempdir>/dataerai-transfer.sock`` (macOS and other platforms)
30
19
  """
31
20
  env = os.environ.get("DATAERAI_SOCKET")
32
21
  if env:
33
22
  return env
34
- if sys.platform == "win32":
35
- # Per-user suffix so concurrent Windows sessions do not collide in the
36
- # machine-global pipe namespace.
37
- user = re.sub(r"[^A-Za-z0-9._-]", "_", os.environ.get("USERNAME") or "default")
38
- return rf"\\.\pipe\dataerai-transfer-{user}"
39
23
  xdg = os.environ.get("XDG_RUNTIME_DIR")
40
24
  if xdg:
41
25
  return str(Path(xdg) / "dataerai-transfer.sock")
@@ -59,15 +43,12 @@ def spawn_daemon(binary_path: str, socket_path: str) -> subprocess.Popen:
59
43
 
60
44
 
61
45
  def wait_for_socket(socket_path: str, timeout_s: float = 10.0) -> None:
62
- """Poll until the daemon endpoint at *socket_path* is available.
46
+ """Poll until *socket_path* exists or *timeout_s* elapses.
63
47
 
64
- Raises :class:`TimeoutError` if it does not appear in time. On POSIX
65
- "available" means the AF_UNIX socket file exists; on Windows a named pipe is
66
- not in the filesystem namespace, so ``endpoint_exists`` probes for a live
67
- listener instead (see :func:`dataerai._transport.endpoint_exists`).
48
+ Raises :class:`TimeoutError` if the socket does not appear in time.
68
49
  """
69
50
  deadline = time.monotonic() + timeout_s
70
- while not endpoint_exists(socket_path):
51
+ while not Path(socket_path).exists():
71
52
  if time.monotonic() >= deadline:
72
53
  raise TimeoutError(
73
54
  f"Daemon socket '{socket_path}' not available after {timeout_s:.0f}s. "
@@ -0,0 +1,17 @@
1
+ from __future__ import annotations
2
+
3
+
4
+ class DaemonError(Exception):
5
+ """Raised when the daemon returns a coded error response."""
6
+
7
+ def __init__(self, code: str, message: str) -> None:
8
+ super().__init__(message)
9
+ self.code = code
10
+ self.message = message
11
+
12
+ def __repr__(self) -> str: # pragma: no cover
13
+ return f"DaemonError(code={self.code!r}, message={self.message!r})"
14
+
15
+
16
+ class DaemonTimeoutError(TimeoutError):
17
+ """Raised when a request to the daemon (or a transfer) exceeds its timeout."""
@@ -4,7 +4,7 @@ from __future__ import annotations
4
4
 
5
5
  from dataclasses import dataclass, field
6
6
  from datetime import datetime
7
- from typing import Any, Optional
7
+ from typing import Any, Callable, Optional
8
8
 
9
9
 
10
10
  # ─── Auth ─────────────────────────────────────────────────────────────────────
@@ -39,67 +39,6 @@ class Project:
39
39
  created_at: Optional[str] = None
40
40
 
41
41
 
42
- # ─── Project tree and collections ─────────────────────────────────────────────
43
-
44
-
45
- @dataclass
46
- class Collection:
47
- """A collection returned by the project-tree and create APIs."""
48
-
49
- collection_id: str
50
- title: str
51
- parent_id: Optional[str] = None
52
- owner_user_id: Optional[str] = None
53
- owner_project_id: Optional[str] = None
54
- is_root: bool = False
55
-
56
-
57
- @dataclass
58
- class TreeNode:
59
- """A user workspace or project in :meth:`DataeraiClient.list_tree`."""
60
-
61
- type: str
62
- id: str
63
- name: str
64
- root_collection_id: Optional[str] = None
65
- collections: list[Collection] = field(default_factory=list)
66
-
67
-
68
- @dataclass
69
- class CollectionDestination:
70
- """A name-resolved project collection created by ``ensure_collection_path``."""
71
-
72
- path: str
73
- project_id: str
74
- project_name: str
75
- collection_id: str
76
-
77
-
78
- # ─── Asset search ──────────────────────────────────────────────────────────────
79
-
80
-
81
- @dataclass
82
- class AssetSummary:
83
- """One asset returned by collection listing or global search."""
84
-
85
- asset_id: str
86
- title: str
87
- alias: Optional[str] = None
88
- record_type: Optional[str] = None
89
- size_bytes: int = 0
90
- has_content: bool = False
91
- updated_at: Optional[str] = None
92
-
93
-
94
- @dataclass
95
- class AssetSearchPage:
96
- """One page returned by :meth:`DataeraiClient.search_assets`."""
97
-
98
- assets: list[AssetSummary] = field(default_factory=list)
99
- has_more: bool = False
100
- next_cursor: Optional[str] = None
101
-
102
-
103
42
  # ─── Provenance relationship ────────────────────────────────────────────────────
104
43
 
105
44
 
@@ -9,4 +9,4 @@ See ``packaging/version.py`` (the ``compute_version`` brain) and
9
9
  ``doc/runbooks/20260616_SDK_CLI_PyPI_Release_Runbook.md``.
10
10
  """
11
11
 
12
- __version__ = "0.2.0b20"
12
+ __version__ = "0.2.0.dev1"