tracdap-runtime 0.6.0rc2__tar.gz → 0.6.0rc3__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 (107) hide show
  1. {tracdap-runtime-0.6.0rc2/tracdap_runtime.egg-info → tracdap_runtime-0.6.0rc3}/PKG-INFO +24 -23
  2. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/README.md +4 -4
  3. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/setup.cfg +20 -19
  4. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/_impl/data.py +53 -16
  5. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/_version.py +1 -1
  6. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/config/__init__.py +11 -16
  7. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/config/common.py +10 -0
  8. tracdap_runtime-0.6.0rc3/src/tracdap/rt/config/common_pb2.py +55 -0
  9. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/config/job_pb2.py +21 -20
  10. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/config/platform.py +60 -25
  11. tracdap_runtime-0.6.0rc3/src/tracdap/rt/config/platform_pb2.py +71 -0
  12. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/config/result_pb2.py +15 -14
  13. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/config/runtime.py +0 -1
  14. tracdap_runtime-0.6.0rc3/src/tracdap/rt/config/runtime_pb2.py +42 -0
  15. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/metadata/common_pb2.py +15 -14
  16. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/metadata/custom_pb2.py +9 -8
  17. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/metadata/data_pb2.py +31 -30
  18. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/metadata/file_pb2.py +9 -8
  19. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/metadata/flow_pb2.py +33 -32
  20. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/metadata/job_pb2.py +55 -54
  21. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/metadata/model_pb2.py +31 -30
  22. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/metadata/object_id_pb2.py +13 -12
  23. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/metadata/object_pb2.py +9 -8
  24. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/metadata/search_pb2.py +19 -18
  25. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/metadata/stoarge_pb2.py +31 -30
  26. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/metadata/tag_pb2.py +13 -12
  27. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/metadata/tag_update_pb2.py +11 -10
  28. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/metadata/type_pb2.py +29 -28
  29. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3/tracdap_runtime.egg-info}/PKG-INFO +24 -23
  30. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/tracdap_runtime.egg-info/SOURCES.txt +0 -2
  31. tracdap_runtime-0.6.0rc3/tracdap_runtime.egg-info/requires.txt +26 -0
  32. tracdap-runtime-0.6.0rc2/src/tracdap/rt/config/common_pb2.py +0 -48
  33. tracdap-runtime-0.6.0rc2/src/tracdap/rt/config/gateway.py +0 -104
  34. tracdap-runtime-0.6.0rc2/src/tracdap/rt/config/gateway_pb2.py +0 -45
  35. tracdap-runtime-0.6.0rc2/src/tracdap/rt/config/platform_pb2.py +0 -64
  36. tracdap-runtime-0.6.0rc2/src/tracdap/rt/config/runtime_pb2.py +0 -42
  37. tracdap-runtime-0.6.0rc2/tracdap_runtime.egg-info/requires.txt +0 -25
  38. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/LICENSE +0 -0
  39. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/pyproject.toml +0 -0
  40. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/__init__.py +0 -0
  41. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/_exec/__init__.py +0 -0
  42. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/_exec/actors.py +0 -0
  43. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/_exec/context.py +0 -0
  44. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/_exec/dev_mode.py +0 -0
  45. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/_exec/engine.py +0 -0
  46. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/_exec/functions.py +0 -0
  47. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/_exec/graph.py +0 -0
  48. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/_exec/graph_builder.py +0 -0
  49. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/_exec/runtime.py +0 -0
  50. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/_impl/__init__.py +0 -0
  51. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/_impl/config_parser.py +0 -0
  52. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/_impl/guard_rails.py +0 -0
  53. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/_impl/models.py +0 -0
  54. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/_impl/repos.py +0 -0
  55. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/_impl/schemas.py +0 -0
  56. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/_impl/shim.py +0 -0
  57. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/_impl/static_api.py +0 -0
  58. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/_impl/storage.py +0 -0
  59. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/_impl/type_system.py +0 -0
  60. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/_impl/util.py +0 -0
  61. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/_impl/validation.py +0 -0
  62. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/_plugins/__init__.py +0 -0
  63. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/_plugins/_helpers.py +0 -0
  64. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/_plugins/format_arrow.py +0 -0
  65. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/_plugins/format_csv.py +0 -0
  66. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/_plugins/format_parquet.py +0 -0
  67. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/_plugins/repo_git.py +0 -0
  68. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/_plugins/repo_local.py +0 -0
  69. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/_plugins/repo_pypi.py +0 -0
  70. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/_plugins/storage_aws.py +0 -0
  71. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/_plugins/storage_azure.py +0 -0
  72. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/_plugins/storage_gcp.py +0 -0
  73. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/_plugins/storage_local.py +0 -0
  74. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/api/__init__.py +0 -0
  75. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/api/hook.py +0 -0
  76. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/api/model_api.py +0 -0
  77. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/api/static_api.py +0 -0
  78. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/config/job.py +0 -0
  79. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/config/result.py +0 -0
  80. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/exceptions.py +0 -0
  81. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/ext/__init__.py +0 -0
  82. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/ext/_guard.py +0 -0
  83. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/ext/embed.py +0 -0
  84. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/ext/plugins.py +0 -0
  85. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/ext/repos.py +0 -0
  86. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/ext/storage.py +0 -0
  87. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/launch/__init__.py +0 -0
  88. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/launch/__main__.py +0 -0
  89. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/launch/cli.py +0 -0
  90. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/launch/launch.py +0 -0
  91. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/metadata/__init__.py +8 -8
  92. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/metadata/common.py +0 -0
  93. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/metadata/custom.py +0 -0
  94. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/metadata/data.py +0 -0
  95. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/metadata/file.py +0 -0
  96. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/metadata/flow.py +0 -0
  97. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/metadata/job.py +0 -0
  98. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/metadata/model.py +0 -0
  99. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/metadata/object.py +0 -0
  100. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/metadata/object_id.py +0 -0
  101. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/metadata/search.py +0 -0
  102. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/metadata/stoarge.py +0 -0
  103. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/metadata/tag.py +0 -0
  104. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/metadata/tag_update.py +0 -0
  105. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/src/tracdap/rt/metadata/type.py +0 -0
  106. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/tracdap_runtime.egg-info/dependency_links.txt +0 -0
  107. {tracdap-runtime-0.6.0rc2 → tracdap_runtime-0.6.0rc3}/tracdap_runtime.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: tracdap-runtime
