cryptography icon indicating copy to clipboard operation
cryptography copied to clipboard

Upgrade to pyo3 0.17

Open alex opened this issue 2 years ago • 10 comments

DO NOT MERGE, DROPS SUPPORT FOR PYTHON 3.6. FOR PROOF OF CONCEPT ONLY.

Follow up action items:

  • [ ] Convert crate::intern!() to use pyo3::intern!() for basically all static strings which are converted to PyObject
  • [ ] Use Py<PyBytes>::as_bytes instead of copying data to vec.
  • [x] Remove let py = gil.python(); in many places

alex avatar Mar 05 '22 15:03 alex

Could you also rebase this just to see if it fixes coverage?

reaperhulk avatar Apr 03 '22 12:04 reaperhulk

@reaperhulk it won't -- the coverage issue is caused by removing the RHEL8-fips builder because it's py36. When we get to this point we'll need to decide what to do about that.

alex avatar Apr 03 '22 13:04 alex

@reaperhulk it won't -- the coverage issue is caused by removing the RHEL8-fips builder because it's py36. When we get to this point we'll need to decide what to do about that.

RHEL 8 comes with Python 3.8 and 3.9.

# dnf install -y python38-devel python38-pip
...
=================================================================================================================================================
 Package                               Architecture       Version                                               Repository                  Size
=================================================================================================================================================
Installing:
 python38-devel                        x86_64             3.8.8-4.module+el8.5.0+12205+a865257a                 rhel-AppStream             276 k
 python38-pip                          noarch             19.3.1-4.module+el8.5.0+12205+a865257a                rhel-AppStream             1.9 M
Installing dependencies:
 python38                              x86_64             3.8.8-4.module+el8.5.0+12205+a865257a                 rhel-AppStream              79 k
 python38-libs                         x86_64             3.8.8-4.module+el8.5.0+12205+a865257a                 rhel-AppStream             8.3 M
 python38-pip-wheel                    noarch             19.3.1-4.module+el8.5.0+12205+a865257a                rhel-AppStream             1.2 M
 python38-setuptools                   noarch             41.6.0-5.module+el8.5.0+12205+a865257a                rhel-AppStream             668 k
 python38-setuptools-wheel             noarch             41.6.0-5.module+el8.5.0+12205+a865257a                rhel-AppStream             304 k
Enabling module streams:
 python38                                                 3.8                                                                                   

Transaction Summary
=================================================================================================================================================
Install  7 Packages
...

tiran avatar Apr 07 '22 12:04 tiran

Ah interesting, I guess we should send a PR to infra to install in addition to the base python3 package.

alex avatar Apr 07 '22 12:04 alex

Not all Python 3.6 modules are available. The AppStream modules for 3.8 and 3.9 provide a limited subset of important packages. cryptography is considered important. :1st_place_medal:

======================================================== Name Exactly Matched: python38 =========================================================
python38.x86_64 : Interpreter of the Python programming language
============================================================ Name Matched: python38 =============================================================
python38-Cython.x86_64 : Language for writing Python extension modules
python38-PyMySQL.noarch : Pure-Python MySQL client library
python38-asn1crypto.noarch : Fast Python ASN.1 parser and serializer
python38-babel.noarch : Library for internationalizing Python applications
python38-cffi.x86_64 : Foreign Function Interface for Python 3 to call C code
python38-chardet.noarch : Character encoding auto-detection in Python
python38-cryptography.x86_64 : PyCA's cryptography library
python38-debug.x86_64 : Debug version of the Python runtime
python38-devel.x86_64 : Libraries and header files needed for Python development
python38-idle.x86_64 : A basic graphical development environment for Python
python38-idna.noarch : Internationalized Domain Names in Applications (IDNA)
python38-jinja2.noarch : General purpose template engine for python3
python38-libs.x86_64 : Python runtime libraries
python38-lxml.x86_64 : XML processing library combining libxml2/libxslt with the ElementTree API
python38-markupsafe.x86_64 : Implements a XML/HTML/XHTML Markup safe string for Python 3
python38-mod_wsgi.x86_64 : A WSGI interface for Python web applications in Apache
python38-numpy.x86_64 : A fast multidimensional array facility for Python
python38-numpy-doc.noarch : Documentation for numpy
python38-numpy-f2py.x86_64 : f2py for numpy
python38-pip.noarch : A tool for installing and managing Python3 packages
python38-pip-wheel.noarch : The pip wheel
python38-ply.noarch : Python Lex-Yacc
python38-psutil.x86_64 : A process and system utilities module for Python
python38-psycopg2.x86_64 : A PostgreSQL database adapter for Python 3
python38-psycopg2-doc.x86_64 : Documentation for psycopg python PostgreSQL database adapter
python38-psycopg2-tests.x86_64 : A testsuite for A PostgreSQL database adapter for Python 2
python38-pycparser.noarch : C parser and AST generator written in Python
python38-pysocks.noarch : A Python SOCKS client module
python38-pytz.noarch : World Timezone Definitions for Python
python38-pyyaml.x86_64 : YAML parser and emitter for Python
python38-requests.noarch : HTTP library, written in Python, for human beings
python38-rpm-macros.noarch : RPM macros for building RPMs with Python 3.8
python38-scipy.x86_64 : Scientific Tools for Python
python38-setuptools.noarch : Easily build and distribute Python 3 packages
python38-setuptools-wheel.noarch : The setuptools wheel
python38-six.noarch : Python 2 and 3 compatibility utilities
python38-test.x86_64 : The self-test suite for the main python3 package
python38-tkinter.x86_64 : A GUI toolkit for Python
python38-urllib3.noarch : Python3 HTTP library with thread-safe connection pooling and file post
python38-wheel.noarch : Built-package format for Python
python38-wheel-wheel.noarch : The Python wheel module packaged as a wheel

tiran avatar Apr 07 '22 13:04 tiran

Just FYI: I am currently trying to update the Debian packaging for cryptography to 37, and on Debian pyo3 0.17 packaging is already in the pipeline, while 0.16 is currently available on Debian unstable. Packaging the old pyo3 0.15 version just for cryptography will not happen, so I will likely be ending up picking these patches.

cmhe avatar Sep 05 '22 14:09 cmhe

@cmhe thanks for the heads up -- we won't land these ourselves until we drop py36 (which sadly is very much alive), but I will keep this PR up to date so you should be able to cherry-pick it.

alex avatar Sep 05 '22 14:09 alex

@alex: Do you by chance have a pyo3 0.16 patchset on top of 37.0.4?

cmhe avatar Sep 06 '22 13:09 cmhe

I don't. If it helps, we'll be releasing 38.0 this week.

בתאריך יום ג׳, 6 בספט׳ 2022, 9:50, מאת Claudius Heine ‏< @.***>:

@alex https://github.com/alex: Do you my chance have a pyo3 0.16 patchset on top of 37.0.4?

— Reply to this email directly, view it on GitHub https://github.com/pyca/cryptography/pull/6935#issuecomment-1238180193, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAAAGBF37J3UKCVADIY4UCDV45DZZANCNFSM5P72IRLQ . You are receiving this because you were mentioned.Message ID: @.***>

alex avatar Sep 06 '22 14:09 alex

@cmhe we've released 38 now, so it may be simpler to package that version, which is compatible with this PR.

reaperhulk avatar Sep 07 '22 00:09 reaperhulk