Skip to main content

Objectfile library for Python

Project description

https://github.com/christoph2/objutils/raw/master/docs/objutils_banner.png

PyPI Python Versions License: GPLv2 Code style: black

Binary data stored in hex-files is in widespread use especially in embedded systems applications. objutils gives you programmatic access to a wide array of formats and offers a practical API to work with such data.

Get the latest version from Github

Installation

pip install objutils

For development (editable install):

pip install -e .

Or with Poetry:

poetry install

Prerequisites

  • Python >= 3.9

Features

  • Read ELF files (including symbols) and extract loadable sections.

  • Inspect PE/COFF files and symbols (optional PDB support).

  • Typed access (scalars, arrays, strings) to binary data.

Recent improvements

  • New oj-dwarf-import CLI replaces dwarfer.py/cu_info.py for DWARF imports, CU listing, summaries, and attribute traversal.

  • Faster DWARF imports: batched ORM writes, quiet flag propagation, and safe DWARF expression evaluation keep large ELF files stable.

  • Exception handling and typing tightened across DWARF/ELF/PECOFF modules and public APIs to surface real errors without masking them.

  • ElfParser.close() releases SQLite/mmap handles; examples/tests now close parsers to avoid database locks.

  • S-Record metadata stays minimal and numeric (no data records mixed in); Mostec/Tek SREC roundtrips now reproduce expected files.

  • Fortran-ordered ndarray reads/writes honor legacy column-major expectations; hexdump empty rows keep canonical spacing.

Supported HEX formats

objutils supports a bunch of HEX formats…

Current

  • codec / format name

  • ihex (Intel HEX)

  • shf (S Hexdump (rfc4194))

  • srec (Motorola S-Records)

  • titxt (Texas Instruments Text)

Historical

  • codec / format name

  • ash (ASCII Space Hex)

  • cosmac (RCA Cosmac)

  • emon52 (Elektor EMON52)

  • etek (Tektronix Extended Hexadecimal)

  • fpc (Four Packed Code)

  • mostec (MOS Technology)

  • rca (RCA)

  • sig (Signetics)

  • tek (Tektronix Hexadecimal)

codec is the first parameter to dump() / load() functions, e.g.:

img = objutils.load("ihex", "myHexFile.hex")     # Load an Intel HEX file...
objutils.dump("srec", "mySRecFile.srec", img)    # and save it as S-Records.

First steps

If you are interested, what objutils provides to you out-of-the-box, refer to Scripts documentation.

In any case, you should work through the following tutorial:

First import all classes and functions used in this tutorial.

from objutils import Image, Section, dump, dumps, load, loads

Everything starts with hello world…

sec0 = Section(start_address = 0x1000, data = "Hello HEX world!")

The constructor parameters to Section reflect what they are about: A continuous area of memory with an start address.

data is not necessarily a string, array.array**s, **byte, bytearray will also do, or from an internal point of view: everything that is convertible to bytearray could be used.

Note: start_address and data are positional arguments, so there is no need to use them as keywords (just for the sake of illustration).

Now let’s inspect our section.

sec0.hexdump()

00001000  48 65 6c 6c 6f 20 48 45 58 20 77 6f 72 6c 64 21  |Hello HEX world!|
---------------
       16 bytes
---------------

hexdump() gives us, what in the world of hackers is known as a canonical hexdump.

HEX files usually consist of more than one section, so let’s create another one.

sec1 = Section(0x2000, range(1, 17))
sec1.hexdump()

00002000  01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10  |................|
---------------
       16 bytes
---------------

Now, let’s glue together our sections.

img0 = Image([sec0, sec1])
print(img0)

Section(address = 0X00001000, length = 16, data = b'Hello HEX world!')
Section(address = 0X00002000, length = 16, data = b'\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10')

Images are obviously a container for sections, and they are always involved if you are interacting with disk based HEX files.

dump("srec", "example0.srec", img0)

The resulting file could be inspected from command line.

$ cat example0.srec
S113100048656C6C6F2048455820776F726C64217A
S11320000102030405060708090A0B0C0D0E0F1044

