From 0228db7811d03dc8909adb51f994fdf48829ab54 Mon Sep 17 00:00:00 2001 From: Tyler Goodlet Date: Thu, 20 May 2021 16:11:49 -0400 Subject: [PATCH 01/10] Skip questrade tests for now They need to be run with a local private API key and haven't been ported to latest data apis anyway. It's also a broker most peeps aren't going to be using any time soon. --- tests/test_questrade.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tests/test_questrade.py b/tests/test_questrade.py index 67417f1d..f8bd3f7a 100644 --- a/tests/test_questrade.py +++ b/tests/test_questrade.py @@ -10,11 +10,18 @@ import pytest import tractor from tractor.testing import tractor_test +import piker from piker.brokers import get_brokermod from piker.brokers.data import DataFeed -log = tractor.get_logger('tests') +log = piker.log.get_logger('tests') + + +pytestmark = pytest.mark.skipif( + True, + reason="questrade tests can only be run locally with an API key", +) # stock quote From beecea52e48a6de3cf8732a8e5bc37f622717dc1 Mon Sep 17 00:00:00 2001 From: Tyler Goodlet Date: Thu, 20 May 2021 16:13:10 -0400 Subject: [PATCH 02/10] Run py3.9 and tests in CI --- .github/workflows/ci.yml | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fa7b7c6a..0a66bd22 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,15 +7,22 @@ jobs: name: 'pip install' runs-on: ubuntu-latest steps: + - name: Checkout uses: actions/checkout@v2 with: - ref: chart_hacking + ref: master + - name: Setup python uses: actions/setup-python@v2 with: - python-version: '3.8' + python-version: '3.9' + - name: Install dependencies run: pip install -e . --upgrade-strategy eager -r requirements.txt - - name: Run piker + + - name: Run piker cli run: piker + + - name: Run test suite + run: pytest tests From b8d9b4a5ace7a33b308a98b7f4def0e8eef78ead Mon Sep 17 00:00:00 2001 From: Tyler Goodlet Date: Thu, 20 May 2021 16:23:56 -0400 Subject: [PATCH 03/10] Add seperate test job installing test deps --- .github/workflows/ci.yml | 23 ++++++++++++++++++++--- requirements-test.txt | 1 + 2 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 requirements-test.txt diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0a66bd22..336f6e3b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -3,9 +3,11 @@ name: CI on: push jobs: - mypy: + + basic_install: name: 'pip install' runs-on: ubuntu-latest + steps: - name: Checkout @@ -24,5 +26,20 @@ jobs: - name: Run piker cli run: piker - - name: Run test suite - run: pytest tests + testing: + + steps: + + - name: Checkout + uses: actions/checkout@v2 + + - name: Setup python + uses: actions/setup-python@v2 + with: + python-version: '3.9' + + - name: Install dependencies + run: pip install -U . -r requirements-test.txt --upgrade-strategy eager + + - name: Test suite + run: pytest tests -rs diff --git a/requirements-test.txt b/requirements-test.txt new file mode 100644 index 00000000..e079f8a6 --- /dev/null +++ b/requirements-test.txt @@ -0,0 +1 @@ +pytest From 8aeaf22e4fce311d7d170787c715691801dc616e Mon Sep 17 00:00:00 2001 From: Tyler Goodlet Date: Thu, 20 May 2021 16:26:19 -0400 Subject: [PATCH 04/10] Fix ci syntax --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 336f6e3b..912c7cfe 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,7 +7,6 @@ jobs: basic_install: name: 'pip install' runs-on: ubuntu-latest - steps: - name: Checkout @@ -27,7 +26,8 @@ jobs: run: piker testing: - + name: 'pip install' + runs-on: ubuntu-latest steps: - name: Checkout From d910af4dcf5ea0472982009e2f9ac4c2d47bc67e Mon Sep 17 00:00:00 2001 From: Tyler Goodlet Date: Thu, 20 May 2021 17:13:32 -0400 Subject: [PATCH 05/10] Need our pinned deps too..facepalm --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 912c7cfe..8fce7e6e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -39,7 +39,7 @@ jobs: python-version: '3.9' - name: Install dependencies - run: pip install -U . -r requirements-test.txt --upgrade-strategy eager + run: pip install -U . -r requirements-test.txt -r requirements.txt --upgrade-strategy eager - name: Test suite run: pytest tests -rs From 5a98e17d7f541137d039f4e0a9d3c05d388384c6 Mon Sep 17 00:00:00 2001 From: Tyler Goodlet Date: Thu, 20 May 2021 17:16:52 -0400 Subject: [PATCH 06/10] Name the test job.. --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8fce7e6e..7214f7d2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,7 +26,7 @@ jobs: run: piker testing: - name: 'pip install' + name: 'test suite' runs-on: ubuntu-latest steps: From 2ef5a5252147a8dd9257ceb828a95dcb394cd70a Mon Sep 17 00:00:00 2001 From: Tyler Goodlet Date: Thu, 20 May 2021 19:34:45 -0400 Subject: [PATCH 07/10] Fix broken import in ib backend --- piker/brokers/ib.py | 2 +- piker/data/__init__.py | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/piker/brokers/ib.py b/piker/brokers/ib.py index c7d8917e..17c0ceb2 100644 --- a/piker/brokers/ib.py +++ b/piker/brokers/ib.py @@ -47,7 +47,7 @@ from ib_insync.wrapper import Wrapper from ib_insync.client import Client as ib_Client from ..log import get_logger, get_console_log -from ..data import maybe_spawn_brokerd +from .._daemon import maybe_spawn_brokerd from ..data._source import from_df from ..data._sharedmem import ShmArray from ._util import SymbolNotFound diff --git a/piker/data/__init__.py b/piker/data/__init__.py index 1a287ee2..e98195b4 100644 --- a/piker/data/__init__.py +++ b/piker/data/__init__.py @@ -38,7 +38,6 @@ from .feed import ( __all__ = [ 'open_feed', - 'maybe_spawn_brokerd', 'ShmArray', 'iterticks', 'maybe_open_shm_array', From b6d8c300d412a4d39fef989bfa9fbc8d7672faa7 Mon Sep 17 00:00:00 2001 From: Tyler Goodlet Date: Sat, 22 May 2021 15:11:23 -0400 Subject: [PATCH 08/10] Slap in brokers.toml template if none exists --- MANIFEST.in | 1 + data/brokers.toml | 9 +++++++++ piker/brokers/config.py | 21 ++++++++++++++++++++- 3 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 data/brokers.toml diff --git a/MANIFEST.in b/MANIFEST.in index 9561fb10..7f3499c6 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1 +1,2 @@ include README.rst +include data/brokers.toml diff --git a/data/brokers.toml b/data/brokers.toml new file mode 100644 index 00000000..54b3df16 --- /dev/null +++ b/data/brokers.toml @@ -0,0 +1,9 @@ +[binance] + +[kraken] + + +# [ib] + + +# [questrade] diff --git a/piker/brokers/config.py b/piker/brokers/config.py index 6718e794..a8ba7ff2 100644 --- a/piker/brokers/config.py +++ b/piker/brokers/config.py @@ -18,9 +18,12 @@ Broker configuration mgmt. """ import os -import configparser +from os.path import dirname +import shutil + import toml import click + from ..log import get_logger log = get_logger('broker-config') @@ -40,12 +43,28 @@ def get_broker_conf_path(): return os.path.join(_config_dir, _file_name) +def repodir(): + """Return the abspath to the repo directory. + """ + dirpath = os.path.abspath( + # we're 3 levels down in **this** module file + dirname(dirname(dirname(os.path.realpath(__file__)))) + ) + return dirpath + + def load( path: str = None ) -> (dict, str): """Load broker config. """ path = path or get_broker_conf_path() + if not os.path.isfile(path): + shutil.copyfile( + os.path.join(repodir(), 'data/brokers.toml'), + path, + ) + config = toml.load(path) log.debug(f"Read config file {path}") return config, path From 088ea8c3ecefccfef9c41b5372f999c30d604911 Mon Sep 17 00:00:00 2001 From: Tyler Goodlet Date: Sat, 22 May 2021 15:12:12 -0400 Subject: [PATCH 09/10] Skip CLI tests due to questrade dependency for now --- tests/conftest.py | 1 - tests/test_cli.py | 6 ++++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/tests/conftest.py b/tests/conftest.py index f461ffc6..d6ebbbf2 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -44,7 +44,6 @@ def confdir(request, test_config): if confdir is not None: config._override_config_dir(confdir) - # return config.load()[0] return confdir diff --git a/tests/test_cli.py b/tests/test_cli.py index 26065245..8c9df93a 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -10,6 +10,12 @@ import os.path import piker.watchlists as wl +pytestmark = pytest.mark.skipif( + True, + reason="cli tests rely on quote api and questrade symbols" +) + + def run(cmd, *args): """Run cmd and check for zero return code. """ From f95ae79cfff174ba5379d7ac354ea75f4510cb4c Mon Sep 17 00:00:00 2001 From: Tyler Goodlet Date: Sat, 22 May 2021 15:25:07 -0400 Subject: [PATCH 10/10] Officially pin to python 3.9+ The numba stuff was resolved re: https://github.com/numba/numba/issues/6345#issuecomment-775873609 Resolves #126 --- setup.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index 76246e56..457032dc 100755 --- a/setup.py +++ b/setup.py @@ -77,7 +77,7 @@ setup( #'kivy', see requirement.txt; using a custom branch atm ], tests_require=['pytest'], - python_requires=">=3.7", # literally for ``datetime.datetime.fromisoformat``... + python_requires=">=3.9", # literally for ``datetime.datetime.fromisoformat``... keywords=["async", "trading", "finance", "quant", "charting"], classifiers=[ 'Development Status :: 3 - Alpha', @@ -85,7 +85,7 @@ setup( 'Operating System :: POSIX :: Linux', "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: 3 :: Only", - "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.9", 'Intended Audience :: Financial and Insurance Industry', 'Intended Audience :: Science/Research', 'Intended Audience :: Developers',