Skip to main content

Python extension wrapping the ICU C++ API

Project description

README file for PyICU

Welcome

Welcome to PyICU, a Python extension wrapping the ICU C++ libraries.

ICU stands for "International Components for Unicode". These are the i18n libraries of the Unicode Consortium. They implement much of the Unicode Standard, many of its companion Unicode Technical Standards, and much of Unicode CLDR.

The PyICU source code is hosted at https://gitlab.pyicu.org/main/pyicu.

The ICU homepage is http://site.icu-project.org/

See also the CLDR homepage at http://cldr.unicode.org/

Installing PyICU

PyICU is a python extension implemented in C++ that wraps the C/C++ ICU library. It is known to also work as a PyPy extension. Unless pkg-config and the ICU libraries and headers are already installed, building PyICU from the sources on PyPI involves more than just a pip call. Many operating systems distribute pre-built binary packages of ICU and PyICU, see below.

  • Mac OS X

    • Ensure ICU is installed and can be found by pkg-config (as icu-config was deprecated as of ICU 63.1), either by following ICU build instructions, or by using Homebrew:

      # install libicu (keg-only)
      brew install pkg-config icu4c
      
      # let setup.py discover keg-only icu4c via pkg-config
      export PATH="/usr/local/opt/icu4c/bin:/usr/local/opt/icu4c/sbin:$PATH"
      export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/local/opt/icu4c/lib/pkgconfig"
      
    • Install PyICU with the same C++ compiler as your Python distribution (more info):

      # EITHER - when using a gcc-built CPython (e.g. from Homebrew)
      export CC="$(which gcc)" CXX="$(which g++)"
      # OR - when using system CPython or another clang-based CPython, ensure system clang is used (for proper libstdc++ https://gitlab.pyicu.org/main/pyicu/issues/5#issuecomment-291631507):
      unset CC CXX
      
      # avoid wheels from previous runs or PyPI
      pip install --no-binary=:pyicu: pyicu
      
    • ICU and PyICU binaries are both available via Macports as well. The same limitations about mixing binaries may apply.

      # see versions available
      /opt/local/bin/port search pyicu
      sudo /opt/local/bin/port install ...
      
  • Debian

    apt-get update
    
    # EITHER - from apt directly https://packages.debian.org/source/stable/pyicu
    apt-get install python3-icu
    # OR - from source
    apt-get install pkg-config libicu-dev
    pip install --no-binary=:pyicu: pyicu
    
  • Ubuntu: similar to Debian, there is a pyicu package available via apt.

  • Alpine Linux: there is a pyicu package available via apk.

  • NetBSD: there is a pyicu package available via pkg_add.

  • OpenBSD: there is a pyicu package available via pkg_add.

  • Other operating systems: see below.

Building PyICU

Before building PyICU the ICU libraries must be built and installed. Refer to each system's instructions for more information.

PyICU is built with setuptools:

  • verify that pkg-config is available (the icu-config program is deprecated as of ICU 63.1)

    pkg-config --cflags --libs icu-i18n
    

    If this command returns an error or doesn't return the paths expected then ensure that the INCLUDES, LFLAGS, CFLAGS and LIBRARIES dictionaries in setup.py contain correct values for your platform. Starting with ICU 60, -std=c++11 must appear in your CFLAGS or be the default for your C++ compiler.

  • build and install pyicu

    python setup.py build
    sudo python setup.py install
    

Running PyICU

  • Mac OS X Make sure that DYLD_LIBRARY_PATH contains paths to the directory(ies) containing the ICU libs.

  • Linux & Solaris Make sure that LD_LIBRARY_PATH contains paths to the directory(ies) containing the ICU libs or that you added the corresponding -rpath argument to LFLAGS.

  • Windows Make sure that PATH contains paths to the directory(ies) containing the ICU DLLs.

What's available

See the CHANGES file for an up to date log of changes and additions.

API Documentation