And loaded again…

img1 = load("srec", "example0.srec")
print(img1)

Section(address = 0X00001000, length = 16, data = b'Hello HEX world!')
Section(address = 0X00002000, length = 16, data = b'\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10')

This leads to the conversion idiom.

img1 = load("srec", "example0.srec")
dump("ihex", "example0.hex", img1)

Note: the formats above listed as historical are for one good reason historical: they are only 16bit wide, so if you want to convert, say a srec file for a 32bit MCU to them, you’re out of luck.

OK, we’re starting another session.

sec0 = Section(0x100, range(1, 9))
sec1 = Section(0x108, range(9, 17))
img0 = Image([sec0, sec1])
print(img0)

Section(address = 0X00000100, length = 16, data = b'\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10')

img0.hexdump()

Section #0000
-------------
00000100  01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10  |................|
---------------
       16 bytes
---------------

Two sections with consecutive address ranges concatenated to one, this may or may not what you are expected.

For this reason Image has a join parameter.

sec0 = Section(0x100, range(1, 9))
sec1 = Section(0x108, range(9, 17))
img0 = Image([sec0, sec1], join = False)
print(img0)

Section(address = 0X00000100, length = 8, data = b'\x01\x02\x03\x04\x05\x06\x07\x08')
Section(address = 0X00000108, length = 8, data = b'\t\n\x0b\x0c\r\x0e\x0f\x10')

img0.hexdump()

Section #0000
-------------
00000100  01 02 03 04 05 06 07 08                          |........        |
---------------
        8 bytes
---------------

Section #0001
-------------
00000108  09 0a 0b 0c 0d 0e 0f 10                          |........        |
---------------
        8 bytes
---------------

One feature that sets objutils apart from other libraries of this breed is typified access.

We are starting with a new image.

img0 = Image([Section(0x1000, bytes(64))])
print(img0)

Section(address = 0X00001000, length = 64, data = b'\x00\x00\x00\x00\x00\x00\x00...00\x00\x00\x00\x00\x00\x00\x00')

We are now writing a string to our image.

img0 = Image([Section(0x1000, bytes(64))])
img0.write(0x1010, [0xff])
img0.hexdump()

Section #0000
-------------
00001000  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
00001010  ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
00001020  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
00001030  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|

img0.write_string(0x1000, "Hello HEX world!")
img0.hexdump()

Section #0000
-------------
00001000  48 65 6c 6c 6f 20 48 45 58 20 77 6f 72 6c 64 21  |Hello HEX world!|
00001010  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
          *
00001030  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
---------------
       64 bytes
---------------

Notice the difference? In our Section example above, the string passed as a data parameter was just a bunch of bytes, but now it is a “real” C-string (there is a opposite function, read_string, that scans for a terminating NULL character).

Use write() and read() functions, if you want to access plain bytes.

But there is also support for numerical types.

img0 = Image([Section(0x1000, bytes(64))])
img0.write_numeric(0x1000, 0x10203040, "uint32_be")
img0.write_numeric(0x1004, 0x50607080, "uint32_le")
img0.hexdump()

