2020-03-22T20:24:03,236 Created temporary directory: /tmp/pip-ephem-wheel-cache-kj6jput0 2020-03-22T20:24:03,300 Created temporary directory: /tmp/pip-req-tracker-nv47l64x 2020-03-22T20:24:03,301 Initialized build tracking at /tmp/pip-req-tracker-nv47l64x 2020-03-22T20:24:03,303 Created build tracker: /tmp/pip-req-tracker-nv47l64x 2020-03-22T20:24:03,303 Entered build tracker: /tmp/pip-req-tracker-nv47l64x 2020-03-22T20:24:03,308 Created temporary directory: /tmp/pip-wheel-q7tsk0gq 2020-03-22T20:24:03,313 1 location(s) to search for versions of compton: 2020-03-22T20:24:03,313 * https://pypi.org/simple/compton/ 2020-03-22T20:24:03,314 Fetching project page and analyzing links: https://pypi.org/simple/compton/ 2020-03-22T20:24:03,315 Getting page https://pypi.org/simple/compton/ 2020-03-22T20:24:03,317 Found index url https://pypi.org/simple 2020-03-22T20:24:03,333 Getting credentials from keyring for https://pypi.org/simple 2020-03-22T20:24:03,335 Getting credentials from keyring for pypi.org 2020-03-22T20:24:03,808 Skipping link: No binaries permitted for compton: https://files.pythonhosted.org/packages/d1/e1/d4a1f5b52f8d3ec6b8cd5e7b31519a68be74afe49d96d8aa82ad67c43771/compton-1.0.0-py3-none-any.whl#sha256=d271b7d314a41172f9b5f6ed95fe84b17500cca5e772a1a5c685d1f10316ed20 (from https://pypi.org/simple/compton/) (requires-python:>=3.7) 2020-03-22T20:24:03,809 Found link https://files.pythonhosted.org/packages/93/86/9fa9e759e4db0aa914e693b1180bbb71971cc89f8fb1f976b20066fed314/compton-1.0.0.tar.gz#sha256=ba4cd66f3cdbde50cbe5fae2435a4d0d1c5d28758949f2be7bd573bff8fa4554 (from https://pypi.org/simple/compton/) (requires-python:>=3.7), version: 1.0.0 2020-03-22T20:24:03,810 Skipping link: No binaries permitted for compton: https://files.pythonhosted.org/packages/22/68/98424409ca7a3b75b3ccad83795b63fd06680bb12788764a9a9d05de1bed/compton-1.0.1-py3-none-any.whl#sha256=fd3d2d1e42cb70188bde78bce20cc70b6a46cb1a6048ca73716793a353a1d461 (from https://pypi.org/simple/compton/) (requires-python:>=3.7) 2020-03-22T20:24:03,811 Found link https://files.pythonhosted.org/packages/ff/82/590afe4373111f90a40bff5cc9ec2732740a19a8e428e71c645405c30a5b/compton-1.0.1.tar.gz#sha256=eaa0a20a362466f1bd0744f9f6d028525506c97c1b46c35135d53a00f366694d (from https://pypi.org/simple/compton/) (requires-python:>=3.7), version: 1.0.1 2020-03-22T20:24:03,812 Skipping link: No binaries permitted for compton: https://files.pythonhosted.org/packages/60/e5/5ed6d12ba467679366275936677acae3bb923508a24385ca07d494b1ed8d/compton-2.0.0-py3-none-any.whl#sha256=476618fb8005dfb521250afa68ecc394c779d5418d7c2da2b2e4f09e815a71f0 (from https://pypi.org/simple/compton/) (requires-python:>=3.7) 2020-03-22T20:24:03,813 Found link https://files.pythonhosted.org/packages/c8/1a/e1fa29df619bd822429c9722c899bec17c4ba4745f2c8a58acd9b0dd8d93/compton-2.0.0.tar.gz#sha256=c4536ff93ab18592198f6f99037002282681719b3802b96bfa3843539fbe2d06 (from https://pypi.org/simple/compton/) (requires-python:>=3.7), version: 2.0.0 2020-03-22T20:24:03,814 Skipping link: No binaries permitted for compton: https://files.pythonhosted.org/packages/df/c3/c5c74d9e147b11e7a9de58c2ba8a3ade4bab9de3240928d5e39b0e83e7b9/compton-2.0.1-py3-none-any.whl#sha256=37e83403d19715b70c90be3a999b36bb36cef0d832e773ab37e1c675d2484bed (from https://pypi.org/simple/compton/) (requires-python:>=3.7) 2020-03-22T20:24:03,815 Found link https://files.pythonhosted.org/packages/3d/2f/f489c6d21ca4580c3678e39fa99248a28ed2253dfa7cf03b89e4abd9ec1a/compton-2.0.1.tar.gz#sha256=59dd5b82c37852f57754efc72abf65353654b3202adb139aee4e187cb611397b (from https://pypi.org/simple/compton/) (requires-python:>=3.7), version: 2.0.1 2020-03-22T20:24:03,816 Skipping link: No binaries permitted for compton: https://files.pythonhosted.org/packages/57/94/e0515db41eb8409a241278c3c8e235e18836725c87fae4ea1b39c49bb32d/compton-2.1.0-py3-none-any.whl#sha256=a1b24b64a1a4fa19f1d837fa9e58d13d721f62c6d6f20b50c382c61feb10a918 (from https://pypi.org/simple/compton/) (requires-python:>=3.7) 2020-03-22T20:24:03,816 Found link https://files.pythonhosted.org/packages/cc/9a/3f48c704cfae1edbd6f55dd8d93e10e5fe106fce5355fa158c9705dbb77f/compton-2.1.0.tar.gz#sha256=ebb7297f387546e63f332cd2d3a12520dac8820e557592193b2332d4e3327be3 (from https://pypi.org/simple/compton/) (requires-python:>=3.7), version: 2.1.0 2020-03-22T20:24:03,840 Given no hashes to check 1 links for project 'compton': discarding no candidates 2020-03-22T20:24:03,841 Using version 1.0.1 (newest of versions: 1.0.1) 2020-03-22T20:24:03,864 Collecting compton==1.0.1 2020-03-22T20:24:03,893 Created temporary directory: /tmp/pip-unpack-x3xike2o 2020-03-22T20:24:03,898 Getting credentials from keyring for files.pythonhosted.org 2020-03-22T20:24:04,254 Downloading compton-1.0.1.tar.gz (9.7 kB) 2020-03-22T20:24:06,160 Added compton==1.0.1 from https://files.pythonhosted.org/packages/ff/82/590afe4373111f90a40bff5cc9ec2732740a19a8e428e71c645405c30a5b/compton-1.0.1.tar.gz#sha256=eaa0a20a362466f1bd0744f9f6d028525506c97c1b46c35135d53a00f366694d to build tracker '/tmp/pip-req-tracker-nv47l64x' 2020-03-22T20:24:06,177 Running setup.py (path:/tmp/pip-wheel-q7tsk0gq/compton/setup.py) egg_info for package compton 2020-03-22T20:24:06,192 Running command python setup.py egg_info 2020-03-22T20:24:15,506 {'name': 'compton', 'packages': ['compton'], 'version': '1.0.1', 'author': 'Kael Zhang', 'author_email': 'i+pypi@kael.me', 'description': 'An abstract data flow framework for quantitative trading', 'license': 'MIT', 'keywords': 'compton dataflow quant quantitative trading stock', 'url': 'https://github.com/kaelzhang/python-compton', 'long_description': '[![Build Status](https://travis-ci.org/kaelzhang/python-compton.svg?branch=master)](https://travis-ci.org/kaelzhang/python-compton)\n[![Coverage](https://codecov.io/gh/kaelzhang/python-compton/branch/master/graph/badge.svg)](https://codecov.io/gh/kaelzhang/python-compton)\n\n\n\n\n\n# python-compton\n\nAn abstract data-flow framework for quantitative trading, which decouples data initialization, data composition and data processing.\n\n## Install\n\n```sh\npip install compton\n```\n\n## Usage\n\n```py\nfrom compton import (\n Orchestrator,\n Provider,\n Reducer,\n Consumer\n)\n```\n\n## Vector\n\nWe call a tuple of hashable parameters as a vector which is used to identify a certain kind of data.\n\n```py\nfrom enum import Enum\n\nclass DataType(Enum):\n KLINE = 1\n ORDER_BOOK = 2\n\nclass TimeSpan(Enum):\n DAY = 1\n WEEK = 2\n\nvector = (DataType.KLINE, TimeSpan.DAY)\n```\n\n## Orchestrator(reducers)\n\n- **reducers** `List[Reducer]` reducers to compose data\n\n### orchestrator.connect(provider: Provider) -> self\n\nConnects to a data provider\n\n### orchestrator.subscribe(consumer: Consumer) -> self\n\nSubscribes the consumer to orchestrator.\n\n### orchestrator.add(symbol: str) -> self\n\nAdds a new symbol to orchestrator, and start the data flow for `symbol`\n\n## Provider\n\n`Provider` is an abstract class which provides initial data and data updates.\n\nWe must inherit class `Provider` and implement some abstract method before use.\n\n- `@property vector` returns an `Vector`\n- `async def init()` method returns the initial data\n- `def when_update(dispatch)` registers the dispatcher which is a callable.\n\n```py\nclass MyProvider(Provider):\n @property\n def vector(self):\n return (DataType.KLINE, TimeSpan.DAY)\n\n async def init(self, symbol):\n return {}\n\n def when_update(self, dispatch):\n pass\n```\n\n## Reducer\n\nAnother abstract class which handles data composition.\n\nThe `reducer.vector` could be a generic vector which applies partial match to other vectors\n\n```py\nclass MyReducer(Reducer):\n @property\n def vector(self):\n # So, MyReducer support both\n # - (DataType.KLINE, TimeSpan.DAY)\n # - and (DataType.KLINE, TimeSpan.WEEK)\n return (DataType.KLINE,)\n\n def merge(self, old, new):\n return {**old, **new}\n```\n\n## Consumer\n\nA consumer could subscribes to more than one kind of data types\n\n```py\nclass MyConsumer(Consumer):\n @property\n def vectors(self):\n # Subscribe to two kinds of data types\n return [\n (DataType.KLINE, TimeSpan.DAY),\n (DataType.KLINE, TimeSpan.WEEK)\n ]\n\n # Then there will be\n # both `kline_day` and `kline_week` passed into method `process`\n async def process(self, symbol, kline_day, kline_week):\n await doSomething(symbol, kline_day, kline_week)\n```\n\n## License\n\n[MIT](LICENSE)\n', 'long_description_content_type': 'text/markdown', 'python_requires': '>=3.7', 'classifiers': ['Topic :: Software Development :: Libraries :: Python Modules', 'Programming Language :: Python :: 3.7', 'Programming Language :: Python :: 3.8', 'Programming Language :: Python :: Implementation :: PyPy', 'Topic :: Software Development :: Libraries :: Python Modules', 'License :: OSI Approved :: MIT License']} 2020-03-22T20:24:15,510 running egg_info 2020-03-22T20:24:15,526 creating /tmp/pip-wheel-q7tsk0gq/compton/pip-egg-info/compton.egg-info 2020-03-22T20:24:15,551 writing /tmp/pip-wheel-q7tsk0gq/compton/pip-egg-info/compton.egg-info/PKG-INFO 2020-03-22T20:24:15,606 writing dependency_links to /tmp/pip-wheel-q7tsk0gq/compton/pip-egg-info/compton.egg-info/dependency_links.txt 2020-03-22T20:24:15,670 writing top-level names to /tmp/pip-wheel-q7tsk0gq/compton/pip-egg-info/compton.egg-info/top_level.txt 2020-03-22T20:24:15,710 writing manifest file '/tmp/pip-wheel-q7tsk0gq/compton/pip-egg-info/compton.egg-info/SOURCES.txt' 2020-03-22T20:24:16,415 reading manifest file '/tmp/pip-wheel-q7tsk0gq/compton/pip-egg-info/compton.egg-info/SOURCES.txt' 2020-03-22T20:24:16,453 writing manifest file '/tmp/pip-wheel-q7tsk0gq/compton/pip-egg-info/compton.egg-info/SOURCES.txt' 2020-03-22T20:24:16,642 Source in /tmp/pip-wheel-q7tsk0gq/compton has version 1.0.1, which satisfies requirement compton==1.0.1 from https://files.pythonhosted.org/packages/ff/82/590afe4373111f90a40bff5cc9ec2732740a19a8e428e71c645405c30a5b/compton-1.0.1.tar.gz#sha256=eaa0a20a362466f1bd0744f9f6d028525506c97c1b46c35135d53a00f366694d 2020-03-22T20:24:16,644 Removed compton==1.0.1 from https://files.pythonhosted.org/packages/ff/82/590afe4373111f90a40bff5cc9ec2732740a19a8e428e71c645405c30a5b/compton-1.0.1.tar.gz#sha256=eaa0a20a362466f1bd0744f9f6d028525506c97c1b46c35135d53a00f366694d from build tracker '/tmp/pip-req-tracker-nv47l64x' 2020-03-22T20:24:16,659 Building wheels for collected packages: compton 2020-03-22T20:24:16,791 Created temporary directory: /tmp/pip-wheel-i6wqoodk 2020-03-22T20:24:16,792 Building wheel for compton (setup.py): started 2020-03-22T20:24:16,793 Destination directory: /tmp/pip-wheel-i6wqoodk 2020-03-22T20:24:16,794 Running command /usr/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-wheel-q7tsk0gq/compton/setup.py'"'"'; __file__='"'"'/tmp/pip-wheel-q7tsk0gq/compton/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-i6wqoodk 2020-03-22T20:24:23,556 {'name': 'compton', 'packages': ['compton'], 'version': '1.0.1', 'author': 'Kael Zhang', 'author_email': 'i+pypi@kael.me', 'description': 'An abstract data flow framework for quantitative trading', 'license': 'MIT', 'keywords': 'compton dataflow quant quantitative trading stock', 'url': 'https://github.com/kaelzhang/python-compton', 'long_description': '[![Build Status](https://travis-ci.org/kaelzhang/python-compton.svg?branch=master)](https://travis-ci.org/kaelzhang/python-compton)\n[![Coverage](https://codecov.io/gh/kaelzhang/python-compton/branch/master/graph/badge.svg)](https://codecov.io/gh/kaelzhang/python-compton)\n\n\n\n\n\n# python-compton\n\nAn abstract data-flow framework for quantitative trading, which decouples data initialization, data composition and data processing.\n\n## Install\n\n```sh\npip install compton\n```\n\n## Usage\n\n```py\nfrom compton import (\n Orchestrator,\n Provider,\n Reducer,\n Consumer\n)\n```\n\n## Vector\n\nWe call a tuple of hashable parameters as a vector which is used to identify a certain kind of data.\n\n```py\nfrom enum import Enum\n\nclass DataType(Enum):\n KLINE = 1\n ORDER_BOOK = 2\n\nclass TimeSpan(Enum):\n DAY = 1\n WEEK = 2\n\nvector = (DataType.KLINE, TimeSpan.DAY)\n```\n\n## Orchestrator(reducers)\n\n- **reducers** `List[Reducer]` reducers to compose data\n\n### orchestrator.connect(provider: Provider) -> self\n\nConnects to a data provider\n\n### orchestrator.subscribe(consumer: Consumer) -> self\n\nSubscribes the consumer to orchestrator.\n\n### orchestrator.add(symbol: str) -> self\n\nAdds a new symbol to orchestrator, and start the data flow for `symbol`\n\n## Provider\n\n`Provider` is an abstract class which provides initial data and data updates.\n\nWe must inherit class `Provider` and implement some abstract method before use.\n\n- `@property vector` returns an `Vector`\n- `async def init()` method returns the initial data\n- `def when_update(dispatch)` registers the dispatcher which is a callable.\n\n```py\nclass MyProvider(Provider):\n @property\n def vector(self):\n return (DataType.KLINE, TimeSpan.DAY)\n\n async def init(self, symbol):\n return {}\n\n def when_update(self, dispatch):\n pass\n```\n\n## Reducer\n\nAnother abstract class which handles data composition.\n\nThe `reducer.vector` could be a generic vector which applies partial match to other vectors\n\n```py\nclass MyReducer(Reducer):\n @property\n def vector(self):\n # So, MyReducer support both\n # - (DataType.KLINE, TimeSpan.DAY)\n # - and (DataType.KLINE, TimeSpan.WEEK)\n return (DataType.KLINE,)\n\n def merge(self, old, new):\n return {**old, **new}\n```\n\n## Consumer\n\nA consumer could subscribes to more than one kind of data types\n\n```py\nclass MyConsumer(Consumer):\n @property\n def vectors(self):\n # Subscribe to two kinds of data types\n return [\n (DataType.KLINE, TimeSpan.DAY),\n (DataType.KLINE, TimeSpan.WEEK)\n ]\n\n # Then there will be\n # both `kline_day` and `kline_week` passed into method `process`\n async def process(self, symbol, kline_day, kline_week):\n await doSomething(symbol, kline_day, kline_week)\n```\n\n## License\n\n[MIT](LICENSE)\n', 'long_description_content_type': 'text/markdown', 'python_requires': '>=3.7', 'classifiers': ['Topic :: Software Development :: Libraries :: Python Modules', 'Programming Language :: Python :: 3.7', 'Programming Language :: Python :: 3.8', 'Programming Language :: Python :: Implementation :: PyPy', 'Topic :: Software Development :: Libraries :: Python Modules', 'License :: OSI Approved :: MIT License']} 2020-03-22T20:24:24,235 running bdist_wheel 2020-03-22T20:24:24,283 running build 2020-03-22T20:24:24,284 running build_py 2020-03-22T20:24:24,724 creating build 2020-03-22T20:24:24,732 creating build/lib 2020-03-22T20:24:24,756 creating build/lib/compton 2020-03-22T20:24:24,796 copying compton/reducer.py -> build/lib/compton 2020-03-22T20:24:24,844 copying compton/consumer.py -> build/lib/compton 2020-03-22T20:24:24,884 copying compton/provider.py -> build/lib/compton 2020-03-22T20:24:24,924 copying compton/orchestrator.py -> build/lib/compton 2020-03-22T20:24:24,980 copying compton/common.py -> build/lib/compton 2020-03-22T20:24:25,020 copying compton/__init__.py -> build/lib/compton 2020-03-22T20:24:25,087 installing to build/bdist.linux-armv7l/wheel 2020-03-22T20:24:25,088 running install 2020-03-22T20:24:25,092 running install_lib 2020-03-22T20:24:25,143 creating build/bdist.linux-armv7l 2020-03-22T20:24:25,150 creating build/bdist.linux-armv7l/wheel 2020-03-22T20:24:25,206 creating build/bdist.linux-armv7l/wheel/compton 2020-03-22T20:24:25,238 copying build/lib/compton/reducer.py -> build/bdist.linux-armv7l/wheel/compton 2020-03-22T20:24:25,302 copying build/lib/compton/consumer.py -> build/bdist.linux-armv7l/wheel/compton 2020-03-22T20:24:25,350 copying build/lib/compton/provider.py -> build/bdist.linux-armv7l/wheel/compton 2020-03-22T20:24:25,406 copying build/lib/compton/orchestrator.py -> build/bdist.linux-armv7l/wheel/compton 2020-03-22T20:24:25,470 copying build/lib/compton/common.py -> build/bdist.linux-armv7l/wheel/compton 2020-03-22T20:24:25,526 copying build/lib/compton/__init__.py -> build/bdist.linux-armv7l/wheel/compton 2020-03-22T20:24:25,574 running install_egg_info 2020-03-22T20:24:25,739 running egg_info 2020-03-22T20:24:25,741 writing compton.egg-info/PKG-INFO 2020-03-22T20:24:25,788 writing dependency_links to compton.egg-info/dependency_links.txt 2020-03-22T20:24:25,844 writing top-level names to compton.egg-info/top_level.txt 2020-03-22T20:24:25,960 reading manifest file 'compton.egg-info/SOURCES.txt' 2020-03-22T20:24:25,997 writing manifest file 'compton.egg-info/SOURCES.txt' 2020-03-22T20:24:26,031 Copying compton.egg-info to build/bdist.linux-armv7l/wheel/compton-1.0.1-py3.7.egg-info 2020-03-22T20:24:26,291 running install_scripts 2020-03-22T20:24:26,930 creating build/bdist.linux-armv7l/wheel/compton-1.0.1.dist-info/WHEEL 2020-03-22T20:24:26,986 creating '/tmp/pip-wheel-i6wqoodk/compton-1.0.1-py3-none-any.whl' and adding 'build/bdist.linux-armv7l/wheel' to it 2020-03-22T20:24:27,035 adding 'compton/__init__.py' 2020-03-22T20:24:27,052 adding 'compton/common.py' 2020-03-22T20:24:27,067 adding 'compton/consumer.py' 2020-03-22T20:24:27,084 adding 'compton/orchestrator.py' 2020-03-22T20:24:27,099 adding 'compton/provider.py' 2020-03-22T20:24:27,116 adding 'compton/reducer.py' 2020-03-22T20:24:27,148 adding 'compton-1.0.1.dist-info/METADATA' 2020-03-22T20:24:27,163 adding 'compton-1.0.1.dist-info/WHEEL' 2020-03-22T20:24:27,179 adding 'compton-1.0.1.dist-info/top_level.txt' 2020-03-22T20:24:27,180 adding 'compton-1.0.1.dist-info/RECORD' 2020-03-22T20:24:27,202 removing build/bdist.linux-armv7l/wheel 2020-03-22T20:24:27,485 Building wheel for compton (setup.py): finished with status 'done' 2020-03-22T20:24:27,525 Created wheel for compton: filename=compton-1.0.1-py3-none-any.whl size=8396 sha256=9cc9c7890886d11c2f463e0605b3c8964bd76df573ab13a9ef18f068feb1b9a3 2020-03-22T20:24:27,526 Stored in directory: /tmp/pip-ephem-wheel-cache-kj6jput0/wheels/e7/66/4e/7d624914e6ebc95bc005471c515108c2b3bd5b9de11bd174ce 2020-03-22T20:24:27,551 Successfully built compton 2020-03-22T20:24:27,669 Cleaning up... 2020-03-22T20:24:27,670 Removing source in /tmp/pip-wheel-q7tsk0gq/compton 2020-03-22T20:24:28,317 Removed build tracker: '/tmp/pip-req-tracker-nv47l64x'