3
- Version: 0.6.0rc2
3
+ Version: 0.6.0rc3
4
4
  Summary: Runtime package for building models on the TRAC Data & Analytics Platform
5
5
  Home-page: https://tracdap.finos.org/
6
6
  Author: Martin Traverse
@@ -13,30 +13,31 @@ Platform: any
13
13
  Classifier: Programming Language :: Python :: 3
14
14
  Classifier: License :: OSI Approved :: Apache Software License
15
15
  Classifier: Operating System :: OS Independent
16
- Requires-Python: <3.12,>=3.8
16
+ Requires-Python: <3.13,>=3.8
17
17
  Description-Content-Type: text/markdown
18
18
  License-File: LICENSE
19
- Requires-Dist: protobuf==4.23.2
20
- Requires-Dist: pyarrow==13.0.0
21
- Requires-Dist: pyyaml==6.0.0
22
- Requires-Dist: dulwich==0.21.5
23
- Requires-Dist: requests==2.31.0
24
- Requires-Dist: pandas<1.6.0,>=1.2.0
19
+ Requires-Dist: protobuf==4.25.3
20
+ Requires-Dist: pyarrow==16.0.0
21
+ Requires-Dist: pyyaml==6.0.1
22
+ Requires-Dist: dulwich==0.22.1
23
+ Requires-Dist: requests==2.32.3
24
+ Requires-Dist: pandas<2.2.0,>=1.2.0
25
+ Requires-Dist: numpy<2.0.0
25
26
  Provides-Extra: spark
26
- Requires-Dist: pyspark<3.5.0,>=3.0.0; extra == "spark"
27
+ Requires-Dist: pyspark<3.6.0,>=3.0.0; extra == "spark"
27
28
  Provides-Extra: aws
28
- Requires-Dist: botocore==1.29.156; extra == "aws"
29
- Requires-Dist: boto3==1.26.156; extra == "aws"
29
+ Requires-Dist: botocore==1.34.93; extra == "aws"
30
+ Requires-Dist: boto3==1.34.93; extra == "aws"
30
31
  Provides-Extra: gcp
31
- Requires-Dist: google-auth==2.20.0; extra == "gcp"
32
- Requires-Dist: google-cloud-core==2.3.2; extra == "gcp"
33
- Requires-Dist: google-cloud-storage==2.9.0; extra == "gcp"
34
- Requires-Dist: gcsfs==2023.6.0; extra == "gcp"
32
+ Requires-Dist: google-auth==2.29.0; extra == "gcp"
33
+ Requires-Dist: google-cloud-core==2.4.1; extra == "gcp"
34
+ Requires-Dist: google-cloud-storage==2.16.0; extra == "gcp"
35
+ Requires-Dist: gcsfs==2024.3.1; extra == "gcp"
35
36
  Provides-Extra: azure
36
- Requires-Dist: azure-core==1.26.4; extra == "azure"
37
- Requires-Dist: azure-identity==1.13.0; extra == "azure"
38
- Requires-Dist: azure-storage-blob==12.16.0; extra == "azure"
39
- Requires-Dist: adlfs==2023.4.0; extra == "azure"
37
+ Requires-Dist: azure-core==1.30.1; extra == "azure"
38
+ Requires-Dist: azure-identity==1.16.1; extra == "azure"
39
+ Requires-Dist: azure-storage-blob==12.19.1; extra == "azure"
40
+ Requires-Dist: adlfs==2024.4.1; extra == "azure"
40
41
 
