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.
- tracdap_runtime-0.9.2.dev4/PKG-INFO +268 -0
- tracdap_runtime-0.9.2.dev4/README.md +206 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/setup.cfg +21 -8
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_version.py +1 -1
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/launch/launch.py +6 -3
- tracdap_runtime-0.9.2.dev4/tracdap_runtime.egg-info/PKG-INFO +268 -0
- tracdap_runtime-0.9.1/PKG-INFO +0 -136
- tracdap_runtime-0.9.1/README.md +0 -87
- tracdap_runtime-0.9.1/tracdap_runtime.egg-info/PKG-INFO +0 -136
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/LICENSE +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/pyproject.toml +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/__init__.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/__init__.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/core/__init__.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/core/config_parser.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/core/data.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/core/guard_rails.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/core/logging.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/core/models.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/core/repos.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/core/schemas.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/core/shim.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/core/storage.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/core/struct.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/core/type_system.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/core/util.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/core/validation.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/exec/__init__.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/exec/actors.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/exec/context.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/exec/dev_mode.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/exec/engine.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/exec/functions.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/exec/graph.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/exec/graph_builder.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/ext/__init__.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/ext/sql.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/ext/storage.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/__init__.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/codec.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/server.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/api/internal/runtime_pb2.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/api/internal/runtime_pb2.pyi +0 -0
- {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
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/common_pb2.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/common_pb2.pyi +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/config_pb2.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/config_pb2.pyi +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/custom_pb2.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/custom_pb2.pyi +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/data_pb2.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/data_pb2.pyi +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/file_pb2.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/file_pb2.pyi +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/flow_pb2.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/flow_pb2.pyi +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/job_pb2.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/job_pb2.pyi +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/model_pb2.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/model_pb2.pyi +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/object_id_pb2.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/object_id_pb2.pyi +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/object_pb2.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/object_pb2.pyi +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/resource_pb2.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/resource_pb2.pyi +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/search_pb2.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/search_pb2.pyi +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/storage_pb2.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/storage_pb2.pyi +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/tag_pb2.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/tag_pb2.pyi +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/tag_update_pb2.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/tag_update_pb2.pyi +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/type_pb2.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/grpc/tracdap/metadata/type_pb2.pyi +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/runtime.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_impl/static_api.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_plugins/__init__.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_plugins/_helpers.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_plugins/config_local.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_plugins/format_arrow.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_plugins/format_csv.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_plugins/format_parquet.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_plugins/repo_git.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_plugins/repo_local.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_plugins/repo_pypi.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_plugins/storage_aws.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_plugins/storage_azure.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_plugins/storage_gcp.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_plugins/storage_local.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_plugins/storage_sql.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/_plugins/storage_sql_dialects.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/api/__init__.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/api/constants.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/api/experimental.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/api/hook.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/api/model_api.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/api/static_api.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/config/__init__.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/config/common.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/config/dynamic.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/config/job.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/config/platform.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/config/result.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/config/runtime.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/config/tenant.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/exceptions.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/ext/__init__.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/ext/config.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/ext/embed.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/ext/plugins.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/ext/repos.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/ext/storage.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/launch/__init__.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/launch/__main__.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/launch/cli.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/metadata/__init__.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/metadata/common.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/metadata/config.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/metadata/custom.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/metadata/data.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/metadata/file.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/metadata/flow.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/metadata/job.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/metadata/model.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/metadata/object.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/metadata/object_id.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/metadata/resource.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/metadata/search.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/metadata/storage.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/metadata/tag.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/metadata/tag_update.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/src/tracdap/rt/metadata/type.py +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/tracdap_runtime.egg-info/SOURCES.txt +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/tracdap_runtime.egg-info/dependency_links.txt +0 -0
- {tracdap_runtime-0.9.1 → tracdap_runtime-0.9.2.dev4}/tracdap_runtime.egg-info/requires.txt +0 -0
- {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
|
+

|
|
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
|
+

|
|
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.
|
|
3
|
+
version = 0.9.2.dev4
|
|
4
4
|
license = Apache-2.0
|
|
5
5
|
platform = any
|
|
6
|
-
description =
|
|
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://
|
|
9
|
+
url = https://www.fintrac.co.uk/
|
|
10
10
|
project_urls =
|
|
11
|
-
Documentation = https://
|
|
12
|
-
Source Code = https://github.com/
|
|
13
|
-
|
|
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
|
|
53
|
+
python_requires = >= 3.9
|
|
41
54
|
install_requires =
|
|
42
55
|
protobuf == 6.31.1
|
|
43
56
|
pyarrow == 21.0.0
|
|
@@ -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(
|
|
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
|
-
|
|
136
|
-
|
|
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)
|