|
1 | 1 | # /usr/bin/env python
|
| 2 | +import re |
| 3 | + |
2 | 4 | from setuptools import setup
|
3 | 5 |
|
4 |
| -setup( |
5 |
| - packages=["table2ascii"], |
6 |
| - package_data={"table2ascii": ["py.typed"]}, |
7 |
| -) |
| 6 | + |
| 7 | +def get_name(): |
| 8 | + name = "" |
| 9 | + with open("pyproject.toml") as f: |
| 10 | + name = re.search(r'^name = ["\']([^"\']*)["\']', f.read(), re.M) |
| 11 | + if not name: |
| 12 | + raise RuntimeError("name is not set") |
| 13 | + return name.group(1) |
| 14 | + |
| 15 | + |
| 16 | +def get_version(): |
| 17 | + version = "" |
| 18 | + with open("pyproject.toml") as f: |
| 19 | + version = re.search(r'^version = ["\']([^"\']*)["\']', f.read(), re.M) |
| 20 | + if not version: |
| 21 | + raise RuntimeError("version is not set") |
| 22 | + return version.group(1) |
| 23 | + |
| 24 | + |
| 25 | +def get_dependencies(): |
| 26 | + with open("pyproject.toml") as f: |
| 27 | + dependency_match = re.search(r"^dependencies = \[([\s\S]*?)\]", f.read(), re.M) |
| 28 | + if not dependency_match or not dependency_match.group(1): |
| 29 | + return [] |
| 30 | + return [ |
| 31 | + dependency.strip().strip(",").strip('"') |
| 32 | + for dependency in dependency_match.group(1).split("\n") |
| 33 | + if dependency |
| 34 | + ] |
| 35 | + |
| 36 | + |
| 37 | +try: |
| 38 | + # check if pyproject.toml can be used to install dependencies and set the version |
| 39 | + setup( |
| 40 | + packages=[get_name()], |
| 41 | + package_data={get_name(): ["py.typed"]}, |
| 42 | + ) |
| 43 | +except Exception: |
| 44 | + # fallback for old versions of pip/setuptools |
| 45 | + setup( |
| 46 | + name=get_name(), |
| 47 | + packages=[get_name()], |
| 48 | + package_data={get_name(): ["py.typed"]}, |
| 49 | + version=get_version(), |
| 50 | + install_requires=get_dependencies(), |
| 51 | + ) |
0 commit comments