From 984a2b669934425e0f65f1244c4ade88866a7dfa Mon Sep 17 00:00:00 2001 From: Morty Space Date: Sat, 14 May 2022 14:23:14 +0200 Subject: [PATCH] Moving to github workflows --- .github/workflows/test.yml | 58 +++++++++++++++++++++++++++++++ activate.sh | 5 --- azure-pipelines.yml | 55 +++++++++++++---------------- generatestructs.py | 7 ++-- src/cryptocom/exchange/coins.py | 5 +-- src/cryptocom/exchange/helpers.py | 4 +-- src/cryptocom/exchange/market.py | 2 +- src/cryptocom/exchange/pairs.py | 26 +++++++++----- 8 files changed, 108 insertions(+), 54 deletions(-) create mode 100644 .github/workflows/test.yml diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..f89bdc8 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,58 @@ +--- +name: Tests +'on': + push: + branches: + - main + - production + - feature/* + - fix/* + pull_request: + branches: + - main + - production +jobs: + test: + strategy: + max-parallel: 1 + matrix: + python-version: ['3.7', '3.8', '3.9', '3.10'] + runs-on: ubuntu-latest + steps: + - name: Checkout repo + uses: actions/checkout@v2 + - name: Get Python ${{ matrix.python-version }} + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} + - name: Download cache for pip + uses: actions/cache@v2 + with: + path: ~/.cache/pip + key: py-${{ matrix.python-version }}-poetry-pip-1.1.13 + restore-keys: poetry-pip + - name: Install poetry + run: pip install poetry==1.1.13 + - name: Download cache for poetry + id: poetry-install + uses: actions/cache@v2 + with: + path: ./.venv/ + key: py-${{ matrix.python-version }}-poetry-install-${{ hashFiles('poetry.lock') }} + restore-keys: poetry-install + - name: Install dependencies + if: steps.poetry-install.outputs.cache-hit != 'true' + run: rm -rf ./.venv/ && poetry install + - name: Download cache pre-commit + id: pre-commit-install + uses: actions/cache@v2 + with: + path: ~/.cache/pre-commit + key: py-${{ matrix.python-version }}-pre-commit-install-${{ hashFiles('.pre-commit-config.yaml') }} + restore-keys: pre-commit-install + - name: Verify pre-commit + run: poetry run pre-commit run -a + - name: Run test docs + run: . activate.sh && cd docs && make doctest && cd .. + - name: Run tests + run: . activate.sh && poetry run pytest -v --cov . --cov-report xml:coverage.xml diff --git a/activate.sh b/activate.sh index a49ebf2..195025f 100644 --- a/activate.sh +++ b/activate.sh @@ -1,7 +1,2 @@ -find . -type f -name '*.py[co]' -delete -find . -type d -name '__pycache__' -delete - -source ./venv/bin/activate - export CRYPTOCOM_API_KEY=PCuweiWhHJC339hHdMdcVC export CRYPTOCOM_API_SECRET=mXYtwLajZdFGU56mDo8eqL diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 6374fd9..4d1e5a6 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -1,25 +1,22 @@ +--- trigger: -- master - + - master schedules: -- cron: "0 0 * * *" - displayName: Daily test run - branches: - include: - - master - always: true - + - cron: 0 0 * * * + displayName: Daily test run + branches: + include: + - master + always: true variables: -- name: CRYPTOCOM_API_KEY - value: PCuweiWhHJC339hHdMdcVC -- name: CRYPTOCOM_API_SECRET - value: mXYtwLajZdFGU56mDo8eqL -- name: CC_TEST_REPORTER_ID - value: 16bcfb0958d99f11456f8d80aeb5800d567724471e151fe6e74a4b329b45dcb6 - + - name: CRYPTOCOM_API_KEY + value: PCuweiWhHJC339hHdMdcVC + - name: CRYPTOCOM_API_SECRET + value: mXYtwLajZdFGU56mDo8eqL + - name: CC_TEST_REPORTER_ID + value: 16bcfb0958d99f11456f8d80aeb5800d567724471e151fe6e74a4b329b45dcb6 pool: - vmImage: 'ubuntu-20.04' - + vmImage: ubuntu-20.04 strategy: maxParallel: 1 matrix: @@ -35,12 +32,10 @@ steps: - checkout: self persistCredentials: true clean: true - - task: UsePythonVersion@0 inputs: - versionSpec: '$(python.version)' - displayName: 'Use Python $(python.version)' - + versionSpec: $(python.version) + displayName: Use Python $(python.version) - script: | python -m pip install --upgrade pip pip install poetry @@ -48,8 +43,7 @@ steps: curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter chmod +x ./cc-test-reporter ./cc-test-reporter before-build - displayName: 'Install dependencies' - + displayName: Install dependencies - script: | git pull origin master poetry run python generatestructs.py @@ -58,11 +52,10 @@ steps: git add -A . git commit -m "[JOB] Updated API pairs and coins" git push origin HEAD:master - displayName: 'Update API structs' + displayName: Update API structs condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master')) - - - script: | - cd docs && make doctest && cd .. - poetry run pytest -v --cov . --cov-report xml:coverage.xml - ./cc-test-reporter after-build --exit-code $? - displayName: 'Run tests' + # - script: | + # cd docs && make doctest && cd .. + # poetry run pytest -v --cov . --cov-report xml:coverage.xml + # ./cc-test-reporter after-build --exit-code $? + # displayName: Run tests diff --git a/generatestructs.py b/generatestructs.py index fbaf348..05d7078 100644 --- a/generatestructs.py +++ b/generatestructs.py @@ -6,8 +6,7 @@ from cryptocom import exchange as cro ALL_TEMPLATE = """ def all(): return [ - value for name, value in globals().items() - if isinstance(value, {class_name}) + value for name, value in globals().items() if isinstance(value, {}) ] """ @@ -31,7 +30,7 @@ async def main(): f"quantity_precision={pair.quantity_precision})\n" for pair in sorted(pairs, key=lambda p: p.name) ] - + ["\n", ALL_TEMPLATE.format(class_name="Pair")] + + ["\n", ALL_TEMPLATE.format("Pair")] ) with (SRC_PATH / "coins.py").open("w") as f: @@ -43,7 +42,7 @@ async def main(): f'{coin.name} = Coin("{coin.exchange_name}")\n' for coin in sorted(coins, key=lambda c: c.name) ] - + ["\n", ALL_TEMPLATE.format(class_name="Coin")] + + ["\n", ALL_TEMPLATE.format("Coin")] ) diff --git a/src/cryptocom/exchange/coins.py b/src/cryptocom/exchange/coins.py index c3f1eda..5df06e4 100644 --- a/src/cryptocom/exchange/coins.py +++ b/src/cryptocom/exchange/coins.py @@ -112,6 +112,7 @@ KNC = Coin("KNC") KP3R = Coin("KP3R") KRL = Coin("KRL") KSM = Coin("KSM") +LDO = Coin("LDO") LINK = Coin("LINK") LPT = Coin("LPT") LRC = Coin("LRC") @@ -214,6 +215,7 @@ WAVES = Coin("WAVES") WAXP = Coin("WAXP") WBTC = Coin("WBTC") WEMIX = Coin("WEMIX") +WOO = Coin("WOO") XLM = Coin("XLM") XRP = Coin("XRP") XTZ = Coin("XTZ") @@ -227,6 +229,5 @@ ZRX = Coin("ZRX") def all(): return [ - value for name, value in globals().items() - if isinstance(value, Coin) + value for name, value in globals().items() if isinstance(value, Coin) ] diff --git a/src/cryptocom/exchange/helpers.py b/src/cryptocom/exchange/helpers.py index 3d6a00d..bf0278e 100644 --- a/src/cryptocom/exchange/helpers.py +++ b/src/cryptocom/exchange/helpers.py @@ -1,5 +1,5 @@ def round_up(value: float, precision: int) -> float: - pwr = 10 ** precision + pwr = 10**precision rounded = round((value * pwr) / pwr, precision) if rounded < value: rounded = round((value * pwr + 1) / pwr, precision) @@ -7,5 +7,5 @@ def round_up(value: float, precision: int) -> float: def round_down(value: float, precision: int) -> float: - pwr = 10 ** precision + pwr = 10**precision return round((value * pwr) / pwr, precision) diff --git a/src/cryptocom/exchange/market.py b/src/cryptocom/exchange/market.py index 85bcf2b..1a3351d 100644 --- a/src/cryptocom/exchange/market.py +++ b/src/cryptocom/exchange/market.py @@ -1,4 +1,4 @@ -from typing import Dict, List, AsyncGenerator +from typing import AsyncGenerator, Dict, List from . import pairs from .api import ApiProvider diff --git a/src/cryptocom/exchange/pairs.py b/src/cryptocom/exchange/pairs.py index 2d3a284..9647f63 100644 --- a/src/cryptocom/exchange/pairs.py +++ b/src/cryptocom/exchange/pairs.py @@ -64,13 +64,16 @@ BTC_USDT = Pair("BTC_USDT", price_precision=2, quantity_precision=6) C98_USDT = Pair("C98_USDT", price_precision=4, quantity_precision=2) CELR_USDC = Pair("CELR_USDC", price_precision=6, quantity_precision=0) CELR_USDT = Pair("CELR_USDT", price_precision=6, quantity_precision=1) +CHR_BTC = Pair("CHR_BTC", price_precision=10, quantity_precision=1) CHR_USDT = Pair("CHR_USDT", price_precision=5, quantity_precision=1) CHZ_BTC = Pair("CHZ_BTC", price_precision=10, quantity_precision=1) CHZ_USDT = Pair("CHZ_USDT", price_precision=5, quantity_precision=2) CKB_USDT = Pair("CKB_USDT", price_precision=6, quantity_precision=0) COMP_BTC = Pair("COMP_BTC", price_precision=7, quantity_precision=4) COMP_USDT = Pair("COMP_USDT", price_precision=2, quantity_precision=5) +COTI_BTC = Pair("COTI_BTC", price_precision=10, quantity_precision=1) COTI_USDC = Pair("COTI_USDC", price_precision=5, quantity_precision=1) +COTI_USDT = Pair("COTI_USDT", price_precision=5, quantity_precision=1) CQT_USDT = Pair("CQT_USDT", price_precision=4, quantity_precision=2) CRO_BTC = Pair("CRO_BTC", price_precision=9, quantity_precision=2) CRO_USDC = Pair("CRO_USDC", price_precision=5, quantity_precision=3) @@ -107,17 +110,17 @@ EFI_USDT = Pair("EFI_USDT", price_precision=4, quantity_precision=2) EGLD_BTC = Pair("EGLD_BTC", price_precision=7, quantity_precision=4) EGLD_USDC = Pair("EGLD_USDC", price_precision=2, quantity_precision=4) EGLD_USDT = Pair("EGLD_USDT", price_precision=4, quantity_precision=3) +ELON_USDC = Pair("ELON_USDC", price_precision=10, quantity_precision=0) ELON_USDT = Pair("ELON_USDT", price_precision=10, quantity_precision=0) ENJ_BTC = Pair("ENJ_BTC", price_precision=9, quantity_precision=2) ENJ_CRO = Pair("ENJ_CRO", price_precision=3, quantity_precision=2) ENJ_USDC = Pair("ENJ_USDC", price_precision=4, quantity_precision=2) ENJ_USDT = Pair("ENJ_USDT", price_precision=5, quantity_precision=1) +ENS_BTC = Pair("ENS_BTC", price_precision=8, quantity_precision=3) +ENS_USDC = Pair("ENS_USDC", price_precision=3, quantity_precision=3) ENS_USDT = Pair("ENS_USDT", price_precision=3, quantity_precision=3) EOS_BTC = Pair("EOS_BTC", price_precision=8, quantity_precision=2) EOS_USDT = Pair("EOS_USDT", price_precision=4, quantity_precision=2) -EPS_BTC = Pair("EPS_BTC", price_precision=10, quantity_precision=1) -EPS_USDC = Pair("EPS_USDC", price_precision=5, quantity_precision=1) -EPS_USDT = Pair("EPS_USDT", price_precision=5, quantity_precision=1) ERN_USDT = Pair("ERN_USDT", price_precision=4, quantity_precision=2) ETC_BTC = Pair("ETC_BTC", price_precision=7, quantity_precision=3) ETC_USDT = Pair("ETC_USDT", price_precision=3, quantity_precision=3) @@ -129,10 +132,12 @@ FARM_USDC = Pair("FARM_USDC", price_precision=2, quantity_precision=4) FET_USDT = Pair("FET_USDT", price_precision=5, quantity_precision=1) FIL_BTC = Pair("FIL_BTC", price_precision=7, quantity_precision=3) FIL_USDT = Pair("FIL_USDT", price_precision=3, quantity_precision=3) +FITFI_BTC = Pair("FITFI_BTC", price_precision=9, quantity_precision=2) FITFI_USDT = Pair("FITFI_USDT", price_precision=5, quantity_precision=1) FLOW_BTC = Pair("FLOW_BTC", price_precision=8, quantity_precision=2) FLOW_USDC = Pair("FLOW_USDC", price_precision=4, quantity_precision=2) FLOW_USDT = Pair("FLOW_USDT", price_precision=3, quantity_precision=4) +FLUX_USDT = Pair("FLUX_USDT", price_precision=4, quantity_precision=2) FORTH_USDT = Pair("FORTH_USDT", price_precision=3, quantity_precision=3) FTM_BTC = Pair("FTM_BTC", price_precision=9, quantity_precision=2) FTM_USDC = Pair("FTM_USDC", price_precision=4, quantity_precision=2) @@ -148,6 +153,7 @@ GLMR_BTC = Pair("GLMR_BTC", price_precision=9, quantity_precision=2) GLMR_USDT = Pair("GLMR_USDT", price_precision=4, quantity_precision=2) GLM_USDT = Pair("GLM_USDT", price_precision=5, quantity_precision=1) GODS_USDT = Pair("GODS_USDT", price_precision=4, quantity_precision=2) +GRT_BTC = Pair("GRT_BTC", price_precision=10, quantity_precision=1) GRT_CRO = Pair("GRT_CRO", price_precision=3, quantity_precision=2) GRT_USDT = Pair("GRT_USDT", price_precision=5, quantity_precision=2) GTC_USDT = Pair("GTC_USDT", price_precision=3, quantity_precision=3) @@ -176,6 +182,7 @@ IOTX_USDC = Pair("IOTX_USDC", price_precision=6, quantity_precision=0) IOTX_USDT = Pair("IOTX_USDT", price_precision=5, quantity_precision=1) IQ_USDT = Pair("IQ_USDT", price_precision=6, quantity_precision=0) JASMY_BTC = Pair("JASMY_BTC", price_precision=10, quantity_precision=1) +JASMY_USDC = Pair("JASMY_USDC", price_precision=5, quantity_precision=1) JASMY_USDT = Pair("JASMY_USDT", price_precision=5, quantity_precision=1) JOE_USDT = Pair("JOE_USDT", price_precision=5, quantity_precision=1) KAVA_USDT = Pair("KAVA_USDT", price_precision=4, quantity_precision=2) @@ -187,6 +194,8 @@ KRL_USDT = Pair("KRL_USDT", price_precision=5, quantity_precision=1) KSM_BTC = Pair("KSM_BTC", price_precision=7, quantity_precision=4) KSM_USDC = Pair("KSM_USDC", price_precision=2, quantity_precision=4) KSM_USDT = Pair("KSM_USDT", price_precision=3, quantity_precision=3) +LDO_BTC = Pair("LDO_BTC", price_precision=9, quantity_precision=2) +LDO_USDT = Pair("LDO_USDT", price_precision=4, quantity_precision=2) LINK_BTC = Pair("LINK_BTC", price_precision=7, quantity_precision=2) LINK_CRO = Pair("LINK_CRO", price_precision=2, quantity_precision=2) LINK_USDC = Pair("LINK_USDC", price_precision=3, quantity_precision=3) @@ -197,9 +206,6 @@ LSK_USDT = Pair("LSK_USDT", price_precision=4, quantity_precision=2) LTC_BTC = Pair("LTC_BTC", price_precision=6, quantity_precision=4) LTC_USDC = Pair("LTC_USDC", price_precision=2, quantity_precision=4) LTC_USDT = Pair("LTC_USDT", price_precision=2, quantity_precision=5) -LUNA_BTC = Pair("LUNA_BTC", price_precision=7, quantity_precision=3) -LUNA_USDC = Pair("LUNA_USDC", price_precision=3, quantity_precision=3) -LUNA_USDT = Pair("LUNA_USDT", price_precision=4, quantity_precision=2) MANA_BTC = Pair("MANA_BTC", price_precision=9, quantity_precision=1) MANA_USDC = Pair("MANA_USDC", price_precision=4, quantity_precision=2) MANA_USDT = Pair("MANA_USDT", price_precision=5, quantity_precision=2) @@ -211,7 +217,6 @@ MBL_BTC = Pair("MBL_BTC", price_precision=10, quantity_precision=0) MBL_USDT = Pair("MBL_USDT", price_precision=6, quantity_precision=0) MC_USDT = Pair("MC_USDT", price_precision=4, quantity_precision=2) MDT_USDT = Pair("MDT_USDT", price_precision=6, quantity_precision=0) -MIR_USDT = Pair("MIR_USDT", price_precision=4, quantity_precision=2) MKR_USDT = Pair("MKR_USDT", price_precision=2, quantity_precision=6) MLN_USDC = Pair("MLN_USDC", price_precision=3, quantity_precision=3) MMF_USDC = Pair("MMF_USDC", price_precision=4, quantity_precision=2) @@ -234,6 +239,7 @@ OGN_USDT = Pair("OGN_USDT", price_precision=4, quantity_precision=2) OMG_BTC = Pair("OMG_BTC", price_precision=8, quantity_precision=4) OMG_USDT = Pair("OMG_USDT", price_precision=4, quantity_precision=4) ONEINCH_BTC = Pair("1INCH_BTC", price_precision=9, quantity_precision=2) +ONEINCH_USDC = Pair("1INCH_USDC", price_precision=4, quantity_precision=2) ONEINCH_USDT = Pair("1INCH_USDT", price_precision=4, quantity_precision=2) ONE_BTC = Pair("ONE_BTC", price_precision=10, quantity_precision=1) ONE_USDC = Pair("ONE_USDC", price_precision=5, quantity_precision=1) @@ -282,6 +288,7 @@ SDN_USDC = Pair("SDN_USDC", price_precision=4, quantity_precision=2) SDN_USDT = Pair("SDN_USDT", price_precision=4, quantity_precision=2) SHIB_USDC = Pair("SHIB_USDC", price_precision=9, quantity_precision=0) SHIB_USDT = Pair("SHIB_USDT", price_precision=9, quantity_precision=0) +SKL_BTC = Pair("SKL_BTC", price_precision=10, quantity_precision=1) SKL_USDT = Pair("SKL_USDT", price_precision=5, quantity_precision=2) SLP_BTC = Pair("SLP_BTC", price_precision=10, quantity_precision=0) SLP_USDC = Pair("SLP_USDC", price_precision=6, quantity_precision=0) @@ -294,6 +301,7 @@ SPELL_USDC = Pair("SPELL_USDC", price_precision=6, quantity_precision=0) SPELL_USDT = Pair("SPELL_USDT", price_precision=7, quantity_precision=0) SPS_USDT = Pair("SPS_USDT", price_precision=5, quantity_precision=1) SRM_USDC = Pair("SRM_USDC", price_precision=4, quantity_precision=2) +SRM_USDT = Pair("SRM_USDT", price_precision=4, quantity_precision=2) STORJ_USDT = Pair("STORJ_USDT", price_precision=4, quantity_precision=2) STRAX_USDT = Pair("STRAX_USDT", price_precision=4, quantity_precision=2) STX_BTC = Pair("STX_BTC", price_precision=9, quantity_precision=2) @@ -333,6 +341,7 @@ WBTC_BTC = Pair("WBTC_BTC", price_precision=4, quantity_precision=6) WBTC_USDC = Pair("WBTC_USDC", price_precision=2, quantity_precision=6) WBTC_USDT = Pair("WBTC_USDT", price_precision=2, quantity_precision=6) WEMIX_USDT = Pair("WEMIX_USDT", price_precision=4, quantity_precision=2) +WOO_USDT = Pair("WOO_USDT", price_precision=5, quantity_precision=1) XLM_BTC = Pair("XLM_BTC", price_precision=9, quantity_precision=0) XLM_USDC = Pair("XLM_USDC", price_precision=5, quantity_precision=1) XLM_USDT = Pair("XLM_USDT", price_precision=5, quantity_precision=1) @@ -355,6 +364,5 @@ ZRX_USDT = Pair("ZRX_USDT", price_precision=4, quantity_precision=2) def all(): return [ - value for name, value in globals().items() - if isinstance(value, Pair) + value for name, value in globals().items() if isinstance(value, Pair) ]