diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1dcd969c9..959579c2d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -122,7 +122,7 @@ jobs: details: Freqtrade CI failed on ${{ matrix.os }} webhookUrl: ${{ secrets.DISCORD_WEBHOOK }} - build_macos: + build-macos: runs-on: ${{ matrix.os }} strategy: matrix: @@ -229,7 +229,7 @@ jobs: details: Test Succeeded! webhookUrl: ${{ secrets.DISCORD_WEBHOOK }} - build_windows: + build-windows: runs-on: ${{ matrix.os }} strategy: @@ -299,7 +299,7 @@ jobs: details: Test Failed webhookUrl: ${{ secrets.DISCORD_WEBHOOK }} - mypy_version_check: + mypy-version-check: runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 @@ -324,7 +324,7 @@ jobs: python-version: "3.10" - uses: pre-commit/action@v3.0.0 - docs_check: + docs-check: runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 @@ -404,10 +404,10 @@ jobs: notify-complete: needs: [ build_linux, - build_macos, - build_windows, - docs_check, - mypy_version_check, + build-macos, + build-windows, + docs-check, + mypy-version-check, pre-commit, build_linux_online ] @@ -434,8 +434,63 @@ jobs: details: Test Completed! webhookUrl: ${{ secrets.DISCORD_WEBHOOK }} - deploy: - needs: [ build_linux, build_macos, build_windows, docs_check, mypy_version_check, pre-commit ] + build: + name: "Build" + needs: [ build_linux, build-macos, build-windows, docs-check, mypy-version-check, pre-commit ] + runs-on: ubuntu-22.04 + + steps: + - uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.11" + + - name: Build distribution + run: | + pip install -U build + python -m build --sdist --wheel + + - name: Upload artifacts 📦 + uses: actions/upload-artifact@v3 + with: + name: freqtrade-build + path: | + dist + retention-days: 10 + + deploy-pypi: + name: "Deploy to PyPI" + needs: [ build ] + runs-on: ubuntu-22.04 + if: (github.event_name == 'release') + environment: + name: release + url: https://pypi.org/p/freqtrade + permissions: + id-token: write + + steps: + - uses: actions/checkout@v4 + + - name: Download artifact 📦 + uses: actions/download-artifact@v3 + with: + name: freqtrade-build + path: dist + + - name: Publish to PyPI (Test) + uses: pypa/gh-action-pypi-publish@v1.8.11 + with: + repository-url: https://test.pypi.org/legacy/ + + - name: Publish to PyPI + uses: pypa/gh-action-pypi-publish@v1.8.11 + + + deploy-docker: + needs: [ build_linux, build-macos, build-windows, docs-check, mypy-version-check, pre-commit ] runs-on: ubuntu-22.04 if: (github.event_name == 'push' || github.event_name == 'schedule' || github.event_name == 'release') && github.repository == 'freqtrade/freqtrade' @@ -453,26 +508,6 @@ jobs: run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF##*/})" id: extract_branch - - name: Build distribution - run: | - pip install -U setuptools wheel - python setup.py sdist bdist_wheel - - - name: Publish to PyPI (Test) - uses: pypa/gh-action-pypi-publish@v1.8.11 - if: (github.event_name == 'release') - with: - user: __token__ - password: ${{ secrets.pypi_test_password }} - repository_url: https://test.pypi.org/legacy/ - - - name: Publish to PyPI - uses: pypa/gh-action-pypi-publish@v1.8.11 - if: (github.event_name == 'release') - with: - user: __token__ - password: ${{ secrets.pypi_password }} - - name: Dockerhub login env: DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} @@ -504,10 +539,11 @@ jobs: run: | build_helpers/publish_docker_multi.sh - deploy_arm: + deploy-arm: + name: "Deploy Docker" permissions: packages: write - needs: [ deploy ] + needs: [ deploy-docker ] # Only run on 64bit machines runs-on: [self-hosted, linux, ARM64] if: (github.event_name == 'push' || github.event_name == 'schedule' || github.event_name == 'release') && github.repository == 'freqtrade/freqtrade' diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 0c6575e1a..298b66956 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -5,6 +5,7 @@ repos: rev: "6.0.0" hooks: - id: flake8 + additional_dependencies: [Flake8-pyproject] # stages: [push] - repo: https://github.com/pre-commit/mirrors-mypy diff --git a/MANIFEST.in b/MANIFEST.in index a14965c09..0ed6da0ca 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -5,3 +5,5 @@ recursive-include freqtrade/templates/ *.j2 *.ipynb include freqtrade/exchange/binance_leverage_tiers.json include freqtrade/rpc/api_server/ui/fallback_file.html include freqtrade/rpc/api_server/ui/favicon.ico + +prune tests diff --git a/pyproject.toml b/pyproject.toml index bcfc1e551..c446419e2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -2,6 +2,55 @@ requires = ["setuptools >= 64.0.0", "wheel"] build-backend = "setuptools.build_meta" +[project] +name = "freqtrade" +dynamic = ["version", "dependencies", "optional-dependencies"] + +authors = [ + {name = "Freqtrade Team"}, + {name = "Freqtrade Team", email = "freqtrade@protonmail.com"}, +] + +description = "Freqtrade - Crypto Trading Bot" +readme = "README.md" +requires-python = ">=3.9" +license = {text = "GPLv3"} +# license = "GPLv3" +classifiers = [ + "Environment :: Console", + "Intended Audience :: Science/Research", + "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Operating System :: MacOS", + "Operating System :: Unix", + "Topic :: Office/Business :: Financial :: Investment", +] + + +[project.urls] +Homepage = "https://github.com/freqtrade/freqtrade" +Documentation = "https://freqtrade.io" +"Bug Tracker" = "https://github.com/freqtrade/freqtrade/issues" + + +[project.scripts] +freqtrade = "freqtrade.main:main" + +[tool.setuptools] +include-package-data = true +zip-safe = false + +[tool.setuptools.packages.find] +where = ["."] +include = ["freqtrade*"] +exclude = ["tests", "tests.*"] +namespaces = true + +[tool.setuptools.dynamic] +version = {attr = "freqtrade.__version__"} + [tool.black] line-length = 100 exclude = ''' @@ -93,3 +142,18 @@ max-complexity = 12 [tool.ruff.per-file-ignores] "tests/*" = ["S"] + +[tool.flake8] +# Default from https://flake8.pycqa.org/en/latest/user/options.html#cmdoption-flake8-ignore +# minus E226 +ignore = ["E121","E123","E126","E24","E704","W503","W504"] +max-line-length = 100 +max-complexity = 12 +exclude = [ + ".git", + "__pycache__", + ".eggs", + "user_data", + ".venv", + ".env", +] diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index d4d70bc34..000000000 --- a/setup.cfg +++ /dev/null @@ -1,53 +0,0 @@ -[metadata] -name = freqtrade -version = attr: freqtrade.__version__ -author = Freqtrade Team -author_email = freqtrade@protonmail.com -description = Freqtrade - Crypto Trading Bot -long_description = file: README.md -long_description_content_type = text/markdown -url = https://github.com/freqtrade/freqtrade -project_urls = - Bug Tracker = https://github.com/freqtrade/freqtrade/issues -license = GPLv3 -classifiers = - Environment :: Console - Intended Audience :: Science/Research - License :: OSI Approved :: GNU General Public License v3 (GPLv3) - Programming Language :: Python :: 3.9 - Programming Language :: Python :: 3.10 - Programming Language :: Python :: 3.11 - Operating System :: MacOS - Operating System :: Unix - Topic :: Office/Business :: Financial :: Investment - - -[options] -zip_safe = False -include_package_data = True -tests_require = - pytest - pytest-asyncio - pytest-cov - pytest-mock - -packages = find: -python_requires = >=3.9 - -[options.entry_points] -console_scripts = - freqtrade = freqtrade.main:main - -[flake8] -# Default from https://flake8.pycqa.org/en/latest/user/options.html#cmdoption-flake8-ignore -# minus E226 -ignore = E121,E123,E126,E24,E704,W503,W504 -max-line-length = 100 -max-complexity = 12 -exclude = - .git, - __pycache__, - .eggs, - user_data, - .venv - .env diff --git a/setup.py b/setup.py index e8215a3e2..8100f21ae 100644 --- a/setup.py +++ b/setup.py @@ -122,4 +122,5 @@ setup( 'freqai_rl': freqai_rl, 'all': all_extra, }, + url="https://github.com/freqtrade/freqtrade", )