Skip to main content

Python bindings for libmongocrypt

Reason this release was yanked:

pymongocrypt 1.3.0 was yanked because it contains a potential data corruption bug in RewrapManyDataKey (ClientEncryption.rewrap_many_data_key) when rotating encrypted data encryption keys backed by GCP or Azure key services. The bug is fixed in version 1.3.1. All users of 1.3.0 must upgrade.

Project description

Info:

Python bindings for libmongocrypt. See GitHub for the latest source.

Author:

Shane Harvey

About

Python wrapper library for libmongocrypt that supports client side encryption in drivers. PyMongoCrypt uses cffi and cryptography.

PyMongoCrypt supports Python 2.7, 3.4+, and PyPy3.5+.

Support / Feedback

For issues with, questions about, or feedback for PyMongoCrypt, please look into our support channels. Please do not email any of the PyMongoCrypt developers directly with issues or questions - you’re more likely to get an answer on the mongodb-user list on Google Groups.

Bugs / Feature Requests

Think you’ve found a bug? Want to see a new feature in PyMongoCrypt? Please open a case in our issue management tool, JIRA:

Bug reports in JIRA for all driver projects (i.e. PYTHON, CSHARP, JAVA) and the Core Server (i.e. SERVER) project are public.

How To Ask For Help

Please include all of the following information when opening an issue:

  • Detailed steps to reproduce the problem, including full traceback, if possible.

  • The exact python version used, with patch level:

    $ python -c "import sys; print(sys.version)"
  • The exact version of PyMongoCrypt used:

    $ python -c "import pymongocrypt; print(pymongocrypt.__version__)"
  • The exact version of libbmongocrypt used by PyMongoCrypt:

    $ python -c "import pymongocrypt; print(pymongocrypt.libmongocrypt_version())"
  • The exact version of PyMongo used (if applicable), with patch level:

    $ python -c "import pymongo; print(pymongo.version); print(pymongo.has_c())"
  • The operating system and version (e.g. Windows 7, OSX 10.8, …)

  • Web framework or asynchronous network library used, if any, with version (e.g. Django 1.7, mod_wsgi 4.3.0, gevent 1.0.1, Tornado 4.0.2, …)

Security Vulnerabilities

If you’ve identified a security vulnerability in a driver or any other MongoDB project, please report it according to the instructions here.

Installation

PyMongoCrypt can be installed with pip:

$ python -m pip install pymongocrypt
$ python -c "import pymongocrypt; print(pymongocrypt.libmongocrypt_version())"
1.2.1

PyMongoCrypt ships wheels for macOS, Windows, and manylinux2010 that include an embedded libmongocrypt build.

Installing from wheels on Linux requires pip 19 or later because it adds support for manylinux2010 wheels. Older versions of pip will attempt installation using the pymongocrypt-X.Y.tar.gz source distribution which requires the extra step of downloading and installing libmongocrypt as described below. Users can upgrade to pip 19 by running:

$ python -m pip install --upgrade 'pip>=19'

Installing from source

Installing from source (or the pymongocrypt-X.Y.tar.gz source distribution, or pip < 19 on Linux) requires an extra step of installing libmongocrypt. First, install PyMongoCrypt from source:

$ git clone git@github.com:mongodb/libmongocrypt.git
$ python -m pip install ./libmongocrypt/bindings/python

Next, install libmongocrypt.

libmongocrypt is continuously built and published on evergreen. The latest tarball containing libmongocrypt built on all supported variants is published here. Download and extract libmongocrypt-all.tar.gz and set PYMONGOCRYPT_LIB to the path to your operating system’s libmongocrypt.so file. For example:

$ curl -O https://s3.amazonaws.com/mciuploads/libmongocrypt/all/master/latest/libmongocrypt-all.tar.gz
$ mkdir libmongocrypt-all && tar xzf libmongocrypt-all.tar.gz -C libmongocrypt-all
$ ls libmongocrypt-all
amazon2             rhel-62-64-bit      rhel72-zseries-test ubuntu1604-arm64
debian10            rhel-67-s390x       suse12-64           ubuntu1804-64
debian92            rhel-70-64-bit      suse12-s390x        ubuntu1804-arm64
linux-64-amazon-ami rhel-71-ppc64el     suse15-64           windows-test
macos               rhel-80-64-bit      ubuntu1604

macOS:

$ # Set PYMONGOCRYPT_LIB for macOS:
$ export PYMONGOCRYPT_LIB=$(pwd)/libmongocrypt-all/macos/nocrypto/lib/libmongocrypt.dylib
$ python -c "import pymongocrypt; print(pymongocrypt.libmongocrypt_version())"
1.2.1

Windows:

$ # Set PYMONGOCRYPT_LIB for Windows:
$ chmod +x $(pwd)/libmongocrypt-all/windows-test/nocrypto/bin/mongocrypt.dll
$ export PYMONGOCRYPT_LIB=$(pwd)/libmongocrypt-all/windows-test/nocrypto/bin/mongocrypt.dll
$ python -c "import pymongocrypt; print(pymongocrypt.libmongocrypt_version())"
1.2.1

Linux:

$ # Set PYMONGOCRYPT_LIB for RHEL 6.2 x86_64:
$ export PYMONGOCRYPT_LIB=$(pwd)/libmongocrypt-all/rhel-62-64-bit/nocrypto/lib64/libmongocrypt.so
$ python -c "import pymongocrypt; print(pymongocrypt.libmongocrypt_version())"
1.2.1

Dependencies

PyMongoCrypt supports CPython 2.7, 3.4+, PyPy, and PyPy3.5+.

PyMongoCrypt requires cffi and cryptography.

PyMongoCrypt also requires libmongocrypt to be installed on your system. If libmongocrypt is not installed you will see an error like this:

>>> import pymongocrypt
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "pymongocrypt/__init__.py", line 15, in <module>
    from pymongocrypt.binding import libmongocrypt_version, lib
  File "pymongocrypt/binding.py", line 803, in <module>
    lib = ffi.dlopen(os.environ.get('PYMONGOCRYPT_LIB', 'mongocrypt'))
  File "/.../lib/python3.7/site-packages/cffi/api.py", line 146, in dlopen
    lib, function_cache = _make_ffi_library(self, name, flags)
  File "/.../lib/python3.7/site-packages/cffi/api.py", line 828, in _make_ffi_library
    backendlib = _load_backend_lib(backend, libname, flags)
  File "/.../lib/python3.7/site-packages/cffi/api.py", line 823, in _load_backend_lib
    raise OSError(msg)
OSError: ctypes.util.find_library() did not manage to locate a library called 'mongocrypt'

Use the PYMONGOCRYPT_LIB environment variable to load a locally installed libmongocrypt build without relying on platform specific library path environment variables, like LD_LIBRARY_PATH. For example:

$ export PYMONGOCRYPT_LIB='/path/to/libmongocrypt.so'
$ python -c "import pymongocrypt; print(pymongocrypt.libmongocrypt_version())"
1.2.1

Testing

