Skip to main content

Python interface to PartMC

Project description

logo

PyPartMC

PyPartMC is a Python interface to PartMC, a particle-resolved Monte-Carlo code for atmospheric aerosol simulation. PyPartMC is implemented in C++ and it also constitutes a C++ API to the PartMC Fortran internals. The Python API can facilitate using PartMC from other environments - see, e.g., Julia and Matlab examples below.

For an outline of the project, rationale, architecture, and features, refer to: D'Aquino et al., 2024 (SoftwareX) (please cite if PyPartMC is used in your research). For a list of talks and other relevant resources, please see project Wiki. If interested in contributing to PyPartMC, please have a look a the notes for developers.

US Funding PL Funding

License: GPL v3 Copyright Github Actions Build Status API docs DOI PyPI version

TL;DR (try in a Jupyter notebook)

Python 3 Linux OK macOS OK Windows OK Jupyter

! pip install PyPartMC
import PyPartMC

Jupyter notebooks with examples

Note: clicking the badges below redirects to cloud-computing platforms. The mybinder.org links allow anonymous execution, Google Colab requires logging in with a Google account, ARM JupyerHub requires logging in with an ARM account (and directing Jupyter to a particular notebook within the examples folder).

  • Urban plume scenario demo (as in PartMC):
    View notebook Open In Colab Binder ARM JupyterHub
  • Dry-Wet Particle Size Equilibration with PartMC and PySDM:
    View notebook Open In Colab Binder ARM JupyterHub Voila
  • Simulation output processing example (loading from netCDF files using PyPartMC):
    View notebook Open In Colab Binder ARM JupyterHub
  • Optical properties calculation using external Python package (PyMieScatt):
    View notebook Open In Colab Binder ARM JupyterHub
  • Cloud parcel example featuring supersaturation-evolution-coupled CCN activation and drop growth:
    View notebook Open In Colab Binder ARM JupyterHub

Features

  • works on Linux, macOS and Windows (compatibility assured with CI builds)
  • hassle-free installation using pip (prior PartMC installation not needed)
  • works out of the box on mybinder.org, Google Colab and alike
  • ships with a set of examples maintained in a form of Jupyter notebooks
  • Pythonic API (but retaining PartMC jargon) incl. Python GC deallocation of Fortran objects
  • specification of parameters using native Python datatypes (lists, dicts) in place of PartMC spec files
  • code snippets in README depicting how to use PyPartMC from Julia and Matlab (also executed on CI)
  • auto-generated API docs on the web
  • support for [de]serialization of selected wrapped structures using JSON
  • based on unmodified PartMC code
  • does not use or require shell or any pre-installed libraries
  • aiming at 100% unit test coverage

Usage examples

The listings below depict how the identical task of randomly sampling particles from an aerosol size distribution in PartMC can be done in different programming languages.

For a Fortran equivalent of the Python, Julia and Matlab programs below, see the readme_fortran folder.

Python

import numpy as np

import PyPartMC as ppmc
from PyPartMC import si

aero_data = ppmc.AeroData((
    #      [density, ions in solution, molecular weight, kappa]
    {"OC": [1000 *si.kg/si.m**3, 0, 1e-3 *si.kg/si.mol, 0.001]},
    {"BC": [1800 *si.kg/si.m**3, 0, 1e-3 *si.kg/si.mol, 0]},
))

aero_dist = ppmc.AeroDist(
    aero_data,
    [{
        "cooking": {
            "mass_frac": [{"OC": [1]}],
            "diam_type": "geometric",
            "mode_type": "log_normal",
            "num_conc": 3200 / si.cm**3,
            "geom_mean_diam": 8.64 * si.nm,
            "log10_geom_std_dev": 0.28,
        }
    },
    {
        "diesel": {
            "mass_frac": [{"OC": [0.3]}, {"BC": [0.7]}],
            "diam_type": "geometric",
            "mode_type": "log_normal",
            "num_conc": 2900 / si.cm**3,
            "geom_mean_diam": 50 * si.nm,
            "log10_geom_std_dev": 0.24,
        }
    }],
)