Section #0000
-------------
00001000  10 20 30 40 80 70 60 50 00 00 00 00 00 00 00 00  |. 0@.p`P........|
00001010  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
          *
00001030  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
---------------
       64 bytes
---------------

The folling types are supported:

  • uint8

  • int8

  • uint16

  • int16

  • uint32

  • int32

  • uint64

  • int64

  • float32

  • float64

In any case, endianess suffixes _be or _le are required.

For ASAM workflows there are dedicated helpers with explicit byte-order names:

img0 = Image([Section(0x1000, bytes(64))])
img0.write_asam_numeric(0x1000, 0x11223344, "ULONG", "MSB_FIRST")
img0.write_asam_numeric(0x1004, 0x11223344, "ULONG", "MSB_FIRST_MSW_LAST")
img0.write_asam_numeric(0x1008, 0x11223344, "ULONG", "MSB_LAST_MSW_FIRST")

print(hex(img0.read_asam_numeric(0x1000, "ULONG", "MSB_FIRST")))
print(hex(img0.read_asam_numeric(0x1004, "ULONG", "MSB_FIRST_MSW_LAST")))
print(hex(img0.read_asam_numeric(0x1008, "ULONG", "MSB_LAST_MSW_FIRST")))

# All reads print 0x11223344 again.

Supported ASAM byte orders:

  • MSB_FIRST

  • MSB_LAST

  • MSB_FIRST_MSW_LAST (word-swap)

  • MSB_LAST_MSW_FIRST (word-swap)

  • LITTLE_ENDIAN (legacy alias for MSB_LAST)

  • BIG_ENDIAN (legacy alias for MSB_FIRST)

Supported ASAM numeric datatypes:

  • UBYTE, SBYTE

  • UWORD, SWORD

  • ULONG, SLONG

  • A_UINT64, A_INT64

  • FLOAT16_IEEE, FLOAT32_IEEE, FLOAT64_IEEE

ASAM string helpers are available, too:

img0.write_asam_string(0x1020, "MOTOR", "ASCII")
img0.write_asam_string(0x1030, "Drehzahl", "UTF8")

print(img0.read_asam_string(0x1020, "ASCII"))
print(img0.read_asam_string(0x1030, "UTF8"))

Supported ASAM string datatypes:

  • ASCII

  • UTF8

  • UTF16

  • UTF32

Arrays are also supported.

img0 = Image([Section(0x1000, bytes(64))])
img0.write_numeric_array(0x1000, [0x1000, 0x2000, 0x3000, 0x4000, 0x5000, 0x6000, 0x7000, 0x8000], "uint16_le")
img0.hexdump()

Section #0000
-------------
00001000  00 10 00 20 00 30 00 40 00 50 00 60 00 70 00 80  |... .0.@.P.`.p..|
00001010  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
          *
00001030  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
---------------
       64 bytes
---------------

This concludes our tutorial for now, but there is more stuff to follow…

Documentation

For full documentation, including installation, tutorials and PDF documents, please see Readthedocs

Bugs/Requests

Please use the GitHub issue tracker to submit bugs or request features

References

Here is an overview of some of the classic hex-file formats.

Authors

License

This project is licensed under the GNU General Public License v2.0

Contribution

If you contribute code to this project, you are implicitly allowing your code to be distributed under the GNU General Public License v2.0. You are also implicitly verifying that all code is your original work.

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

objutils-0.10.0.tar.gz (425.2 kB view details)

Uploaded Source

Built Distributions

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

objutils-0.10.0-cp314-cp314-win_arm64.whl (918.6 kB view details)

Uploaded CPython 3.14Windows ARM64

objutils-0.10.0-cp314-cp314-win_amd64.whl (945.5 kB view details)

Uploaded CPython 3.14Windows x86-64

objutils-0.10.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

