tracdap-runtime 0.9.1__tar.gz → 0.9.2.dev4__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 (138) hide show
  1. tracdap_runtime-0.9.2.dev4/PKG-INFO +268 -0
  2. tracdap_runtime-0.9.2.dev4/README.md +206 -0
  3. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/setup.cfg +21 -8
  4. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_version.py +1 -1
  5. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/launch/launch.py +6 -3
  6. tracdap_runtime-0.9.2.dev4/tracdap_runtime.egg-info/PKG-INFO +268 -0
  7. tracdap_runtime-0.9.1/PKG-INFO +0 -136
  8. tracdap_runtime-0.9.1/README.md +0 -87
  9. tracdap_runtime-0.9.1/tracdap_runtime.egg-info/PKG-INFO +0 -136
  10. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/LICENSE +0 -0
  11. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/pyproject.toml +0 -0
  12. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/__init__.py +0 -0
  13. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/__init__.py +0 -0
  14. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/core/__init__.py +0 -0
  15. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/core/config_parser.py +0 -0
  16. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/core/data.py +0 -0
  17. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/core/guard_rails.py +0 -0
  18. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/core/logging.py +0 -0
  19. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/core/models.py +0 -0
  20. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/core/repos.py +0 -0
  21. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/core/schemas.py +0 -0
  22. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/core/shim.py +0 -0
  23. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/core/storage.py +0 -0
  24. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/core/struct.py +0 -0
  25. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/core/type_system.py +0 -0
  26. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/core/util.py +0 -0
  27. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/core/validation.py +0 -0
  28. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/exec/__init__.py +0 -0
  29. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/exec/actors.py +0 -0
  30. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/exec/context.py +0 -0
  31. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/exec/dev_mode.py +0 -0
  32. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/exec/engine.py +0 -0
  33. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/exec/functions.py +0 -0
  34. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/exec/graph.py +0 -0
  35. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/exec/graph_builder.py +0 -0
  36. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/ext/__init__.py +0 -0
  37. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/ext/sql.py +0 -0
  38. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/ext/storage.py +0 -0
  39. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/__init__.py +0 -0
  40. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/codec.py +0 -0
  41. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/server.py +0 -0
  42. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/api/internal/runtime_pb2.py +0 -0
  43. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/api/internal/runtime_pb2.pyi +0 -0
  44. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/api/internal/runtime_pb2_grpc.py +0 -0
  45. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/common_pb2.py +0 -0
  46. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/common_pb2.pyi +0 -0
  47. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/config_pb2.py +0 -0
  48. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/config_pb2.pyi +0 -0
  49. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/custom_pb2.py +0 -0
  50. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/custom_pb2.pyi +0 -0
  51. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/data_pb2.py +0 -0
  52. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/data_pb2.pyi +0 -0
  53. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/file_pb2.py +0 -0
  54. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/file_pb2.pyi +0 -0
  55. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/flow_pb2.py +0 -0
  56. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/flow_pb2.pyi +0 -0
  57. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/job_pb2.py +0 -0
  58. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/job_pb2.pyi +0 -0
  59. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/model_pb2.py +0 -0
  60. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/model_pb2.pyi +0 -0
  61. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/object_id_pb2.py +0 -0
  62. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/object_id_pb2.pyi +0 -0
  63. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/object_pb2.py +0 -0
  64. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/object_pb2.pyi +0 -0
  65. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/resource_pb2.py +0 -0
  66. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/resource_pb2.pyi +0 -0
  67. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/search_pb2.py +0 -0
  68. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/search_pb2.pyi +0 -0
  69. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/storage_pb2.py +0 -0
  70. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/storage_pb2.pyi +0 -0
  71. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/tag_pb2.py +0 -0
  72. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/tag_pb2.pyi +0 -0
  73. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/tag_update_pb2.py +0 -0
  74. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/tag_update_pb2.pyi +0 -0
  75. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/type_pb2.py +0 -0
  76. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/type_pb2.pyi +0 -0
  77. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/runtime.py +0 -0
  78. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/static_api.py +0 -0
  79. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_plugins/__init__.py +0 -0
  80. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_plugins/_helpers.py +0 -0
  81. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_plugins/config_local.py +0 -0
  82. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_plugins/format_arrow.py +0 -0
  83. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_plugins/format_csv.py +0 -0
  84. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_plugins/format_parquet.py +0 -0
  85. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_plugins/repo_git.py +0 -0
  86. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_plugins/repo_local.py +0 -0
  87. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_plugins/repo_pypi.py +0 -0
  88. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_plugins/storage_aws.py +0 -0
  89. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_plugins/storage_azure.py +0 -0
  90. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_plugins/storage_gcp.py +0 -0
  91. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_plugins/storage_local.py +0 -0
  92. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_plugins/storage_sql.py +0 -0
  93. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_plugins/storage_sql_dialects.py +0 -0
  94. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/api/__init__.py +0 -0
  95. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/api/constants.py +0 -0
  96. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/api/experimental.py +0 -0
  97. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/api/hook.py +0 -0
  98. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/api/model_api.py +0 -0
  99. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/api/static_api.py +0 -0
  100. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/config/__init__.py +0 -0
  101. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/config/common.py +0 -0
  102. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/config/dynamic.py +0 -0
  103. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/config/job.py +0 -0
  104. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/config/platform.py +0 -0
  105. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/config/result.py +0 -0
  106. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/config/runtime.py +0 -0
  107. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/config/tenant.py +0 -0
  108. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/exceptions.py +0 -0
  109. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/ext/__init__.py +0 -0
  110. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/ext/config.py +0 -0
  111. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/ext/embed.py +0 -0
  112. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/ext/plugins.py +0 -0
  113. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/ext/repos.py +0 -0
  114. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/ext/storage.py +0 -0
  115. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/launch/__init__.py +0 -0
  116. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/launch/__main__.py +0 -0
  117. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/launch/cli.py +0 -0
  118. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/metadata/__init__.py +0 -0
  119. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/metadata/common.py +0 -0
  120. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/metadata/config.py +0 -0
  121. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/metadata/custom.py +0 -0
  122. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/metadata/data.py +0 -0
  123. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/metadata/file.py +0 -0
  124. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/metadata/flow.py +0 -0
  125. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/metadata/job.py +0 -0
  126. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/metadata/model.py +0 -0
  127. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/metadata/object.py +0 -0
  128. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/metadata/object_id.py +0 -0
  129. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/metadata/resource.py +0 -0
  130. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/metadata/search.py +0 -0
  131. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/metadata/storage.py +0 -0
  132. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/metadata/tag.py +0 -0
  133. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/metadata/tag_update.py +0 -0
  134. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/metadata/type.py +0 -0
  135. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/tracdap_runtime.egg-info/SOURCES.txt +0 -0
  136. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/tracdap_runtime.egg-info/dependency_links.txt +0 -0
  137. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/tracdap_runtime.egg-info/requires.txt +0 -0
  138. {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/tracdap_runtime.egg-info/top_level.txt +0 -0
@@ -0,0 +1,268 @@
1
+ Metadata-Version: 2.4
2
+ Name: tracdap-runtime
3
+ Version: 0.9.2.dev4
4
+ Summary: Portable, production-grade models in Python
5
+ Home-page: https://www.fintrac.co.uk/
6
+ Author: Martin Traverse
7
+ Author-email: martin@fintrac.co.uk
8
+ License: Apache-2.0
9
+ Project-URL: Documentation, https://docs.fintrac.co.uk/versions/latest/modelling
10
+ Project-URL: Source Code, https://github.com/martin-traverse/tracdap
11
+ Project-URL: Issue Tracker, https://github.com/martin-traverse/tracdap/issues
12
+ Platform: any
13
+ Classifier: Operating System :: OS Independent
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.9
16
+ Classifier: Programming Language :: Python :: 3.10
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Programming Language :: Python :: 3.13
20
+ Classifier: Intended Audience :: Developers
21
+ Classifier: Intended Audience :: End Users/Desktop
22
+ Classifier: Intended Audience :: Financial and Insurance Industry
23
+ Classifier: Topic :: Office/Business
24
+ Classifier: Topic :: Office/Business :: Financial
25
+ Classifier: Topic :: Software Development
26
+ Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
27
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
28
+ Requires-Python: >=3.9
29
+ Description-Content-Type: text/markdown
30
+ License-File: LICENSE
31
+ Requires-Dist: protobuf==6.31.1
32
+ Requires-Dist: pyarrow==21.0.0
33
+ Requires-Dist: pyyaml==6.0.2
34
+ Requires-Dist: dulwich==0.23.2
35
+ Requires-Dist: requests==2.32.4
36
+ Provides-Extra: grpc
37
+ Requires-Dist: grpcio==1.74.0; extra == "grpc"
38
+ Requires-Dist: grpcio-status==1.74.0; extra == "grpc"
39
+ Provides-Extra: pandas
40
+ Requires-Dist: pandas<2.3.0,>=1.2.0; extra == "pandas"
41
+ Requires-Dist: numpy<2.3.0,>=1.20; extra == "pandas"
42
+ Provides-Extra: polars
43
+ Requires-Dist: polars<2.0.0,>=1.0.0; extra == "polars"
44
+ Provides-Extra: pyspark
45
+ Requires-Dist: pyspark<3.6.0,>=3.0.0; extra == "pyspark"
46
+ Provides-Extra: sql
47
+ Requires-Dist: sqlalchemy<2.1.0,>=2.0.0; extra == "sql"
48
+ Provides-Extra: aws
49
+ Requires-Dist: botocore==1.39.15; extra == "aws"
50
+ Requires-Dist: boto3==1.39.15; extra == "aws"
51
+ Provides-Extra: gcp
52
+ Requires-Dist: google-auth==2.40.3; extra == "gcp"
53
+ Requires-Dist: google-api-core==2.25.1; extra == "gcp"
54
+ Requires-Dist: google-cloud-storage==3.2.0; extra == "gcp"
55
+ Requires-Dist: gcsfs==2024.3.1; extra == "gcp"
56
+ Provides-Extra: azure
57
+ Requires-Dist: azure-core==1.35.0; extra == "azure"
58
+ Requires-Dist: azure-identity==1.23.1; extra == "azure"
59
+ Requires-Dist: azure-storage-blob==12.26.0; extra == "azure"
60
+ Requires-Dist: adlfs==2024.12.0; extra == "azure"
61
+ Dynamic: license-file
62
+
63
+ <div align="center">
64
+
65
+ ![TRAC the modern model platform](https://github.com/finos/tracdap/raw/main/doc/_images/tracmmp_horizontal_400.png)
66
+
67
+ <br />
68
+
69
+ <div>
70
+ <a href="https://pypi.org/project/tracdap-runtime"><img alt="PyPI Version" src="https://img.shields.io/pypi/v/tracdap-runtime.svg?maxAge=3600" /></a>
71
+ <a href="https://pypi.org/project/tracdap-runtime"><img alt="Python Versions" src="https://img.shields.io/pypi/pyversions/tracdap-runtime.svg?maxAge=3600" /></a>
72
+ <a href="https://github.com/finos/tracdap/actions/workflows/packaging.yaml?query=branch%3Amain"><img alt="Packaging status" src="https://github.com/finos/tracdap/actions/workflows/packaging.yaml/badge.svg?branch:main&workflow:CI" /></a>
73
+ <a href="https://github.com/finos/tracdap/actions/workflows/compliance.yaml?query=branch%3Amain"><img alt="Compliance status" src="https://github.com/finos/tracdap/actions/workflows/compliance.yaml/badge.svg?branch:main&workflow:CI" /></a>
74
+ <a href="https://github.com/pandas-dev/pandas/blob/main/LICENSE"><img alt="License - Apache-2.0" src="https://img.shields.io/pypi/l/tracdap-runtime.svg" /></a>
75
+ <a href="https://community.finos.org/docs/governance/software-projects/stages/incubating/"><img alt="FINOS - Incubating" src="https://cdn.jsdelivr.net/gh/finos/contrib-toolbox@master/images/badge-incubating.svg" /></a>
76
+ </div>
77
+
78
+ <p>
79
+ <a href="https://www.fintrac.co.uk/">Homepage</a>
80
+ ◆ <a href="https://docs.fintrac.co.uk/versions/latest/modelling">Documentation</a>
81
+ ◆ <a href="https://github.com/fintrac-hub/examples">Examples</a>
82
+ ◆ <a href="https://github.com/finos/tracdap">Source Code</a>
83
+ ◆ <a href="https://github.com/finos/tracdap/issues">Issue Tracker</a>
84
+ </p>
85
+ </div>
86
+
87
+
88
+ # TRAC Model Runtime for Python
89
+
90
+ The TRAC Model Runtime is a lightweight package for building portable,
91
+ production-grade Python models. Models created with the runtime can be
92
+ executed anywhere, from local development environments to enterprise
93
+ production systems. The runtime can be used independently of the broader
94
+ TRAC platform and provides a simple framework in which to build, ship,
95
+ and share models.
96
+
97
+ Each model defines its parameters, inputs and outputs, and the runtime
98
+ provides the execution context, ensuring that models always receive valid
99
+ data and parameters. Taking responsibility for data access, marshalling
100
+ and formatting out of the model code allows developers to focus on model
101
+ logic, safe in the knowledge that the model will behave consistently
102
+ across environments.
103
+
104
+ For a complete guide to writing models in the TRAC framework, see the
105
+ [online documentation](https://docs.fintrac.co.uk/versions/latest/modelling).
106
+
107
+
108
+ ## 📦 Requirements
109
+
110
+ * **Python :** 3.10 or later
111
+ * **Tools :** Any popular IDE (PyCharm, VS Code, etc.)
112
+ * **Pandas :** Version 1.2 and later are supported
113
+ * **Polars :** Version 1.0 and later are supported
114
+
115
+ *Some 3rd party libraries may have additional version constraints,
116
+ for example, Pandas 1.5 is not available for Python 3.12 or later.*
117
+
118
+
119
+ ## 🚀 Quick start
120
+
121
+ TRAC can be added to a new or existing Python project using [pip](https://pip.pypa.io):
122
+
123
+ ```shell
124
+ $ pip install tracdap-runtime
125
+ ```
126
+
127
+ You will also need to install a data framework (Pandas or Polars) and any other libraries that the model uses.
128
+
129
+ Here is a minimum working example of a TRAC model that performs aggregation on a dataset:
130
+
131
+ ```python
132
+ import tracdap.rt.api as trac
133
+
134
+ class QuickStartModel(trac.TracModel):
135
+
136
+ def define_parameters(self):
137
+
138
+ # Define any parameters the model will use
139
+ return trac.define_parameters(
140
+ trac.P("exchange_rate", trac.FLOAT, "EUR / GBP exchange rate")
141
+ )
142
+
143
+ def define_inputs(self):
144
+
145
+ # Define an input table with the columns and data types that the model needs
146
+ customer_loans = trac.define_input_table(
147
+ trac.F("id", trac.STRING, label="Customer account ID", business_key=True),
148
+ trac.F("region", trac.STRING, label="Customer home region", categorical=True),
149
+ trac.F("loan_amount", trac.FLOAT, label="Principal loan amount"),
150
+ label="Customer loans data")
151
+
152
+ return {"customer_loans": customer_loans}
153
+
154
+ def define_outputs(self):
155
+
156
+ # Define an output table with the columns and data types that the model will produce
157
+ loans_by_region = trac.define_output_table(
158
+ trac.F("region", trac.STRING, label="Customer home region", categorical=True),
159
+ trac.F("loan_amount", trac.FLOAT, label="Principal loan amount"),
160
+ label="Loans by region")
161
+
162
+ return {"loans_by_region": loans_by_region}
163
+
164
+ def run_model(self, ctx: trac.TracContext):
165
+
166
+ # Parameters and inputs are loaded and validated by TRAC
167
+ exchange_rate = ctx.get_parameter("exchange_rate")
168
+ customer_loans = ctx.get_pandas_table("customer_loans")
169
+
170
+ # Model code is regular Python
171
+ customer_loans["loan_amount_gbp"] = customer_loans["loan_amount"] * exchange_rate
172
+
173
+ loans_by_region = customer_loans \
174
+ .groupby("region", as_index=False) \
175
+ .aggregate({"loan_amount": "sum"})
176
+
177
+ # Logs written to ctx.log are captured by the platform
178
+ ctx.log().info("Aggregated loans for {} regions", len(loans_by_region))
179
+
180
+ # Outputs are handed back to TRAC for validation and saving
181
+ ctx.put_pandas_table("loans_by_region", loans_by_region)
182
+
183
+ # Use the desktop launcher to run, test and debug models locally
184
+ if __name__ == "__main__":
185
+ import tracdap.rt.launch as launch
186
+ launch.launch_model(QuickStartModel, "config/quick_start.yaml", "config/sys_config.yaml")
187
+ ```
188
+
189
+ The model needs two config files in order to run: A job config file and a system config file.
190
+ By convention, for local development these are kept in a ``config`` folder.
191
+
192
+ The system config file defines the resources that are available for models to use.
193
+ As a minimum the default storage location must be specified.
194
+
195
+ *sys_config.yaml*
196
+ ```yaml
197
+ properties:
198
+
199
+ storage.default.location: example_data
200
+ storage.default.format: CSV
201
+
202
+ resources:
203
+
204
+ example_data:
205
+ resourceType: INTERNAL_STORAGE
206
+ protocol: LOCAL
207
+ properties:
208
+ rootPath: C:\path\to\your\data
209
+ ```
210
+
211
+ The job config file supplies the model with the parameters, inputs and outputs that it needs to run.
212
+ The default data location from ``sys_config.yaml`` is used to load input data and save output data.
213
+ TRAC checks the types and schemas of every parameter and input dataset, types are cast automatically
214
+ where it is safe to do so, otherwise TRAC will raise an error if the inputs are not valid.
215
+
216
+ *quick_start.yaml*
217
+ ```yaml
218
+ job:
219
+ runModel:
220
+
221
+ parameters:
222
+ exchange_rate: 0.865
223
+
224
+ inputs:
225
+ customer_loans: "inputs/customer_loans_data.csv"
226
+
227
+ outputs:
228
+ loans_by_region: "outputs/example_model/loans_by_region.csv"
229
+ ```
230
+
231
+ You can run the model from your IDE (right click the model file and choose "Run",
232
+ or look for the "Play" button). You will see the model logs, and an output file
233
+ will be created inside your data folder.
234
+
235
+
236
+ ## 📖 Documentation
237
+
238
+ See the [online documentation](https://docs.fintrac.co.uk/versions/latest/modelling)
239
+ for a complete guide to writing models in the TRAC framework,
240
+ including tutorials and an API reference.
241
+
242
+
243
+ ## ✋ Contributing
244
+
245
+ If you'd like to contribute a feature or a fix then we'd love to hear from you!
246
+ Please raise an issue on our [issue tracker](https://github.com/finos/tracdap/issues)
247
+ to discuss your suggestion before working on a PR.
248
+
249
+ Contributions are governed according to the [contribution guidelines](https://github.com/finos/tracdap/blob/main/CONTRIBUTING.md)
250
+ and the [FINOS code of conduct](https://www.finos.org/code-of-conduct).
251
+
252
+
253
+ ## 📜 License
254
+
255
+ The TRAC model runtime is maintained by [finTRAC Ltd](https://fintrac.co.uk/) in association with
256
+ the [Fintech Open Source Foundation](https://www.finos.org/) (FINOS) and distributed under the terms of
257
+ the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0).
258
+
259
+ SPDX-License-Identifier: [Apache-2.0](https://spdx.org/licenses/Apache-2.0)
260
+
261
+ For more information including copyright history,
262
+ see the [NOTICE](https://github.com/finos/tracdap/blob/main/NOTICE) file.
263
+
264
+
265
+ ## 🏢 Enterprise
266
+
267
+ Professional support for TRAC is available from [finTRAC Ltd](https://fintrac.co.uk/),
268
+ for more information please [contact us](https://fintrac.co.uk/contact).
@@ -0,0 +1,206 @@
1
+ <div align="center">
2
+
3
+ ![TRAC the modern model platform](https://github.com/finos/tracdap/raw/main/doc/_images/tracmmp_horizontal_400.png)
4
+
5
+ <br />
6
+
7
+ <div>
8
+ <a href="https://pypi.org/project/tracdap-runtime"><img alt="PyPI Version" src="https://img.shields.io/pypi/v/tracdap-runtime.svg?maxAge=3600" /></a>
9
+ <a href="https://pypi.org/project/tracdap-runtime"><img alt="Python Versions" src="https://img.shields.io/pypi/pyversions/tracdap-runtime.svg?maxAge=3600" /></a>
10
+ <a href="https://github.com/finos/tracdap/actions/workflows/packaging.yaml?query=branch%3Amain"><img alt="Packaging status" src="https://github.com/finos/tracdap/actions/workflows/packaging.yaml/badge.svg?branch:main&workflow:CI" /></a>
11
+ <a href="https://github.com/finos/tracdap/actions/workflows/compliance.yaml?query=branch%3Amain"><img alt="Compliance status" src="https://github.com/finos/tracdap/actions/workflows/compliance.yaml/badge.svg?branch:main&workflow:CI" /></a>
12
+ <a href="https://github.com/pandas-dev/pandas/blob/main/LICENSE"><img alt="License - Apache-2.0" src="https://img.shields.io/pypi/l/tracdap-runtime.svg" /></a>
13
+ <a href="https://community.finos.org/docs/governance/software-projects/stages/incubating/"><img alt="FINOS - Incubating" src="https://cdn.jsdelivr.net/gh/finos/contrib-toolbox@master/images/badge-incubating.svg" /></a>
14
+ </div>
15
+
16
+ <p>
17
+ <a href="https://www.fintrac.co.uk/">Homepage</a>
18
+ ◆ <a href="https://docs.fintrac.co.uk/versions/latest/modelling">Documentation</a>
19
+ ◆ <a href="https://github.com/fintrac-hub/examples">Examples</a>
20
+ ◆ <a href="https://github.com/finos/tracdap">Source Code</a>
21
+ ◆ <a href="https://github.com/finos/tracdap/issues">Issue Tracker</a>
22
+ </p>
23
+ </div>
24
+
25
+
26
+ # TRAC Model Runtime for Python
27
+
28
+ The TRAC Model Runtime is a lightweight package for building portable,
29
+ production-grade Python models. Models created with the runtime can be
30
+ executed anywhere, from local development environments to enterprise
31
+ production systems. The runtime can be used independently of the broader
32
+ TRAC platform and provides a simple framework in which to build, ship,
33
+ and share models.
34
+
35
+ Each model defines its parameters, inputs and outputs, and the runtime
36
+ provides the execution context, ensuring that models always receive valid
37
+ data and parameters. Taking responsibility for data access, marshalling
38
+ and formatting out of the model code allows developers to focus on model
39
+ logic, safe in the knowledge that the model will behave consistently
40
+ across environments.
41
+
42
+ For a complete guide to writing models in the TRAC framework, see the
43
+ [online documentation](https://docs.fintrac.co.uk/versions/latest/modelling).
44
+
45
+
46
+ ## 📦 Requirements
47
+
48
+ * **Python :** 3.10 or later
49
+ * **Tools :** Any popular IDE (PyCharm, VS Code, etc.)
50
+ * **Pandas :** Version 1.2 and later are supported
51
+ * **Polars :** Version 1.0 and later are supported
52
+
53
+ *Some 3rd party libraries may have additional version constraints,
54
+ for example, Pandas 1.5 is not available for Python 3.12 or later.*
55
+
56
+
57
+ ## 🚀 Quick start
58
+
59
+ TRAC can be added to a new or existing Python project using [pip](https://pip.pypa.io):
60
+
61
+ ```shell
62
+ $ pip install tracdap-runtime
63
+ ```
64
+
65
+ You will also need to install a data framework (Pandas or Polars) and any other libraries that the model uses.
66
+
67
+ Here is a minimum working example of a TRAC model that performs aggregation on a dataset:
68
+
69
+ ```python
70
+ import tracdap.rt.api as trac
71
+
72
+ class QuickStartModel(trac.TracModel):
73
+
74
+ def define_parameters(self):
75
+
76
+ # Define any parameters the model will use
77
+ return trac.define_parameters(
78
+ trac.P("exchange_rate", trac.FLOAT, "EUR / GBP exchange rate")
79
+ )
80
+
81
+ def define_inputs(self):
82
+
83
+ # Define an input table with the columns and data types that the model needs
84
+ customer_loans = trac.define_input_table(
85
+ trac.F("id", trac.STRING, label="Customer account ID", business_key=True),
86
+ trac.F("region", trac.STRING, label="Customer home region", categorical=True),
87
+ trac.F("loan_amount", trac.FLOAT, label="Principal loan amount"),
88
+ label="Customer loans data")
89
+
90
+ return {"customer_loans": customer_loans}
91
+
92
+ def define_outputs(self):
93
+
94
+ # Define an output table with the columns and data types that the model will produce
95
+ loans_by_region = trac.define_output_table(
96
+ trac.F("region", trac.STRING, label="Customer home region", categorical=True),
97
+ trac.F("loan_amount", trac.FLOAT, label="Principal loan amount"),
98
+ label="Loans by region")
99
+
100
+ return {"loans_by_region": loans_by_region}
101
+
102
+ def run_model(self, ctx: trac.TracContext):
103
+
104
+ # Parameters and inputs are loaded and validated by TRAC
105
+ exchange_rate = ctx.get_parameter("exchange_rate")
106
+ customer_loans = ctx.get_pandas_table("customer_loans")
107
+
108
+ # Model code is regular Python
109
+ customer_loans["loan_amount_gbp"] = customer_loans["loan_amount"] * exchange_rate
110
+
111
+ loans_by_region = customer_loans \
112
+ .groupby("region", as_index=False) \
113
+ .aggregate({"loan_amount": "sum"})
114
+
115
+ # Logs written to ctx.log are captured by the platform
116
+ ctx.log().info("Aggregated loans for {} regions", len(loans_by_region))
117
+
118
+ # Outputs are handed back to TRAC for validation and saving
119
+ ctx.put_pandas_table("loans_by_region", loans_by_region)
120
+
121
+ # Use the desktop launcher to run, test and debug models locally
122
+ if __name__ == "__main__":
123
+ import tracdap.rt.launch as launch
124
+ launch.launch_model(QuickStartModel, "config/quick_start.yaml", "config/sys_config.yaml")
125
+ ```
126
+
127
+ The model needs two config files in order to run: A job config file and a system config file.
128
+ By convention, for local development these are kept in a ``config`` folder.
129
+
130
+ The system config file defines the resources that are available for models to use.
131
+ As a minimum the default storage location must be specified.
132
+
133
+ *sys_config.yaml*
134
+ ```yaml
135
+ properties:
136
+
137
+ storage.default.location: example_data
138
+ storage.default.format: CSV
139
+
140
+ resources:
141
+
142
+ example_data:
143
+ resourceType: INTERNAL_STORAGE
144
+ protocol: LOCAL
145
+ properties:
146
+ rootPath: C:\path\to\your\data
147
+ ```
148
+
149
+ The job config file supplies the model with the parameters, inputs and outputs that it needs to run.
150
+ The default data location from ``sys_config.yaml`` is used to load input data and save output data.
151
+ TRAC checks the types and schemas of every parameter and input dataset, types are cast automatically
152
+ where it is safe to do so, otherwise TRAC will raise an error if the inputs are not valid.
153
+
154
+ *quick_start.yaml*
155
+ ```yaml
156
+ job:
157
+ runModel:
158
+
159
+ parameters:
160
+ exchange_rate: 0.865
161
+
162
+ inputs:
163
+ customer_loans: "inputs/customer_loans_data.csv"
164
+
165
+ outputs:
166
+ loans_by_region: "outputs/example_model/loans_by_region.csv"
167
+ ```
168
+
169
+ You can run the model from your IDE (right click the model file and choose "Run",
170
+ or look for the "Play" button). You will see the model logs, and an output file
171
+ will be created inside your data folder.
172
+
173
+
174
+ ## 📖 Documentation
175
+
176
+ See the [online documentation](https://docs.fintrac.co.uk/versions/latest/modelling)
177
+ for a complete guide to writing models in the TRAC framework,
178
+ including tutorials and an API reference.
179
+
180
+
181
+ ## ✋ Contributing
182
+
183
+ If you'd like to contribute a feature or a fix then we'd love to hear from you!
184
+ Please raise an issue on our [issue tracker](https://github.com/finos/tracdap/issues)
185
+ to discuss your suggestion before working on a PR.
186
+
187
+ Contributions are governed according to the [contribution guidelines](https://github.com/finos/tracdap/blob/main/CONTRIBUTING.md)
188
+ and the [FINOS code of conduct](https://www.finos.org/code-of-conduct).
189
+
190
+
191
+ ## 📜 License
192
+
193
+ The TRAC model runtime is maintained by [finTRAC Ltd](https://fintrac.co.uk/) in association with
194
+ the [Fintech Open Source Foundation](https://www.finos.org/) (FINOS) and distributed under the terms of
195
+ the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0).
196
+
197
+ SPDX-License-Identifier: [Apache-2.0](https://spdx.org/licenses/Apache-2.0)
198
+
199
+ For more information including copyright history,
200
+ see the [NOTICE](https://github.com/finos/tracdap/blob/main/NOTICE) file.
201
+
202
+
203
+ ## 🏢 Enterprise
204
+
205
+ Professional support for TRAC is available from [finTRAC Ltd](https://fintrac.co.uk/),
206
+ for more information please [contact us](https://fintrac.co.uk/contact).
@@ -1,19 +1,32 @@
1
1
  [metadata]
2
2
  name = tracdap-runtime
3
- version = 0.9.1
3
+ version = 0.9.2.dev4
4
4
  license = Apache-2.0
5
5
  platform = any
6
- description = Runtime package for building models on the TRAC Data & Analytics Platform
6
+ description = Portable, production-grade models in Python
7
7
  long_description = file: README.md
8
8
  long_description_content_type = text/markdown
9
- url = https://tracdap.finos.org/
9
+ url = https://www.fintrac.co.uk/
10
10
  project_urls =
11
- Documentation = https://tracdap.readthedocs.io/
12
- Source Code = https://github.com/finos/tracdap
13
- Bug Tracker = https://github.com/finos/tracdap/issues
11
+ Documentation = https://docs.fintrac.co.uk/versions/latest/modelling
12
+ Source Code = https://github.com/martin-traverse/tracdap
13
+ Issue Tracker = https://github.com/martin-traverse/tracdap/issues
14
14
  classifiers =
15
- Programming Language :: Python :: 3
16
15
  Operating System :: OS Independent
16
+ Programming Language :: Python :: 3
17
+ Programming Language :: Python :: 3.9
18
+ Programming Language :: Python :: 3.10
19
+ Programming Language :: Python :: 3.11
20
+ Programming Language :: Python :: 3.12
21
+ Programming Language :: Python :: 3.13
22
+ Intended Audience :: Developers
23
+ Intended Audience :: End Users/Desktop
24
+ Intended Audience :: Financial and Insurance Industry
25
+ Topic :: Office/Business
26
+ Topic :: Office/Business :: Financial
27
+ Topic :: Software Development
28
+ Topic :: Software Development :: Libraries :: Application Frameworks
29
+ Topic :: Software Development :: Libraries :: Python Modules
17
30
  author = Martin Traverse
18
31
  author_email = martin@fintrac.co.uk
19
32
 
@@ -37,7 +50,7 @@ packages =
37
50
  package_dir =
38
51
  tracdap = src/tracdap
39
52
  tracdap.rt = src/tracdap/rt
40
- python_requires = >= 3.9, < 3.14
53
+ python_requires = >= 3.9
41
54
  install_requires =
42
55
  protobuf == 6.31.1
43
56
  pyarrow == 21.0.0
@@ -13,4 +13,4 @@
13
13
  # See the License for the specific language governing permissions and
14
14
  # limitations under the License.
15
15
 
16
- __version__ = "0.9.1"
16
+ __version__ = "0.9.2.dev4"
@@ -73,7 +73,7 @@ def _resolve_config_file(
73
73
  return parent_config_path
74
74
 
75
75
  if model_dir is not None:
76
- model_config_path = _search_parent_paths(cwd, config_path)
76
+ model_config_path = _search_parent_paths(model_dir, config_path)
77
77
  if model_config_path is not None:
78
78
  return model_config_path
79
79
 
@@ -132,8 +132,11 @@ def launch_model(
132
132
  # Default to dev_mode = True for launch_model()
133
133
  dev_mode = launch_args["dev_mode"] if "dev_mode" in launch_args else True
134
134
 
135
- model_file = _inspect.getfile(model_class)
136
- model_dir = _pathlib.Path(model_file).parent
135
+ try:
136
+ model_file = _inspect.getfile(model_class)
137
+ model_dir = _pathlib.Path(model_file).parent
138
+ except OSError:
139
+ model_dir = None
137
140
 
138
141
  _sys_config = _resolve_config_file(sys_config, model_dir, dev_mode)
139
142
  _job_config = _resolve_config_file(job_config, model_dir, dev_mode)