nominal-api 0.944.2__tar.gz → 0.946.0__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 (89) hide show
  1. {nominal_api-0.944.2 → nominal_api-0.946.0}/PKG-INFO +1 -1
  2. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/__init__.py +2 -1
  3. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/_impl.py +183 -0
  4. nominal_api-0.946.0/nominal_api/ingest_manifest/__init__.py +17 -0
  5. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api.egg-info/PKG-INFO +1 -1
  6. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api.egg-info/SOURCES.txt +1 -0
  7. {nominal_api-0.944.2 → nominal_api-0.946.0}/setup.py +1 -1
  8. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/api/__init__.py +0 -0
  9. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/api_ids/__init__.py +0 -0
  10. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/api_rids/__init__.py +0 -0
  11. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/attachments_api/__init__.py +0 -0
  12. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/authentication_api/__init__.py +0 -0
  13. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/authorization/__init__.py +0 -0
  14. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/comments_api/__init__.py +0 -0
  15. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/connect_download/__init__.py +0 -0
  16. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/datasource/__init__.py +0 -0
  17. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/datasource_api/__init__.py +0 -0
  18. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/datasource_logset/__init__.py +0 -0
  19. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/datasource_logset_api/__init__.py +0 -0
  20. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/datasource_pagination_api/__init__.py +0 -0
  21. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/event/__init__.py +0 -0
  22. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/ingest_api/__init__.py +0 -0
  23. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/ingest_workflow_api/__init__.py +0 -0
  24. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/module/__init__.py +0 -0
  25. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/module_internal/__init__.py +0 -0
  26. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/modules_api/__init__.py +0 -0
  27. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/persistent_compute_api/__init__.py +0 -0
  28. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/py.typed +0 -0
  29. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/scout/__init__.py +0 -0
  30. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/scout_api/__init__.py +0 -0
  31. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/scout_asset_api/__init__.py +0 -0
  32. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/scout_assets/__init__.py +0 -0
  33. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/scout_catalog/__init__.py +0 -0
  34. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/scout_channelvariables_api/__init__.py +0 -0
  35. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/scout_chart_api/__init__.py +0 -0
  36. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/scout_chartdefinition_api/__init__.py +0 -0
  37. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/scout_checklistexecution_api/__init__.py +0 -0
  38. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/scout_checks_api/__init__.py +0 -0
  39. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/scout_comparisonnotebook_api/__init__.py +0 -0
  40. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/scout_comparisonrun_api/__init__.py +0 -0
  41. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/scout_compute_api/__init__.py +0 -0
  42. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/scout_compute_api_deprecated/__init__.py +0 -0
  43. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/scout_compute_resolved_api/__init__.py +0 -0
  44. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/scout_dataexport_api/__init__.py +0 -0
  45. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/scout_datareview_api/__init__.py +0 -0
  46. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/scout_datasource/__init__.py +0 -0
  47. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/scout_datasource_connection/__init__.py +0 -0
  48. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/scout_datasource_connection_api/__init__.py +0 -0
  49. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/scout_datasource_connection_api_influx/__init__.py +0 -0
  50. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/scout_favorites/__init__.py +0 -0
  51. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/scout_favorites_api/__init__.py +0 -0
  52. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/scout_integrations_api/__init__.py +0 -0
  53. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/scout_internal_search_api/__init__.py +0 -0
  54. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/scout_jobs_api/__init__.py +0 -0
  55. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/scout_layout_api/__init__.py +0 -0
  56. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/scout_metadata/__init__.py +0 -0
  57. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/scout_notebook_api/__init__.py +0 -0
  58. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/scout_plotting/__init__.py +0 -0
  59. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/scout_rids_api/__init__.py +0 -0
  60. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/scout_run_api/__init__.py +0 -0
  61. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/scout_savedviews/__init__.py +0 -0
  62. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/scout_savedviews_api/__init__.py +0 -0
  63. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/scout_template_api/__init__.py +0 -0
  64. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/scout_units_api/__init__.py +0 -0
  65. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/scout_versioning_api/__init__.py +0 -0
  66. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/scout_video/__init__.py +0 -0
  67. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/scout_video_api/__init__.py +0 -0
  68. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/scout_workbookcommon_api/__init__.py +0 -0
  69. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/secrets_api/__init__.py +0 -0
  70. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/security_api_workspace/__init__.py +0 -0
  71. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/storage_datasource_api/__init__.py +0 -0
  72. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/storage_deletion_api/__init__.py +0 -0
  73. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/storage_series_api/__init__.py +0 -0
  74. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/storage_writer_api/__init__.py +0 -0
  75. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/themes_api/__init__.py +0 -0
  76. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/timeseries_channelmetadata/__init__.py +0 -0
  77. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/timeseries_channelmetadata_api/__init__.py +0 -0
  78. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/timeseries_logicalseries/__init__.py +0 -0
  79. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/timeseries_logicalseries_api/__init__.py +0 -0
  80. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/timeseries_metadata/__init__.py +0 -0
  81. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/timeseries_metadata_api/__init__.py +0 -0
  82. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/timeseries_seriescache/__init__.py +0 -0
  83. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/timeseries_seriescache_api/__init__.py +0 -0
  84. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/upload_api/__init__.py +0 -0
  85. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api/usercreation_api/__init__.py +0 -0
  86. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api.egg-info/dependency_links.txt +0 -0
  87. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api.egg-info/requires.txt +0 -0
  88. {nominal_api-0.944.2 → nominal_api-0.946.0}/nominal_api.egg-info/top_level.txt +0 -0
  89. {nominal_api-0.944.2 → nominal_api-0.946.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nominal-api
3
- Version: 0.944.2
3
+ Version: 0.946.0
4
4
  Requires-Python: >=3.8
5
5
  Requires-Dist: requests
6
6
  Requires-Dist: conjure-python-client<4,>=2.8.0
@@ -15,6 +15,7 @@ __all__ = [
15
15
  'datasource_pagination_api',
16
16
  'event',
17
17
  'ingest_api',
18
+ 'ingest_manifest',
18
19
  'ingest_workflow_api',
19
20
  'module',
20
21
  'module_internal',
@@ -81,5 +82,5 @@ __all__ = [
81
82
 
82
83
  __conjure_generator_version__ = "4.17.0"
83
84
 
84
- __version__ = "0.944.2"
85
+ __version__ = "0.946.0"
85
86
 
@@ -9621,6 +9621,8 @@ class ingest_api_FileOutputFormat(ConjureEnumType):
9621
9621
  '''AVRO_STREAM'''
9622
9622
  JSON_L = 'JSON_L'
9623
9623
  '''JSON_L'''
9624
+ MANIFEST = 'MANIFEST'
9625
+ '''MANIFEST'''
9624
9626
  UNKNOWN = 'UNKNOWN'
9625
9627
  '''UNKNOWN'''
9626
9628
 
@@ -13517,6 +13519,187 @@ ingest_api_VideoTimestampManifestVisitor.__qualname__ = "VideoTimestampManifestV
13517
13519
  ingest_api_VideoTimestampManifestVisitor.__module__ = "nominal_api.ingest_api"
13518
13520
 
13519
13521
 
13522
+ class ingest_manifest_ExtractorManifest(ConjureBeanType):
13523
+ """Manifest file produced by containerized extractors to describe their outputs.
13524
+ This is written as manifest.yaml in the OUTPUT_DIR by the container.
13525
+ """
13526
+
13527
+ @builtins.classmethod
13528
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
13529
+ return {
13530
+ 'outputs': ConjureFieldDefinition('outputs', List[ingest_manifest_ManifestOutput])
13531
+ }
13532
+
13533
+ __slots__: List[str] = ['_outputs']
13534
+
13535
+ def __init__(self, outputs: List["ingest_manifest_ManifestOutput"]) -> None:
13536
+ self._outputs = outputs
13537
+
13538
+ @builtins.property
13539
+ def outputs(self) -> List["ingest_manifest_ManifestOutput"]:
13540
+ """List of output files produced by the extractor
13541
+ """
13542
+ return self._outputs
13543
+
13544
+
13545
+ ingest_manifest_ExtractorManifest.__name__ = "ExtractorManifest"
13546
+ ingest_manifest_ExtractorManifest.__qualname__ = "ExtractorManifest"
13547
+ ingest_manifest_ExtractorManifest.__module__ = "nominal_api.ingest_manifest"
13548
+
13549
+
13550
+ class ingest_manifest_ExtractorUploadMetadata(ConjureBeanType):
13551
+ """Metadata file created by yeeter after uploading extractor outputs to S3.
13552
+ This is uploaded to S3 by yeeter and read by the Temporal activity to orchestrate ingestion.
13553
+ """
13554
+
13555
+ @builtins.classmethod
13556
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
13557
+ return {
13558
+ 'uploads': ConjureFieldDefinition('uploads', List[ingest_manifest_UploadMetadata])
13559
+ }
13560
+
13561
+ __slots__: List[str] = ['_uploads']
13562
+
13563
+ def __init__(self, uploads: List["ingest_manifest_UploadMetadata"]) -> None:
13564
+ self._uploads = uploads
13565
+
13566
+ @builtins.property
13567
+ def uploads(self) -> List["ingest_manifest_UploadMetadata"]:
13568
+ """List of uploaded files with their S3 locations and manifest metadata
13569
+ """
13570
+ return self._uploads
13571
+
13572
+
13573
+ ingest_manifest_ExtractorUploadMetadata.__name__ = "ExtractorUploadMetadata"
13574
+ ingest_manifest_ExtractorUploadMetadata.__qualname__ = "ExtractorUploadMetadata"
13575
+ ingest_manifest_ExtractorUploadMetadata.__module__ = "nominal_api.ingest_manifest"
13576
+
13577
+
13578
+ class ingest_manifest_ManifestIngestType(ConjureEnumType):
13579
+ """Supported ingest types for containerized extractor outputs.
13580
+ """
13581
+
13582
+ PARQUET = 'PARQUET'
13583
+ '''PARQUET'''
13584
+ CSV = 'CSV'
13585
+ '''CSV'''
13586
+ PARQUET_TAR = 'PARQUET_TAR'
13587
+ '''PARQUET_TAR'''
13588
+ AVRO_STREAM = 'AVRO_STREAM'
13589
+ '''AVRO_STREAM'''
13590
+ JSON_L = 'JSON_L'
13591
+ '''JSON_L'''
13592
+ UNKNOWN = 'UNKNOWN'
13593
+ '''UNKNOWN'''
13594
+
13595
+ def __reduce_ex__(self, proto):
13596
+ return self.__class__, (self.name,)
13597
+
13598
+
13599
+ ingest_manifest_ManifestIngestType.__name__ = "ManifestIngestType"
13600
+ ingest_manifest_ManifestIngestType.__qualname__ = "ManifestIngestType"
13601
+ ingest_manifest_ManifestIngestType.__module__ = "nominal_api.ingest_manifest"
13602
+
13603
+
13604
+ class ingest_manifest_ManifestOutput(ConjureBeanType):
13605
+ """Describes a single output file from a containerized extractor.
13606
+ This is written by the container in manifest.yaml.
13607
+ """
13608
+
13609
+ @builtins.classmethod
13610
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
13611
+ return {
13612
+ 'ingest_type': ConjureFieldDefinition('ingestType', ingest_manifest_ManifestIngestType),
13613
+ 'relative_path': ConjureFieldDefinition('relativePath', str),
13614
+ 'tag_columns': ConjureFieldDefinition('tagColumns', Dict[str, str]),
13615
+ 'channel_prefix': ConjureFieldDefinition('channelPrefix', OptionalTypeWrapper[str])
13616
+ }
13617
+
13618
+ __slots__: List[str] = ['_ingest_type', '_relative_path', '_tag_columns', '_channel_prefix']
13619
+
13620
+ def __init__(self, ingest_type: "ingest_manifest_ManifestIngestType", relative_path: str, tag_columns: Dict[str, str], channel_prefix: Optional[str] = None) -> None:
13621
+ self._ingest_type = ingest_type
13622
+ self._relative_path = relative_path
13623
+ self._tag_columns = tag_columns
13624
+ self._channel_prefix = channel_prefix
13625
+
13626
+ @builtins.property
13627
+ def ingest_type(self) -> "ingest_manifest_ManifestIngestType":
13628
+ """The type of ingestion for this output file
13629
+ """
13630
+ return self._ingest_type
13631
+
13632
+ @builtins.property
13633
+ def relative_path(self) -> str:
13634
+ """Relative path to the output file within OUTPUT_DIR.
13635
+ Example: "telemetry.csv" or "data/sensor_readings.parquet"
13636
+ """
13637
+ return self._relative_path
13638
+
13639
+ @builtins.property
13640
+ def tag_columns(self) -> Dict[str, str]:
13641
+ """Optional mapping of tag names to column names for CSV/Parquet ingestion.
13642
+ Example: {"vehicle_id": "veh_id", "mission_id": "msn_id"}
13643
+ """
13644
+ return self._tag_columns
13645
+
13646
+ @builtins.property
13647
+ def channel_prefix(self) -> Optional[str]:
13648
+ """Optional prefix to prepend to channel names during ingestion.
13649
+ Example: "telemetry/" would create channels like "telemetry/speed", "telemetry/altitude"
13650
+ """
13651
+ return self._channel_prefix
13652
+
13653
+
13654
+ ingest_manifest_ManifestOutput.__name__ = "ManifestOutput"
13655
+ ingest_manifest_ManifestOutput.__qualname__ = "ManifestOutput"
13656
+ ingest_manifest_ManifestOutput.__module__ = "nominal_api.ingest_manifest"
13657
+
13658
+
13659
+ class ingest_manifest_UploadMetadata(ConjureBeanType):
13660
+ """Metadata about a single file uploaded to S3 by yeeter.
13661
+ Enriches the original manifest entry with S3 upload information.
13662
+ """
13663
+
13664
+ @builtins.classmethod
13665
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
13666
+ return {
13667
+ 's3_key': ConjureFieldDefinition('s3Key', str),
13668
+ 's3_bucket': ConjureFieldDefinition('s3Bucket', str),
13669
+ 'manifest_output': ConjureFieldDefinition('manifestOutput', ingest_manifest_ManifestOutput)
13670
+ }
13671
+
13672
+ __slots__: List[str] = ['_s3_key', '_s3_bucket', '_manifest_output']
13673
+
13674
+ def __init__(self, manifest_output: "ingest_manifest_ManifestOutput", s3_bucket: str, s3_key: str) -> None:
13675
+ self._s3_key = s3_key
13676
+ self._s3_bucket = s3_bucket
13677
+ self._manifest_output = manifest_output
13678
+
13679
+ @builtins.property
13680
+ def s3_key(self) -> str:
13681
+ """Full S3 key where the file was uploaded
13682
+ """
13683
+ return self._s3_key
13684
+
13685
+ @builtins.property
13686
+ def s3_bucket(self) -> str:
13687
+ """S3 bucket name where the file was uploaded
13688
+ """
13689
+ return self._s3_bucket
13690
+
13691
+ @builtins.property
13692
+ def manifest_output(self) -> "ingest_manifest_ManifestOutput":
13693
+ """The original manifest entry from the container's manifest.yaml
13694
+ """
13695
+ return self._manifest_output
13696
+
13697
+
13698
+ ingest_manifest_UploadMetadata.__name__ = "UploadMetadata"
13699
+ ingest_manifest_UploadMetadata.__qualname__ = "UploadMetadata"
13700
+ ingest_manifest_UploadMetadata.__module__ = "nominal_api.ingest_manifest"
13701
+
13702
+
13520
13703
  class ingest_workflow_api_CreateIngestJobRequest(ConjureBeanType):
13521
13704
 
13522
13705
  @builtins.classmethod
@@ -0,0 +1,17 @@
1
+ # coding=utf-8
2
+ from .._impl import (
3
+ ingest_manifest_ExtractorManifest as ExtractorManifest,
4
+ ingest_manifest_ExtractorUploadMetadata as ExtractorUploadMetadata,
5
+ ingest_manifest_ManifestIngestType as ManifestIngestType,
6
+ ingest_manifest_ManifestOutput as ManifestOutput,
7
+ ingest_manifest_UploadMetadata as UploadMetadata,
8
+ )
9
+
10
+ __all__ = [
11
+ 'ExtractorManifest',
12
+ 'ExtractorUploadMetadata',
13
+ 'ManifestIngestType',
14
+ 'ManifestOutput',
15
+ 'UploadMetadata',
16
+ ]
17
+
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nominal-api
3
- Version: 0.944.2
3
+ Version: 0.946.0
4
4
  Requires-Python: >=3.8
5
5
  Requires-Dist: requests
6
6
  Requires-Dist: conjure-python-client<4,>=2.8.0
@@ -22,6 +22,7 @@ nominal_api/datasource_logset_api/__init__.py
22
22
  nominal_api/datasource_pagination_api/__init__.py
23
23
  nominal_api/event/__init__.py
24
24
  nominal_api/ingest_api/__init__.py
25
+ nominal_api/ingest_manifest/__init__.py
25
26
  nominal_api/ingest_workflow_api/__init__.py
26
27
  nominal_api/module/__init__.py
27
28
  nominal_api/module_internal/__init__.py
@@ -6,7 +6,7 @@ from setuptools import (
6
6
 
7
7
  setup(
8
8
  name='nominal-api',
9
- version='0.944.2',
9
+ version='0.946.0',
10
10
  python_requires='>=3.8',
11
11
  package_data={"": ["py.typed"]},
12
12
  packages=find_packages(),
File without changes