setup.py modifies source files during installation
Priority: Medium Component: setup.py Type: Bug
Description
The setup.py file writes to curateipsum/_version.py during installation, which violates the principle of not modifying source during installation and can cause issues with package managers.
Medium - Can cause installation issues in some environments.
# setup.py modifies source files during installation
**Priority:** Medium
**Component:** setup.py
**Type:** Bug
## Description
The `setup.py` file writes to `curateipsum/_version.py` during installation, which violates the principle of not modifying source during installation and can cause issues with package managers.
## Location
`setup.py:5-13`
## Current Code
```python
def get_version_from_vcs():
ret_code, git_ver = subprocess.getstatusoutput("git describe")
if ret_code != 0:
from curateipsum._version import version
return version
with open("curateipsum/_version.py", "w") as fd:
fd.write("version = \"%s\"\n" % git_ver)
return git_ver
```
## Problems
1. Modifies source tree during installation
2. Requires write access to source directory
3. Won't work with read-only installations
4. Causes issues with editable installs
5. Version changes aren't tracked in git
## Proposed Solution
Use `setuptools_scm` package:
```python
# setup.py
setuptools.setup(
name="cura-te-ipsum",
use_scm_version={
"write_to": "curateipsum/_version.py",
},
setup_requires=['setuptools_scm'],
...
)
```
Or use `importlib.metadata` for Python 3.8+:
```python
# __init__.py
try:
from importlib.metadata import version
__version__ = version("cura-te-ipsum")
except ImportError:
__version__ = "unknown"
```
## Impact
**Medium** - Can cause installation issues in some environments.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
setup.py modifies source files during installation
Priority: Medium
Component: setup.py
Type: Bug
Description
The
setup.pyfile writes tocurateipsum/_version.pyduring installation, which violates the principle of not modifying source during installation and can cause issues with package managers.Location
setup.py:5-13Current Code
Problems
Proposed Solution
Use
setuptools_scmpackage:Or use
importlib.metadatafor Python 3.8+:Impact
Medium - Can cause installation issues in some environments.