There is no API documentation for PyICU. The API for ICU is documented at https://unicode-org.github.io/icu-docs/apidoc/released/icu4c/ and the following patterns can be used to translate from the C++ APIs to the corresponding Python APIs.

strings

The ICU string type, UnicodeString, is a type pointing at a mutable array of UChar Unicode 16-bit wide characters and is described here. The Python 3 str type is described here and here. The Python 2 unicode type is described here.

Because of their differences, ICU's and Python's string objects are not merged into the same type when crossing the C++ boundary but converted.

ICU APIs taking UnicodeString arguments have been overloaded to also accept arguments that are Python 3 str or Python 2 unicode objects. Python 2 str objects are auto-decoded into ICU strings using the utf-8 encoding.

To convert a Python 3 bytes or a Python 2 str object encoded in an encoding other than utf-8 to an ICU UnicodeString use the UnicodeString(str, encodingName) constructor.

ICU's C++ APIs accept and return UnicodeString arguments in several ways: by value, by pointer or by reference. When an ICU C++ API is documented to accept a UnicodeString reference parameter, it is safe to assume that there are several corresponding PyICU python APIs making it accessible in simpler ways:

For example, the 'UnicodeString &Locale::getDisplayName(UnicodeString &)' API, documented here, can be invoked from Python in several ways:

  1. The ICU way

     >>> from icu import UnicodeString, Locale
     >>> locale = Locale('pt_BR')
     >>> string = UnicodeString()
     >>> name = locale.getDisplayName(string)
     >>> name
     <UnicodeString: 'Portuguese (Brazil)'>
     >>> name is string
     True                  <-- string arg was returned, modified in place
    
  2. The Python way

     >>> from icu import Locale
     >>> locale = Locale('pt_BR')
     >>> name = locale.getDisplayName()
     >>> name
     'Portuguese (Brazil)'
    

    A UnicodeString object was allocated and converted to a Python str object.

