From ba0409d8cd665a5c716becafeb54091f9b0a7444 Mon Sep 17 00:00:00 2001 From: Slash Gordon Date: Thu, 15 Aug 2019 20:33:35 +0200 Subject: [PATCH] Updated dependencies and bug fix Skip duplicate symbol creation in database setup. --- .travis.yml | 1 + requirements.txt | 2 +- setup.py | 4 ++-- src/pystockdb/tools/base.py | 36 +++++++++++++++++++++--------------- 4 files changed, 25 insertions(+), 18 deletions(-) diff --git a/.travis.yml b/.travis.yml index 59ec834..0fbfe5e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,5 +16,6 @@ deploy: secure: "C0KD/7KNq1mM7q8U+KaPf7zEzTVI9QOjBqVZ1+/uKHUOIRciQGo4vA1e9aAtC+MxXzEpxX4aUb4lHrxEx17Dqqcf4PNt5A9bz8mAf+8yO6Q3SjlxGcCAqS8JMTBWNXWaIHiGnQ3aPGA5rOq66d+mRZo5rRPl/Of+rKcauDK42vBR8XaE7W9N/5+Z9+v4WUjTuXR3LMoE1cx2QwHPr2lyMEhYkFlj1T9/s5O0rTWNKlzFih76AOsdnKsjM5cvrrulXujXaYLU89UakIuBd/Om5Qf2V4p5SN8gPaLzMfHoPQdWtJG6FE2uJOCDRv8tByyooF0ADD0PaO2tV5luS+wM4nMcPQI/ZUenMrFefHvk9bvNihyVeyIe7gFxPKqWJkVJeaWid6NT6IiZdRKsn0d+Wo0QLTuYq/qG9UoMQr9z8hqeESyPMLY5wzJugyYxZ2aP7HDdzV6BTy6W/5XhmL1yAUY+0xwi7ukwbXMB9Vs3IWWh4zHkuYYGzqhD7qosTEFOj4ZpcvHYR05EW8CDT7iwzwunZMMnNBRbXu5zQPhJdC2ndAh5Pgq8jVsvguUEgF8YyYF+Gtfm3bXVLl51Ia1XSlu6dpGoRd2wZgR0D6pFwnSzybwdV8zccsoW8vFggGioJgQrg0SmIUA8fckPwj5qFQ/9dAs2pIymqeI9Vv6EhE8=" on: branch: master + skip_existing: true after_success: - coveralls --verbose \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index ced5046..39e8ce3 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ -pytickersymbols==1.1.4 +pytickersymbols==1.1.5 pandas==0.24.2 yfinance==0.1.44 uplink==0.9.0 diff --git a/setup.py b/setup.py index c29eddb..43ec732 100644 --- a/setup.py +++ b/setup.py @@ -10,14 +10,14 @@ from setuptools import setup, find_packages EXCLUDE_FROM_PACKAGES = ['test', 'test.*', 'test*'] -VERSION = '1.0.4' +VERSION = '1.0.5' with open("README.md", "r") as fh: long_description = fh.read() INSTALL_REQUIRES = ( [ - 'pytickersymbols>=1.1.4', 'pandas==0.24.2', 'yfinance>=0.1.44', + 'pytickersymbols>=1.1.5', 'pandas==0.24.2', 'yfinance>=0.1.44', 'uplink>=0.9.0', 'pony==0.7.10' ] ) diff --git a/src/pystockdb/tools/base.py b/src/pystockdb/tools/base.py index d469e4c..f4aba6c 100644 --- a/src/pystockdb/tools/base.py +++ b/src/pystockdb/tools/base.py @@ -10,11 +10,10 @@ import logging from pony.orm import commit, db_session - from pytickersymbols import PyTickerSymbols -from pystockdb.db.schema.stocks import (Index, Item, PriceItem, Stock, Tag, - Type, db) +from pystockdb.db.schema.stocks import (Index, Item, PriceItem, Stock, Symbol, + Tag, Type, db) from pystockdb.tools.data_crawler import DataCrawler @@ -83,18 +82,10 @@ def __add_stock_to_index(self, index, stock_info): usd = Tag.get(name=Tag.USD) eur = Tag.get(name=Tag.EUR) for symbol in stock_info['symbols']: - if Tag.GOG in symbol: - cur = eur if symbol[Tag.GOG].startswith('FRA') else usd - item = Item() - item.add_tags([gog, cur]) - stock.price_item.symbols.create(item=item, - name=symbol[Tag.GOG]) - if Tag.YAO in symbol: - cur = eur if symbol[Tag.YAO].endswith('.F') else usd - item = Item() - item.add_tags([yao, cur]) - stock.price_item.symbols.create(item=item, - name=symbol[Tag.YAO]) + if Tag.GOG in symbol and symbol[Tag.GOG] != '-': + self.__create_symbol(stock, Tag.GOG, gog, symbol, eur, usd) + if Tag.YAO in symbol and symbol[Tag.YAO] != '-': + self.__create_symbol(stock, Tag.YAO, yao, symbol, eur, usd) index.stocks.add(stock) # connect stock with industry and country # country @@ -109,6 +100,21 @@ def __add_stock_to_index(self, index, stock_info): for industry in industries: industry.items.add(stock.price_item.item) + @db_session + def __create_symbol(self, stock, my_tag, my_tag_item, symbol, eur, usd): + if my_tag in symbol and symbol[my_tag] != '-': + cur = eur if symbol[my_tag].startswith('FRA') else usd + item = Item() + item.add_tags([my_tag_item, cur]) + if Symbol.get(name=symbol[my_tag]): + self.logger.warning( + 'Symbol {} is related to more than one' + ' stock.'.format(symbol[my_tag]) + ) + else: + stock.price_item.symbols.create(item=item, + name=symbol[my_tag]) + @db_session def download_historicals(self, symbols, start, end): if not (start and end):