opengris-scaler 1.12.9__tar.gz → 1.12.12__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.
Potentially problematic release.
This version of opengris-scaler might be problematic. Click here for more details.
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/CONTRIBUTING.md +2 -1
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/PKG-INFO +3 -1
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/README.md +2 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/docs/source/index.rst +1 -0
- opengris_scaler-1.12.12/docs/source/tutorials/development.rst +193 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/docs/source/tutorials/features.rst +22 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/client/client.py +26 -3
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/entry_points/object_storage_server.py +12 -8
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/object_storage/CMakeLists.txt +0 -2
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/object_storage/object_storage_server.cpp +2 -0
- opengris_scaler-1.12.12/scaler/version.txt +1 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/worker/agent/processor/processor.py +6 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/worker/agent/processor_holder.py +2 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/worker/agent/processor_manager.py +3 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/worker/worker.py +1 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/tests/test_client.py +8 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/tests/test_nested_task.py +34 -0
- opengris_scaler-1.12.9/scaler/version.txt +0 -1
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/.clang-format +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/.github/actions/3rd-party-libraries-compile/action.yml +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/.github/actions/3rd-party-libraries-download/action.yml +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/.github/actions/3rd-party-libraries-install/action.yml +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/.github/actions/compile-libraries/action.yml +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/.github/actions/create-artifacts/action.yml +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/.github/actions/harden-check/action.yml +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/.github/actions/publish-doc/action.yml +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/.github/actions/run-linter/action.yml +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/.github/actions/run-test/action.yml +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/.github/actions/setup-env/action.yml +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/.github/dependabot.yml +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/.github/workflows/build-and-test.yml +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/.github/workflows/codeql.yml +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/.github/workflows/dependency-review.yml +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/.github/workflows/publish-artifact.yml +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/.github/workflows/publish-documentation.yml +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/.github/workflows/scorecard.yml +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/.gitignore +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/CMakeLists.txt +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/CMakePresets.json +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/LICENSE +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/LICENSE.spdx +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/NOTICE +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/benchmarks/dask_local_test.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/benchmarks/dask_remote_test.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/benchmarks/scaler_test.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/docs/.gitignore +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/docs/Makefile +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/docs/make.bat +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/docs/requirements_docs.txt +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/docs/source/_static/style.css +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/docs/source/_templates/layout.html +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/docs/source/conf.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/docs/source/tutorials/configuration.rst +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/docs/source/tutorials/examples.rst +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/docs/source/tutorials/images/architecture.png +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/docs/source/tutorials/quickstart.rst +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/downloaded/capnproto-c++-1.1.0.tar.gz +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/examples/CMakeLists.txt +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/examples/applications/downloaded_data.csv +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/examples/applications/implied_volatility.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/examples/applications/pillow.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/examples/applications/requirements_applications.txt +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/examples/applications/timeseries.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/examples/applications/yfinance_historical_price.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/examples/cpp/CMakeLists.txt +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/examples/cpp/ymq/CMakeLists.txt +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/examples/cpp/ymq/automated_echo_client.cpp +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/examples/cpp/ymq/echo_client.cpp +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/examples/cpp/ymq/echo_server.cpp +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/examples/cpp/ymq/pingpong.cpp +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/examples/cpp/ymq/pub_server.cpp +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/examples/cpp/ymq/remove_iosocket.cpp +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/examples/cpp/ymq/sub_client.cpp +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/examples/cpp/ymq/timestamp.cpp +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/examples/disconnect_client.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/examples/graphtask_client.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/examples/graphtask_nested_client.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/examples/images/cat_1.jpg +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/examples/images/cat_2.jpg +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/examples/map_client.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/examples/nested_client.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/examples/readme.md +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/examples/send_object_client.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/examples/simple_client.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/examples/task_capabilities.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/pyproject.toml +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/renovate.json +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/run_cluster.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/run_object_storage_server.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/run_scheduler.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/run_top.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/run_webui.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/run_worker_adapter_native.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/run_worker_adapter_symphony.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/CMakeLists.txt +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/__init__.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/about.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/client/__init__.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/client/agent/__init__.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/client/agent/client_agent.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/client/agent/disconnect_manager.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/client/agent/future_manager.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/client/agent/heartbeat_manager.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/client/agent/mixins.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/client/agent/object_manager.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/client/agent/task_manager.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/client/future.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/client/object_buffer.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/client/object_reference.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/client/serializer/__init__.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/client/serializer/default.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/client/serializer/mixins.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/cluster/__init__.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/cluster/cluster.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/cluster/combo.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/cluster/object_storage_server.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/cluster/scheduler.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/config/__init__.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/config/defaults.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/config/loader.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/config/mixins.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/config/section/__init__.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/config/section/cluster.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/config/section/native_worker_adapter.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/config/section/object_storage_server.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/config/section/scheduler.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/config/section/symphony_worker_adapter.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/config/section/top.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/config/section/webui.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/config/types/__init__.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/config/types/object_storage_server.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/config/types/worker.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/config/types/zmq.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/entry_points/__init__.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/entry_points/cluster.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/entry_points/scheduler.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/entry_points/top.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/entry_points/webui.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/entry_points/worker_adapter_native.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/entry_points/worker_adapter_symphony.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/__init__.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/async_binder.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/async_connector.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/async_object_storage_connector.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/mixins.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/sync_connector.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/sync_object_storage_connector.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/sync_subscriber.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/utility.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/ymq/CMakeLists.txt +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/ymq/__init__.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/ymq/_ymq.pyi +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/ymq/bytes.h +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/ymq/common.h +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/ymq/configuration.h +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/ymq/epoll_context.cpp +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/ymq/epoll_context.h +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/ymq/error.h +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/ymq/event_loop.h +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/ymq/event_loop_thread.cpp +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/ymq/event_loop_thread.h +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/ymq/event_manager.h +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/ymq/interruptive_concurrent_queue.h +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/ymq/io_context.cpp +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/ymq/io_context.h +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/ymq/io_socket.cpp +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/ymq/io_socket.h +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/ymq/iocp_context.cpp +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/ymq/iocp_context.h +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/ymq/logging.h +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/ymq/message.h +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/ymq/message_connection.h +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/ymq/message_connection_tcp.cpp +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/ymq/message_connection_tcp.h +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/ymq/network_utils.h +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/ymq/pymod_ymq/bytes.h +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/ymq/pymod_ymq/exception.h +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/ymq/pymod_ymq/gil.h +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/ymq/pymod_ymq/io_context.h +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/ymq/pymod_ymq/io_socket.h +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/ymq/pymod_ymq/message.h +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/ymq/pymod_ymq/python.h +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/ymq/pymod_ymq/ymq.cpp +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/ymq/pymod_ymq/ymq.h +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/ymq/readme.md +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/ymq/simple_interface.cpp +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/ymq/simple_interface.h +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/ymq/tcp_client.cpp +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/ymq/tcp_client.h +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/ymq/tcp_operations.h +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/ymq/tcp_server.cpp +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/ymq/tcp_server.h +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/ymq/third_party/concurrentqueue.h +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/ymq/timed_queue.h +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/ymq/timestamp.h +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/ymq/typedefs.h +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/ymq/utils.h +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/io/ymq/ymq.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/object_storage/__init__.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/object_storage/constants.h +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/object_storage/defs.h +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/object_storage/io_helper.cpp +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/object_storage/io_helper.h +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/object_storage/message.cpp +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/object_storage/message.h +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/object_storage/object_manager.cpp +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/object_storage/object_manager.h +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/object_storage/object_storage_server.h +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/object_storage/pymod_object_storage_server.cpp +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/protocol/__init__.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/protocol/capnp/__init__.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/protocol/capnp/_python.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/protocol/capnp/common.capnp +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/protocol/capnp/message.capnp +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/protocol/capnp/object_storage.capnp +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/protocol/capnp/status.capnp +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/protocol/introduction.md +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/protocol/python/__init__.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/protocol/python/common.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/protocol/python/message.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/protocol/python/mixins.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/protocol/python/object_storage.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/protocol/python/status.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/protocol/worker.md +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/scheduler/__init__.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/scheduler/allocate_policy/__init__.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/scheduler/allocate_policy/allocate_policy.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/scheduler/allocate_policy/capability_allocate_policy.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/scheduler/allocate_policy/even_load_allocate_policy.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/scheduler/allocate_policy/mixins.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/scheduler/controllers/__init__.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/scheduler/controllers/balance_controller.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/scheduler/controllers/client_controller.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/scheduler/controllers/config_controller.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/scheduler/controllers/graph_controller.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/scheduler/controllers/information_controller.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/scheduler/controllers/mixins.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/scheduler/controllers/object_controller.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/scheduler/controllers/scaling_controller.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/scheduler/controllers/task_controller.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/scheduler/controllers/worker_controller.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/scheduler/object_usage/__init__.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/scheduler/object_usage/object_tracker.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/scheduler/scheduler.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/scheduler/task/__init__.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/scheduler/task/task_state_machine.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/scheduler/task/task_state_manager.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/ui/__init__.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/ui/constants.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/ui/live_display.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/ui/memory_window.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/ui/setting_page.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/ui/task_graph.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/ui/task_log.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/ui/utility.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/ui/webui.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/ui/worker_processors.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/utility/__init__.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/utility/debug.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/utility/event_list.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/utility/event_loop.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/utility/exceptions.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/utility/formatter.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/utility/graph/__init__.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/utility/graph/optimization.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/utility/graph/topological_sorter.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/utility/graph/topological_sorter_graphblas.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/utility/identifiers.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/utility/logging/__init__.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/utility/logging/decorators.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/utility/logging/scoped_logger.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/utility/logging/utility.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/utility/many_to_many_dict.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/utility/metadata/__init__.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/utility/metadata/profile_result.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/utility/metadata/task_flags.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/utility/mixins.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/utility/network_util.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/utility/one_to_many_dict.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/utility/queues/__init__.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/utility/queues/async_indexed_queue.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/utility/queues/async_priority_queue.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/utility/queues/async_sorted_priority_queue.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/utility/queues/indexed_queue.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/utility/serialization.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/worker/__init__.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/worker/agent/__init__.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/worker/agent/heartbeat_manager.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/worker/agent/mixins.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/worker/agent/processor/__init__.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/worker/agent/processor/object_cache.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/worker/agent/processor/streaming_buffer.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/worker/agent/profiling_manager.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/worker/agent/task_manager.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/worker/agent/timeout_manager.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/worker/preload.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/worker_adapter/__init__.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/worker_adapter/native.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/worker_adapter/symphony/__init__.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/worker_adapter/symphony/callback.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/worker_adapter/symphony/heartbeat_manager.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/worker_adapter/symphony/message.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/worker_adapter/symphony/task_manager.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/worker_adapter/symphony/worker.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/worker_adapter/symphony/worker_adapter.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scripts/build.sh +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scripts/library_tool.ps1 +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scripts/library_tool.sh +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scripts/test.sh +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/slides/Effortless Distributed Computing in Python - FOSDEM 2025.pdf +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/slides/OSFF 2025 London.pdf +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/tests/CMakeLists.txt +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/tests/__init__.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/tests/cpp/CMakeLists.txt +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/tests/cpp/object_storage/CMakeLists.txt +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/tests/cpp/object_storage/test_object_manager.cpp +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/tests/cpp/object_storage/test_object_storage_server.cpp +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/tests/cpp/ymq/CMakeLists.txt +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/tests/cpp/ymq/common.h +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/tests/cpp/ymq/py_mitm/__init__.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/tests/cpp/ymq/py_mitm/main.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/tests/cpp/ymq/py_mitm/passthrough.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/tests/cpp/ymq/py_mitm/randomly_drop_packets.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/tests/cpp/ymq/py_mitm/send_rst_to_client.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/tests/cpp/ymq/py_mitm/types.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/tests/cpp/ymq/test_ymq.cpp +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/tests/io/ymq/CMakeLists.txt +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/tests/io/ymq/test_logging.cpp +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/tests/test_async_indexed_queue.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/tests/test_async_priority_queue.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/tests/test_async_sorted_priority_queue.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/tests/test_balance.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/tests/test_capabilities.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/tests/test_capability_allocate_policy.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/tests/test_cluster.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/tests/test_cluster_config.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/tests/test_cluster_disconnect.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/tests/test_config_types.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/tests/test_death_timeout.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/tests/test_future.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/tests/test_graph.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/tests/test_indexed_queue.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/tests/test_object_usage.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/tests/test_profiling.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/tests/test_protected.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/tests/test_scaling.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/tests/test_scheduler_config.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/tests/test_serializer.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/tests/test_ui.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/tests/utility.py +0 -0
- {opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/version.h.in +0 -0
|
@@ -7,6 +7,7 @@ This document describes the contribution process and governance policies of the
|
|
|
7
7
|
|
|
8
8
|
## Helpful Resources
|
|
9
9
|
|
|
10
|
+
* [Development Guidelines](https://finos.github.io/opengris-scaler/tutorials/development.html)
|
|
10
11
|
|
|
11
12
|
* [README.md](./README.md)
|
|
12
13
|
|
|
@@ -103,4 +104,4 @@ This document MAY be amended by a vote of the Maintainers according to the Maint
|
|
|
103
104
|
|
|
104
105
|
## Code of Conduct
|
|
105
106
|
|
|
106
|
-
Please see the FINOS [Community Code of Conduct](https://www.finos.org/code-of-conduct).
|
|
107
|
+
Please see the FINOS [Community Code of Conduct](https://www.finos.org/code-of-conduct).
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: opengris-scaler
|
|
3
|
-
Version: 1.12.
|
|
3
|
+
Version: 1.12.12
|
|
4
4
|
Summary: OpenGRIS Scaler Distribution Framework
|
|
5
5
|
Author-Email: Citi <opensource@citi.com>
|
|
6
6
|
License: Apache 2.0
|
|
@@ -365,6 +365,8 @@ with Client(address="tcp://127.0.0.1:2345") as client:
|
|
|
365
365
|
print(future.result()) # 21
|
|
366
366
|
```
|
|
367
367
|
|
|
368
|
+
**Note**: When creating a `Client` inside a task (nested client), the `address` parameter is optional. If omitted, the client automatically uses the scheduler address from the worker context. If provided, the specified address takes precedence.
|
|
369
|
+
|
|
368
370
|
## Task Routing and Capability Management
|
|
369
371
|
|
|
370
372
|
> **Note**: This feature is experimental and may change in future releases.
|
|
@@ -322,6 +322,8 @@ with Client(address="tcp://127.0.0.1:2345") as client:
|
|
|
322
322
|
print(future.result()) # 21
|
|
323
323
|
```
|
|
324
324
|
|
|
325
|
+
**Note**: When creating a `Client` inside a task (nested client), the `address` parameter is optional. If omitted, the client automatically uses the scheduler address from the worker context. If provided, the specified address takes precedence.
|
|
326
|
+
|
|
325
327
|
## Task Routing and Capability Management
|
|
326
328
|
|
|
327
329
|
> **Note**: This feature is experimental and may change in future releases.
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
=======================
|
|
2
|
+
Development Guidelines
|
|
3
|
+
=======================
|
|
4
|
+
|
|
5
|
+
.. contents:: Table of Contents
|
|
6
|
+
:depth: 2
|
|
7
|
+
|
|
8
|
+
Please be aware that contributing code to this repo requires following several opinionated rules.
|
|
9
|
+
Pull requests that ignore the guidelines are unlikely to be accepted.
|
|
10
|
+
|
|
11
|
+
These development guidelines will be updated whenever we need to clarify missing rules or adjust existing guidance.
|
|
12
|
+
|
|
13
|
+
This project consists of both Python and C++ code, so the guidelines cover expectations for each language.
|
|
14
|
+
|
|
15
|
+
Both humans and AI contributors should follow these guidelines.
|
|
16
|
+
|
|
17
|
+
Common Guidelines
|
|
18
|
+
-----------------
|
|
19
|
+
|
|
20
|
+
Naming
|
|
21
|
+
~~~~~~
|
|
22
|
+
|
|
23
|
+
Names should be crystal clear within the code context. That context can be a function, module (file), or library.
|
|
24
|
+
In general, prefer the most specific name unless a conventional name is already established.
|
|
25
|
+
|
|
26
|
+
Bad examples:
|
|
27
|
+
* data1, data2
|
|
28
|
+
* a, b, c, d, e
|
|
29
|
+
* df
|
|
30
|
+
* function1
|
|
31
|
+
* array
|
|
32
|
+
|
|
33
|
+
Avoid abbreviations whenever possible. Abbreviations make the code harder to read and debug unless the term is widely
|
|
34
|
+
known or an industry standard.
|
|
35
|
+
|
|
36
|
+
Numbers
|
|
37
|
+
~~~~~~~
|
|
38
|
+
|
|
39
|
+
Magic numbers are not allowed. Every constant should be assigned to a well-named variable that explains its purpose.
|
|
40
|
+
|
|
41
|
+
Object-Oriented Programming (OOP)
|
|
42
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
43
|
+
|
|
44
|
+
OOP is available in both C++ and Python. Use classes to encapsulate related behavior and data when those pieces belong
|
|
45
|
+
together.
|
|
46
|
+
|
|
47
|
+
**We allow subtyping, but we do not allow inheritance.**
|
|
48
|
+
* Subtyping: allowed - override member functions that have no implementations (interfaces in C++).
|
|
49
|
+
* Inheritance: disallowed - do not override functions that already provide implementations.
|
|
50
|
+
|
|
51
|
+
Class and static methods are allowed in Python. Remember that class methods provide no benefit over module-level
|
|
52
|
+
functions unless the behavior is tied to class-level state. Place the function in the scope that matches its
|
|
53
|
+
responsibility.
|
|
54
|
+
|
|
55
|
+
Functions
|
|
56
|
+
~~~~~~~~~
|
|
57
|
+
|
|
58
|
+
* Please refactor aggressively, except in test cases where limited duplication can aid readability.
|
|
59
|
+
Shared test helpers should still live in utility functions.
|
|
60
|
+
* Express complex conditional filtering logic with guard clauses to improve readability.
|
|
61
|
+
|
|
62
|
+
Python Guidelines
|
|
63
|
+
-----------------
|
|
64
|
+
|
|
65
|
+
* We follow PEP 8 closely, with the exception of a 120-character line width. Refer to PEP 8 for the remaining details.
|
|
66
|
+
* Python type hints are mandatory for all function arguments and return types, and mypy will check them.
|
|
67
|
+
* We use the Black formatter; run `black -l 120 -C`.
|
|
68
|
+
* All Python imports must be absolute.
|
|
69
|
+
* We do not allow any content in `__init__.py` files unless a special case (such as the project root)
|
|
70
|
+
requires it for user convenience.
|
|
71
|
+
|
|
72
|
+
Test Cases
|
|
73
|
+
~~~~~~~~~~
|
|
74
|
+
|
|
75
|
+
* Python test cases should use the standard `unittest` module, and each test class should live in its own Python file
|
|
76
|
+
named with the `test_*.py` prefix.
|
|
77
|
+
* Mirror the unit-test directory structure to the code structure because the `tests` directory lives at the repo root.
|
|
78
|
+
|
|
79
|
+
C++ Guidelines
|
|
80
|
+
--------------
|
|
81
|
+
|
|
82
|
+
Naming
|
|
83
|
+
~~~~~~
|
|
84
|
+
|
|
85
|
+
Please use PascalCase for namespaces and classes. Capitalize the first character, for example:
|
|
86
|
+
* SomeClass
|
|
87
|
+
* LongNameClass
|
|
88
|
+
|
|
89
|
+
Use all capital letters for global variables or macros. System or third-party library definitions are exempt from this
|
|
90
|
+
rule:
|
|
91
|
+
* GLOBAL_VARIABLE
|
|
92
|
+
|
|
93
|
+
Use camelCase for variable and function names, with the first character lower case:
|
|
94
|
+
* addSomeValue
|
|
95
|
+
* deleteSomeValue
|
|
96
|
+
|
|
97
|
+
Keep abbreviations uppercase, for example:
|
|
98
|
+
* TCPAcceptor instead of TcpAcceptor
|
|
99
|
+
* IOSocket instead of IoSocket
|
|
100
|
+
|
|
101
|
+
File names should use snake_case. Use the `.h` extension for headers and `.cpp` for source files:
|
|
102
|
+
* header files: message_connection.h
|
|
103
|
+
* source files: message_connection.cpp
|
|
104
|
+
|
|
105
|
+
Formatting
|
|
106
|
+
~~~~~~~~~~
|
|
107
|
+
|
|
108
|
+
Please use the `.clang-format` file in the repo root for code formatting.
|
|
109
|
+
|
|
110
|
+
Namespaces
|
|
111
|
+
~~~~~~~~~~
|
|
112
|
+
|
|
113
|
+
* Do not add `using namespace` directives like `using namespace std;`.
|
|
114
|
+
* Always use fully qualified names such as `std::cout`.
|
|
115
|
+
|
|
116
|
+
Includes
|
|
117
|
+
~~~~~~~~
|
|
118
|
+
|
|
119
|
+
* Remove include files when none of their symbols are used.
|
|
120
|
+
* Always include the header that defines the symbols you rely on; avoid depending on transitive includes. For example:
|
|
121
|
+
* There are files `common.h`, `some_module.h`, and `application.cpp`.
|
|
122
|
+
* At the top of `common.h`, there is `#include <cstring>`.
|
|
123
|
+
* At the top of `some_module.h`, there is `#include "common.h"`.
|
|
124
|
+
* At the top of `application.cpp`, there is `#include "some_module.h"`.
|
|
125
|
+
* Even though `application.cpp` compiles because `<cstring>` is indirectly included through `common.h`, explicitly
|
|
126
|
+
include `<cstring>` in `application.cpp`.
|
|
127
|
+
|
|
128
|
+
Struct/Class
|
|
129
|
+
~~~~~~~~~~~~
|
|
130
|
+
|
|
131
|
+
In C++, structs and classes are the same except for default access. Use `struct` for passive data structures with minimal
|
|
132
|
+
helpers. Use `class` for stateful types, and do not expose fields directly. Provide setters and getters instead.
|
|
133
|
+
|
|
134
|
+
.. code:: cpp
|
|
135
|
+
|
|
136
|
+
struct Address {
|
|
137
|
+
std::string domain;
|
|
138
|
+
int port;
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
// If a data structure has internal state that consumers should not mutate directly, provide methods to modify that
|
|
142
|
+
// state instead of exposing the members.
|
|
143
|
+
class Client {
|
|
144
|
+
public:
|
|
145
|
+
void send(const std::vector<uint8_t>& buffer);
|
|
146
|
+
|
|
147
|
+
int getMessageCount() const;
|
|
148
|
+
|
|
149
|
+
private:
|
|
150
|
+
int messageCount;
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
Code Layout
|
|
154
|
+
~~~~~~~~~~~
|
|
155
|
+
|
|
156
|
+
For any header or source file, order elements as follows:
|
|
157
|
+
* system library includes
|
|
158
|
+
* standard library includes
|
|
159
|
+
* third-party library includes
|
|
160
|
+
* in-library includes
|
|
161
|
+
* global variables
|
|
162
|
+
* API classes and functions
|
|
163
|
+
* internal functions that are not meant to be used outside the file
|
|
164
|
+
|
|
165
|
+
Class definitions should follow this order:
|
|
166
|
+
|
|
167
|
+
.. code:: cpp
|
|
168
|
+
|
|
169
|
+
// List public members first, then protected, then private sections.
|
|
170
|
+
// Place using declarations at the top, followed by constructors, copy/move constructors, and the destructor.
|
|
171
|
+
// Declare member functions before member variables.
|
|
172
|
+
class Foobar {
|
|
173
|
+
public:
|
|
174
|
+
// Using types should go first.
|
|
175
|
+
using Type = some_namespace::SomeType;
|
|
176
|
+
|
|
177
|
+
Foobar();
|
|
178
|
+
Foobar(const std::string& foobar) : _foobar(foobar) {}
|
|
179
|
+
~Foobar();
|
|
180
|
+
|
|
181
|
+
const std::string& getCurrentFoobar() const;
|
|
182
|
+
|
|
183
|
+
protected:
|
|
184
|
+
void someProtectedMethod();
|
|
185
|
+
|
|
186
|
+
int _someProtectedVariable;
|
|
187
|
+
|
|
188
|
+
private:
|
|
189
|
+
void somePrivateMethod();
|
|
190
|
+
|
|
191
|
+
std::string _foobar;
|
|
192
|
+
int _somePrivateVariable;
|
|
193
|
+
};
|
|
@@ -118,6 +118,28 @@ Tasks can depend on other tasks' result without using graph.
|
|
|
118
118
|
.. literalinclude:: ../../../examples/nested_client.py
|
|
119
119
|
:language: python
|
|
120
120
|
|
|
121
|
+
Nested Client Scheduler Address
|
|
122
|
+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
123
|
+
|
|
124
|
+
When creating a ``Client`` inside a task (nested client), the scheduler ``address`` parameter is optional. If omitted, the client automatically detects and uses the scheduler address from the worker context. This is particularly useful when workers are behind firewalls or NAT, where the scheduler address accessible from inside the worker may differ from external addresses.
|
|
125
|
+
|
|
126
|
+
**Automatic Address Detection:**
|
|
127
|
+
|
|
128
|
+
.. code:: python
|
|
129
|
+
|
|
130
|
+
from scaler import Client
|
|
131
|
+
|
|
132
|
+
def nested_task():
|
|
133
|
+
# Automatically uses worker's scheduler address if no address is provided to Client()
|
|
134
|
+
with Client() as client:
|
|
135
|
+
result = client.submit(lambda x: x * 2, 5).result()
|
|
136
|
+
return result
|
|
137
|
+
|
|
138
|
+
# Main client
|
|
139
|
+
client = Client(address="tcp://127.0.0.1:2345")
|
|
140
|
+
future = client.submit(nested_task)
|
|
141
|
+
print(future.result()) # 10
|
|
142
|
+
|
|
121
143
|
Dynamically Building Graph Within a Task
|
|
122
144
|
----------------------------------------
|
|
123
145
|
|
|
@@ -51,7 +51,7 @@ class _CallNode:
|
|
|
51
51
|
class Client:
|
|
52
52
|
def __init__(
|
|
53
53
|
self,
|
|
54
|
-
address: str,
|
|
54
|
+
address: Optional[str] = None,
|
|
55
55
|
profiling: bool = False,
|
|
56
56
|
timeout_seconds: int = DEFAULT_CLIENT_TIMEOUT_SECONDS,
|
|
57
57
|
heartbeat_interval_seconds: int = DEFAULT_HEARTBEAT_INTERVAL_SECONDS,
|
|
@@ -61,8 +61,9 @@ class Client:
|
|
|
61
61
|
"""
|
|
62
62
|
The Scaler Client used to send tasks to a scheduler.
|
|
63
63
|
|
|
64
|
-
:param address: Address of Scheduler to submit work to
|
|
65
|
-
|
|
64
|
+
:param address: Address of Scheduler to submit work to. If None, will attempt to auto-detect
|
|
65
|
+
when running inside a worker context.
|
|
66
|
+
:type address: Optional[str]
|
|
66
67
|
:param profiling: If True, the returned futures will have the `task_duration()` property enabled.
|
|
67
68
|
:type profiling: bool
|
|
68
69
|
:param timeout_seconds: Seconds until heartbeat times out
|
|
@@ -72,6 +73,7 @@ class Client:
|
|
|
72
73
|
:param stream_output: If True, stdout/stderr will be streamed to client during task execution
|
|
73
74
|
:type stream_output: bool
|
|
74
75
|
"""
|
|
76
|
+
address = self._resolve_scheduler_address(address)
|
|
75
77
|
self.__initialize__(address, profiling, timeout_seconds, heartbeat_interval_seconds, serializer, stream_output)
|
|
76
78
|
|
|
77
79
|
def __initialize__(
|
|
@@ -380,6 +382,10 @@ class Client:
|
|
|
380
382
|
disconnect from connected scheduler, this will not shut down the scheduler
|
|
381
383
|
"""
|
|
382
384
|
|
|
385
|
+
# Handle case where client wasn't fully initialized
|
|
386
|
+
if not hasattr(self, "_stop_event"):
|
|
387
|
+
return
|
|
388
|
+
|
|
383
389
|
if self._stop_event.is_set():
|
|
384
390
|
self.__destroy()
|
|
385
391
|
return
|
|
@@ -633,3 +639,20 @@ class Client:
|
|
|
633
639
|
assert current_task is not None
|
|
634
640
|
|
|
635
641
|
return retrieve_task_flags_from_task(current_task).priority
|
|
642
|
+
|
|
643
|
+
def _resolve_scheduler_address(self, address: Optional[str]) -> str:
|
|
644
|
+
"""Resolve the scheduler address based on the provided address and worker context."""
|
|
645
|
+
# Provided address always takes precedence
|
|
646
|
+
if address is not None:
|
|
647
|
+
return address
|
|
648
|
+
|
|
649
|
+
# No address provided, check if we're running inside a worker context
|
|
650
|
+
current_processor = Processor.get_current_processor()
|
|
651
|
+
if current_processor is None:
|
|
652
|
+
raise ValueError(
|
|
653
|
+
"No scheduler address provided and not running inside a worker context. "
|
|
654
|
+
"Please provide a scheduler address when creating the Client outside of a worker."
|
|
655
|
+
)
|
|
656
|
+
|
|
657
|
+
# Return the scheduler address from the current processor
|
|
658
|
+
return current_processor.scheduler_address().to_address()
|
{opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/entry_points/object_storage_server.py
RENAMED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import argparse
|
|
2
2
|
import logging
|
|
3
|
+
import sys
|
|
3
4
|
|
|
4
5
|
from scaler.config.loader import load_config
|
|
5
6
|
from scaler.config.section.object_storage_server import ObjectStorageServerConfig
|
|
@@ -31,11 +32,14 @@ def main():
|
|
|
31
32
|
|
|
32
33
|
log_format_str, log_level_str, log_paths = get_logger_info(logging.getLogger())
|
|
33
34
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
35
|
+
try:
|
|
36
|
+
ObjectStorageServer().run(
|
|
37
|
+
oss_config.object_storage_address.host,
|
|
38
|
+
oss_config.object_storage_address.port,
|
|
39
|
+
oss_config.object_storage_address.identity,
|
|
40
|
+
log_level_str,
|
|
41
|
+
log_format_str,
|
|
42
|
+
log_paths,
|
|
43
|
+
)
|
|
44
|
+
except KeyboardInterrupt:
|
|
45
|
+
sys.exit(0)
|
|
@@ -31,11 +31,9 @@ set_target_properties(py_object_storage_server PROPERTIES
|
|
|
31
31
|
)
|
|
32
32
|
|
|
33
33
|
target_link_libraries(py_object_storage_server PRIVATE
|
|
34
|
-
$<$<CXX_COMPILER_ID:GNU,Clang>:-Wl,-Bstatic>
|
|
35
34
|
capnp_objs
|
|
36
35
|
ymq_objs
|
|
37
36
|
object_storage_server_objs
|
|
38
|
-
$<$<CXX_COMPILER_ID:GNU,Clang>:-Wl,-Bdynamic>
|
|
39
37
|
CapnProto::capnp
|
|
40
38
|
CapnProto::kj
|
|
41
39
|
Python3::Module
|
{opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/object_storage/object_storage_server.cpp
RENAMED
|
@@ -138,6 +138,8 @@ void ObjectStorageServer::processRequests(std::function<bool()> running)
|
|
|
138
138
|
auto maybeMessageFuture = ymq::futureRecvMessage(_ioSocket);
|
|
139
139
|
while (maybeMessageFuture.wait_for(100ms) == std::future_status::timeout) {
|
|
140
140
|
if (!running()) {
|
|
141
|
+
_logger.log(scaler::ymq::Logger::LoggingLevel::info, "ObjectStorageServer: stopped by user");
|
|
142
|
+
pendingRequests.clear();
|
|
141
143
|
return;
|
|
142
144
|
}
|
|
143
145
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1.12.12
|
{opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/scaler/worker/agent/processor/processor.py
RENAMED
|
@@ -37,6 +37,7 @@ class Processor(multiprocessing.get_context("spawn").Process): # type: ignore
|
|
|
37
37
|
self,
|
|
38
38
|
event_loop: str,
|
|
39
39
|
agent_address: ZMQConfig,
|
|
40
|
+
scheduler_address: ZMQConfig,
|
|
40
41
|
storage_address: ObjectStorageConfig,
|
|
41
42
|
preload: Optional[str],
|
|
42
43
|
resume_event: Optional[EventType],
|
|
@@ -50,6 +51,7 @@ class Processor(multiprocessing.get_context("spawn").Process): # type: ignore
|
|
|
50
51
|
|
|
51
52
|
self._event_loop = event_loop
|
|
52
53
|
self._agent_address = agent_address
|
|
54
|
+
self._scheduler_address = scheduler_address
|
|
53
55
|
self._storage_address = storage_address
|
|
54
56
|
self._preload = preload
|
|
55
57
|
|
|
@@ -74,6 +76,10 @@ class Processor(multiprocessing.get_context("spawn").Process): # type: ignore
|
|
|
74
76
|
"""Returns the current Processor instance controlling the current process, if any."""
|
|
75
77
|
return _current_processor.get()
|
|
76
78
|
|
|
79
|
+
def scheduler_address(self) -> ZMQConfig:
|
|
80
|
+
"""Returns the scheduler address this processor's worker is connected to."""
|
|
81
|
+
return self._scheduler_address
|
|
82
|
+
|
|
77
83
|
def current_task(self) -> Optional[Task]:
|
|
78
84
|
return self._current_task
|
|
79
85
|
|
|
@@ -19,6 +19,7 @@ class ProcessorHolder:
|
|
|
19
19
|
self,
|
|
20
20
|
event_loop: str,
|
|
21
21
|
agent_address: ZMQConfig,
|
|
22
|
+
scheduler_address: ZMQConfig,
|
|
22
23
|
storage_address: ObjectStorageConfig,
|
|
23
24
|
preload: Optional[str],
|
|
24
25
|
garbage_collect_interval_seconds: int,
|
|
@@ -43,6 +44,7 @@ class ProcessorHolder:
|
|
|
43
44
|
self._processor = Processor(
|
|
44
45
|
event_loop=event_loop,
|
|
45
46
|
agent_address=agent_address,
|
|
47
|
+
scheduler_address=scheduler_address,
|
|
46
48
|
storage_address=storage_address,
|
|
47
49
|
preload=preload,
|
|
48
50
|
resume_event=self._resume_event,
|
|
@@ -23,6 +23,7 @@ class VanillaProcessorManager(ProcessorManager):
|
|
|
23
23
|
identity: WorkerID,
|
|
24
24
|
event_loop: str,
|
|
25
25
|
address_internal: ZMQConfig,
|
|
26
|
+
scheduler_address: ZMQConfig,
|
|
26
27
|
preload: Optional[str],
|
|
27
28
|
garbage_collect_interval_seconds: int,
|
|
28
29
|
trim_memory_threshold_bytes: int,
|
|
@@ -34,6 +35,7 @@ class VanillaProcessorManager(ProcessorManager):
|
|
|
34
35
|
|
|
35
36
|
self._identity = identity
|
|
36
37
|
self._event_loop = event_loop
|
|
38
|
+
self._scheduler_address = scheduler_address
|
|
37
39
|
self._preload = preload
|
|
38
40
|
|
|
39
41
|
self._garbage_collect_interval_seconds = garbage_collect_interval_seconds
|
|
@@ -299,6 +301,7 @@ class VanillaProcessorManager(ProcessorManager):
|
|
|
299
301
|
self._current_holder = ProcessorHolder(
|
|
300
302
|
self._event_loop,
|
|
301
303
|
self._address_internal,
|
|
304
|
+
self._scheduler_address,
|
|
302
305
|
storage_address,
|
|
303
306
|
self._preload,
|
|
304
307
|
self._garbage_collect_interval_seconds,
|
|
@@ -139,6 +139,7 @@ class Worker(multiprocessing.get_context("spawn").Process): # type: ignore
|
|
|
139
139
|
identity=self._ident,
|
|
140
140
|
event_loop=self._event_loop,
|
|
141
141
|
address_internal=self._address_internal,
|
|
142
|
+
scheduler_address=self._address,
|
|
142
143
|
preload=self._preload,
|
|
143
144
|
garbage_collect_interval_seconds=self._garbage_collect_interval_seconds,
|
|
144
145
|
trim_memory_threshold_bytes=self._trim_memory_threshold_bytes,
|
|
@@ -320,6 +320,14 @@ class TestClient(unittest.TestCase):
|
|
|
320
320
|
# but new tasks should work fine
|
|
321
321
|
self.assertEqual(client.submit(round, 3.14).result(), 3.0)
|
|
322
322
|
|
|
323
|
+
def test_client_no_address_outside_worker(self):
|
|
324
|
+
"""Test that creating a Client without an address outside worker context raises ValueError."""
|
|
325
|
+
with self.assertRaises(ValueError) as context:
|
|
326
|
+
Client()
|
|
327
|
+
|
|
328
|
+
self.assertIn("No scheduler address provided", str(context.exception))
|
|
329
|
+
self.assertIn("not running inside a worker context", str(context.exception))
|
|
330
|
+
|
|
323
331
|
|
|
324
332
|
class TestClientPreload(unittest.TestCase):
|
|
325
333
|
# Separate class for preload functionality with separate cluster to avoid interfering with time-sensitive tests
|
|
@@ -34,6 +34,18 @@ class TestNestedTask(unittest.TestCase):
|
|
|
34
34
|
result = client.submit(fibonacci, client, 8).result()
|
|
35
35
|
self.assertEqual(result, 21)
|
|
36
36
|
|
|
37
|
+
def test_nested_task_auto_address(self) -> None:
|
|
38
|
+
"""Test nested task with automatic scheduler address detection."""
|
|
39
|
+
with Client(self.address) as client:
|
|
40
|
+
result = client.submit(nested_task_auto_address, 5).result()
|
|
41
|
+
self.assertEqual(result, 25)
|
|
42
|
+
|
|
43
|
+
def test_nested_task_explicit_address(self) -> None:
|
|
44
|
+
"""Test nested task with explicit scheduler address (honors user-provided address)."""
|
|
45
|
+
with Client(self.address) as client:
|
|
46
|
+
result = client.submit(nested_task_explicit_address, self.address, 7).result()
|
|
47
|
+
self.assertEqual(result, 49)
|
|
48
|
+
|
|
37
49
|
|
|
38
50
|
def parent_task_arg_client(client: Client) -> int:
|
|
39
51
|
iterable = [(v,) for v in range(0, N_TASKS)]
|
|
@@ -60,3 +72,25 @@ def fibonacci(client: Client, n: int):
|
|
|
60
72
|
a = client.submit(fibonacci, client, n - 1)
|
|
61
73
|
b = client.submit(fibonacci, client, n - 2)
|
|
62
74
|
return a.result() + b.result()
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def nested_task_auto_address(value: int) -> int:
|
|
78
|
+
"""Test function that creates a nested client without providing an address."""
|
|
79
|
+
# Client should automatically detect worker context and use worker's scheduler address
|
|
80
|
+
client = Client()
|
|
81
|
+
try:
|
|
82
|
+
result = client.submit(nested_task, value).result()
|
|
83
|
+
return result
|
|
84
|
+
finally:
|
|
85
|
+
client.disconnect()
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
def nested_task_explicit_address(scheduler_address: str, value: int) -> int:
|
|
89
|
+
"""Test function that creates a nested client with an explicit address."""
|
|
90
|
+
# Client should honor the explicitly provided address even though running in worker context
|
|
91
|
+
client = Client(address=scheduler_address)
|
|
92
|
+
try:
|
|
93
|
+
result = client.submit(nested_task, value).result()
|
|
94
|
+
return result
|
|
95
|
+
finally:
|
|
96
|
+
client.disconnect()
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
1.12.9
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/.github/actions/compile-libraries/action.yml
RENAMED
|
File without changes
|
{opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/.github/actions/create-artifacts/action.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/.github/workflows/publish-documentation.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/docs/source/tutorials/images/architecture.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/examples/applications/downloaded_data.csv
RENAMED
|
File without changes
|
{opengris_scaler-1.12.9 → opengris_scaler-1.12.12}/examples/applications/implied_volatility.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|