41
42
  # TRAC Model Runtime for Python
42
43
 
@@ -56,12 +57,12 @@ Documentation for the TRAC platform is available on our website at
56
57
 
57
58
  The TRAC runtime for Python has these requirements:
58
59
 
59
- * Python: 3.8 up to 3.11.x
60
- * Pandas: 1.2 up to 1.5.x
61
- * PySpark 3.0 up to 3.4.x (optional)
60
+ * Python: 3.8 up to 3.12
61
+ * Pandas: 1.2 up to 2.1
62
+ * PySpark 3.0 up to 3.5 (optional)
62
63
 
63
64
  3rd party libraries may impose additional constraints on supported versions of Python, Pandas or PySpark.
64
-
65
+ As of February 2024, the Python libraries for GCP do not yet support Python 3.12.
65
66
 
66
67
  ## Installing the runtime
67
68
 
@@ -16,12 +16,12 @@ Documentation for the TRAC platform is available on our website at
16
16
 
17
17
  The TRAC runtime for Python has these requirements:
18
18
 
19
- * Python: 3.8 up to 3.11.x
20
- * Pandas: 1.2 up to 1.5.x
21
- * PySpark 3.0 up to 3.4.x (optional)
19
+ * Python: 3.8 up to 3.12
20
+ * Pandas: 1.2 up to 2.1
21
+ * PySpark 3.0 up to 3.5 (optional)
22
22
 
23
23
  3rd party libraries may impose additional constraints on supported versions of Python, Pandas or PySpark.
24
-
24
+ As of February 2024, the Python libraries for GCP do not yet support Python 3.12.
25
25
 
26
26
  ## Installing the runtime
27
27
 
@@ -1,6 +1,6 @@
1
1
  [metadata]
2
2
  name = tracdap-runtime
3
- version = 0.6.0rc2
3
+ version = 0.6.0rc3
4
4
  description = Runtime package for building models on the TRAC Data & Analytics Platform
5
5
  long_description = file: README.md
6
6
  long_description_content_type = text/markdown
@@ -32,32 +32,33 @@ packages =
32
32
  package_dir =
33
33
  tracdap = src/tracdap
34
34
  tracdap.rt = src/tracdap/rt
35
- python_requires = >= 3.8, < 3.12
35
+ python_requires = >= 3.8, < 3.13
36
36
  install_requires =
37
- protobuf == 4.23.2
38
- pyarrow == 13.0.0
39
- pyyaml == 6.0.0
40
- dulwich == 0.21.5
41
- requests == 2.31.0
37
+ protobuf == 4.25.3
38
+ pyarrow == 16.0.0
39
+ pyyaml == 6.0.1
40
+ dulwich == 0.22.1
41
+ requests == 2.32.3
42
42
 
43
- pandas >= 1.2.0, < 1.6.0
43
+ pandas >= 1.2.0, < 2.2.0
44
+ numpy < 2.0.0
44
45
 
45
46
  [options.extras_require]
46
47
  spark =
47
- pyspark >= 3.0.0, < 3.5.0
48
+ pyspark >= 3.0.0, < 3.6.0
48
49
  aws =
49
- botocore == 1.29.156
50
- boto3 == 1.26.156
50
+ botocore == 1.34.93
51
+ boto3 == 1.34.93
51
52
  gcp =
52
- google-auth == 2.20.0
53
- google-cloud-core == 2.3.2
54
- google-cloud-storage == 2.9.0
55
- gcsfs == 2023.6.0
53
+ google-auth == 2.29.0
54
+ google-cloud-core == 2.4.1
55
+ google-cloud-storage == 2.16.0
56
+ gcsfs == 2024.3.1
56
57
  azure =
57
- azure-core == 1.26.4
58
- azure-identity == 1.13.0
59
- azure-storage-blob == 12.16.0
60
- adlfs == 2023.4.0
58
+ azure-core == 1.30.1
59
+ azure-identity == 1.16.1
60
+ azure-storage-blob == 12.19.1
61
+ adlfs == 2024.4.1
61
62
 
62
63
  [egg_info]
63
64
  tag_build =
@@ -74,11 +74,7 @@ class DataView:
74
74
 
75
75
 
76
76
  class _DataInternal:
77
-
78
- @staticmethod
79
- def float_dtype_check():
80
- if "Float64Dtype" not in pd.__dict__:
81
- raise _ex.EStartup("TRAC D.A.P. requires Pandas >= 1.2")
77
+ pass
82
78
 
83
79
 
84
80
  class DataMapping:
@@ -111,8 +107,40 @@ class DataMapping:
111
107
  }
112
108
 
113
109
  # Check the Pandas dtypes for handling floats are available before setting up the type mapping
