Skip to main content

Python bindings for libmongocrypt

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.

If not installed using one of the official wheels, 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.4.0.tar.gz (44.1 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.4.0-py2.py3-none-win_amd64.whl (220.9 kB view details)

Uploaded Python 2Python 3Windows x86-64

pymongocrypt-1.4.0-py2.py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (549.3 kB view details)

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

pymongocrypt-1.4.0-py2.py3-none-manylinux2010_x86_64.whl (549.0 kB view details)

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

pymongocrypt-1.4.0-py2.py3-none-macosx_11_0_universal2.whl (424.9 kB view details)

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

pymongocrypt-1.4.0-py2.py3-none-macosx_10_14_intel.whl (222.4 kB view details)

Uploaded Python 2Python 3macOS 10.14+ Intel (x86-64, i386)

File details

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

File metadata

  • Download URL: pymongocrypt-1.4.0.tar.gz
  • Upload date:
  • Size: 44.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.7

File hashes

Hashes for pymongocrypt-1.4.0.tar.gz
Algorithm Hash digest
SHA256 a91a9080d9c33d471b4301690f07330a5bc5ca898d4b7507e0d1641ba3302d70
MD5 9c128898d0b28949980ecbcbd39532b2
BLAKE2b-256 f8ccd7f9f970d2bc7bad9d34d046e02a10bc149c16fa7fd70ccfcce834d9d99b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pymongocrypt-1.4.0-py2.py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 767ed55aec5bbe11f4ccc7e2d4351b0047055b08465e8c070e0cbee7245dcf24
MD5 6c42724bd34156b46d0868c37a0c6e48
BLAKE2b-256 a017fd17c8c278eb9a5b5453feb3ea09ef496ed5fc5c0c5a6303c4a9db87e449

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pymongocrypt-1.4.0-py2.py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 e2bb50d11cc40b81ed79b7d8244109990f2ebc5d4580adb974ae015a8ebdc02a
MD5 e7c058eb994e20ecc5f1f3db7a6904a7
BLAKE2b-256 722eac6ea499cf678184362ee286d6f6be6c92297babbe6f4b5c112e48a170ca

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pymongocrypt-1.4.0-py2.py3-none-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 24cfa27cb3b33b8ddb67069deadfc9a8a9cdc8ccc76340ca5c567014f6ca2b71
MD5 c3b1dd63574ca8ecb2ca41292d14b21e
BLAKE2b-256 9cfd14d6dd7006e0d9c40b91b02fa2b09996d3bab8d002958bed54373e01b9a2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pymongocrypt-1.4.0-py2.py3-none-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 be362790b642da835d66ff50c60d44f1c21db74a5dbf9c235fafc6fba2e68f82
MD5 1b292fb66ab1677c76f3ef62cb3404f6
BLAKE2b-256 c1631163d82110772f2df63162f413c097f696a011f687a9256c74c4460d54d3

See more details on using hashes here.

File details

Details for the file pymongocrypt-1.4.0-py2.py3-none-macosx_10_14_intel.whl.

File metadata

File hashes

Hashes for pymongocrypt-1.4.0-py2.py3-none-macosx_10_14_intel.whl
Algorithm Hash digest
SHA256 c9e162493ad41e6b5860fe073df1e3cde783d03aef5857ae2dd9e740fa556e78
MD5 06e6bdb5efd0ecf88193d169e9f9c8da
BLAKE2b-256 5d7bf45766b2ef20d004229de1a9128fbc757093b37395b2ec7f6c62a744c853

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