Skip to content

Commit

Permalink
Merge pull request #1673 from Avaiga/fix/pyproject-install
Browse files Browse the repository at this point in the history
Add back setup.py to enable custom dynamic builds
  • Loading branch information
joaoandre-avaiga authored Aug 22, 2024
2 parents f624ef2 + 90f28a3 commit e74b89a
Show file tree
Hide file tree
Showing 21 changed files with 419 additions and 474 deletions.
12 changes: 3 additions & 9 deletions .github/workflows/build-and-release-single-package.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@ jobs:
${{ github.event.inputs.target_package }} >> $GITHUB_OUTPUT
build-and-release-package:
permissions:
contents: write
needs: [fetch-versions]
timeout-minutes: 20
runs-on: ubuntu-latest
Expand Down Expand Up @@ -153,18 +155,10 @@ jobs:
run: |
cp -r taipy/_cli/. ${{ steps.set-variables.outputs.package_dir }}/taipy/_cli
- name: Update pyproject.toml
working-directory: ${{ steps.set-variables.outputs.package_dir }}
run: |
python tools/release/setup_project.py . prod
- name: Build package
working-directory: ${{ steps.set-variables.outputs.package_dir }}
run: |
python -m build
- name: Rename files
run: |
for file in ./dist/*; do mv "$file" "${file//_/-}"; done
- name: Create tag and release
Expand All @@ -181,7 +175,7 @@ jobs:

- name: Ensure Taipy release is marked as latest
run: |
gh release edit ${{needs.fetch-versions.outputs.taipy_VERSION}} --latest
gh release edit ${{needs.fetch-versions.outputs.taipy_VERSION}} --latest
shell: bash
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
20 changes: 10 additions & 10 deletions .github/workflows/build-and-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,12 @@ jobs:
run: |
python tools/release/setup_version.py ALL ${{ github.event.inputs.release_type }} ${{ github.event.inputs.target_version }} ${{ steps.extract_branch.outputs.branch }} >> $GITHUB_OUTPUT
- uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: Update version to ${{ steps.version-setup.outputs.NEW_VERSION }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

build-and-release-taipy-packages:
needs: [fetch-versions]
timeout-minutes: 20
Expand Down Expand Up @@ -151,11 +157,6 @@ jobs:
run: |
cp -r taipy/_cli/. ${{ steps.set-variables.outputs.package_dir }}/taipy/_cli
- name: Update pyproject.toml
working-directory: ${{ steps.set-variables.outputs.package_dir }}
run: |
python tools/release/setup_project.py . prod
- name: Build package
working-directory: ${{ steps.set-variables.outputs.package_dir }}
run: |
Expand Down Expand Up @@ -209,14 +210,13 @@ jobs:
python -m pip install --upgrade pip
pip install build wheel
- name: Copy files from tools
- name: Backup setup.py
run: |
cp -r tools/packages/taipy/. .
mv setup.py setup.old.py
- name: Update pyproject.toml
working-directory: ${{ steps.set-variables.outputs.package_dir }}
- name: Copy files from tools
run: |
python tools/release/setup_project.py . prod
cp -r tools/packages/taipy/. .
- name: Build Taipy package
run: |
Expand Down
29 changes: 3 additions & 26 deletions .github/workflows/packaging.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,12 @@ on:
required: false
default: ""

env:
NODE_OPTIONS: --max-old-space-size=4096

jobs:
standard-packages:
timeout-minutes: 30
strategy:
matrix:
python-versions: [ '3.8', '3.9', '3.10', '3.11', '3.12' ]
python-versions: [ '3.8', '3.9', '3.10', '3.11', '3.12']
os: [ubuntu-latest, macos-13, windows-latest]

runs-on: ${{ matrix.os }}
Expand All @@ -31,34 +28,14 @@ jobs:
with:
python-version: ${{ matrix.python-versions }}

- name: Install Dependencies
run: |
pip install toml
- name: Build frontends
run: |
python tools/frontend/bundle_build.py
- name: Update pyproject.toml
run: |
python tools/release/setup_project.py taipy/config
python tools/release/setup_project.py taipy/core
python tools/release/setup_project.py taipy/gui
python tools/release/setup_project.py taipy/rest
python tools/release/setup_project.py taipy/templates
python tools/release/setup_project.py .
- name: Install Taipy Subpackages
run: |
pip install taipy/config taipy/core taipy/gui taipy/rest taipy/templates
- name: Install Taipy
- name: Install Taipy without dependencies
run: |
pip install .
- name: Remove local folder
run: rm -r taipy

rm -r taipy
- name: Check Taipy Installation
run: |
python tools/validate_taipy_install.py
Expand Down
32 changes: 7 additions & 25 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,13 @@ build-backend = "setuptools.build_meta"

[project]
name = "taipy"
version = "0.0.0" # will be dynamically set
description = "A 360° open-source platform from Python pilots to production-ready web apps."
readme = "package_desc.md"
requires-python = ">=3.8"
license = {text = "Apache License 2.0"}
authors = [{name = "Avaiga", email = "[email protected]"}]
keywords = ["taipy"]
classifiers = [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"License :: OSI Approved :: Apache Software License",
"Natural Language :: English",
Expand All @@ -21,46 +20,29 @@ classifiers = [
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Topic :: Software Development",
"Topic :: Scientific/Engineering",
"Operating System :: Microsoft :: Windows",
"Operating System :: POSIX",
"Operating System :: Unix",
"Operating System :: MacOS",
]
dependencies = [] # will be dynamically set
dynamic = ["version", "dependencies"]

[project.optional-dependencies]
test = ["pytest>=3.8"]
ngrok = ["pyngrok>=5.1,<6.0"]
image = [
"python-magic>=0.4.24,<0.5; platform_system!='Windows'",
"python-magic-bin>=0.4.14,<0.5; platform_system=='Windows'"
"python-magic>=0.4.24,<0.5",
"python-magic-bin>=0.4.14,<0.5",
]
rdp = ["rdp>=0.8"]
arrow = ["pyarrow>=14.0.2,<15.0"]
mssql = ["pyodbc>=4"]

[project.scripts]
taipy = "taipy._entrypoint:_entrypoint"

[project.urls]
Homepage = "https://www.taipy.io"
Documentation = "https://docs.taipy.io"
Source = "https://github.com/Avaiga/taipy"
Download = "https://pypi.org/project/taipy/#files"
Tracker = "https://github.com/Avaiga/taipy/issues"
Security = "https://github.com/Avaiga/taipy?tab=security-ov-file#readme"
"Release notes" = "https://docs.taipy.io/en/release-0.0.0/relnotes/" # version will be dynamically set

[tool.setuptools.packages.find]
include = ["taipy", "taipy.*"]

[tool.setuptools.package-data]
"taipy" = ["version.json"]

[tool.setuptools]
zip-safe = false

[project.scripts]
taipy = "taipy._entrypoint:_entrypoint"

[tool.ruff]
exclude = [
Expand Down
63 changes: 63 additions & 0 deletions setup.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# Copyright 2021-2024 Avaiga Private Limited
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
# an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
# specific language governing permissions and limitations under the License.

import os
import json
import platform
import subprocess
from pathlib import Path
from setuptools import setup, find_packages
from setuptools.command.build_py import build_py

root_folder = Path(__file__).parent

# get current version
with open(os.path.join("taipy", "version.json")) as version_file:
version = json.load(version_file)
version_string = f'{version.get("major", 0)}.{version.get("minor", 0)}.{version.get("patch", 0)}'
if vext := version.get("ext"):
version_string = f"{version_string}.{vext}"

def get_requirements():
reqs = set()
for pkg in (root_folder / "tools" / "packages").iterdir():
requirements_file = pkg / "setup.requirements.txt"
if requirements_file.exists():
reqs.update(requirements_file.read_text("UTF-8").splitlines())

return [r for r in reqs if r and not r.startswith("taipy")]

class NPMInstall(build_py):
def run(self):
subprocess.run(
["python", "bundle_build.py"],
cwd=root_folder / "tools" / "frontend",
check=True,
shell=platform.system() == "Windows",
)
build_py.run(self)

setup(
version=version_string,
install_requires=get_requirements(),
packages=find_packages(include=["taipy", "taipy.*"]),
extras_require={
"ngrok": ["pyngrok>=5.1,<6.0"],
"image": [
"python-magic>=0.4.24,<0.5;platform_system!='Windows'",
"python-magic-bin>=0.4.14,<0.5;platform_system=='Windows'",
],
"rdp": ["rdp>=0.8"],
"arrow": ["pyarrow>=14.0.2,<15.0"],
"mssql": ["pyodbc>=4"],
},
cmdclass={"build_py": NPMInstall},
)
38 changes: 8 additions & 30 deletions taipy/config/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,13 @@ build-backend = "setuptools.build_meta"

[project]
name = "taipy-config"
version = "0.0.0" # will be dynamically set
description = "A Taipy package dedicated to easily configure a Taipy application."
readme = "package_desc.md"
requires-python = ">=3.8"
license = {text = "Apache License 2.0"}
authors = [{name = "Avaiga", email = "[email protected]"}]
keywords = ["taipy-config"]
classifiers = [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"License :: OSI Approved :: Apache Software License",
"Natural Language :: English",
Expand All @@ -21,38 +20,17 @@ classifiers = [
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Topic :: Software Development",
"Topic :: Scientific/Engineering",
"Operating System :: Microsoft :: Windows",
"Operating System :: POSIX",
"Operating System :: Unix",
"Operating System :: MacOS",
]

dependencies = [
"toml>=0.10,<0.11",
"deepdiff>=6.7,<6.8"
]
dynamic = ["version", "dependencies"]

[project.optional-dependencies]
test = [
"pytest>=3.8"
]

[project.urls]
Homepage = "https://www.taipy.io"
Documentation = "https://docs.taipy.io"
Source = "https://github.com/Avaiga/taipy"
Download = "https://pypi.org/project/taipy/#files"
Tracker = "https://github.com/Avaiga/taipy/issues"
Security = "https://github.com/Avaiga/taipy?tab=security-ov-file#readme"
"Release notes" = "https://docs.taipy.io/en/release-0.0.0/relnotes/" # version will be dynamically set
testing = ["pytest>=3.8"]

[tool.setuptools.packages]
find = {where = ["."], include = ["taipy", "taipy.config", "taipy.config.*", "taipy.logger", "taipy.logger.*"]}
find = {include = ["taipy", "taipy.config", "taipy.config.*", "taipy.logger", "taipy.logger.*"]}

[tool.setuptools.package-data]
"version" = ["version.json"]
[project.urls]
homepage = "https://github.com/avaiga/taipy"

[tool.setuptools]
zip-safe = false
[tool.setuptools.data-files]
"version" = ["version.json"]
45 changes: 45 additions & 0 deletions taipy/config/setup.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# Copyright 2021-2024 Avaiga Private Limited
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
# an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
# specific language governing permissions and limitations under the License.

# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
# an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
# specific language governing permissions and limitations under the License.

"""The setup script."""
import json
import os
from setuptools import find_namespace_packages, find_packages, setup

with open("README.md") as readme_file:
readme = readme_file.read()

version_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "version.json")

with open(version_path) as version_file:
version = json.load(version_file)
version_string = f'{version.get("major", 0)}.{version.get("minor", 0)}.{version.get("patch", 0)}'
if vext := version.get("ext"):
version_string = f"{version_string}.{vext}"

requirements = ["toml>=0.10,<0.11", "deepdiff>=6.2,<6.3"]

test_requirements = ["pytest>=3.8"]

setup(
version=version_string,
install_requires=requirements,
packages=find_namespace_packages(where=".") + find_packages(include=["taipy", "taipy.config", "taipy.config.*", "taipy.logger", "taipy.logger.*"]),
include_package_data=True,
data_files=[('version', ['version.json'])],
tests_require=test_requirements,
)
Loading

0 comments on commit e74b89a

Please sign in to comment.