Qubx 1.3.2__tar.gz → 1.3.3.dev2__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.
- {qubx-1.3.2 → qubx-1.3.3.dev2}/PKG-INFO +1 -1
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/_version.py +2 -2
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/cli/commands.py +19 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/cli/release.py +6 -2
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/cli/s3.py +92 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/.gitignore +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/LICENSE +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/README.md +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/pyproject.toml +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/scripts/build.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/__init__.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/_nb_magic.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/backtester/__init__.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/backtester/account.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/backtester/broker.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/backtester/data.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/backtester/iteratedstream.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/backtester/management.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/backtester/ome.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/backtester/optimization.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/backtester/runner.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/backtester/sentinels.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/backtester/simulated_data.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/backtester/simulated_exchange.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/backtester/simulator.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/backtester/transfers.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/backtester/utils.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/cli/__init__.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/cli/deploy.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/cli/misc.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/cli/resolver.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/cli/theme.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/cli/tui.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/cli/user_config.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/config.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/connectors/__init__.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/connectors/ccxt/__init__.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/connectors/ccxt/account.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/connectors/ccxt/adapters/__init__.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/connectors/ccxt/adapters/polling_adapter.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/connectors/ccxt/broker.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/connectors/ccxt/connection_manager.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/connectors/ccxt/data.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/connectors/ccxt/exceptions.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/connectors/ccxt/exchange_manager.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/connectors/ccxt/exchanges/__init__.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/connectors/ccxt/exchanges/base.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/connectors/ccxt/exchanges/binance/broker.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/connectors/ccxt/exchanges/binance/exchange.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/connectors/ccxt/exchanges/bitfinex/bitfinex.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/connectors/ccxt/exchanges/bitfinex/bitfinex_account.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/connectors/ccxt/exchanges/gateio/__init__.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/connectors/ccxt/exchanges/gateio/gateio.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/connectors/ccxt/exchanges/hyperliquid/__init__.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/connectors/ccxt/exchanges/hyperliquid/account.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/connectors/ccxt/exchanges/hyperliquid/broker.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/connectors/ccxt/exchanges/hyperliquid/hyperliquid.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/connectors/ccxt/exchanges/kraken/kraken.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/connectors/ccxt/exchanges/okx/__init__.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/connectors/ccxt/exchanges/okx/account.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/connectors/ccxt/exchanges/okx/broker.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/connectors/ccxt/exchanges/okx/okx.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/connectors/ccxt/factory.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/connectors/ccxt/handlers/__init__.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/connectors/ccxt/handlers/base.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/connectors/ccxt/handlers/factory.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/connectors/ccxt/handlers/funding_rate.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/connectors/ccxt/handlers/liquidation.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/connectors/ccxt/handlers/ohlc.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/connectors/ccxt/handlers/open_interest.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/connectors/ccxt/handlers/orderbook.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/connectors/ccxt/handlers/quote.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/connectors/ccxt/handlers/trade.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/connectors/ccxt/rate_limits.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/connectors/ccxt/subscription_config.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/connectors/ccxt/subscription_manager.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/connectors/ccxt/subscription_orchestrator.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/connectors/ccxt/utils.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/connectors/ccxt/warmup_service.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/connectors/registry.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/connectors/tardis/data.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/connectors/tardis/utils.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/control/__init__.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/control/builtin.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/control/decorator.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/control/executor.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/control/interfaces.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/control/server.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/control/types.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/core/__init__.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/core/account.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/core/basics.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/core/context.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/core/detectors/__init__.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/core/detectors/delisting.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/core/detectors/stale.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/core/errors.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/core/exceptions.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/core/helpers.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/core/initializer.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/core/interfaces.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/core/loggers.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/core/lookups.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/core/metrics.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/core/mixins/__init__.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/core/mixins/market.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/core/mixins/processing.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/core/mixins/subscription.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/core/mixins/trading.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/core/mixins/universe.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/core/mixins/utils.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/core/series.pxd +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/core/series.pyi +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/core/series.pyx +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/core/utils.pyi +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/core/utils.pyx +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/data/__init__.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/data/cache.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/data/containers.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/data/guards.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/data/registry.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/data/storage.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/data/storages/ccxt.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/data/storages/csv.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/data/storages/handy.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/data/storages/multi.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/data/storages/questdb.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/data/storages/stub.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/data/storages/utils.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/data/transformers.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/emitters/__init__.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/emitters/base.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/emitters/composite.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/emitters/csv.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/emitters/indicator.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/emitters/inmemory.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/emitters/prometheus.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/emitters/questdb.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/exporters/__init__.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/exporters/composite.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/exporters/formatters/__init__.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/exporters/formatters/base.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/exporters/formatters/incremental.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/exporters/formatters/slack.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/exporters/formatters/target_position.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/exporters/redis_streams.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/exporters/slack.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/gathering/simplest.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/health/__init__.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/health/base.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/health/dummy.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/loggers/__init__.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/loggers/csv.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/loggers/factory.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/loggers/inmemory.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/loggers/mongo.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/loggers/postgres.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/notifications/__init__.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/notifications/composite.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/notifications/slack.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/notifications/throttler.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/pandaz/__init__.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/pandaz/stats.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/pandaz/ta.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/pandaz/utils.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/plugins/__init__.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/plugins/loader.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/rate_limiting/__init__.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/rate_limiting/backend.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/rate_limiting/config.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/rate_limiting/engine.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/rate_limiting/ip_resolver.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/rate_limiting/manager.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/rate_limiting/pools.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/rate_limiting/redis_backend.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/resources/_build.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/resources/crypto-fees.ini +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/resources/instruments/hyperliquid-spot.json +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/resources/instruments/hyperliquid.f-perpetual.json +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/resources/instruments/symbols-binance-spot.json +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/resources/instruments/symbols-binance.cm-future.json +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/resources/instruments/symbols-binance.cm-perpetual.json +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/resources/instruments/symbols-binance.um-future.json +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/resources/instruments/symbols-binance.um-perpetual.json +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/resources/instruments/symbols-bitfinex.f-perpetual.json +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/resources/instruments/symbols-kraken-spot.json +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/resources/instruments/symbols-kraken.f-future.json +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/resources/instruments/symbols-kraken.f-perpetual.json +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/restarts/__init__.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/restarts/state_resolvers.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/restarts/time_finders.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/restorers/__init__.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/restorers/balance.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/restorers/factory.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/restorers/interfaces.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/restorers/position.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/restorers/signal.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/restorers/state.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/restorers/utils.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/state/__init__.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/state/dummy.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/state/redis.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/ta/__init__.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/ta/indicators.pxd +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/ta/indicators.pyi +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/ta/indicators.pyx +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/templates/__init__.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/templates/base.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/templates/project/accounts.toml.j2 +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/templates/project/config.yml.j2 +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/templates/project/jlive.sh.j2 +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/templates/project/jpaper.sh.j2 +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/templates/project/pyproject.toml.j2 +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/templates/project/src/{{ strategy_name }}/__init__.py.j2 +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/templates/project/src/{{ strategy_name }}/strategy.py.j2 +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/templates/project/template.yml +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/templates/repo/.claude/skills/qubx-cli/SKILL.md +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/templates/repo/.claude/skills/qubx-indicators/SKILL.md +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/templates/repo/.claude/skills/simulation-explorer/SKILL.md +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/templates/repo/.claude/skills/strategy-release/SKILL.md +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/templates/repo/.github/workflows/ci.yml.j2 +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/templates/repo/.gitignore.j2 +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/templates/repo/.python-version +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/templates/repo/.vscode/launch.json +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/templates/repo/.vscode/settings.json +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/templates/repo/.vscode/tasks.json +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/templates/repo/CLAUDE.md.j2 +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/templates/repo/README.md.j2 +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/templates/repo/configs/.gitkeep +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/templates/repo/justfile.j2 +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/templates/repo/pyproject.toml.j2 +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/templates/repo/research/.gitkeep +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/templates/repo/src/{{ strategy_name }}/__init__.py.j2 +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/templates/repo/src/{{ strategy_name }}/cli.py.j2 +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/templates/repo/src/{{ strategy_name }}/strategy.py.j2 +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/templates/repo/template.yml +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/templates/repo/tests/test_strategy.py.j2 +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/templates/simple/__init__.py.j2 +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/templates/simple/accounts.toml.j2 +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/templates/simple/config.yml.j2 +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/templates/simple/jlive.sh.j2 +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/templates/simple/jpaper.sh.j2 +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/templates/simple/strategy.py.j2 +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/templates/simple/template.yml +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/trackers/__init__.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/trackers/advanced.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/trackers/composite.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/trackers/rebalancers.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/trackers/riskctrl.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/trackers/sizers.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/__init__.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/_pyxreloader.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/charting/lookinglass.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/charting/mpl_helpers.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/charting/orderbook.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/collections.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/hft/__init__.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/hft/numba_utils.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/hft/orderbook.pyi +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/hft/orderbook.pyx +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/marketdata/binance.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/marketdata/ccxt.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/marketdata/dukas.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/misc.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/nonce.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/ntp.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/numbers_utils.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/orderbook.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/plotting/__init__.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/plotting/dashboard.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/plotting/data.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/plotting/interfaces.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/plotting/renderers/__init__.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/plotting/renderers/plotly.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/questdb.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/rate_limiter.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/results.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/ringbuffer.pxd +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/ringbuffer.pyi +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/ringbuffer.pyx +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/runner/__init__.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/runner/_jupyter_runner.pyt +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/runner/accounts.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/runner/configs.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/runner/factory.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/runner/kernel_service.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/runner/runner.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/runner/textual/__init__.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/runner/textual/app.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/runner/textual/handlers.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/runner/textual/init_code.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/runner/textual/kernel.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/runner/textual/styles.tcss +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/runner/textual/widgets/__init__.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/runner/textual/widgets/account_summary.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/runner/textual/widgets/command_input.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/runner/textual/widgets/debug_log.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/runner/textual/widgets/orders_table.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/runner/textual/widgets/positions_table.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/runner/textual/widgets/quotes_table.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/runner/textual/widgets/repl_output.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/s3.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/slack.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/throttler.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/time.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/utils/websocket_manager.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/tests/strategies/macd_crossover/src/macd_crossover/indicators/macd.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/tests/strategies/macd_crossover/src/macd_crossover/models/macd_crossover.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/tests/strategies/macd_crossover/src/macd_crossover/models/utils.py +0 -0
- {qubx-1.3.2 → qubx-1.3.3.dev2}/tests/strategies/obi_trader/src/obi_trader/models/obi_trader.py +0 -0
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '1.3.
|
|
22
|
-
__version_tuple__ = version_tuple = (1, 3,
|
|
21
|
+
__version__ = version = '1.3.3.dev2'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 3, 3, 'dev2')
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -1060,6 +1060,25 @@ def s3_rm_cmd(path: str, recursive: bool, yes: bool):
|
|
|
1060
1060
|
s3_rm(path, recursive=recursive)
|
|
1061
1061
|
|
|
1062
1062
|
|
|
1063
|
+
@s3.command("parquet-stats")
|
|
1064
|
+
@click.argument("path", type=str)
|
|
1065
|
+
@click.option("--per-column", is_flag=True, help="Show per-column chunk sizes for row group 0.")
|
|
1066
|
+
def s3_parquet_stats_cmd(path: str, per_column: bool):
|
|
1067
|
+
"""
|
|
1068
|
+
Print parquet file-level summary and row-group size distribution.
|
|
1069
|
+
|
|
1070
|
+
Accepts both S3 paths (account:bucket/key) and local paths. Reads only
|
|
1071
|
+
the footer, so the full file is NOT downloaded.
|
|
1072
|
+
|
|
1073
|
+
Examples:\n
|
|
1074
|
+
qubx s3 parquet-stats r2:dvault-features/.../part-2026-03.parquet\n
|
|
1075
|
+
qubx s3 parquet-stats ./local.parquet --per-column
|
|
1076
|
+
"""
|
|
1077
|
+
from .s3 import s3_parquet_stats
|
|
1078
|
+
|
|
1079
|
+
s3_parquet_stats(path, per_column=per_column)
|
|
1080
|
+
|
|
1081
|
+
|
|
1063
1082
|
@s3.command("cp")
|
|
1064
1083
|
@click.argument("src", type=str)
|
|
1065
1084
|
@click.argument("dst", type=str)
|
|
@@ -1454,12 +1454,16 @@ def _bundle_source_overrides(
|
|
|
1454
1454
|
subprocess.run(["git", "clone", git_url, checkout_dir], check=True, capture_output=True, text=True)
|
|
1455
1455
|
subprocess.run(["git", "checkout", commit_sha], cwd=checkout_dir, check=True, capture_output=True, text=True)
|
|
1456
1456
|
|
|
1457
|
-
|
|
1457
|
+
# Honor [tool.uv.sources] `subdirectory` for monorepo git sources
|
|
1458
|
+
subdir = source.get("subdirectory")
|
|
1459
|
+
build_cwd = os.path.join(checkout_dir, subdir) if subdir else checkout_dir
|
|
1460
|
+
|
|
1461
|
+
logger.info(f" Bundling {pkg_name}=={pkg_ver} from {build_cwd} ...")
|
|
1458
1462
|
os.makedirs(wheels_dir, exist_ok=True)
|
|
1459
1463
|
try:
|
|
1460
1464
|
result = subprocess.run(
|
|
1461
1465
|
["uv", "build", "--wheel", ".", "--out-dir", wheels_dir],
|
|
1462
|
-
cwd=
|
|
1466
|
+
cwd=build_cwd,
|
|
1463
1467
|
check=True,
|
|
1464
1468
|
capture_output=True,
|
|
1465
1469
|
text=True,
|
|
@@ -109,6 +109,98 @@ def s3_cp(src: str, dst: str, recursive: bool = False) -> None:
|
|
|
109
109
|
raise click.Abort()
|
|
110
110
|
|
|
111
111
|
|
|
112
|
+
def s3_parquet_stats(path: str, per_column: bool = False) -> None:
|
|
113
|
+
"""Print file-level summary + row-group size distribution for one parquet file.
|
|
114
|
+
|
|
115
|
+
Accepts either an S3 URI (``account:bucket/key``) or a local filesystem path.
|
|
116
|
+
Uses pyarrow for metadata parsing so no data pages are fetched.
|
|
117
|
+
"""
|
|
118
|
+
import pyarrow.parquet as pq
|
|
119
|
+
from pyarrow.fs import LocalFileSystem
|
|
120
|
+
|
|
121
|
+
# Heuristic: an S3 URI has "account:..." where account is non-empty and
|
|
122
|
+
# contains no path separator. Fall back to local for anything else.
|
|
123
|
+
is_s3 = ":" in path and "/" not in path.split(":", 1)[0] and not path.startswith("/")
|
|
124
|
+
if is_s3:
|
|
125
|
+
try:
|
|
126
|
+
client, s3_path = S3Client.from_uri(path)
|
|
127
|
+
except ValueError as e:
|
|
128
|
+
raise click.BadParameter(str(e))
|
|
129
|
+
fs = client.fs
|
|
130
|
+
open_path = s3_path
|
|
131
|
+
else:
|
|
132
|
+
fs = LocalFileSystem()
|
|
133
|
+
open_path = path
|
|
134
|
+
|
|
135
|
+
try:
|
|
136
|
+
with fs.open_input_file(open_path) as f:
|
|
137
|
+
meta = pq.ParquetFile(f).metadata
|
|
138
|
+
except Exception as e:
|
|
139
|
+
click.echo(click.style(f"Error reading {path}: {e}", fg="red"), err=True)
|
|
140
|
+
raise click.Abort()
|
|
141
|
+
|
|
142
|
+
click.echo(click.style(f"File: {path}", fg="cyan", bold=True))
|
|
143
|
+
click.echo(f" num_rows: {meta.num_rows:,}")
|
|
144
|
+
click.echo(f" num_row_groups: {meta.num_row_groups}")
|
|
145
|
+
click.echo(f" num_columns: {meta.num_columns}")
|
|
146
|
+
click.echo(f" format_version: {meta.format_version}")
|
|
147
|
+
if meta.created_by:
|
|
148
|
+
click.echo(f" created_by: {meta.created_by}")
|
|
149
|
+
|
|
150
|
+
if meta.num_row_groups == 0:
|
|
151
|
+
return
|
|
152
|
+
|
|
153
|
+
# Parquet spec: RowGroup.total_byte_size is the SUM of uncompressed
|
|
154
|
+
# column sizes. The compressed on-disk size is the sum of
|
|
155
|
+
# ColumnChunk.total_compressed_size across columns.
|
|
156
|
+
rows: list[int] = []
|
|
157
|
+
per_rg_compressed: list[int] = []
|
|
158
|
+
per_rg_uncompressed: list[int] = []
|
|
159
|
+
compressions: set[str] = set()
|
|
160
|
+
for i in range(meta.num_row_groups):
|
|
161
|
+
rg = meta.row_group(i)
|
|
162
|
+
rows.append(rg.num_rows)
|
|
163
|
+
c_sz = 0
|
|
164
|
+
u_sz = 0
|
|
165
|
+
for c in range(rg.num_columns):
|
|
166
|
+
col = rg.column(c)
|
|
167
|
+
c_sz += col.total_compressed_size
|
|
168
|
+
u_sz += col.total_uncompressed_size
|
|
169
|
+
compressions.add(str(col.compression))
|
|
170
|
+
per_rg_compressed.append(c_sz)
|
|
171
|
+
per_rg_uncompressed.append(u_sz)
|
|
172
|
+
|
|
173
|
+
total_compressed = sum(per_rg_compressed)
|
|
174
|
+
total_uncompressed = sum(per_rg_uncompressed)
|
|
175
|
+
click.echo()
|
|
176
|
+
click.echo(click.style("Row groups:", fg="cyan", bold=True))
|
|
177
|
+
click.echo(f" rows per rg: min={min(rows):,} max={max(rows):,} avg={sum(rows)//len(rows):,}")
|
|
178
|
+
click.echo(
|
|
179
|
+
f" cmp per rg: min={_human_size(min(per_rg_compressed))} "
|
|
180
|
+
f"max={_human_size(max(per_rg_compressed))} avg={_human_size(sum(per_rg_compressed) // len(per_rg_compressed))}"
|
|
181
|
+
)
|
|
182
|
+
click.echo(f" total: compressed={_human_size(total_compressed)} uncompressed={_human_size(total_uncompressed)}")
|
|
183
|
+
if total_uncompressed > 0:
|
|
184
|
+
ratio = 100 * total_compressed / total_uncompressed
|
|
185
|
+
click.echo(f" compression: {', '.join(sorted(compressions))} ({ratio:.1f}% of uncompressed)")
|
|
186
|
+
else:
|
|
187
|
+
click.echo(f" compression: {', '.join(sorted(compressions))}")
|
|
188
|
+
|
|
189
|
+
if per_column:
|
|
190
|
+
click.echo()
|
|
191
|
+
click.echo(click.style("Columns (row group 0):", fg="cyan", bold=True))
|
|
192
|
+
rg0 = meta.row_group(0)
|
|
193
|
+
click.echo(f" {'path':30s} {'type':12s} {'compressed':>11s} {'uncompressed':>12s} pct compression")
|
|
194
|
+
for c in range(rg0.num_columns):
|
|
195
|
+
col = rg0.column(c)
|
|
196
|
+
pct = (100 * col.total_compressed_size / col.total_uncompressed_size) if col.total_uncompressed_size else 0.0
|
|
197
|
+
click.echo(
|
|
198
|
+
f" {col.path_in_schema:30s} {str(col.physical_type):12s} "
|
|
199
|
+
f"{_human_size(col.total_compressed_size):>11s} {_human_size(col.total_uncompressed_size):>12s} "
|
|
200
|
+
f"{pct:5.1f}% {col.compression}"
|
|
201
|
+
)
|
|
202
|
+
|
|
203
|
+
|
|
112
204
|
def s3_accounts() -> None:
|
|
113
205
|
s = get_settings()
|
|
114
206
|
if not s.s3:
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/connectors/ccxt/exchanges/bitfinex/bitfinex_account.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{qubx-1.3.2 → qubx-1.3.3.dev2}/src/qubx/connectors/ccxt/exchanges/hyperliquid/hyperliquid.py
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|