The easiest way to run the tests is to run python setup.py test in the root of the distribution.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pymongocrypt-1.3.0.tar.gz (40.2 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pymongocrypt-1.3.0-py2.py3-none-win_amd64.whl (216.4 kB view details)

Uploaded Python 2Python 3Windows x86-64

pymongocrypt-1.3.0-py2.py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (538.3 kB view details)

Uploaded Python 2Python 3manylinux: glibc 2.12+ x86-64

pymongocrypt-1.3.0-py2.py3-none-manylinux2010_x86_64.whl (538.0 kB view details)

Uploaded Python 2Python 3manylinux: glibc 2.12+ x86-64

pymongocrypt-1.3.0-py2.py3-none-macosx_11_0_x86_64.whl (417.1 kB view details)

Uploaded Python 2Python 3macOS 11.0+ x86-64

pymongocrypt-1.3.0-py2.py3-none-macosx_11_0_universal2.whl (417.1 kB view details)

Uploaded Python 2Python 3macOS 11.0+ universal2 (ARM64, x86-64)

pymongocrypt-1.3.0-py2.py3-none-macosx_10_14_x86_64.whl (216.8 kB view details)

Uploaded Python 2Python 3macOS 10.14+ x86-64

File details

Details for the file pymongocrypt-1.3.0.tar.gz.

File metadata

  • Download URL: pymongocrypt-1.3.0.tar.gz
  • Upload date:
  • Size: 40.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.4.2 requests/2.19.1 setuptools/63.2.0 requests-toolbelt/0.8.0 tqdm/4.23.4 CPython/3.7.9

File hashes

Hashes for pymongocrypt-1.3.0.tar.gz
Algorithm Hash digest
SHA256 a8f1c01faeeb13cd37241f0eafe80cc163b68a0afbceb0a532529be10859f516
MD5 52146f53b4a489e367b20e8fcc2593f2
BLAKE2b-256 cc2f28bc2df6005c86f404212dd928ad6d628d58104c29e2a94fccd9f437a85f

See more details on using hashes here.

File details

Details for the file pymongocrypt-1.3.0-py2.py3-none-win_amd64.whl.

File metadata

  • Download URL: pymongocrypt-1.3.0-py2.py3-none-win_amd64.whl
  • Upload date:
  • Size: 216.4 kB
  • Tags: Python 2, Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.4.2 requests/2.19.1 setuptools/63.2.0 requests-toolbelt/0.8.0 tqdm/4.23.4 CPython/3.7.9

File hashes

Hashes for pymongocrypt-1.3.0-py2.py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 32f885cbab0ee986498d051c7de5edcc028ecb3d0672ec464f8433dc3abb0825
MD5 6ffe44301daf79a37e02e895bd89234b
BLAKE2b-256 2f4c7580293fc4435d45322de2b2a31ebfe2b2e7e58ec4e2e94eb8a7f7bbe5a1

See more details on using hashes here.

File details

Details for the file pymongocrypt-1.3.0-py2.py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for pymongocrypt-1.3.0-py2.py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 45138698d905e9d7b5d9df952868217a2bdbb5c4a5e2681d915d1d92fd3cde0b
MD5 4117f5867d4850249bd9645b7426a229
BLAKE2b-256 2e62c833adf7abaefee96a1316bb2f8a2a22f8da5d7c041f4db73c698e1883e7

See more details on using hashes here.

File details

Details for the file pymongocrypt-1.3.0-py2.py3-none-manylinux2010_x86_64.whl.

File metadata

  • Download URL: pymongocrypt-1.3.0-py2.py3-none-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 538.0 kB
  • Tags: Python 2, Python 3, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.4.2 requests/2.19.1 setuptools/63.2.0 requests-toolbelt/0.8.0 tqdm/4.23.4 CPython/3.7.9

File hashes

Hashes for pymongocrypt-1.3.0-py2.py3-none-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 23765f7de08b8133e0eb6aea04cf8d74ed0e2a269aeeaf33bbdc71dda93eac72
MD5 0034ad0165823c68e92ab7cf6a091632
BLAKE2b-256 961d6c4284217c90d4286e3c8ed8b028e7d7a601bb178527a3f0cce42e6ad7b5

See more details on using hashes here.

File details

Details for the file pymongocrypt-1.3.0-py2.py3-none-macosx_11_0_x86_64.whl.

File metadata

  • Download URL: pymongocrypt-1.3.0-py2.py3-none-macosx_11_0_x86_64.whl
  • Upload date:
  • Size: 417.1 kB
  • Tags: Python 2, Python 3, macOS 11.0+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.4.2 requests/2.19.1 setuptools/63.2.0 requests-toolbelt/0.8.0 tqdm/4.23.4 CPython/3.7.9

File hashes

Hashes for pymongocrypt-1.3.0-py2.py3-none-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 2e32ad335dab1f045f9f76e87d87f985526b0082224b7629bca37f86f6cd3d13
MD5 548be7846166327af078a902fb151051
BLAKE2b-256 96f0af27d4d10fc462c37902d7b8cad78be2a1c66a72376c6b9169559f5f8381

See more details on using hashes here.

File details

Details for the file pymongocrypt-1.3.0-py2.py3-none-macosx_11_0_universal2.whl.

File metadata

  • Download URL: pymongocrypt-1.3.0-py2.py3-none-macosx_11_0_universal2.whl
  • Upload date:
  • Size: 417.1 kB
  • Tags: Python 2, Python 3, macOS 11.0+ universal2 (ARM64, x86-64)
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.4.2 requests/2.19.1 setuptools/63.2.0 requests-toolbelt/0.8.0 tqdm/4.23.4 CPython/3.7.9

File hashes

Hashes for pymongocrypt-1.3.0-py2.py3-none-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 6cc4792116436f27b7c46b360c58a4d4a9ba7c3872dab699581262dca28a61c6
MD5 b9c9523276a4f311d87cb520593087e4
BLAKE2b-256 2ac5eac0cabe38824243494aada439bff069f92d034eedec4cefdabac6fba710

See more details on using hashes here.

File details

Details for the file pymongocrypt-1.3.0-py2.py3-none-macosx_10_14_x86_64.whl.

File metadata

  • Download URL: pymongocrypt-1.3.0-py2.py3-none-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 216.8 kB
  • Tags: Python 2, Python 3, macOS 10.14+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.4.2 requests/2.19.1 setuptools/63.2.0 requests-toolbelt/0.8.0 tqdm/4.23.4 CPython/3.7.9

File hashes

Hashes for pymongocrypt-1.3.0-py2.py3-none-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 74a9492d1e5f5cf0b96d7cfe37da9f87dbd6bf2ed6e38b46231fb922e27dd343
MD5 c948b4c0663f44a18a99b251beadad5f
BLAKE2b-256 c96e9184c5b4ab5e11d54202cae7a0927c009b923d0c49ea64b6a32686a44865

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page