%define module urllib3 Summary: Python HTTP library Name: python-%{module} Version: 1.26.18 Release: 1 License: MIT Group: Development/Python URL: https://urllib3.readthedocs.io #Source0: https://files.pythonhosted.org/packages/cb/cf/871177f1fc795c6c10787bc0e1f27bb6cf7b81dbde399fd35860472cecbc/urllib3-1.26.4.tar.gz Source0: https://github.com/urllib3/urllib3/archive/%{version}/%{name}-%{version}.tar.gz Source1: ssl_match_hostname_py3.py BuildArch: noarch BuildRequires: python-setuptools BuildRequires: python-six BuildRequires: pkgconfig(python) # For unittests BuildRequires: python-mock BuildRequires: python-nose BuildRequires: python-tornado Requires: python-six Requires: rootcerts %description The urllib3 module is a powerful, sanity-friendly HTTP client for Python. It offers some features that are missing from the Python standard libraries (urllib and urllib2): * Thread safety. * Connection pooling. * Client-side SSL/TLS verification. * File uploads with multipart encoding. * Helpers for retrying requests and dealing with HTTP redirects. * Support for gzip and deflate encoding. * Proxy support for HTTP and SOCKS. The Python standard libraries have little to do with each other. They were designed to be independent and standalone, each solving a different scope of problems, and urllib3 follows in a similar vein. This package contains the python2 files. %files %doc CHANGES.rst README.rst %{py_puresitedir}/* #---------------------------------------------------------------------------- %package -n python3-%{module} Summary: Python 3 HTTP library Group: Development/Python BuildRequires: python3-setuptools BuildRequires: python3-six BuildRequires: pkgconfig(python3) # For unittests BuildRequires: python3-mock BuildRequires: python3-nose BuildRequires: python3-tornado Requires: python3-six Requires: rootcerts %description -n python3-%{module} The urllib3 module is a powerful, sanity-friendly HTTP client for Python. It offers some features that are missing from the Python standard libraries (urllib and urllib2): * Thread safety. * Connection pooling. * Client-side SSL/TLS verification. * File uploads with multipart encoding. * Helpers for retrying requests and dealing with HTTP redirects. * Support for gzip and deflate encoding. * Proxy support for HTTP and SOCKS. The Python standard libraries have little to do with each other. They were designed to be independent and standalone, each solving a different scope of problems, and urllib3 follows in a similar vein. This package contains the python3 files. %files -n python3-%{module} %doc CHANGES.rst README.rst %{py3_puresitedir}/* #---------------------------------------------------------------------------- %package -n python38-%{module} Summary: Python 3 HTTP library Group: Development/Python BuildRequires: python38-setuptools BuildRequires: python38-six BuildRequires: python38-devel # For unittests BuildRequires: python38-mock BuildRequires: python38-nose BuildRequires: python38-tornado Requires: python38-six Requires: rootcerts %description -n python38-%{module} The urllib3 module is a powerful, sanity-friendly HTTP client for Python. It offers some features that are missing from the Python standard libraries (urllib and urllib2): * Thread safety. * Connection pooling. * Client-side SSL/TLS verification. * File uploads with multipart encoding. * Helpers for retrying requests and dealing with HTTP redirects. * Support for gzip and deflate encoding. * Proxy support for HTTP and SOCKS. The Python standard libraries have little to do with each other. They were designed to be independent and standalone, each solving a different scope of problems, and urllib3 follows in a similar vein. This package contains the python3 files. %files -n python38-%{module} %doc CHANGES.rst README.rst %{py38_puresitedir}/* #---------------------------------------------------------------------------- %prep %setup -q -n %{module}-%{version} #apply_patches # Prepare python3 dirs cp -a . %{py3dir} cp -a . %{py38dir} %build # Build first the python2 stuff... #{__python2} setup.py build # ... next the python3 stuff %py_build pushd %{py3dir} # {__python3} setup.py build %py3_build popd pushd %{py38dir} %py38_build popd %install ################ # Install first the python2 stuff... #{__python2} setup.py install --skip-build --root %{buildroot} %py_install rm -rf %{buildroot}/%{py_puresitedir}/urllib3/packages/six.py* rm -rf %{buildroot}/%{py_puresitedir}/urllib3/packages/ssl_match_hostname/ mkdir -p %{buildroot}/%{py_puresitedir}/urllib3/packages/ ln -s ../../six.py %{buildroot}/%{py_puresitedir}/urllib3/packages/six.py ln -s ../../six.pyc %{buildroot}/%{py_puresitedir}/urllib3/packages/six.pyc ln -s ../../six.pyo %{buildroot}/%{py_puresitedir}/urllib3/packages/six.pyo ln -s ../../backports/ssl_match_hostname %{buildroot}/%{py_puresitedir}/urllib3/packages/ssl_match_hostname # dummyserver is part of the unittest framework rm -rf %{buildroot}%{py_puresitedir}/dummyserver ############### # ... next the python3 stuff pushd %{py3dir} # {__python3} setup.py install --skip-build --root %{buildroot} %py3_install rm -rf %{buildroot}/%{py3_puresitedir}/urllib3/packages/six.py* rm -rf %{buildroot}/%{py3_puresitedir}/urllib3/packages/ssl_match_hostname/ mkdir -p %{buildroot}/%{py3_puresitedir}/urllib3/packages/ ln -s ../../six.py %{buildroot}/%{py3_puresitedir}/urllib3/packages/six.py ln -s ../../six.pyc %{buildroot}/%{py3_puresitedir}/urllib3/packages/six.pyc ln -s ../../six.pyo %{buildroot}/%{py3_puresitedir}/urllib3/packages/six.pyo cp %{SOURCE1} %{buildroot}/%{py3_puresitedir}/urllib3/packages/ssl_match_hostname.py # dummyserver is part of the unittest framework rm -rf %{buildroot}%{py3_puresitedir}/dummyserver popd pushd %{py38dir} # {__python38} setup.py install --skip-build --root %{buildroot} %py38_install rm -rf %{buildroot}/%{py38_puresitedir}/urllib3/packages/six.py* rm -rf %{buildroot}/%{py38_puresitedir}/urllib3/packages/ssl_match_hostname/ mkdir -p %{buildroot}/%{py38_puresitedir}/urllib3/packages/ ln -s ../../six.py %{buildroot}/%{py38_puresitedir}/urllib3/packages/six.py ln -s ../../six.pyc %{buildroot}/%{py38_puresitedir}/urllib3/packages/six.pyc ln -s ../../six.pyo %{buildroot}/%{py38_puresitedir}/urllib3/packages/six.pyo cp %{SOURCE1} %{buildroot}/%{py38_puresitedir}/urllib3/packages/ssl_match_hostname.py # dummyserver is part of the unittest framework rm -rf %{buildroot}%{py38_puresitedir}/dummyserver popd %pretrans -p path = "%{py_puresitedir}/urllib3/packages/ssl_match_hostname" st = posix.stat(path) if st and st.type == "directory" then status = os.rename(path, path .. ".rpmmoved") if not status then suffix = 0 while not status do suffix = suffix + 1 status = os.rename(path .. ".rpmmoved", path .. ".rpmmoved." .. suffix) end os.rename(path, path .. ".rpmmoved") end end %pretrans -p -n python3-%{module} path = "%{py3_puresitedir}/urllib3/packages/ssl_match_hostname" st = posix.stat(path) if st and st.type == "directory" then status = os.rename(path, path .. ".rpmmoved") if not status then suffix = 0 while not status do suffix = suffix + 1 status = os.rename(path .. ".rpmmoved", path .. ".rpmmoved." .. suffix) end os.rename(path, path .. ".rpmmoved") end end %pretrans -p -n python38-%{module} path = "%{py38_puresitedir}/urllib3/packages/ssl_match_hostname" st = posix.stat(path) if st and st.type == "directory" then status = os.rename(path, path .. ".rpmmoved") if not status then suffix = 0 while not status do suffix = suffix + 1 status = os.rename(path .. ".rpmmoved", path .. ".rpmmoved." .. suffix) end os.rename(path, path .. ".rpmmoved") end end