114
- __PANDAS_FLOAT_DTYPE_CHECK = _DataInternal.float_dtype_check()
115
- __PANDAS_DATETIME_TYPE = pd.to_datetime([]).dtype
110
+ __PANDAS_VERSION_ELEMENTS = pd.__version__.split(".")
111
+ __PANDAS_MAJOR_VERSION = int(__PANDAS_VERSION_ELEMENTS[0])
112
+ __PANDAS_MINOR_VERSION = int(__PANDAS_VERSION_ELEMENTS[1])
113
+
114
+ if __PANDAS_MAJOR_VERSION == 2:
115
+
116
+ __PANDAS_DATE_TYPE = pd.to_datetime([dt.date(2000, 1, 1)]).as_unit(__TRAC_TIMESTAMP_UNIT).dtype
117
+ __PANDAS_DATETIME_TYPE = pd.to_datetime([dt.datetime(2000, 1, 1, 0, 0, 0)]).as_unit(__TRAC_TIMESTAMP_UNIT).dtype
118
+
119
+ @classmethod
120
+ def __pandas_datetime_type(cls, tz, unit):
121
+ if tz is None and unit is None:
122
+ return cls.__PANDAS_DATETIME_TYPE
123
+ _unit = unit if unit is not None else cls.__TRAC_TIMESTAMP_UNIT
124
+ if tz is None:
125
+ return pd.to_datetime([dt.datetime(2000, 1, 1, 0, 0, 0)]).as_unit(_unit).dtype
126
+ else:
127
+ return pd.DatetimeTZDtype(tz=tz, unit=_unit)
128
+
129
+ # Minimum supported version for Pandas is 1.2, when pd.Float64Dtype was introduced
130
+ elif __PANDAS_MAJOR_VERSION == 1 and __PANDAS_MINOR_VERSION >= 2:
131
+
132
+ __PANDAS_DATE_TYPE = pd.to_datetime([dt.date(2000, 1, 1)]).dtype
133
+ __PANDAS_DATETIME_TYPE = pd.to_datetime([dt.datetime(2000, 1, 1, 0, 0, 0)]).dtype
134
+
135
+ @classmethod
136
+ def __pandas_datetime_type(cls, tz, unit): # noqa
137
+ if tz is None:
138
+ return cls.__PANDAS_DATETIME_TYPE
139
+ else:
140
+ return pd.DatetimeTZDtype(tz=tz)
141
+
142
+ else:
143
+ raise _ex.EStartup(f"Pandas version not supported: [{pd.__version__}]")
116
144
 
117
145
  # Only partial mapping is possible, decimal and temporal dtypes cannot be mapped this way
118
146
  __ARROW_TO_PANDAS_TYPE_MAPPING = {
@@ -224,8 +252,12 @@ class DataMapping:
224
252
  cls.__TRAC_DECIMAL_SCALE)
225
253
 
226
254
  @classmethod
227
- def pandas_datetime_type(cls):
228
- return cls.__PANDAS_DATETIME_TYPE
255
+ def pandas_date_type(cls):
256
+ return cls.__PANDAS_DATE_TYPE
257
+
258
+ @classmethod
259
+ def pandas_datetime_type(cls, tz=None, unit=None):
260
+ return cls.__pandas_datetime_type(tz, unit)
229
261
 
230
262
  @classmethod