n_part = 100
aero_state = ppmc.AeroState(aero_data, n_part, "nummass_source")
aero_state.dist_sample(aero_dist)
print(np.dot(aero_state.masses(), aero_state.num_concs), "# kg/m3")

Julia (using PyCall.jl)

using Pkg
Pkg.add("PyCall")

using PyCall
ppmc = pyimport("PyPartMC")
si = ppmc["si"]

aero_data = ppmc.AeroData((
  #       (density, ions in solution, molecular weight, kappa)
  Dict("OC"=>(1000 * si.kg/si.m^3, 0, 1e-3 * si.kg/si.mol, 0.001)),
  Dict("BC"=>(1800 * si.kg/si.m^3, 0, 1e-3 * si.kg/si.mol, 0))
))

aero_dist = ppmc.AeroDist(aero_data, (
  Dict( 
    "cooking" => Dict(
      "mass_frac" => (Dict("OC" => (1,)),),
      "diam_type" => "geometric",
      "mode_type" => "log_normal",
      "num_conc" => 3200 / si.cm^3,
      "geom_mean_diam" => 8.64 * si.nm,
      "log10_geom_std_dev" => .28,
    )
  ),
  Dict( 
    "diesel" => Dict(
      "mass_frac" => (Dict("OC" => (.3,)), Dict("BC" => (.7,))),
      "diam_type" => "geometric",
      "mode_type" => "log_normal",
      "num_conc" => 2900 / si.cm^3,
      "geom_mean_diam" => 50 * si.nm,
      "log10_geom_std_dev" => .24,
    )
  )
))

