diff options
author | CoprDistGit <infra@openeuler.org> | 2023-06-20 08:09:41 +0000 |
---|---|---|
committer | CoprDistGit <infra@openeuler.org> | 2023-06-20 08:09:41 +0000 |
commit | f00e5c3daf42f9346fcef657a6ab2db990fbf710 (patch) | |
tree | 97c150078399096e5e976dea90670f5c4ab689cc | |
parent | 4b72858dbc2b3ea5dcda842dfbb057b102c3be75 (diff) |
automatic import of python-chkpkgopeneuler20.03
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | python-chkpkg.spec | 306 | ||||
-rw-r--r-- | sources | 1 |
3 files changed, 308 insertions, 0 deletions
@@ -0,0 +1 @@ +/chkpkg-0.5.2.tar.gz diff --git a/python-chkpkg.spec b/python-chkpkg.spec new file mode 100644 index 0000000..e052ca5 --- /dev/null +++ b/python-chkpkg.spec @@ -0,0 +1,306 @@ +%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 <Python_Bot@openeuler.org> - 0.5.2-1 +- Package Spec generated @@ -0,0 +1 @@ +11a3f6e12d60d4edfe7875851eea8a19 chkpkg-0.5.2.tar.gz |