231
263
  def view_to_pandas(
@@ -297,6 +329,7 @@ class DataMapping:
297
329
  else:
298
330
  DataConformance.check_duplicate_fields(table.schema.names, False)
299
331
 
332
+ # Use Arrow's built-in function to convert to Pandas
300
333
  return table.to_pandas(
301
334
 
302
335
  # Mapping for arrow -> pandas types for core types
@@ -463,7 +496,7 @@ class DataConformance:
463
496
 
464
497
  table_column: pa.Array = table.column(table_index)
465
498
 
466
- pandas_type = pandas_types[table_index] \
499
+ pandas_type = pandas_types.iloc[table_index] \
467
500
  if pandas_types is not None \
468
501
  else None
469
502
 
@@ -691,16 +724,20 @@ class DataConformance:
691
724
  @classmethod
692
725
  def _coerce_date(cls, vector: pa.Array, field: pa.Field, pandas_type=None) -> pa.Array:
693
726
 
694
- # Allow casting date32 -> date64, both range and precision are greater so there is no data loss
727
+ # The bit-width restriction could be removed here
728
+ # For date types there is never loss of precision and pa.cast will raise an error on overflow
729
+ # Impact to client code is unlikely, still this change should happen with a TRAC minor version update
695
730
  if pa.types.is_date(vector.type):
696
731
  if field.type.bit_width >= vector.type.bit_width:
697
732
  return pc.cast(vector, field.type)
698
733
 
699
- # Special handling for Pandas/NumPy date values
700
- # These are encoded as np.datetime64[ns] in Pandas -> pa.timestamp64[ns] in Arrow
701
- # Only allow this conversion if the vector is coming from Pandas with datetime type
702
- if pandas_type == DataMapping.pandas_datetime_type():
703
- if pa.types.is_timestamp(vector.type) and vector.type.unit == "ns":
734
+ # Special handling for date values coming from Pandas/NumPy
735
+ # Only allow these conversions if the vector is supplied with Pandas type info
736
+ # For Pandas 1.x, dates are always encoded as np.datetime64[ns]
737
+ # For Pandas 2.x dates are still np.datetime64 but can be in s, ms, us or ns
738
+ # This conversion will not apply to dates held in Pandas using the Python date object types
739
+ if pandas_type is not None:
740
+ if pa.types.is_timestamp(vector.type) and pd.api.types.is_datetime64_any_dtype(pandas_type):
704
741
  return pc.cast(vector, field.type)
705
742
 
706
743
  error_message = cls._format_error(cls.__E_WRONG_DATA_TYPE, vector, field)
@@ -12,4 +12,4 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
- __version__ = "0.6.0rc2"
15
+ __version__ = "0.6.0rc3"
@@ -4,32 +4,27 @@ from .common import _ConfigFile
4
4
  from .common import PluginConfig
5
5
  from .common import PlatformInfo
6
6
  from .common import AuthenticationConfig
7
+ from .common import StorageConfig
7
8
 
9
+ from .platform import RoutingProtocol
10
+ from .platform import DeploymentLayout
8
11
  from .platform import PlatformConfig
9
12
  from .platform import MetadataConfig
10
- from .platform import StorageConfig
11
13
  from .platform import TenantConfig
12
14
  from .platform import WebServerConfig
13
15
  from .platform import WebServerRewriteRule
14
16
  from .platform import WebServerRedirect
15
- from .platform import InstantMap
16
- from .platform import InstanceConfig
17
- from .platform import ServiceMap
17
+ from .platform import GatewayConfig
18
+ from .platform import RouteConfig
19
+ from .platform import RoutingMatch
20
+ from .platform import RoutingTarget
18
21
  from .platform import ServiceConfig
19
-
20
- from .runtime import RuntimeConfig
21
- from .runtime import SparkSettings
22
+ from .platform import DeploymentConfig
22
23
 
23
24
  from .result import TagUpdateList
24
25
  from .result import JobResult
25
26
 
26
- from .job import JobConfig
27
+ from .runtime import RuntimeConfig
28
+ from .runtime import SparkSettings
27
29
 
28
- from .gateway import GwProtocol
29
- from .gateway import GwRestMapping
30
- from .gateway import GatewayConfig
31
- from .gateway import GwRoute
32
- from .gateway import GwMatch
33
- from .gateway import GwTarget
34
- from .gateway import GwServiceMap
35
- from .gateway import GwService
30
+ from .job import JobConfig
@@ -56,3 +56,13 @@ class AuthenticationConfig:
56
56
  systemTicketDuration: int = None
57
57
 
58
58
  systemTicketRefresh: int = None
59
+
60
+
61
+ @_dc.dataclass
62
+ class StorageConfig:
63
+
64
+ buckets: _tp.Dict[str, PluginConfig] = _dc.field(default_factory=dict)
65
+
66
+ defaultBucket: str = None
67
+
68
+ defaultFormat: str = None
@@ -0,0 +1,55 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: tracdap/config/common.proto
4
+ # Protobuf Python Version: 4.25.3
5
+ """Generated protocol buffer code."""
6
+ from google.protobuf import descriptor as _descriptor
7
+ from google.protobuf import descriptor_pool as _descriptor_pool
8
+ from google.protobuf import symbol_database as _symbol_database
9
+ from google.protobuf.internal import builder as _builder
10
+ # @@protoc_insertion_point(imports)
11
+
12
+ _sym_db = _symbol_database.Default()
13
+
14
+
15
+
16
+
17
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1btracdap/config/common.proto\x12\x0etracdap.config\"u\n\x0b_ConfigFile\x12\x37\n\x06\x63onfig\x18\x01 \x03(\x0b\x32\'.tracdap.config._ConfigFile.ConfigEntry\x1a-\n\x0b\x43onfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x81\x02\n\x0cPluginConfig\x12\x10\n\x08protocol\x18\x01 \x01(\t\x12@\n\nproperties\x18\x02 \x03(\x0b\x32,.tracdap.config.PluginConfig.PropertiesEntry\x12:\n\x07secrets\x18\x03 \x03(\x0b\x32).tracdap.config.PluginConfig.SecretsEntry\x1a\x31\n\x0fPropertiesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a.\n\x0cSecretsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xb8\x01\n\x0cPlatformInfo\x12\x13\n\x0b\x65nvironment\x18\x01 \x01(\t\x12\x12\n\nproduction\x18\x02 \x01(\x08\x12H\n\x0e\x64\x65ploymentInfo\x18\x03 \x03(\x0b\x32\x30.tracdap.config.PlatformInfo.DeploymentInfoEntry\x1a\x35\n\x13\x44\x65ploymentInfoEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xba\x02\n\x14\x41uthenticationConfig\x12\x11\n\tjwtIssuer\x18\x01 \x01(\t\x12\x11\n\tjwtExpiry\x18\x02 \x01(\x11\x12\x10\n\x08jwtLimit\x18\x06 \x01(\x11\x12\x12\n\njwtRefresh\x18\x07 \x01(\x11\x12\x33\n\x08provider\x18\x03 \x01(\x0b\x32\x1c.tracdap.config.PluginConfigH\x00\x88\x01\x01\x12\x13\n\x0b\x64isableAuth\x18\x04 \x01(\x08\x12\x16\n\x0e\x64isableSigning\x18\x05 \x01(\x08\x12\x14\n\x0csystemUserId\x18\x08 \x01(\t\x12\x16\n\x0esystemUserName\x18\t \x01(\t\x12\x1c\n\x14systemTicketDuration\x18\n \x01(\x11\x12\x1b\n\x13systemTicketRefresh\x18\x0b \x01(\x11\x42\x0b\n\t_provider\"\xc8\x01\n\rStorageConfig\x12;\n\x07\x62uckets\x18\x01 \x03(\x0b\x32*.tracdap.config.StorageConfig.BucketsEntry\x12\x15\n\rdefaultBucket\x18\x02 \x01(\t\x12\x15\n\rdefaultFormat\x18\x03 \x01(\t\x1aL\n\x0c\x42ucketsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12+\n\x05value\x18\x02 \x01(\x0b\x32\x1c.tracdap.config.PluginConfig:\x02\x38\x01\x42\x1c\n\x18org.finos.tracdap.configP\x01\x62\x06proto3')
18
+
19
+ _globals = globals()
20
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
21
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'tracdap.config.common_pb2', _globals)
22
+ if _descriptor._USE_C_DESCRIPTORS == False:
23
+ _globals['DESCRIPTOR']._options = None
24
+ _globals['DESCRIPTOR']._serialized_options = b'\n\030org.finos.tracdap.configP\001'
25
+ _globals['__CONFIGFILE_CONFIGENTRY']._options = None
26
+ _globals['__CONFIGFILE_CONFIGENTRY']._serialized_options = b'8\001'
27
+ _globals['_PLUGINCONFIG_PROPERTIESENTRY']._options = None
28
+ _globals['_PLUGINCONFIG_PROPERTIESENTRY']._serialized_options = b'8\001'
29
+ _globals['_PLUGINCONFIG_SECRETSENTRY']._options = None
30
+ _globals['_PLUGINCONFIG_SECRETSENTRY']._serialized_options = b'8\001'
31
+ _globals['_PLATFORMINFO_DEPLOYMENTINFOENTRY']._options = None
32
+ _globals['_PLATFORMINFO_DEPLOYMENTINFOENTRY']._serialized_options = b'8\001'
33
+ _globals['_STORAGECONFIG_BUCKETSENTRY']._options = None
34
+ _globals['_STORAGECONFIG_BUCKETSENTRY']._serialized_options = b'8\001'
35
+ _globals['__CONFIGFILE']._serialized_start=47
36
+ _globals['__CONFIGFILE']._serialized_end=164
37
+ _globals['__CONFIGFILE_CONFIGENTRY']._serialized_start=119
38
+ _globals['__CONFIGFILE_CONFIGENTRY']._serialized_end=164
39
+ _globals['_PLUGINCONFIG']._serialized_start=167
40
+ _globals['_PLUGINCONFIG']._serialized_end=424
41
+ _globals['_PLUGINCONFIG_PROPERTIESENTRY']._serialized_start=327
42
+ _globals['_PLUGINCONFIG_PROPERTIESENTRY']._serialized_end=376
43
+ _globals['_PLUGINCONFIG_SECRETSENTRY']._serialized_start=378
44
+ _globals['_PLUGINCONFIG_SECRETSENTRY']._serialized_end=424
45
+ _globals['_PLATFORMINFO']._serialized_start=427
46
+ _globals['_PLATFORMINFO']._serialized_end=611
47
+ _globals['_PLATFORMINFO_DEPLOYMENTINFOENTRY']._serialized_start=558
48
+ _globals['_PLATFORMINFO_DEPLOYMENTINFOENTRY']._serialized_end=611
49
+ _globals['_AUTHENTICATIONCONFIG']._serialized_start=614
50
+ _globals['_AUTHENTICATIONCONFIG']._serialized_end=928
51
+ _globals['_STORAGECONFIG']._serialized_start=931
52
+ _globals['_STORAGECONFIG']._serialized_end=1131
53
+ _globals['_STORAGECONFIG_BUCKETSENTRY']._serialized_start=1055
54
+ _globals['_STORAGECONFIG_BUCKETSENTRY']._serialized_end=1131
55
+ # @@protoc_insertion_point(module_scope)
@@ -1,11 +1,12 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  # Generated by the protocol buffer compiler. DO NOT EDIT!
3
3
  # source: tracdap/config/job.proto
4
+ # Protobuf Python Version: 4.25.3
4
5
  """Generated protocol buffer code."""
5
- from google.protobuf.internal import builder as _builder
6
6
  from google.protobuf import descriptor as _descriptor
7
7
  from google.protobuf import descriptor_pool as _descriptor_pool
8
8
  from google.protobuf import symbol_database as _symbol_database
9
+ from google.protobuf.internal import builder as _builder
9
10
  # @@protoc_insertion_point(imports)
10
11
 
11
12
  _sym_db = _symbol_database.Default()
@@ -18,24 +19,24 @@ from tracdap.metadata import job_pb2 as tracdap_dot_metadata_dot_job__pb2
18
19
 
19
20
  DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x18tracdap/config/job.proto\x12\x0etracdap.config\x1a tracdap/metadata/object_id.proto\x1a\x1dtracdap/metadata/object.proto\x1a\x1atracdap/metadata/job.proto\"\xae\x04\n\tJobConfig\x12*\n\x05jobId\x18\x01 \x01(\x0b\x32\x1b.tracdap.metadata.TagHeader\x12,\n\x03job\x18\x02 \x01(\x0b\x32\x1f.tracdap.metadata.JobDefinition\x12;\n\tresources\x18\x03 \x03(\x0b\x32(.tracdap.config.JobConfig.ResourcesEntry\x12G\n\x0fresourceMapping\x18\x04 \x03(\x0b\x32..tracdap.config.JobConfig.ResourceMappingEntry\x12\x43\n\rresultMapping\x18\x05 \x03(\x0b\x32,.tracdap.config.JobConfig.ResultMappingEntry\x1aT\n\x0eResourcesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x31\n\x05value\x18\x02 \x01(\x0b\x32\".tracdap.metadata.ObjectDefinition:\x02\x38\x01\x1aS\n\x14ResourceMappingEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12*\n\x05value\x18\x02 \x01(\x0b\x32\x1b.tracdap.metadata.TagHeader:\x02\x38\x01\x1aQ\n\x12ResultMappingEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12*\n\x05value\x18\x02 \x01(\x0b\x32\x1b.tracdap.metadata.TagHeader:\x02\x38\x01\x42\x1c\n\x18org.finos.tracdap.configP\x01\x62\x06proto3')
20
21
 
21
- _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
22
- _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'tracdap.config.job_pb2', globals())
22
+ _globals = globals()
23
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
24
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'tracdap.config.job_pb2', _globals)
23
25
  if _descriptor._USE_C_DESCRIPTORS == False:
