%global _empty_manifest_terminate_build 0 Name: python-chkpkg Version: 0.5.2 Release: 1 Summary: Tests Python package sources to see if they build successfully to a PyPi compatible distribution License: MIT URL: https://github.com/rtmigo/chkpkg_py#readme Source0: https://mirrors.aliyun.com/pypi/web/packages/55/e1/cb1967c83f65ee387c12dfcbb495804200fe20067c7ae2ab9821d6a48b3c/chkpkg-0.5.2.tar.gz BuildArch: noarch %description `chkpkg` supports Python 3.6+ on Linux, macOS and Windows. # Install ``` bash pip3 install chkpkg ``` # Use ``` python3 from chkpkg import Package with Package() as pkg: pkg.run_python_code('import mypackage; mypackage.myfunc()') pkg.run_shell_code('mypackage_cli --version') print("Package is OK!") ``` This **test script** creates a distribution from project sources, installs the package from the distribution into a virtual environment, tries importing and running the installed package from python and command line. If any results in an error, an exception is thrown. The absence of exceptions means that the package is fine. By default, we assume that the `setup.py` or `setup.cfg` is located in the current working directory. You can specify a different path using the argument `Package(project_dir=...)` # Steps Without context, the test script would look like this: ``` python3 from chkpkg import Package pkg = Package() try: # step 1 pkg.init() # step 2 pkg.run_python_code('import mypackage; mypackage.myfunc()') pkg.run_shell_code('mypackage_cli --version') finally: # step 3 pkg.cleanup() ``` ## Step 1: Build, Verify, Install ``` python3 pkg.init() ``` The `init` method: - Creates a temporary virtual environment capable of building `.whl` files - Creates a distribution as a `.whl` file (`python -m build`) - Verifies the package source (`twine check --strict`) - Creates another temporary virtual environment without preinstalled packages - Installs the package from the newly created `.whl` into the clean virtual environment ## Step 2: Import, Run ``` python3 pkg.run_python_code('import mypackage') ``` The `run_python_code` method allows you to check that the package is installed and can be imported without errors. You can also run some functions from the imported package and check the output. ``` python3 output = pkg.run_python_code('import mypackage; print(mypackage.plus(2, 3))') assert output == "5" ``` If the package must be installed as a CLI program, this can be tested with the `run_shell_code`. This function calls `cmd.exe` on Windows and `bash` on other systems. ``` python3 output = pkg.run_shell_code('mypackage_cli --version') assert output[0].isdigit() ``` The current working directory will be a random temporary one. If `mypackage_cli` can be run, then it really is available as a shell command from any directory. However, such tests are best done on a clean system. If we run the tests on development machine, it may turn out that we are running a command that was in the system before the package was installed. ## Step 3: Cleanup ``` python3 pkg.cleanup() ``` The `cleanup` method removes all temporary directories created during building and testing. # License Copyright © 2021 [Arteom iG](https://github.com/rtmigo). Released under the [MIT License](LICENSE). %package -n python3-chkpkg Summary: Tests Python package sources to see if they build successfully to a PyPi compatible distribution Provides: python-chkpkg BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-chkpkg `chkpkg` supports Python 3.6+ on Linux, macOS and Windows. # Install ``` bash pip3 install chkpkg ``` # Use ``` python3 from chkpkg import Package with Package() as pkg: pkg.run_python_code('import mypackage; mypackage.myfunc()') pkg.run_shell_code('mypackage_cli --version') print("Package is OK!") ``` This **test script** creates a distribution from project sources, installs the package from the distribution into a virtual environment, tries importing and running the installed package from python and command line. If any results in an error, an exception is thrown. The absence of exceptions means that the package is fine. By default, we assume that the `setup.py` or `setup.cfg` is located in the current working directory. You can specify a different path using the argument `Package(project_dir=...)` # Steps Without context, the test script would look like this: ``` python3 from chkpkg import Package pkg = Package() try: # step 1 pkg.init() # step 2 pkg.run_python_code('import mypackage; mypackage.myfunc()') pkg.run_shell_code('mypackage_cli --version') finally: # step 3 pkg.cleanup() ``` ## Step 1: Build, Verify, Install ``` python3 pkg.init() ``` The `init` method: - Creates a temporary virtual environment capable of building `.whl` files - Creates a distribution as a `.whl` file (`python -m build`) - Verifies the package source (`twine check --strict`) - Creates another temporary virtual environment without preinstalled packages - Installs the package from the newly created `.whl` into the clean virtual environment ## Step 2: Import, Run ``` python3 pkg.run_python_code('import mypackage') ``` The `run_python_code` method allows you to check that the package is installed and can be imported without errors. You can also run some functions from the imported package and check the output. ``` python3 output = pkg.run_python_code('import mypackage; print(mypackage.plus(2, 3))') assert output == "5" ``` If the package must be installed as a CLI program, this can be tested with the `run_shell_code`. This function calls `cmd.exe` on Windows and `bash` on other systems. ``` python3 output = pkg.run_shell_code('mypackage_cli --version') assert output[0].isdigit() ``` The current working directory will be a random temporary one. If `mypackage_cli` can be run, then it really is available as a shell command from any directory. However, such tests are best done on a clean system. If we run the tests on development machine, it may turn out that we are running a command that was in the system before the package was installed. ## Step 3: Cleanup ``` python3 pkg.cleanup() ``` The `cleanup` method removes all temporary directories created during building and testing. # License Copyright © 2021 [Arteom iG](https://github.com/rtmigo). Released under the [MIT License](LICENSE). %package help Summary: Development documents and examples for chkpkg Provides: python3-chkpkg-doc %description help `chkpkg` supports Python 3.6+ on Linux, macOS and Windows. # Install ``` bash pip3 install chkpkg ``` # Use ``` python3 from chkpkg import Package with Package() as pkg: pkg.run_python_code('import mypackage; mypackage.myfunc()') pkg.run_shell_code('mypackage_cli --version') print("Package is OK!") ``` This **test script** creates a distribution from project sources, installs the package from the distribution into a virtual environment, tries importing and running the installed package from python and command line. If any results in an error, an exception is thrown. The absence of exceptions means that the package is fine. By default, we assume that the `setup.py` or `setup.cfg` is located in the current working directory. You can specify a different path using the argument `Package(project_dir=...)` # Steps Without context, the test script would look like this: ``` python3 from chkpkg import Package pkg = Package() try: # step 1 pkg.init() # step 2 pkg.run_python_code('import mypackage; mypackage.myfunc()') pkg.run_shell_code('mypackage_cli --version') finally: # step 3 pkg.cleanup() ``` ## Step 1: Build, Verify, Install ``` python3 pkg.init() ``` The `init` method: - Creates a temporary virtual environment capable of building `.whl` files - Creates a distribution as a `.whl` file (`python -m build`) - Verifies the package source (`twine check --strict`) - Creates another temporary virtual environment without preinstalled packages - Installs the package from the newly created `.whl` into the clean virtual environment ## Step 2: Import, Run ``` python3 pkg.run_python_code('import mypackage') ``` The `run_python_code` method allows you to check that the package is installed and can be imported without errors. You can also run some functions from the imported package and check the output. ``` python3 output = pkg.run_python_code('import mypackage; print(mypackage.plus(2, 3))') assert output == "5" ``` If the package must be installed as a CLI program, this can be tested with the `run_shell_code`. This function calls `cmd.exe` on Windows and `bash` on other systems. ``` python3 output = pkg.run_shell_code('mypackage_cli --version') assert output[0].isdigit() ``` The current working directory will be a random temporary one. If `mypackage_cli` can be run, then it really is available as a shell command from any directory. However, such tests are best done on a clean system. If we run the tests on development machine, it may turn out that we are running a command that was in the system before the package was installed. ## Step 3: Cleanup ``` python3 pkg.cleanup() ``` The `cleanup` method removes all temporary directories created during building and testing. # License Copyright © 2021 [Arteom iG](https://github.com/rtmigo). Released under the [MIT License](LICENSE). %prep %autosetup -n chkpkg-0.5.2 %build %py3_build %install %py3_install install -d -m755 %{buildroot}/%{_pkgdocdir} if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi pushd %{buildroot} if [ -d usr/lib ]; then find usr/lib -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi if [ -d usr/lib64 ]; then find usr/lib64 -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi if [ -d usr/bin ]; then find usr/bin -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi if [ -d usr/sbin ]; then find usr/sbin -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi touch doclist.lst if [ -d usr/share/man ]; then find usr/share/man -type f -printf "\"/%h/%f.gz\"\n" >> doclist.lst fi popd mv %{buildroot}/filelist.lst . mv %{buildroot}/doclist.lst . %files -n python3-chkpkg -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Tue Jun 20 2023 Python_Bot - 0.5.2-1 - Package Spec generated