forked from benda/packagehowto
		
	Compare commits
	
		
			2 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 06d7ed4b84 | |||
| 9003c283ec | 
							
								
								
									
										28
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										28
									
								
								README.md
									
									
									
									
									
								
							| @ -215,8 +215,8 @@ as well when you call them with a `--version' argument. | |||||||
| 
 | 
 | ||||||
| For the latter two cases, you can define a `__version__` variable in | For the latter two cases, you can define a `__version__` variable in | ||||||
| one of the modules, or even in a dedicated module, that you then | one of the modules, or even in a dedicated module, that you then | ||||||
| import whereever you need it. Even better is to define it in the | import whereever you need it. For example, you may create a simple | ||||||
| `__init__.py` file: | module called `version.py` file with the following content: | ||||||
| 
 | 
 | ||||||
| ``` | ``` | ||||||
| __version__ = '1.4.2' | __version__ = '1.4.2' | ||||||
| @ -226,6 +226,12 @@ __year__ = '2024' | |||||||
| """ Year of the current numerix version as string. """ | """ Year of the current numerix version as string. """ | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
|  | In `__init__.py` you import the version: | ||||||
|  | 
 | ||||||
|  | ``` | ||||||
|  | from .version import __version__ | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
| Then a script can easily check the package's version like this: | Then a script can easily check the package's version like this: | ||||||
| 
 | 
 | ||||||
| ``` | ``` | ||||||
| @ -234,20 +240,26 @@ from numerix import __version__ | |||||||
| print(__version__) | print(__version__) | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| Other modules of the package need to import it from the `__init__.py` | Other modules of the package may also import the version by a relative | ||||||
| file by a relative import to be able to use it: | import to be able to use it: | ||||||
| 
 | 
 | ||||||
| ``` | ``` | ||||||
| from .__init__ import __version__ | from .version import __version__ | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def about(): | def about(): | ||||||
|     print(f'{__name__} {__version__}') |     print(f'{__name__} {__version__}') | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
|  | Why not defining `__version__` directly in `__init__.py`? Each module | ||||||
|  | using the version string would import it from `__init__.py`. If you | ||||||
|  | also want to import some functions from such a module in `__init__.py` | ||||||
|  | to make them more easily importable from the package, you end up in | ||||||
|  | cyclic imports. Python does not like them for a good reason... | ||||||
|  | 
 | ||||||
| But how do you get the very same version into the `pyproject.toml` | But how do you get the very same version into the `pyproject.toml` | ||||||
| file? It would be a very bad idea to write it there directly and | file? It would be a very bad idea to write it there directly and | ||||||
| update it whenever you change it in the `__init__.py` file. The | update it whenever you change it in the `version.py` file. The | ||||||
| version number should be set only in one place. | version number should be set only in one place. | ||||||
| 
 | 
 | ||||||
| This is possible, of course. You need to specify the `version` field | This is possible, of course. You need to specify the `version` field | ||||||
| @ -255,7 +267,7 @@ as `dynamic` in the `[project]` section. This tells the package tool | |||||||
| that the version will be set dynamically by some code. There are | that the version will be set dynamically by some code. There are | ||||||
| several options to do so. The simplest one is to add a | several options to do so. The simplest one is to add a | ||||||
| `[tool.setuptools.dynamic]` section where the version is read as an | `[tool.setuptools.dynamic]` section where the version is read as an | ||||||
| attribute from the `numerix` package, that is its `__init__.py`file: | attribute from the `version` module of the `numerix` package: | ||||||
| 
 | 
 | ||||||
| ```txt | ```txt | ||||||
| ... | ... | ||||||
| @ -266,7 +278,7 @@ dynamic = ["version"] | |||||||
| ... | ... | ||||||
| 
 | 
 | ||||||
| [tool.setuptools.dynamic] | [tool.setuptools.dynamic] | ||||||
| version = {attr = "numerix.__version__"} | version = {attr = "numerix.version.__version__"} | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ## Distribute your package | ## Distribute your package | ||||||
|  | |||||||
| @ -43,7 +43,7 @@ Documentation = "https://whale.am28.uni-tuebingen.de/git/benda/packagehowto/src/ | |||||||
| #numerix   = "numerix.numerix:main" | #numerix   = "numerix.numerix:main" | ||||||
| 
 | 
 | ||||||
| [tool.setuptools.dynamic] | [tool.setuptools.dynamic] | ||||||
| version = {attr = "numerix.__version__"} | version = {attr = "numerix.version.__version__"} | ||||||
| 
 | 
 | ||||||
| #[tool.pytest.ini_options] | #[tool.pytest.ini_options] | ||||||
| #pythonpath = "src" | #pythonpath = "src" | ||||||
|  | |||||||
| @ -5,16 +5,7 @@ Fancy numerics made easy. | |||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| __version__ = '1.4.2' | from .version import __version__ | ||||||
| """ Current version of the numerix package as string 'x.y.z'. """ |  | ||||||
| 
 |  | ||||||
| __year__ = '2024' |  | ||||||
| """ Year of the current numerix version as string. """ |  | ||||||
| 
 |  | ||||||
| # Add them to documentation: |  | ||||||
| __pdoc__ = {} |  | ||||||
| __pdoc__['__version__'] = True |  | ||||||
| __pdoc__['__year__'] = True |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| # Functions defined directly in __init__.py can be imported directly | # Functions defined directly in __init__.py can be imported directly | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| from .__init__ import __version__ | from .version import __version__ | ||||||
| from .addition import add_two | from .addition import add_two | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										10
									
								
								src/numerix/version.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								src/numerix/version.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,10 @@ | |||||||
|  | __version__ = '1.4.2' | ||||||
|  | """ Current version of the numerix package as string 'x.y.z'. """ | ||||||
|  | 
 | ||||||
|  | __year__ = '2024' | ||||||
|  | """ Year of the current numerix version as string. """ | ||||||
|  | 
 | ||||||
|  | # Add them to documentation: | ||||||
|  | __pdoc__ = {} | ||||||
|  | __pdoc__['__version__'] = True | ||||||
|  | __pdoc__['__year__'] = True | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user