24
-
25
- DESCRIPTOR._options = None
26
- DESCRIPTOR._serialized_options = b'\n\030org.finos.tracdap.configP\001'
27
- _JOBCONFIG_RESOURCESENTRY._options = None
28
- _JOBCONFIG_RESOURCESENTRY._serialized_options = b'8\001'
29
- _JOBCONFIG_RESOURCEMAPPINGENTRY._options = None
30
- _JOBCONFIG_RESOURCEMAPPINGENTRY._serialized_options = b'8\001'
31
- _JOBCONFIG_RESULTMAPPINGENTRY._options = None
32
- _JOBCONFIG_RESULTMAPPINGENTRY._serialized_options = b'8\001'
33
- _JOBCONFIG._serialized_start=138
34
- _JOBCONFIG._serialized_end=696
35
- _JOBCONFIG_RESOURCESENTRY._serialized_start=444
36
- _JOBCONFIG_RESOURCESENTRY._serialized_end=528
37
- _JOBCONFIG_RESOURCEMAPPINGENTRY._serialized_start=530
38
- _JOBCONFIG_RESOURCEMAPPINGENTRY._serialized_end=613
39
- _JOBCONFIG_RESULTMAPPINGENTRY._serialized_start=615
40
- _JOBCONFIG_RESULTMAPPINGENTRY._serialized_end=696
26
+ _globals['DESCRIPTOR']._options = None
27
+ _globals['DESCRIPTOR']._serialized_options = b'\n\030org.finos.tracdap.configP\001'
28
+ _globals['_JOBCONFIG_RESOURCESENTRY']._options = None
29
+ _globals['_JOBCONFIG_RESOURCESENTRY']._serialized_options = b'8\001'
30
+ _globals['_JOBCONFIG_RESOURCEMAPPINGENTRY']._options = None
31
+ _globals['_JOBCONFIG_RESOURCEMAPPINGENTRY']._serialized_options = b'8\001'
32
+ _globals['_JOBCONFIG_RESULTMAPPINGENTRY']._options = None
33
+ _globals['_JOBCONFIG_RESULTMAPPINGENTRY']._serialized_options = b'8\001'
34
+ _globals['_JOBCONFIG']._serialized_start=138
35
+ _globals['_JOBCONFIG']._serialized_end=696
36
+ _globals['_JOBCONFIG_RESOURCESENTRY']._serialized_start=444
37
+ _globals['_JOBCONFIG_RESOURCESENTRY']._serialized_end=528
38
+ _globals['_JOBCONFIG_RESOURCEMAPPINGENTRY']._serialized_start=530
39
+ _globals['_JOBCONFIG_RESOURCEMAPPINGENTRY']._serialized_end=613
40
+ _globals['_JOBCONFIG_RESULTMAPPINGENTRY']._serialized_start=615
41
+ _globals['_JOBCONFIG_RESULTMAPPINGENTRY']._serialized_end=696
41
42
  # @@protoc_insertion_point(module_scope)