A UnicodeString can be converted to a Python unicode string with Python 3's str() or Python 2's unicode() constructor. The usual len(), comparison, `[]and[:]`` operators are all available, with the additional twists that slicing is not read-only and that ``+=`` is also available since a UnicodeString is mutable. For example:

>>> name = locale.getDisplayName()
'Portuguese (Brazil)'
>>> name = UnicodeString(name)
>>> name
<UnicodeString: 'Portuguese (Brazil)'>
>>> str(name)
'Portuguese (Brazil)'
>>> len(name)
19
>>> str(name)
'Portuguese (Brazil)'
>>> name[3]
't'
>>> name[12:18]
<UnicodeString: 'Brazil'>
>>> name[12:18] = 'the country of Brasil'
>>> name
<UnicodeString: 'Portuguese (the country of Brasil)'>
>>> name += ' oh joy'
>>> name
<UnicodeString: 'Portuguese (the country of Brasil) oh joy'>

error reporting

The C++ ICU library does not use C++ exceptions to report errors. ICU C++ APIs return errors via a UErrorCode reference argument. All such APIs are wrapped by Python APIs that omit this argument and throw an ICUError Python exception instead. The same is true for ICU APIs taking both a ParseError and a UErrorCode, they are both to be omitted.

For example, the 'UnicodeString &DateFormat::format(const Formattable &, UnicodeString &, FieldPosition &, UErrorCode &)' API, documented here is invoked from Python with:

>>> from icu import DateFormat, Formattable
>>> df = DateFormat.createInstance()
>>> df
<SimpleDateFormat: M/d/yy h:mm a>
>>> f = Formattable(940284258.0, Formattable.kIsDate)
>>> df.format(f)
'10/18/99 3:04 PM'

Of course, the simpler 'UnicodeString &DateFormat::format(UDate, UnicodeString &)' documented here can be used too:

>>> from icu import DateFormat
>>> df = DateFormat.createInstance()
>>> df
<SimpleDateFormat: M/d/yy h:mm a>
>>> df.format(940284258.0)
'10/18/99 3:04 PM'

dates

ICU uses a double floating point type called UDate that represents the number of milliseconds elapsed since 1970-jan-01 UTC for dates.

In Python, the value returned by the time module's time() function is the number of seconds since 1970-jan-01 UTC. Because of this difference, floating point values are multiplied by 1000 when passed to APIs taking UDate and divided by 1000 when returned as UDate.

Python's datetime objects, with or without timezone information, can also be used with APIs taking UDate arguments. The datetime objects get converted to UDate when crossing into the C++ layer.

arrays

Many ICU API take array arguments. A list of elements of the array element types is to be passed from Python.

StringEnumeration

An ICU StringEnumeration has three next methods: next() which returns str objects, unext() which returns str objects in Python 3 or unicode objects in Python 2 and snext() which returns UnicodeString objects. Any of these methods can be used as an iterator, using the Python built-in iter function.

For example, let e be a StringEnumeration instance:

e = TimeZone.createEnumeration()
[s for s in e] # a list of 'str' objects
[s for s in iter(e.unext, '')] # a list of 'str' or 'unicode' objects
[s for s in iter(e.snext, '')] # a list of 'UnicodeString' objects

timezones

The ICU TimeZone type may be wrapped with an ICUtzinfo type for usage with Python's datetime type. For example:

from datetime import datetime
tz = ICUtzinfo(TimeZone.createTimeZone('US/Mountain'))
datetime.now(tz)

or, even simpler:

tz = ICUtzinfo.getInstance('Pacific/Fiji')
datetime.now(tz)

To get the default time zone use:

defaultTZ = ICUtzinfo.getDefault()

To get the time zone's id, use the tzid attribute or coerce the time zone to a string:

ICUtzinfo.getInstance('Pacific/Fiji').tzid -> 'Pacific/Fiji'
str(ICUtzinfo.getInstance('Pacific/Fiji')) -> 'Pacific/Fiji'

Further Reading

The unit tests have more examples of actual PyICU usage.

There are also a few samples ported from ICU C/C++.

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

PyICU-binary-2.7.4.tar.gz (298.0 kB view details)

Uploaded Source

Built Distributions

PyICU_binary-2.7.4-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl (14.3 MB view details)

Uploaded PyPy manylinux: glibc 2.24+ x86-64

PyICU_binary-2.7.4-pp37-pypy37_pp73-manylinux_2_24_i686.whl (14.5 MB view details)

Uploaded PyPy manylinux: glibc 2.24+ i686

PyICU_binary-2.7.4-cp39-cp39-manylinux_2_24_x86_64.whl (15.5 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.24+ x86-64

PyICU_binary-2.7.4-cp39-cp39-manylinux_2_24_i686.whl (15.4 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.24+ i686

PyICU_binary-2.7.4-cp39-cp39-macosx_11_0_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (13.7 MB view details)

Uploaded CPython 3.9 macOS 10.10+ intel macOS 10.10+ x86-64 macOS 10.9+ intel macOS 10.9+ x86-64 macOS 11.0+ x86-64

PyICU_binary-2.7.4-cp38-cp38-manylinux_2_24_x86_64.whl (15.5 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.24+ x86-64

PyICU_binary-2.7.4-cp38-cp38-manylinux_2_24_i686.whl (15.4 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.24+ i686

PyICU_binary-2.7.4-cp38-cp38-macosx_10_15_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (13.7 MB view details)

Uploaded CPython 3.8 macOS 10.10+ intel macOS 10.10+ x86-64 macOS 10.15+ x86-64 macOS 10.9+ intel macOS 10.9+ x86-64

PyICU_binary-2.7.4-cp37-cp37m-manylinux_2_24_x86_64.whl (15.5 MB view details)

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

PyICU_binary-2.7.4-cp37-cp37m-manylinux_2_24_i686.whl (15.4 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.24+ i686

PyICU_binary-2.7.4-cp37-cp37m-macosx_10_15_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (13.7 MB view details)

Uploaded CPython 3.7m macOS 10.10+ intel macOS 10.10+ x86-64 macOS 10.15+ x86-64 macOS 10.9+ intel macOS 10.9+ x86-64

PyICU_binary-2.7.4-cp36-cp36m-manylinux_2_24_x86_64.whl (15.4 MB view details)

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

PyICU_binary-2.7.4-cp36-cp36m-manylinux_2_24_i686.whl (15.4 MB view details)

Uploaded CPython 3.6m manylinux: glibc 2.24+ i686

PyICU_binary-2.7.4-cp36-cp36m-macosx_10_15_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (13.7 MB view details)

Uploaded CPython 3.6m macOS 10.10+ intel macOS 10.10+ x86-64 macOS 10.15+ x86-64 macOS 10.9+ intel macOS 10.9+ x86-64

File details

Details for the file PyICU-binary-2.7.4.tar.gz.

File metadata

  • Download URL: PyICU-binary-2.7.4.tar.gz
  • Upload date:
  • Size: 298.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for PyICU-binary-2.7.4.tar.gz
Algorithm Hash digest
SHA256 349cf0baf1bfff8ecec73f03dbbbf63889747340848d5f4ef367900b165baf56
MD5 37d83fbe4eae7974f63b63f28b0dfa1a
BLAKE2b-256 bc84ce0425f763e993911d5224adb48100600ddbf97141e992bdbfe9337c90e7

See more details on using hashes here.

File details

Details for the file PyICU_binary-2.7.4-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl.

File metadata

  • Download URL: PyICU_binary-2.7.4-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl
  • Upload date:
  • Size: 14.3 MB
  • Tags: PyPy, manylinux: glibc 2.24+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for PyICU_binary-2.7.4-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 592d9ca54203af07fb90c0673e3fac48249cf59ee50402bbe36533de52e4b9e7
MD5 cb44d9f0df1792a5395fb0ec1675d5b9
BLAKE2b-256 2f8fed4a84799bc901e0190dbd893f5bf0c496288e6030c19a0cd1429dfe8133

See more details on using hashes here.

File details

Details for the file PyICU_binary-2.7.4-pp37-pypy37_pp73-manylinux_2_24_i686.whl.

File metadata

  • Download URL: PyICU_binary-2.7.4-pp37-pypy37_pp73-manylinux_2_24_i686.whl
  • Upload date:
  • Size: 14.5 MB
  • Tags: PyPy, manylinux: glibc 2.24+ i686
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for PyICU_binary-2.7.4-pp37-pypy37_pp73-manylinux_2_24_i686.whl
Algorithm Hash digest
SHA256 2c29f669f9a18a813c9cc6cb970f5b3f6f63d3de2f1fb788f3f287278687bceb
MD5 a4d66962fef8f270e76332c6f38e0302
BLAKE2b-256 1c00bd2c82128224bd584aaf79f487a58acdb0a151f043bb33ed2ab26123e709

See more details on using hashes here.

File details

Details for the file PyICU_binary-2.7.4-cp39-cp39-manylinux_2_24_x86_64.whl.

File metadata

  • Download URL: PyICU_binary-2.7.4-cp39-cp39-manylinux_2_24_x86_64.whl
  • Upload date:
  • Size: 15.5 MB
  • Tags: CPython 3.9, manylinux: glibc 2.24+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for PyICU_binary-2.7.4-cp39-cp39-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 f4ec16b9e36fa4c9955a07f9c5c15f30b318917a69dbd2c04267668f8301ec9f
MD5 d23633a4a9dd20fd27b97e6feb79f577
BLAKE2b-256 be9dc2b0c5baf8b85a5a4bb7cb5991bd837b563b83c667ad40e5448cc175d1d6

See more details on using hashes here.

File details

Details for the file PyICU_binary-2.7.4-cp39-cp39-manylinux_2_24_i686.whl.

File metadata

  • Download URL: PyICU_binary-2.7.4-cp39-cp39-manylinux_2_24_i686.whl
  • Upload date:
  • Size: 15.4 MB
  • Tags: CPython 3.9, manylinux: glibc 2.24+ i686
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for PyICU_binary-2.7.4-cp39-cp39-manylinux_2_24_i686.whl
Algorithm Hash digest
SHA256 42262ae5617fd43bfa4b80b1ecb04e7641e0829639a297bacc54c1d7c367833c
MD5 152610709027e0866d7d59ca9114ba46
BLAKE2b-256 f15bdaabf460006d2e0b23f216af26623ebfb19723430f3bbc4c7533060d9614

See more details on using hashes here.

File details

Details for the file PyICU_binary-2.7.4-cp39-cp39-macosx_11_0_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl.

File metadata

File hashes

Hashes for PyICU_binary-2.7.4-cp39-cp39-macosx_11_0_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl
Algorithm Hash digest
SHA256 f077ee0ab99be181e43d021e94a18c15e6a6023de334e7298eb043f7fd367551
MD5 484ae7a56471d1e6386f29f8e26c1a4a
BLAKE2b-256 f85f333f97c4be4b5211860c60a672eefb48069e678d29bff7a63e566f449ee3

See more details on using hashes here.

File details

Details for the file PyICU_binary-2.7.4-cp38-cp38-manylinux_2_24_x86_64.whl.

File metadata

  • Download URL: PyICU_binary-2.7.4-cp38-cp38-manylinux_2_24_x86_64.whl
  • Upload date:
  • Size: 15.5 MB
  • Tags: CPython 3.8, manylinux: glibc 2.24+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for PyICU_binary-2.7.4-cp38-cp38-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 bf390b9bcf081edb9de070722a8baae154451262df85a5601ccc12aa9e0ad187
MD5 9fcf9e46cd958ce9b0adeb0f8bd2df8a
BLAKE2b-256 e9c16893670c4bb8e8b031e0bad86e6b49a9b5915848faf62766921a7dc4394c

See more details on using hashes here.

File details

Details for the file PyICU_binary-2.7.4-cp38-cp38-manylinux_2_24_i686.whl.

File metadata

  • Download URL: PyICU_binary-2.7.4-cp38-cp38-manylinux_2_24_i686.whl
  • Upload date:
  • Size: 15.4 MB
  • Tags: CPython 3.8, manylinux: glibc 2.24+ i686
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for PyICU_binary-2.7.4-cp38-cp38-manylinux_2_24_i686.whl
Algorithm Hash digest
SHA256 851e074359ac5a3ab98d6996c9871a2ea829e1a7a07380008e0540dba3a849ca
MD5 7a5f28ee9415d50ccbe7baa645ad3973
BLAKE2b-256 0b04c2ac4f7deaf520e82e7b445f9378188ecbb807a23da5de8744839bd39440

See more details on using hashes here.

File details

Details for the file PyICU_binary-2.7.4-cp38-cp38-macosx_10_15_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl.

File metadata

File hashes

Hashes for PyICU_binary-2.7.4-cp38-cp38-macosx_10_15_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl
Algorithm Hash digest
SHA256 4f63682f8430aeda3e6a4b3e0d61192bd5dd93eea234b32a140a95fefcf47bc5
MD5 5a7fd6d14692b8fcc8c76e35cb1ccc1b
BLAKE2b-256 6939de73ac09d70cf2c9c1610348ced7f2d542cb0df802083e5974540f84bc3c

See more details on using hashes here.

File details

Details for the file PyICU_binary-2.7.4-cp37-cp37m-manylinux_2_24_x86_64.whl.

File metadata

  • Download URL: PyICU_binary-2.7.4-cp37-cp37m-manylinux_2_24_x86_64.whl
  • Upload date:
  • Size: 15.5 MB
  • Tags: CPython 3.7m, manylinux: glibc 2.24+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for PyICU_binary-2.7.4-cp37-cp37m-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 35a50c2a505f4890347589a8d902f1fcbdb7b8709e2e6ee8e71b445f3cc03442
MD5 19b93df01bf98dc42bdd5300c16d19c2
BLAKE2b-256 5a663dafd0b8f87a12af1c79b74bcffc8f62900ced507dc253ba7909656c34d1

See more details on using hashes here.

File details

Details for the file PyICU_binary-2.7.4-cp37-cp37m-manylinux_2_24_i686.whl.

File metadata

  • Download URL: PyICU_binary-2.7.4-cp37-cp37m-manylinux_2_24_i686.whl
  • Upload date:
  • Size: 15.4 MB
  • Tags: CPython 3.7m, manylinux: glibc 2.24+ i686
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for PyICU_binary-2.7.4-cp37-cp37m-manylinux_2_24_i686.whl
Algorithm Hash digest
SHA256 76279a28147b4c8af2d4cdebf05d068576bdb7d06e68638d3482680e4a8b495a
MD5 a9c42b96317bfbf592410932764e3be9
BLAKE2b-256 b6d1776b8eaab3a3b17947a200dbd751dde12e6bdf1e5c0d71fc0f6f074ee61c

See more details on using hashes here.

File details

Details for the file PyICU_binary-2.7.4-cp37-cp37m-macosx_10_15_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl.

File metadata

File hashes

Hashes for PyICU_binary-2.7.4-cp37-cp37m-macosx_10_15_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl
Algorithm Hash digest
SHA256 164749f6128b19f26436b1e5ec10595058a78e4ed46150d43bf14028cbffc9d1
MD5 8215fb0c12ba6e7a590d0f38ac52b6db
BLAKE2b-256 7bf65eda769519e2ec5fdb92b6a85f4a19323c9d7acd937068e1146b7e591409

See more details on using hashes here.

File details

Details for the file PyICU_binary-2.7.4-cp36-cp36m-manylinux_2_24_x86_64.whl.

File metadata

  • Download URL: PyICU_binary-2.7.4-cp36-cp36m-manylinux_2_24_x86_64.whl
  • Upload date:
  • Size: 15.4 MB
  • Tags: CPython 3.6m, manylinux: glibc 2.24+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for PyICU_binary-2.7.4-cp36-cp36m-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 9a5a59f871d8e75da3c96f90b98c1df31ebc684806b4db38c0144f1145bc3275
MD5 618bb798cff3da7c90ccf4c5a0d80f7a
BLAKE2b-256 e79f2938907468fa874ffcae0b6736116243e9fd7ff152d9b61b2c7c317e2439

See more details on using hashes here.

File details

Details for the file PyICU_binary-2.7.4-cp36-cp36m-manylinux_2_24_i686.whl.

File metadata

  • Download URL: PyICU_binary-2.7.4-cp36-cp36m-manylinux_2_24_i686.whl
  • Upload date:
  • Size: 15.4 MB
  • Tags: CPython 3.6m, manylinux: glibc 2.24+ i686
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for PyICU_binary-2.7.4-cp36-cp36m-manylinux_2_24_i686.whl
Algorithm Hash digest
SHA256 381b032c9e93e581e82a61e4538993e07db4b12b140344170d5b2b60ff802118
MD5 dfbd40f107d4951d31a9f3b73fa3467f
BLAKE2b-256 939da0d0f4cd3b180337513da7052fbadecd562c866ec8a1896c28108b589cb1

See more details on using hashes here.

File details

Details for the file PyICU_binary-2.7.4-cp36-cp36m-macosx_10_15_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl.

File metadata

File hashes

Hashes for PyICU_binary-2.7.4-cp36-cp36m-macosx_10_15_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl
Algorithm Hash digest
SHA256 f2ca477cac88839a0a9266c1c9aea12c9dd751f4fccebd7ac563212da4a21a49
MD5 dc36fe216f33231539275e627c43e96e
BLAKE2b-256 6af0a7abef15a1e53a785a5c8d0734869c82303cb31818f21bd11c8b9259b8df

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