diff --git a/.github/workflows/ci-ifcfm-pypi.yaml b/.github/workflows/ci-ifcfm-pypi.yaml new file mode 100644 index 0000000000..177ba6d01e --- /dev/null +++ b/.github/workflows/ci-ifcfm-pypi.yaml @@ -0,0 +1,35 @@ +name: ci-ifcfm-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/ifcfm && + 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/ifcfm/dist diff --git a/src/ifcfm/Makefile b/src/ifcfm/Makefile new file mode 100644 index 0000000000..59b1ae81ec --- /dev/null +++ b/src/ifcfm/Makefile @@ -0,0 +1,38 @@ +# IfcFM - IFC for facility management +# Copyright (C) 2020-2024 Dion Moult +# +# This file is part of IfcFM. +# +# IfcFM 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. +# +# IfcFM 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 IfcFM. 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 ifcfm/__init__.py __init__.py.bak + $(SED) 's/version = "0.0.0"/version = "$(VERSION)"/' pyproject.toml + $(SED) 's/version = "0.0.0"/version = "$(VERSION)"/' ifcfm/__init__.py + python -m build + mv pyproject.toml.bak pyproject.toml + mv __init__.py.bak ifcfm/__init__.py diff --git a/src/ifcfm/ifcfm/__init__.py b/src/ifcfm/ifcfm/__init__.py index 20210a2d1a..149d8b71e5 100644 --- a/src/ifcfm/ifcfm/__init__.py +++ b/src/ifcfm/ifcfm/__init__.py @@ -41,6 +41,8 @@ try: except: pass # No Pandas support +__version__ = version = "0.0.0" + class Parser: def __init__(self, preset="basic"): diff --git a/src/ifcfm/pyproject.toml b/src/ifcfm/pyproject.toml new file mode 100644 index 0000000000..741bbb91cc --- /dev/null +++ b/src/ifcfm/pyproject.toml @@ -0,0 +1,32 @@ +[build-system] +requires = ["setuptools>=61.0"] +build-backend = "setuptools.build_meta" + +[project] +name = "ifcfm" +version = "0.0.0" +authors = [ + { name="Dion Moult", email="dion@thinkmoult.com" }, +] +description = "Extract data from IFC following facility management standards" +readme = "README.md" +keywords = ["IFC", "FM", "BIM"] +classifiers = [ + "Programming Language :: Python :: 3", + "License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)", +] +dependencies = [ + "ifcopenshell", + "openpyxl", + "odfpy", + "pandas", +] + +[project.urls] +Homepage = "http://ifcopenshell.org" +Documentation = "https://docs.ifcopenshell.org" +Issues = "https://github.com/IfcOpenShell/IfcOpenShell/issues" + +[tool.setuptools.packages.find] +include = ["ifcfm"] +exclude = ["test*"] diff --git a/src/ifcopenshell-python/docs/ifcfm.rst b/src/ifcopenshell-python/docs/ifcfm.rst index 25724de177..241be8bb6b 100644 --- a/src/ifcopenshell-python/docs/ifcfm.rst +++ b/src/ifcopenshell-python/docs/ifcfm.rst @@ -26,6 +26,13 @@ to spreadsheets and other machine readable formats, such as ODS, XLSX, CSV, Pandas, XML, and JSON. These formats may then be easily read, audited, or imported into technologies that cannot work with IFC natively. +PyPI +---- + +.. code-block:: + + pip install ifcfm + Supported data standards ------------------------