@@ -9,6 +9,29 @@ import tracdap.rt.metadata as metadata
9
9
  from .common import * # noqa
10
10
 
11
11
 
12
+ class RoutingProtocol(_enum.Enum):
13
+
14
+ PROTOCOL_NOT_SET = 0,
15
+
16
+ HTTP = 1,
17
+
18
+ GRPC = 2,
19
+
20
+ GRPC_WEB = 3,
21
+
22
+ REST = 4,
23
+
24
+
25
+ class DeploymentLayout(_enum.Enum):
26
+
27
+ LAYOUT_NOT_SET = 0,
28
+
29
+ SANDBOX = 1,
30
+
31
+ HOSTED = 2,
32
+
33
+ CUSTOM = 3,
34
+
12
35
 
13
36
  @_dc.dataclass
14
37
  class PlatformConfig:
@@ -33,9 +56,11 @@ class PlatformConfig:
33
56
 
34
57
  webServer: _tp.Optional[WebServerConfig] = None
35
58
 
36
- instances: InstantMap = None
59
+ gateway: _tp.Optional[GatewayConfig] = None
60
+
61
+ services: _tp.Dict[str, ServiceConfig] = _dc.field(default_factory=dict)
37
62
 
38
- services: ServiceMap = None
63
+ deployment: DeploymentConfig = None
39
64
 