n_part = 100
aero_state = ppmc.AeroState(aero_data, n_part, "nummass_source")
aero_state.dist_sample(aero_dist)
print(aero_state.masses()'aero_state.num_concs, "# kg/m3")

Matlab (using Matlab's built-in Python interface)

notes (see the PyPartMC Matlab CI workflow for an example on how to achieve it on Ubuntu 20):

  • Matlab ships with convenience copies of C, C++ and Fortran runtime libraries which are dlopened() by default; one way to make PyPartMC OK with it is to [pip-]install by compiling from source using the very same version of GCC that Matlab borrowed these libraries from (e.g., GCC 9 for Matlab R2022a, etc);
  • Matlab needs to use the same Python interpretter/venv as the pip invocation used to install PyPartMC;
  • a single-line pybind11_builtins.py file with just pybind11_type=type inside needs to be placed within Matlab's PYTHONPATH to sort out a Matlab-pybind11 incompatibility.
ppmc = py.importlib.import_module('PyPartMC');
si = py.importlib.import_module('PyPartMC').si;

aero_data = ppmc.AeroData(py.tuple({ ...
  py.dict(pyargs("OC", py.tuple({1000 * si.kg/si.m^3, 0, 1e-3 * si.kg/si.mol, 0.001}))), ...
  py.dict(pyargs("BC", py.tuple({1800 * si.kg/si.m^3, 0, 1e-3 * si.kg/si.mol, 0}))) ...
}));

aero_dist = ppmc.AeroDist(aero_data, py.tuple({ ...
  py.dict(pyargs( ...
    "cooking", py.dict(pyargs( ...
      "mass_frac", py.tuple({py.dict(pyargs("OC", py.tuple({1})))}), ...
      "diam_type", "geometric", ...
      "mode_type", "log_normal", ...
      "num_conc", 3200 / si.cm^3, ...
      "geom_mean_diam", 8.64 * si.nm, ...
      "log10_geom_std_dev", .28 ...
    )) ...
  )), ...
  py.dict(pyargs( ... 
    "diesel", py.dict(pyargs( ...
      "mass_frac", py.tuple({ ...
        py.dict(pyargs("OC", py.tuple({.3}))), ...
        py.dict(pyargs("BC", py.tuple({.7}))), ...
      }), ...
      "diam_type", "geometric", ...
      "mode_type", "log_normal", ...
      "num_conc", 2900 / si.cm^3, ...
      "geom_mean_diam", 50 * si.nm, ...
      "log10_geom_std_dev", .24 ...
    )) ...
  )) ...
}));

n_part = 100;
aero_state = ppmc.AeroState(aero_data, n_part, "nummass_source");
aero_state.dist_sample(aero_dist);
masses = cell(aero_state.masses());
num_concs = cell(aero_state.num_concs);
fprintf('%g # kg/m3\n', dot([masses{:}], [num_concs{:}]))

usage in other projects

PyPartMC is used within the test workflow of the PySDM project.

FAQ

  • Q: How to install PyPartMC with MOSAIC enabled?
    A: Installation can be done using pip, however, pip needs to be instructed not to use binary packages available at pypi.org but rather to compile from source (pip will download the source from pip.org), and the path to compiled MOSAIC library needs to be provided at compile-time; the following command should convey it:
MOSAIC_HOME=<<PATH_TO_MOSAIC_LIB>> pip install --force-reinstall --no-binary=PyPartMC PyPartMC
  • Q: Why pip install PyPartMC triggers compilation on my brand new Apple machine, while it quickly downloads and installs binary packages when executed on older Macs, Windows or Linux?
    A: We are providing binary wheels on PyPI for Apple-silicon (arm64) machines for selected macOS version made available by Github. In case the macOS version you are using is newer, compilation from source is triggered.

  • Q: Why some of the constructors expect data to be passed as lists of single-entry dictionaries instead of multi-element dictionaries?
    A: This is intentional and related with PartMC relying on the order of elements within spec-file input; while Python dictionaries preserve ordering (insertion order), JSON format does not, and we intend to make these data structures safe to be [de]serialized using JSON.

  • Q: How to check the version of PartMC that PyPartMC was compiled against?
    A: Version numbers of compile-time dependencies of PyPartMC, including PartMC, can be accessed as follows:

import PyPartMC
PyPartMC.__versions_of_build_time_dependencies__['PartMC']
  • Q: Why m4 and perl are required at compile time?
    A: PyPartMC includes parts of netCDF and HDF5 codebases which depend on m4 and perl, respectively, for generating source files before compilation.

Troubleshooting

Common installation issues

error: [Errno 2] No such file or directory: 'cmake'

Try rerunning after installing CMake, e.g., using apt-get install cmake (Ubuntu/Debian), brew install cmake (homebrew on macOS) or using MSYS2 on Windows.

No CMAKE_Fortran_COMPILER could be found.

Try installing a Fortran compiler (e.g., brew reinstall gcc with Homebrew on macOS or using MSYS2 on Windows).

Could not find NC_M4 using the following names: m4, m4.exe

Try installing m4 (e.g., using MSYS2 on Windows).

Credits

PyPartMC:

authors: PyPartMC developers
funding: US Department of Energy Atmospheric System Research programme, Polish National Science Centre
copyright: University of Illinois at Urbana-Champaign
licence: GPL v3

PartMC:

authors: Nicole Riemer, Matthew West, Jeff Curtis et al.
licence: GPL v2 or later

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

PyPartMC-1.3.6.tar.gz (6.3 MB view details)

Uploaded Source

Built Distributions

PyPartMC-1.3.6-cp311-cp311-win_amd64.whl (3.6 MB view details)

Uploaded CPython 3.11 Windows x86-64

PyPartMC-1.3.6-cp311-cp311-manylinux_2_24_x86_64.whl (3.6 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.24+ x86-64

PyPartMC-1.3.6-cp311-cp311-macosx_14_0_arm64.whl (2.7 MB view details)

Uploaded CPython 3.11 macOS 14.0+ ARM64

PyPartMC-1.3.6-cp311-cp311-macosx_12_0_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.11 macOS 12.0+ x86-64

PyPartMC-1.3.6-cp310-cp310-win_amd64.whl (3.6 MB view details)

Uploaded CPython 3.10 Windows x86-64

PyPartMC-1.3.6-cp310-cp310-manylinux_2_24_x86_64.whl (3.6 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.24+ x86-64

PyPartMC-1.3.6-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.12+ x86-64

PyPartMC-1.3.6-cp310-cp310-macosx_14_0_arm64.whl (2.7 MB view details)

Uploaded CPython 3.10 macOS 14.0+ ARM64

PyPartMC-1.3.6-cp310-cp310-macosx_12_0_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.10 macOS 12.0+ x86-64

PyPartMC-1.3.6-cp39-cp39-win_amd64.whl (3.6 MB view details)

Uploaded CPython 3.9 Windows x86-64

PyPartMC-1.3.6-cp39-cp39-manylinux_2_24_x86_64.whl (3.6 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.24+ x86-64

PyPartMC-1.3.6-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.12+ x86-64

PyPartMC-1.3.6-cp39-cp39-macosx_12_0_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.9 macOS 12.0+ x86-64

PyPartMC-1.3.6-cp38-cp38-win_amd64.whl (3.6 MB view details)

Uploaded CPython 3.8 Windows x86-64

PyPartMC-1.3.6-cp38-cp38-manylinux_2_24_x86_64.whl (3.6 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.24+ x86-64

PyPartMC-1.3.6-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.12+ x86-64

PyPartMC-1.3.6-cp38-cp38-macosx_12_0_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.8 macOS 12.0+ x86-64

PyPartMC-1.3.6-cp37-cp37m-win_amd64.whl (3.6 MB view details)

Uploaded CPython 3.7m Windows x86-64

PyPartMC-1.3.6-cp37-cp37m-manylinux_2_24_x86_64.whl (3.7 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.24+ x86-64

PyPartMC-1.3.6-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.12+ x86-64

PyPartMC-1.3.6-cp37-cp37m-macosx_12_0_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.7m macOS 12.0+ x86-64

File details

Details for the file PyPartMC-1.3.6.tar.gz.

File metadata

  • Download URL: PyPartMC-1.3.6.tar.gz
  • Upload date:
  • Size: 6.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for PyPartMC-1.3.6.tar.gz
Algorithm Hash digest
SHA256 f487261f11bb36d48917239d46208c00f37f96f58800deb873d3d4edd37488ea
MD5 7f7d15054e3eea63c7ea2bb4a288d6b3
BLAKE2b-256 99ae3bcec9291507e68c5df94fcec8dcc9b6cb801004c8cfc2fdbe7ecf3fac31

See more details on using hashes here.

File details

Details for the file PyPartMC-1.3.6-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: PyPartMC-1.3.6-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 3.6 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for PyPartMC-1.3.6-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 ad0c7b87d26e76e67c8fa0964d5e13fff83924041c38d5900be06f65ea046788
MD5 f0413192fdf76baaece6e46a2cacc8b0
BLAKE2b-256 f496bdf06b6eb27d92b1deeb56f048d0ae41f8e9931ad514086d41bcdec9b80c

See more details on using hashes here.

File details

Details for the file PyPartMC-1.3.6-cp311-cp311-manylinux_2_24_x86_64.whl.

File metadata

File hashes

Hashes for PyPartMC-1.3.6-cp311-cp311-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 bbaab802441267ae0bae7b21b0616c0f79b8eb674214233da482e92fe40e734e
MD5 2c42c7c8d0233de945d1c8471ea6b503
BLAKE2b-256 d6d24f96231833831c7a296ec2cf81736c342258e345a6c2c36a69efedd9000b

See more details on using hashes here.

File details

Details for the file PyPartMC-1.3.6-cp311-cp311-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for PyPartMC-1.3.6-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 d3bd5ff5ed771486618575fc3f043cdeef345f75b158a25c99797d6932355b9d
MD5 6c25190afe0260a60b35cfa302d37c09
BLAKE2b-256 e7860a5af7ba6331397024eb6aee4db83f0b797fd3294d97eb3adcb55c4c13a5

See more details on using hashes here.

File details

Details for the file PyPartMC-1.3.6-cp311-cp311-macosx_12_0_x86_64.whl.

File metadata

File hashes

Hashes for PyPartMC-1.3.6-cp311-cp311-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 950c9a50d35d8b18b6ccc2505efcec98313cde79b6f7140f8cbb12fc20f1a5a8
MD5 f2517cc51dfde1dc64b0ffa4e9970a53
BLAKE2b-256 3cfc780cc9b8ce56a4e5747ac0baba95dc330c1acdcd59f62fcd5e468199b081

See more details on using hashes here.

File details

Details for the file PyPartMC-1.3.6-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: PyPartMC-1.3.6-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 3.6 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for PyPartMC-1.3.6-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 51f1dcce0b778fb0ebcd2ae922240bdea9ccc716b72bcce75c4860798f6ef0c3
MD5 6d1cf00ce657a0c0ec0639319fc7160c
BLAKE2b-256 34039e239d3d018e8022f883ec2c819c9cb71ed593a1e22cec57ed8b6cc39f53

See more details on using hashes here.

File details

Details for the file PyPartMC-1.3.6-cp310-cp310-manylinux_2_24_x86_64.whl.

File metadata

File hashes

Hashes for PyPartMC-1.3.6-cp310-cp310-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 1da03be03fc9e575229119096be15a8061e7f50543c13905440db13bf8cd662b
MD5 8c12e8152f8b6b54591bd736649ea132
BLAKE2b-256 24af35ae849c013e7c527ac66e8a0dc8d44e2479a45f792e13b74be172a88dc5

See more details on using hashes here.

File details

Details for the file PyPartMC-1.3.6-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for PyPartMC-1.3.6-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 23ea065587251e8779e1e70dbe4c720d29b0ff0ed4e7de216c21de0233457b1b
MD5 9d013713449a161748f8a4a900d7485a
BLAKE2b-256 645b6b8697fbb5e1d8dd4cdee97b384fbfa1f02c5b09a2dfa87ee4efb1de0cfd

See more details on using hashes here.

File details

Details for the file PyPartMC-1.3.6-cp310-cp310-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for PyPartMC-1.3.6-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 26ebd7d3f8efca7929e1aff08bfc0ec08f1a9dcaab6d799e771de758eaf293ac
MD5 b2d170f22a8b492cac22cc8c31e26dd2
BLAKE2b-256 96bdb81cbbb07e41f70219c57dcce3f07cdb60d1f032de44e7e90c84158ced99

See more details on using hashes here.

File details

Details for the file PyPartMC-1.3.6-cp310-cp310-macosx_12_0_x86_64.whl.

File metadata

File hashes

Hashes for PyPartMC-1.3.6-cp310-cp310-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 caac579d3c6e5b04e7ad5d3bad33119240122542edd299d17a7a8ea1da9bf39c
MD5 c68f96dbd1c1566302b5a5bf14fdda2b
BLAKE2b-256 6ebd222c4b88009701ad085621619b7d6d017325ea5e6c2a371cc366e598ce64

See more details on using hashes here.

File details

Details for the file PyPartMC-1.3.6-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: PyPartMC-1.3.6-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 3.6 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for PyPartMC-1.3.6-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 e3d3b9baecf09fc7b108ac377b1fd0b0d82c4c02ccd6ea51020306b0e89dc346
MD5 96e093463d11d1541fce03ea8b923ac9
BLAKE2b-256 a94841bc44dd2398dd3f4aec390d4eabf6e2edb40a250571852452a2e568041b

See more details on using hashes here.

File details

Details for the file PyPartMC-1.3.6-cp39-cp39-manylinux_2_24_x86_64.whl.

File metadata

File hashes

Hashes for PyPartMC-1.3.6-cp39-cp39-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 576b8edc15a70cd12c1b22d079b640da5516e15c8a2b0b73f7b8366919d80f97
MD5 82afd0e4e8c81b93e849d6e6e322e1f0
BLAKE2b-256 5efab3976b36c8fc6bd5dfdc278a070259e2d21bfbc6e6e1e7e0b8294505f631

See more details on using hashes here.

File details

Details for the file PyPartMC-1.3.6-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for PyPartMC-1.3.6-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 0d7b2165bd16a0ea370b6d12a5a6f37ee733910766739d5a8a99adbbeb78675c
MD5 0dc3c02175a76ea59c5f5d65b17fd56a
BLAKE2b-256 5470cbe5d56f5c61bb0b18477376b1ee0798cc27c92e330e993b39736bb6c7bd

See more details on using hashes here.

File details

Details for the file PyPartMC-1.3.6-cp39-cp39-macosx_12_0_x86_64.whl.

File metadata

File hashes

Hashes for PyPartMC-1.3.6-cp39-cp39-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 6f24e6f568cb489cb589e655b80e0051063ac7bb7b13cf7dca0fef6ca7a589cf
MD5 bf3122e41d5c3762d456b1551b6d0106
BLAKE2b-256 e85f0da1febb850a6a5f3bb62f200803a8f313ab41bdc15bc2ba2ac26ec5d717

See more details on using hashes here.

File details

Details for the file PyPartMC-1.3.6-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: PyPartMC-1.3.6-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 3.6 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for PyPartMC-1.3.6-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 d86e21e361e35738a43600d14339e10be92cae3731d2c9de42a3eb2c49facf7f
MD5 87dd541ef88b474edf40eab045cf54b6
BLAKE2b-256 ea15837a48821e09a0e1bc0ddc52c14e3b0c181d3eb194c3931252721021d645

See more details on using hashes here.

File details

Details for the file PyPartMC-1.3.6-cp38-cp38-manylinux_2_24_x86_64.whl.

File metadata

File hashes

Hashes for PyPartMC-1.3.6-cp38-cp38-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 844ac446c3b27ab7e96c3fae0eead4303d29b2c7501a4c62c1742f1627e6b1cf
MD5 223100cc68a3670d751d18d617a322b3
BLAKE2b-256 6da19371551830683cb036b77283d87edff196f1a0fb6032bc13b0aafc92c28d

See more details on using hashes here.

File details

Details for the file PyPartMC-1.3.6-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for PyPartMC-1.3.6-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 75c300c01bd06e47aeb2027dd1d582ad1f7a5a38ff6de85b0e9b74d3df256f9c
MD5 b91c8e89c304a381c9529c81f37279a4
BLAKE2b-256 387d875ccb0b90d042dceefe89bed71493794a9dc6c94f109c68c1ad73cbeed1

See more details on using hashes here.

File details

Details for the file PyPartMC-1.3.6-cp38-cp38-macosx_12_0_x86_64.whl.

File metadata

File hashes

Hashes for PyPartMC-1.3.6-cp38-cp38-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 49e3ec8584d1999880714e613a0981d19e6ad67cd2ee2c61923657455a60b862
MD5 5aa077f4718d2eaec8c59589cc026ee2
BLAKE2b-256 4f5145abdf6221f26b7017a00c3a57cc476794590e727c9035fd24151c106f50

See more details on using hashes here.

File details

Details for the file PyPartMC-1.3.6-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: PyPartMC-1.3.6-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 3.6 MB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for PyPartMC-1.3.6-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 01583b6f01f1d819e7110eb963bed04cf68590b9b413a1280d71c40580e3dcae
MD5 fafa518be9338a5c7990b25ac775560a
BLAKE2b-256 4483fc6f613732846e9c80f6285c0a9f978a43d0096b95252d860388fd0d449f

See more details on using hashes here.

File details

Details for the file PyPartMC-1.3.6-cp37-cp37m-manylinux_2_24_x86_64.whl.

File metadata

File hashes

Hashes for PyPartMC-1.3.6-cp37-cp37m-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 3557b72c54389403cee696921b444f6e909dbc927407bb98b114fc4bbd050c71
MD5 890aa4a3784e14f0a90c98e2504d4b14
BLAKE2b-256 091a8559a0a91003f42bc1f6311d4386caf841944017cb6355767091d4e2499c

See more details on using hashes here.

File details

Details for the file PyPartMC-1.3.6-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for PyPartMC-1.3.6-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 25275bde43f6644d5ba0f3765a5aa02be58ad24102ed94472fd2bd4ee7ac6ca9
MD5 c887b6c80721524b96f52eb51b9a7bae
BLAKE2b-256 4bcb9ff962af5bd3ae0be512edab0260edef774502c18004ace9d75c13d7ab8d

See more details on using hashes here.

File details

Details for the file PyPartMC-1.3.6-cp37-cp37m-macosx_12_0_x86_64.whl.

File metadata

File hashes

Hashes for PyPartMC-1.3.6-cp37-cp37m-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 9a3fb8309178912db3a4205c5e870770444394c4c303dcdfdcf70aa2c879ac41
MD5 78051cab4f56e98034e4a532364d21e8
BLAKE2b-256 6101f9b83e2398dd46e09f9943033d7caffdf8de30eb2a66bb99bb2b213088fd

See more details on using hashes here.

Supported by

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