diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7ab4856..5bbada9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -18,7 +18,7 @@ jobs: - name: install dependencies run: | - pip install -r requirements/test.txt + pip install flake8 black - name: lint with flake8 run: | diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 0000000..d9e8c30 --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1 @@ +include dawiq/py.typed \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..973176d --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,58 @@ +[build-system] +requires = ["setuptools", "wheel"] + +[project] +name = "dawiq" +description = "Package to construct Qt widgets from dataclasses" +readme = "README.md" +requires-python = ">=3.9" +license = {file = "LICENSE"} +keywords = ["Dataclass", "GUI"] +authors = [ + {name = "Jisoo Song", email = "jeesoo9595@snu.ac.kr"} +] +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "License :: OSI Approved :: MIT License", + "Operating System :: OS Independent", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Topic :: Software Development", + "Topic :: Software Development :: Libraries :: Python Modules", + "Topic :: Software Development :: User Interfaces", + "Topic :: Software Development :: Widget Sets", +] +dependencies = [ +] +dynamic = [ + "version", +] + +[project.urls] +repository = "https://github.com/JSS95/dawiq" + +[project.optional-dependencies] +test = [ + "cattrs", + "mypy", + "pytest", + "pytest-qt", +] +test-ci = [ + "dawiq[test]", + "pytest-xvfb", +] +doc = [ + "numpydoc", + "sphinx < 5.2", + "sphinx_code_tabs", + "sphinx_rtd_theme", +] +full = ["dawiq[test,doc]"] + +[tool.setuptools.dynamic] +version = {attr = "dawiq.version.__version__"} diff --git a/requirements/doc.txt b/requirements/doc.txt deleted file mode 100644 index 1a5890a..0000000 --- a/requirements/doc.txt +++ /dev/null @@ -1,4 +0,0 @@ -numpydoc -sphinx < 5.2 -sphinx_code_tabs -sphinx_rtd_theme diff --git a/requirements/install.txt b/requirements/install.txt deleted file mode 100644 index e69de29..0000000 diff --git a/requirements/test-ci.txt b/requirements/test-ci.txt deleted file mode 100644 index b275e03..0000000 --- a/requirements/test-ci.txt +++ /dev/null @@ -1 +0,0 @@ -pytest-xvfb diff --git a/requirements/test.txt b/requirements/test.txt deleted file mode 100644 index 58a2c3e..0000000 --- a/requirements/test.txt +++ /dev/null @@ -1,6 +0,0 @@ -black -cattrs -flake8 -mypy -pytest -pytest-qt diff --git a/setup.py b/setup.py deleted file mode 100644 index 941a58f..0000000 --- a/setup.py +++ /dev/null @@ -1,90 +0,0 @@ -from itertools import chain -import os -from setuptools import setup, find_packages # type: ignore[import] - - -VERSION_FILE = "dawiq/version.py" - - -def get_version(): - with open(VERSION_FILE, "r") as f: - exec(compile(f.read(), VERSION_FILE, "exec")) - return locals()["__version__"] - - -def read_readme(): - with open("README.md", encoding="utf-8") as f: - content = f.read() - return content - - -def get_package_data(): - pkgname = "dawiq" - pkg_datapaths = [ - "py.typed", - ] - - ret = [] - for path in pkg_datapaths: - fullpath = os.path.join(pkgname, path) - if os.path.isfile(fullpath): - ret.append(path) - else: - for root, dirs, files in os.walk(fullpath): - for filename in files: - filepath = os.path.join(root, filename) - ret.append(os.path.join(*filepath.split(os.sep)[1:])) - - return {pkgname: ret} - - -def read_requirements(path): - with open(path, "r") as f: - ret = f.read().splitlines() - return ret - - -def get_extras_require(): - ret = {} - ret["test"] = read_requirements("requirements/test.txt") - ret["test-ci"] = read_requirements("requirements/test.txt") + read_requirements( - "requirements/test-ci.txt" - ) - ret["doc"] = read_requirements("requirements/doc.txt") - ret["full"] = list(set(chain(*ret.values()))) - return ret - - -setup( - name="dawiq", - version=get_version(), - python_requires=">=3.9", - description="Package to construct Qt widgets from dataclasses", - long_description=read_readme(), - long_description_content_type="text/markdown", - classifiers=[ - "Development Status :: 5 - Production/Stable", - "Intended Audience :: Developers", - "License :: OSI Approved :: MIT License", - "Operating System :: OS Independent", - "Programming Language :: Python", - "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.9", - "Programming Language :: Python :: 3.10", - "Programming Language :: Python :: 3.11", - "Topic :: Software Development", - "Topic :: Software Development :: Libraries :: Python Modules", - "Topic :: Software Development :: User Interfaces", - "Topic :: Software Development :: Widget Sets", - ], - author="Jisoo Song", - author_email="jeesoo9595@snu.ac.kr", - maintainer="Jisoo Song", - maintainer_email="jeesoo9595@snu.ac.kr", - url="https://github.com/JSS95/dawiq", - license="MIT", - packages=find_packages(), - package_data=get_package_data(), - install_requires=read_requirements("requirements/install.txt"), - extras_require=get_extras_require(), -)