40
65
 
41
66
  @_dc.dataclass
@@ -46,16 +71,6 @@ class MetadataConfig:
46
71
  format: metadata.MetadataFormat = metadata.MetadataFormat.METADATA_FORMAT_NOT_SET
47
72
 
48
73
 
49
- @_dc.dataclass
50
- class StorageConfig:
51
-
52
- buckets: _tp.Dict[str, PluginConfig] = _dc.field(default_factory=dict)
53
-
54
- defaultBucket: str = None
55
-
56
- defaultFormat: str = None
57
-
58
-
59
74
  @_dc.dataclass
60
75
  class TenantConfig:
61
76
 
@@ -69,8 +84,6 @@ class WebServerConfig:
69
84
 
70
85
  enabled: bool = None
71
86
 
72
- port: int = None
73
-
74
87
  contentRoot: PluginConfig = None
75
88
 
76
89
  rewriteRules: _tp.List[WebServerRewriteRule] = _dc.field(default_factory=list)
@@ -97,17 +110,37 @@ class WebServerRedirect:
97
110
 
98
111
 
99
112
  @_dc.dataclass
100
- class InstantMap:
113
+ class GatewayConfig:
114
+
115
+ idleTimeout: int = None
116
+
117
+ routes: _tp.List[RouteConfig] = _dc.field(default_factory=list)
118
+
119
+
120
+ @_dc.dataclass
121
+ class RouteConfig:
122
+
123
+ routeName: str = None
124
+
125
+ routeType: RoutingProtocol = RoutingProtocol.PROTOCOL_NOT_SET
101
126
 
102
- meta: _tp.List[InstanceConfig] = _dc.field(default_factory=list)
127
+ protocols: _tp.List[RoutingProtocol] = _dc.field(default_factory=list)
103
128
 
104
- data: _tp.List[InstanceConfig] = _dc.field(default_factory=list)
129
+ match: RoutingMatch = None
105
130
 
106
- orch: _tp.List[InstanceConfig] = _dc.field(default_factory=list)
131
+ target: RoutingTarget = None
107
132
 
108
133
 
109
134
  @_dc.dataclass
110
- class InstanceConfig:
135
+ class RoutingMatch:
136
+
137
+ host: str = None
138
+
139
+ path: str = None
140
+
141
+
142
+ @_dc.dataclass
143
+ class RoutingTarget:
111
144
 
112
145
  scheme: str = None
113
146
 
@@ -115,18 +148,20 @@ class InstanceConfig:
115
148
 
116
149
  port: int = None
117
150
 
151
+ path: str = None
152
+
118
153
 
119
154
  @_dc.dataclass
120
- class ServiceMap:
155
+ class ServiceConfig:
121
156
 
122
- meta: ServiceConfig = None
157
+ enabled: _tp.Optional[bool] = None
123
158
 
124
- data: ServiceConfig = None
159
+ alias: str = None
125
160
 
126
- orch: ServiceConfig = None
161
+ port: int = None
127
162
 
128
163
 
129
164
  @_dc.dataclass
130
- class ServiceConfig:
165
+ class DeploymentConfig:
131
166
 
132
- port: int = None
167
+ layout: DeploymentLayout = DeploymentLayout.LAYOUT_NOT_SET