From 7406edfd8fcad1b5104e470f43c862cf70ed4cc1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 25 May 2019 14:51:50 +0200 Subject: [PATCH 1/6] Move set_loggers to main() --- freqtrade/__main__.py | 1 - freqtrade/main.py | 18 +++++++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/freqtrade/__main__.py b/freqtrade/__main__.py index 7d271dfd1..628fc930f 100644 --- a/freqtrade/__main__.py +++ b/freqtrade/__main__.py @@ -11,5 +11,4 @@ import sys from freqtrade import main if __name__ == '__main__': - main.set_loggers() main.main(sys.argv[1:]) diff --git a/freqtrade/main.py b/freqtrade/main.py index d8c447800..d0e783808 100755 --- a/freqtrade/main.py +++ b/freqtrade/main.py @@ -28,7 +28,24 @@ def main(sysargv: List[str]) -> None: This function will initiate the bot and start the trading loop. :return: None """ + set_loggers() + arguments = Arguments( + sysargv, + 'Free, open source crypto trading bot' + ) + args: Namespace = arguments.get_parsed_arg() + + # A subcommand has been issued. + # Means if Backtesting or Hyperopt have been called we exit the bot + if hasattr(args, 'func'): + args.func(args) + return + + worker = None + return_code = 1 try: + set_loggers() + worker = None return_code = 1 @@ -64,5 +81,4 @@ def main(sysargv: List[str]) -> None: if __name__ == '__main__': - set_loggers() main(sys.argv[1:]) From 17d614c66a4ab39484b13582061e846d637d7b4f Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 25 May 2019 15:07:52 +0200 Subject: [PATCH 2/6] Remove binary script - allow None arguemnts --- bin/freqtrade | 7 ------- freqtrade/__main__.py | 4 +--- freqtrade/main.py | 4 ++-- 3 files changed, 3 insertions(+), 12 deletions(-) delete mode 100755 bin/freqtrade diff --git a/bin/freqtrade b/bin/freqtrade deleted file mode 100755 index e7ae7a4ca..000000000 --- a/bin/freqtrade +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env python3 - -import sys - -from freqtrade.main import main, set_loggers -set_loggers() -main(sys.argv[1:]) diff --git a/freqtrade/__main__.py b/freqtrade/__main__.py index 628fc930f..97ed9ae67 100644 --- a/freqtrade/__main__.py +++ b/freqtrade/__main__.py @@ -6,9 +6,7 @@ To launch Freqtrade as a module > python -m freqtrade (with Python >= 3.6) """ -import sys - from freqtrade import main if __name__ == '__main__': - main.main(sys.argv[1:]) + main.main() diff --git a/freqtrade/main.py b/freqtrade/main.py index d0e783808..9fc8c9d0c 100755 --- a/freqtrade/main.py +++ b/freqtrade/main.py @@ -23,7 +23,7 @@ from freqtrade.worker import Worker logger = logging.getLogger('freqtrade') -def main(sysargv: List[str]) -> None: +def main(sysargv: List[str] = None) -> None: """ This function will initiate the bot and start the trading loop. :return: None @@ -81,4 +81,4 @@ def main(sysargv: List[str]) -> None: if __name__ == '__main__': - main(sys.argv[1:]) + main() From c5ef700eb700dd30d58d6b4d0236e1ec352e361d Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 25 May 2019 15:08:35 +0200 Subject: [PATCH 3/6] Use autogenerated entrypoint --- setup.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 35fdb2938..ca2f81d1f 100644 --- a/setup.py +++ b/setup.py @@ -17,7 +17,6 @@ setup(name='freqtrade', author_email='michael.egger@tsn.at', license='GPLv3', packages=['freqtrade'], - scripts=['bin/freqtrade'], setup_requires=['pytest-runner', 'numpy'], tests_require=['pytest', 'pytest-mock', 'pytest-cov'], install_requires=[ @@ -43,6 +42,11 @@ setup(name='freqtrade', ], include_package_data=True, zip_safe=False, + entry_points={ + 'console_scripts': [ + 'freqtrade = freqtrade.main:main', + ], + }, classifiers=[ 'Programming Language :: Python :: 3.6', 'License :: OSI Approved :: GNU General Public License v3 (GPLv3)', From 22144d89fc3cf4c69a7bef6db3b9a33b0dd9e6ac Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 25 May 2019 15:31:30 +0200 Subject: [PATCH 4/6] Fix mypy error --- freqtrade/arguments.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/arguments.py b/freqtrade/arguments.py index ddc0dc489..89b587c6f 100644 --- a/freqtrade/arguments.py +++ b/freqtrade/arguments.py @@ -27,7 +27,7 @@ class Arguments(object): Arguments Class. Manage the arguments received by the cli """ - def __init__(self, args: List[str], description: str) -> None: + def __init__(self, args: Optional[List[str]], description: str) -> None: self.args = args self.parsed_arg: Optional[argparse.Namespace] = None self.parser = argparse.ArgumentParser(description=description) From 9e4dd6f37f7f698c4ae92a91b2293bd9fa2a46ba Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 27 May 2019 19:27:24 +0200 Subject: [PATCH 5/6] Read bin/freqtrade with deprecation warning --- bin/freqtrade | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100755 bin/freqtrade diff --git a/bin/freqtrade b/bin/freqtrade new file mode 100755 index 000000000..b9e3a7008 --- /dev/null +++ b/bin/freqtrade @@ -0,0 +1,13 @@ +#!/usr/bin/env python3 + +import sys +import warnings + +from freqtrade.main import main, set_loggers + +set_loggers() + +warnings.warn( + "Deprecated - To continue to run the bot like this, please run `pip install -e .` again.", + DeprecationWarning) +main(sys.argv[1:]) From 7b367818fc79366c883ee06a6de6b8b57b75e95e Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 29 May 2019 19:46:46 +0200 Subject: [PATCH 6/6] Remove duplicate code --- freqtrade/main.py | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/freqtrade/main.py b/freqtrade/main.py index 9fc8c9d0c..4b1decdc5 100755 --- a/freqtrade/main.py +++ b/freqtrade/main.py @@ -28,21 +28,7 @@ def main(sysargv: List[str] = None) -> None: This function will initiate the bot and start the trading loop. :return: None """ - set_loggers() - arguments = Arguments( - sysargv, - 'Free, open source crypto trading bot' - ) - args: Namespace = arguments.get_parsed_arg() - # A subcommand has been issued. - # Means if Backtesting or Hyperopt have been called we exit the bot - if hasattr(args, 'func'): - args.func(args) - return - - worker = None - return_code = 1 try: set_loggers()