From b85dcdb437fd1dc931030b35a0290683a6a2c762 Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Wed, 26 Jun 2024 13:53:55 +1000 Subject: [PATCH] Distribute IfcCityJSON on PyPI --- .github/workflows/ci-ifccityjson-pypi.yaml | 35 ++++++++++++++++++ src/ifccityjson/Makefile | 38 ++++++++++++++++++++ src/ifccityjson/ifccityjson/__init__.py | 4 +-- src/ifccityjson/pyproject.toml | 16 ++++++--- src/ifcopenshell-python/docs/ifccityjson.rst | 7 ++++ 5 files changed, 92 insertions(+), 8 deletions(-) create mode 100644 .github/workflows/ci-ifccityjson-pypi.yaml create mode 100644 src/ifccityjson/Makefile diff --git a/.github/workflows/ci-ifccityjson-pypi.yaml b/.github/workflows/ci-ifccityjson-pypi.yaml new file mode 100644 index 0000000000..2003acf169 --- /dev/null +++ b/.github/workflows/ci-ifccityjson-pypi.yaml @@ -0,0 +1,35 @@ +name: ci-ifccityjson-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/ifccityjson && + 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/ifccityjson/dist diff --git a/src/ifccityjson/Makefile b/src/ifccityjson/Makefile new file mode 100644 index 0000000000..d26a4b26f7 --- /dev/null +++ b/src/ifccityjson/Makefile @@ -0,0 +1,38 @@ +# IfcCityJSON - Python CityJSON to IFC converter +# Copyright (C) 2020-2024 Dion Moult +# +# This file is part of IfcCityJSON. +# +# IfcCityJSON 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. +# +# IfcCityJSON 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 IfcCityJSON. 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 ifccityjson/__init__.py __init__.py.bak + $(SED) 's/version = "0.0.0"/version = "$(VERSION)"/' pyproject.toml + $(SED) 's/version = "0.0.0"/version = "$(VERSION)"/' ifccityjson/__init__.py + python -m build + mv pyproject.toml.bak pyproject.toml + mv __init__.py.bak ifccityjson/__init__.py diff --git a/src/ifccityjson/ifccityjson/__init__.py b/src/ifccityjson/ifccityjson/__init__.py index 82ea5b3f38..d65592c9bd 100644 --- a/src/ifccityjson/ifccityjson/__init__.py +++ b/src/ifccityjson/ifccityjson/__init__.py @@ -1,4 +1,3 @@ - # ifccityjson - Python CityJSON to IFC converter # Copyright (C) 2021 Laurens J.N. Oostwegel # @@ -19,5 +18,4 @@ from .cityjson2ifc import * -# Export version number -__version__ = "0.0.1" \ No newline at end of file +__version__ = version = "0.0.0" diff --git a/src/ifccityjson/pyproject.toml b/src/ifccityjson/pyproject.toml index 30b154c9f7..f60afc3d35 100644 --- a/src/ifccityjson/pyproject.toml +++ b/src/ifccityjson/pyproject.toml @@ -4,22 +4,28 @@ build-backend = "setuptools.build_meta" [project] name = "ifccityjson" -version = "0.1.0" +version = "0.0.0" authors = [ { name = "Laurens J.N. Oostwegel", email = "l.oostwegel@gmail.com" }, { name = "Balázs Dukai", email = "balazs.dukai@3dgi.nl" }, ] description = "Converter for CityJSON files and IFC" readme = "README.md" -keywords = ["IFC", "CityJSON"] +keywords = ["IFC", "CityJSON", "BIM"] classifiers = [ "Programming Language :: Python :: 3", "License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)", ] dependencies = [ - "ifcopenshell>=0.7", + "ifcopenshell", "cjio>=0.8" ] + [project.urls] -"Homepage" = "http://ifcopenshell.org" -"Bug Tracker" = "https://github.com/ifcopenshell/ifcopenshell/issues" +Homepage = "http://ifcopenshell.org" +Documentation = "https://docs.ifcopenshell.org" +Issues = "https://github.com/IfcOpenShell/IfcOpenShell/issues" + +[tool.setuptools.packages.find] +include = ["ifccityjson"] +exclude = ["test*"] diff --git a/src/ifcopenshell-python/docs/ifccityjson.rst b/src/ifcopenshell-python/docs/ifccityjson.rst index f542dce418..fd361d5293 100644 --- a/src/ifcopenshell-python/docs/ifccityjson.rst +++ b/src/ifcopenshell-python/docs/ifccityjson.rst @@ -4,6 +4,13 @@ IfcCityJSON IfcCityJSON is a converter for CityJSON files and IFC. It currently only supports one-way conversion from CityJSON to IFC. +PyPI +---- + +.. code-block:: + + pip install ifccityjson + Source installation -------------------