objutils-0.10.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (987.1 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

objutils-0.10.0-cp314-cp314-macosx_11_0_arm64.whl (905.5 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

objutils-0.10.0-cp313-cp313-win_arm64.whl (820.6 kB view details)

Uploaded CPython 3.13Windows ARM64

objutils-0.10.0-cp313-cp313-win_amd64.whl (842.4 kB view details)

Uploaded CPython 3.13Windows x86-64

objutils-0.10.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (925.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

objutils-0.10.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (884.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

objutils-0.10.0-cp313-cp313-macosx_11_0_arm64.whl (819.1 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

objutils-0.10.0-cp312-cp312-win_arm64.whl (734.8 kB view details)

Uploaded CPython 3.12Windows ARM64

objutils-0.10.0-cp312-cp312-win_amd64.whl (750.7 kB view details)

Uploaded CPython 3.12Windows x86-64

objutils-0.10.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (813.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

objutils-0.10.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (781.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

objutils-0.10.0-cp312-cp312-macosx_11_0_arm64.whl (732.9 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

objutils-0.10.0-cp311-cp311-win_arm64.whl (649.0 kB view details)

Uploaded CPython 3.11Windows ARM64

objutils-0.10.0-cp311-cp311-win_amd64.whl (659.1 kB view details)

Uploaded CPython 3.11Windows x86-64

objutils-0.10.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (700.7 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

objutils-0.10.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (679.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

objutils-0.10.0-cp311-cp311-macosx_11_0_arm64.whl (646.7 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

objutils-0.10.0-cp310-cp310-win_arm64.whl (563.3 kB view details)

Uploaded CPython 3.10Windows ARM64

objutils-0.10.0-cp310-cp310-win_amd64.whl (568.2 kB view details)

Uploaded CPython 3.10Windows x86-64

objutils-0.10.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (588.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

objutils-0.10.0-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (577.4 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

objutils-0.10.0-cp310-cp310-macosx_11_0_arm64.whl (561.1 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

Details for the file objutils-0.10.0.tar.gz.

File metadata

  • Download URL: objutils-0.10.0.tar.gz
  • Upload date:
  • Size: 425.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for objutils-0.10.0.tar.gz
Algorithm Hash digest
SHA256 138787c7d5e1ceb50e3dc3d561e75c20418ebd4d4a34bb7d42542dbc3387d3e9
MD5 847fa5d79b9d6b57794e346f483d3dce
BLAKE2b-256 a5879a285c42bffcfca1ea6c800ac61aad35ce737223ef479a56a95137f6f8ad

See more details on using hashes here.

Provenance

The following attestation bundles were made for objutils-0.10.0.tar.gz:

Publisher: pythonapp.yml on christoph2/objutils

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file objutils-0.10.0-cp314-cp314-win_arm64.whl.

File metadata

  • Download URL: objutils-0.10.0-cp314-cp314-win_arm64.whl
  • Upload date:
  • Size: 918.6 kB
  • Tags: CPython 3.14, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for objutils-0.10.0-cp314-cp314-win_arm64.whl
Algorithm Hash digest
SHA256 4e8df446bb8816eeb64fc734fd99811db6a29a78239a86e01dbb54cdbb3ebb1b
MD5 efda692bd8d61decefb8317a7cdf36c3
BLAKE2b-256 42a55e5f2c71730fa9ededa6bc4de20dea61475b3a7803d9038d3204220bb317

See more details on using hashes here.

Provenance

The following attestation bundles were made for objutils-0.10.0-cp314-cp314-win_arm64.whl:

Publisher: pythonapp.yml on christoph2/objutils

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file objutils-0.10.0-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: objutils-0.10.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 945.5 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for objutils-0.10.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 52a06d8bea6c20cb647570a69c65eee73b40c0ea750e2c7e5deb20668ff93b49
MD5 7ce8f78d7c2a40e0545d6e188422bd7a
BLAKE2b-256 9fe1885086b84f6beebd161b52561b2ea69d9c63dc08462c934d6354c0aca758

See more details on using hashes here.

Provenance

The following attestation bundles were made for objutils-0.10.0-cp314-cp314-win_amd64.whl:

Publisher: pythonapp.yml on christoph2/objutils

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file objutils-0.10.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for objutils-0.10.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c7061518de792e73947e429ef159f6294f10a6de09830539aaf12e79ca3ddc33
MD5 8e8ff60c9521c1e8b11e35d824c41064
BLAKE2b-256 c18aa1c003318d51f2e0e350917e1a538933c888a8164681102da14721af9d0b

See more details on using hashes here.

Provenance

The following attestation bundles were made for objutils-0.10.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: pythonapp.yml on christoph2/objutils

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file objutils-0.10.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for objutils-0.10.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e6be3c8bfb851654bd7d7ada664bd8cc04bb1cfcdb45cb1219c43e2f9755b6fb
MD5 822f20455d565730d1fc0c980c6ff11e
BLAKE2b-256 61d6662e774371c705c6c0d537a2ea4a291273f64d0123bdb34e605ea4af71ad

See more details on using hashes here.

Provenance

The following attestation bundles were made for objutils-0.10.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:

Publisher: pythonapp.yml on christoph2/objutils

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file objutils-0.10.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for objutils-0.10.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 60b676476ff11260c5b97820ab54b247720bc19bdf8fd1f3285d5e841c63fcdb
MD5 2ce16a23fbf421b020d804401e9c956e
BLAKE2b-256 3ba1680bd54b5e0646562ee214931f84b74a29b93dafc2b45e4dc80c26afdc3c

See more details on using hashes here.

Provenance

The following attestation bundles were made for objutils-0.10.0-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: pythonapp.yml on christoph2/objutils

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file objutils-0.10.0-cp313-cp313-win_arm64.whl.

File metadata

  • Download URL: objutils-0.10.0-cp313-cp313-win_arm64.whl
  • Upload date:
  • Size: 820.6 kB
  • Tags: CPython 3.13, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for objutils-0.10.0-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 695674a83431e2c36f36be76cbf8ed2da492a05656484e3631794db72a0eb3c9
MD5 4197c003fe4accf1689683eb65d7ff11
BLAKE2b-256 a23280b7fbbe44509a8d970c2ecf1a55458d4b4d3ce410b2a16dbbb82be832fe

See more details on using hashes here.

Provenance

The following attestation bundles were made for objutils-0.10.0-cp313-cp313-win_arm64.whl:

Publisher: pythonapp.yml on christoph2/objutils

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file objutils-0.10.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: objutils-0.10.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 842.4 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for objutils-0.10.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 d303f724558b9cf547e6493dd8f235197e289496d956b449e5064eba71c4f492
MD5 a65c501ada7cc364b8d2a38eb1bc41bc
BLAKE2b-256 bf36bf6459486ed206985cdae9412650250c3a6664ead73e97df62202f5f8f9b

See more details on using hashes here.

Provenance

The following attestation bundles were made for objutils-0.10.0-cp313-cp313-win_amd64.whl:

Publisher: pythonapp.yml on christoph2/objutils

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file objutils-0.10.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for objutils-0.10.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c4bbbb5f135fd414b992140339c01b8dcb31bd4eb4888fc36deb534e4c5525f9
MD5 5d3ca431b68ba6b34eab61a84f4611e0
BLAKE2b-256 26707b4daff3de1259dfcd97d0a086edd54e54e9d77f76be7eed8c596b4bd2e4

See more details on using hashes here.

Provenance

The following attestation bundles were made for objutils-0.10.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: pythonapp.yml on christoph2/objutils

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file objutils-0.10.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for objutils-0.10.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 540b027fa4990f3dea3122034df1eefeff1d8eec3fdec8f9ab726d5896082ea5
MD5 95f1af2399852330400074e7a090d321
BLAKE2b-256 51625ab34de3b1efd57b2f1d830622717f4e88afd8714904b7b0667468a97b2d

See more details on using hashes here.

Provenance

The following attestation bundles were made for objutils-0.10.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:

Publisher: pythonapp.yml on christoph2/objutils

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file objutils-0.10.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for objutils-0.10.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a2b3c922c5dfd78d6418f26f979741d99d4a07b9498670ba7d88540e24ba8f7a
MD5 7fa861d39534d1780cec398452fba5dd
BLAKE2b-256 62f774e33b01d489b8ffa61b44a2164a22b2dd419e7370917d51b688ae3ba041

See more details on using hashes here.

Provenance

The following attestation bundles were made for objutils-0.10.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: pythonapp.yml on christoph2/objutils

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file objutils-0.10.0-cp312-cp312-win_arm64.whl.

File metadata

  • Download URL: objutils-0.10.0-cp312-cp312-win_arm64.whl
  • Upload date:
  • Size: 734.8 kB
  • Tags: CPython 3.12, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for objutils-0.10.0-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 d0a974a2a67b898e644f1c8d45e89f1baa46d9876cb02aca9f5ff0d83a2249a0
MD5 ed50f3bf3304d14d748a4c2d2ed691a8
BLAKE2b-256 deb61d5d301e9003b88c5c127718425be23c2daacae65b0599359bea9d2a09ca

See more details on using hashes here.

Provenance

The following attestation bundles were made for objutils-0.10.0-cp312-cp312-win_arm64.whl:

Publisher: pythonapp.yml on christoph2/objutils

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file objutils-0.10.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: objutils-0.10.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 750.7 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for objutils-0.10.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 3c9e5a32ed869e15af3e0d4eee070ea222de984ff7a7f71526d9742192dad561
MD5 8f72c1cbbab8e7f343ceac02496d5bd3
BLAKE2b-256 bd9ad57505f70798e6ea12725c08b5d31a4f2342010b292616feec005badb910

See more details on using hashes here.

Provenance

The following attestation bundles were made for objutils-0.10.0-cp312-cp312-win_amd64.whl:

Publisher: pythonapp.yml on christoph2/objutils

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file objutils-0.10.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for objutils-0.10.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d331534149c2343a3e6ece3a7ee1d99b974b637ea561454b44da82341cf20a5a
MD5 acf62e092b0d1f0db4ef3ac0d696006a
BLAKE2b-256 5b851c5b8eb0d2cb4397440ce6d0b48c76535d831587b927a127b7dd386f23cd

See more details on using hashes here.

Provenance

The following attestation bundles were made for objutils-0.10.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: pythonapp.yml on christoph2/objutils

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file objutils-0.10.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for objutils-0.10.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 6094cadde47776a29643817b6020bdc8f9a5246056a0642b7c5bcf132c8f063f
MD5 9d9694112052665a3037a845bd174c85
BLAKE2b-256 404b1b9a66b030297a4adc4a4f33cd957c8cdc9e4fc81d5d707f00d275e8eedb

See more details on using hashes here.

Provenance

The following attestation bundles were made for objutils-0.10.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:

Publisher: pythonapp.yml on christoph2/objutils

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file objutils-0.10.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for objutils-0.10.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 90a02e4e681e05aba7da0267f461ca85e391337f36c422ec36c15998683db870
MD5 df45adaeab3840657ee6c00a2be35bbb
BLAKE2b-256 71b0c7d77d20eeba8a23b92b219277eb92bb09d2656fa8299cfe12665e5f4e3e

See more details on using hashes here.

Provenance

The following attestation bundles were made for objutils-0.10.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: pythonapp.yml on christoph2/objutils

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file objutils-0.10.0-cp311-cp311-win_arm64.whl.

File metadata

  • Download URL: objutils-0.10.0-cp311-cp311-win_arm64.whl
  • Upload date:
  • Size: 649.0 kB
  • Tags: CPython 3.11, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for objutils-0.10.0-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 a8371a962863ad8424d123fede41f87eb388c79db63786068537e9a6702ae09b
MD5 d67b2ec7a337ac678aff9468fcabf5a5
BLAKE2b-256 7c81a73a28e2e2c89af0bdb87f5c8378db9a33ba3c393f0aeea8f33513ad21ce

See more details on using hashes here.

Provenance

The following attestation bundles were made for objutils-0.10.0-cp311-cp311-win_arm64.whl:

Publisher: pythonapp.yml on christoph2/objutils

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file objutils-0.10.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: objutils-0.10.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 659.1 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for objutils-0.10.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 f1ea281f3b0b1edf088f005333b5fb0210830c732b2b3ee69f95f75960547350
MD5 0e5387bdcaaacb81d50d6d9ff4db3867
BLAKE2b-256 a44f09e384addc539a4802f41aefdfba1771f5a8edbfef89b23272b7e5730395

See more details on using hashes here.

Provenance

The following attestation bundles were made for objutils-0.10.0-cp311-cp311-win_amd64.whl:

Publisher: pythonapp.yml on christoph2/objutils

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file objutils-0.10.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for objutils-0.10.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 062d2d1bffb653219775a015bb65917fb02b436c19fc86a4831e41e467420f32
MD5 2e2c9b0ddf31809c23b8015c9f3affe3
BLAKE2b-256 71e021647f3ff7e556671d9493c2db4eb69f6d870065f5f3963c39f19089a2ad

See more details on using hashes here.

Provenance

The following attestation bundles were made for objutils-0.10.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: pythonapp.yml on christoph2/objutils

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file objutils-0.10.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for objutils-0.10.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f5dd3f904ecc13ababfb92039c455b36c464c0f0241d952cc75a2675b612dfad
MD5 bc7c153148b752ac37d88c181da00c9e
BLAKE2b-256 66e95b9829bd9ffbb1746f068b10a010ea855e928659790fd322540dab7d3dfd

See more details on using hashes here.

Provenance

The following attestation bundles were made for objutils-0.10.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:

Publisher: pythonapp.yml on christoph2/objutils

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file objutils-0.10.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for objutils-0.10.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 36efe59262a24b4706ae3fd40c822e1b5ce08c3311adda7f361850fec9cc5311
MD5 5a5aea415422fd30e0db7373a9908d1f
BLAKE2b-256 8f2b7ce5649b7f460a9451bb7bd6cf105db9eb1d0f6208f8c625a1514e25623c

See more details on using hashes here.

Provenance

The following attestation bundles were made for objutils-0.10.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: pythonapp.yml on christoph2/objutils

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file objutils-0.10.0-cp310-cp310-win_arm64.whl.

File metadata

  • Download URL: objutils-0.10.0-cp310-cp310-win_arm64.whl
  • Upload date:
  • Size: 563.3 kB
  • Tags: CPython 3.10, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for objutils-0.10.0-cp310-cp310-win_arm64.whl
Algorithm Hash digest
SHA256 c5bf676c4db5a994a504862571f7be99220d0cda9aed6ecdbc59a0b7ace1e184
MD5 c1274fc0d6653e4201778f192af02106
BLAKE2b-256 6d383c61696da7cbfd35f6b677b4d3afa0cfbafee9f33e4592ab69822c051524

See more details on using hashes here.

Provenance

The following attestation bundles were made for objutils-0.10.0-cp310-cp310-win_arm64.whl:

Publisher: pythonapp.yml on christoph2/objutils

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file objutils-0.10.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: objutils-0.10.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 568.2 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for objutils-0.10.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 565a6948ca15ab6e5a442e8d560ae388ebbdf46d28c3c7e94f6a2cd295fd9319
MD5 70731e742acafc5aa0f38329f7373d21
BLAKE2b-256 ce826cf6b36e2825d7560bb25edb4a3b3c8462483c6e681f714e75fd2a05bae3

See more details on using hashes here.

Provenance

The following attestation bundles were made for objutils-0.10.0-cp310-cp310-win_amd64.whl:

Publisher: pythonapp.yml on christoph2/objutils

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file objutils-0.10.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for objutils-0.10.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3f6c7b6ee10acc79910f2783995ad69fbc01a4e73f301d639f4bfee599ea0683
MD5 67e21fba8876154b2dea18cf40ab2d76
BLAKE2b-256 cacbae2d7d807adbadb6c5b3ae5d7fdf2c141216959c296f3424ec293d02b095

See more details on using hashes here.

Provenance

The following attestation bundles were made for objutils-0.10.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: pythonapp.yml on christoph2/objutils

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file objutils-0.10.0-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for objutils-0.10.0-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 bee9a91b26253b5ed874a69c40b05b9a990fe596d99028cf714abd637a8dd125
MD5 f82fd336e03aa6f8f862de6b88f0b516
BLAKE2b-256 eaba31130bec5d371aa45759fed917a9392f68aef174383fd665262e1f979ed8

See more details on using hashes here.

Provenance

The following attestation bundles were made for objutils-0.10.0-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:

Publisher: pythonapp.yml on christoph2/objutils

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file objutils-0.10.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for objutils-0.10.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7d250d95434877591a2f225fb2c3547381a4cc6a79e6055245cc889d2cc4cdb3
MD5 46cf40936b483b8768b7be546262381e
BLAKE2b-256 10fa4cea15dbd55ddc716f60e1e99c49935076f803ec1b94afa8f2ce87a9b509

See more details on using hashes here.

Provenance

The following attestation bundles were made for objutils-0.10.0-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: pythonapp.yml on christoph2/objutils

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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