From b9269b5a115c5eb2972324d1897fac02b1d98885 Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Wed, 26 Jun 2024 13:02:18 +1000 Subject: [PATCH] Distribute Ifc4D on PyPI --- .github/workflows/ci-ifc4d-pypi.yaml | 35 ++++++++++++++++++++++++ src/ifc4d/Makefile | 38 ++++++++++++++++++++++++++ src/ifc4d/ifc4d/__init__.py | 19 +++++++++++++ src/ifc4d/ifc4d/ifc2p6.py | 1 - src/ifc4d/pyproject.toml | 29 ++++++++++++++++++++ src/ifcopenshell-python/docs/ifc4d.rst | 7 +++++ 6 files changed, 128 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/ci-ifc4d-pypi.yaml create mode 100644 src/ifc4d/Makefile create mode 100644 src/ifc4d/ifc4d/__init__.py create mode 100644 src/ifc4d/pyproject.toml diff --git a/.github/workflows/ci-ifc4d-pypi.yaml b/.github/workflows/ci-ifc4d-pypi.yaml new file mode 100644 index 0000000000..79707a5881 --- /dev/null +++ b/.github/workflows/ci-ifc4d-pypi.yaml @@ -0,0 +1,35 @@ +name: ci-ifc4d-pypi + +on: + workflow_dispatch: + +jobs: + activate: + runs-on: ubuntu-latest + if: | + github.repository == 'IfcOpenShell/IfcOpenShell' + steps: + - name: Set env + run: echo ok go + + build: + needs: activate + runs-on: ubuntu-latest + strategy: + fail-fast: false + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 # https://github.com/actions/setup-python + with: + python-version: '3.11' # Version range or exact version of a Python version to use, using SemVer's version range syntax + - name: Compile + run: | + pip install build + cd src/ifc4d && + make dist + - name: Publish a Python distribution to PyPI + uses: ortega2247/pypi-upload-action@master + with: + user: __token__ + password: ${{ secrets.PYPI_API_TOKEN }} + packages_dir: src/ifc4d/dist diff --git a/src/ifc4d/Makefile b/src/ifc4d/Makefile new file mode 100644 index 0000000000..f0d0d52c45 --- /dev/null +++ b/src/ifc4d/Makefile @@ -0,0 +1,38 @@ +# Ifc4D - IFC scheduling utility +# Copyright (C) 2020-2024 Dion Moult +# +# This file is part of Ifc4D. +# +# Ifc4D is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Ifc4D is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Ifc4D. If not, see . + +VERSION:=$(shell cat ../../VERSION) +SED:=sed -i +ifeq ($(UNAME_S),Darwin) +SED:=sed -i '' -e +endif + +.PHONY: qa +qa: + black . + +.PHONY: dist +dist: + rm -rf dist + cp pyproject.toml pyproject.toml.bak + cp ifc4d/__init__.py __init__.py.bak + $(SED) 's/version = "0.0.0"/version = "$(VERSION)"/' pyproject.toml + $(SED) 's/version = "0.0.0"/version = "$(VERSION)"/' ifc4d/__init__.py + python -m build + mv pyproject.toml.bak pyproject.toml + mv __init__.py.bak ifc4d/__init__.py diff --git a/src/ifc4d/ifc4d/__init__.py b/src/ifc4d/ifc4d/__init__.py new file mode 100644 index 0000000000..3660c90ffe --- /dev/null +++ b/src/ifc4d/ifc4d/__init__.py @@ -0,0 +1,19 @@ +# Ifc4D - IFC scheduling utility +# Copyright (C) 2020-2024 Dion Moult +# +# This file is part of Ifc4D. +# +# Ifc4D is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Ifc4D is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Ifc4D. If not, see . + +__version__ = version = "0.0.0" diff --git a/src/ifc4d/ifc4d/ifc2p6.py b/src/ifc4d/ifc4d/ifc2p6.py index eb93fc3116..7d3b9e4598 100644 --- a/src/ifc4d/ifc4d/ifc2p6.py +++ b/src/ifc4d/ifc4d/ifc2p6.py @@ -16,7 +16,6 @@ # You should have received a copy of the GNU Lesser General Public License # along with Ifc4D. If not, see . -import math import uuid import datetime import ifcopenshell diff --git a/src/ifc4d/pyproject.toml b/src/ifc4d/pyproject.toml new file mode 100644 index 0000000000..6673061633 --- /dev/null +++ b/src/ifc4d/pyproject.toml @@ -0,0 +1,29 @@ +[build-system] +requires = ["setuptools>=61.0"] +build-backend = "setuptools.build_meta" + +[project] +name = "ifc4d" +version = "0.0.0" +authors = [ + { name="Dion Moult", email="dion@thinkmoult.com" }, +] +description = "IFC 4D scheduling library to support file conversions and calculations" +readme = "README.md" +keywords = ["IFC", "4D", "BIM"] +classifiers = [ + "Programming Language :: Python :: 3", + "License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)", +] +dependencies = [ + "ifcopenshell", +] + +[project.urls] +Homepage = "http://ifcopenshell.org" +Documentation = "https://docs.ifcopenshell.org" +Issues = "https://github.com/IfcOpenShell/IfcOpenShell/issues" + +[tool.setuptools.packages.find] +include = ["ifc4d"] +exclude = ["test*"] diff --git a/src/ifcopenshell-python/docs/ifc4d.rst b/src/ifcopenshell-python/docs/ifc4d.rst index f3474b7871..d4a5cb4590 100644 --- a/src/ifcopenshell-python/docs/ifc4d.rst +++ b/src/ifcopenshell-python/docs/ifc4d.rst @@ -2,3 +2,10 @@ Ifc4D ===== Ifc4D contains a series of utilities for converting to and from various 4D software. + +PyPI +---- + +.. code-block:: + + pip install ifc4d