Skip to main content

A multifunctional all-in-one utility tool for managing internal Python objects, compatible with nearly all Python 3 versions.

Project description

Stars GitHub release License: MIT

pyobject - A multifunctional all-in-one utility tool for managing internal Python objects, compatible with nearly all Python 3 versions and all platforms (Windows, Linux, macOS, etc.).

[English | 中文]

Submodules:

pyobject.__init__ - Displays and outputs attribute values of Python objects.

pyobject.browser - Provides a visual interface to browse Python objects using tkinter.

pyobject.code - Provides tools for manipulating Python native bytecode.

pyobject.search - Implements the utility for locating the path to a specific object.

pyobject.objproxy - Implement a generic object proxy that can replace any Python object, including modules, functions, and classes

pyobject.pyobj_extension - A C extension module offering functions to manipulate low-level Python objects.

Functions:

describe(obj, level=0, maxlevel=1, tab=4, verbose=False, file=sys.stdout):

Printing all attributes of an object in attribute: value format for debugging purpose. The alias is desc().
- maxlevel: The depth of attribute levels to print. - tab: Number of spaces for indentation, default is 4. - verbose: Boolean indicating whether to print special methods (e.g., __init__). - maxlength: The maximum output length of one object. - ignore_funcs: If set to True, methods or functions of the object will not be output. - file: A file-like object for output.

browse(object, verbose=False, name=‘obj’):

Browse any Python objects in a GUI using tkinter. - verbose: Same as in describe(), whether to print special methods.

The GUI of browse() function is:

GUI of browse()

GUI of browse()

bases(obj, level=0, tab=4):

Prints base classes and the inheritance order of an object. - tab: Number of spaces for indentation, default is 4.

Functions for searching objects:

make_list(start_obj, recursions=2, all=False):

Creates a list of objects without duplicates. - start: The object to start searching from. - recursion: Number of recursions. - all: Whether to include special attributes (e.g., __init__) in the list.

make_iter(start_obj, recursions=2, all=False):

Similar to make_list, but creates an iterator, which may contain duplicates.

search(obj, start, recursions=3, search_str=False):

Searches for objects starting from a specified starting point. For example, search(os, sys, 3) returns results like ["sys.modules['site'].os", "sys.modules['os']", ...]. - obj: The object to search for. - start: The starting object. - recursion: Number of recursions. - search_str: Whether to search substrings within strings.

Class: pyobject.Code

The Code class provides a wrapper for Python bytecode objects to manipulate them.

Python’s internal bytecode object, CodeType (e.g., func.__code__), is immutable. The Code class offers a mutable bytecode object and a set of methods to simplify operations on the underlying bytecode.

Unlike Java bytecode, Python bytecode is not cross-version compatible. Bytecode generated by different versions of the Python interpreter is incompatible.

The Code class provides a universal interface for bytecode, supporting all Python versions from 3.6 to 3.14 (including PyPy’s .pyc format), simplifying complex version compatibility issues.

Constructor (def __init__(self, code=None))

The Code class can be initialized with an existing CodeType object or another Code instance. If no argument is provided, a default CodeType object is created.

Attributes

  • _code: The internal bytecode of the current Code object. Use exec(c._code) or exec(c.to_code()) instead of directly using exec(c).

The following are attributes of Python’s built-in bytecode (also attributes of the Code object). While Python’s internal CodeType bytecode is immutable and these attributes are read-only, the Code object is mutable, meaning these attributes can be modified:

  • co_argcount: The number of positional arguments (including those with default values).

  • co_cellvars: A tuple containing the names of local variables referenced by nested functions.

  • co_code: A bytes object representing the sequence of bytecode instructions, storing the actual binary bytecode.

  • co_consts: A tuple containing the literals used by the bytecode.

  • co_filename: The filename of the source code being compiled.

  • co_firstlineno: The first line number of the source code corresponding to the bytecode. Used internally by the interpreter in combination with co_lnotab to output precise line numbers in tracebacks.

  • co_flags: An integer encoding multiple flags used by the interpreter.

  • co_freevars: A tuple containing the names of free variables.

  • co_kwonlyargcount: The number of keyword-only arguments.

  • co_lnotab: A string encoding the mapping of bytecode offsets to line numbers (replaced by co_linetable in Python 3.10).

  • co_name: The name of the function/class corresponding to the bytecode.

  • co_names: A tuple containing the names used by the bytecode.

  • co_nlocals: The number of local variables used by the function (including arguments).

  • co_stacksize: The stack size required to execute the bytecode.

  • co_varnames: A tuple containing the names of local variables (starting with argument names).

Attributes introduced in Python 3.8 and later: - co_posonlyargcount: The number of positional-only arguments, introduced in Python 3.8. - co_linetable: Line number mapping data, introduced in Python 3.10 as a replacement for co_lnotab. - co_exceptiontable: Exception table data, introduced in Python 3.11. - co_qualname: The qualified name of the bytecode, introduced in Python 3.11.

Methods

Core Methods

  • exec(globals_=None, locals_=None): Executes the code object within the provided global and local scope dictionaries.

  • eval(globals_=None, locals_=None): Executes the code object within the provided global and local scope dictionaries and returns the result.

  • copy(): Creates a copy of the Code object and returns the duplicate.

  • to_code(): Converts the Code instance back to a built-in CodeType object, equivalent to c._code.

  • to_func(globals_=None, name=None, argdefs=None, closure=None, kwdefaults=None): Converts the code object into a Python function. The parameters are the same as those used when instantiating Python’s built-in FunctionType.

  • get_flags(): Returns a list of flag names for the co_flags attribute, e.g., ["NOFREE"].

  • get_sub_code(name): Searches for sub-code objects (e.g., functions or class definitions) in the co_consts attribute. This method does not perform recursive searches. Returns the found Code object or raises a ValueError if not found.

Serialization

  • to_pycfile(filename): Dumps the code object into a .pyc file using the marshal module.

  • from_pycfile(filename): Creates a Code instance from a .pyc file.

  • from_file(filename): Creates a Code instance from a .py or .pyc file.

  • pickle(filename): Serializes the Code object into a pickle file.

Debugging and Inspection

  • show(*args, **kw): Internally calls pyobject.desc to display the attributes of the code object. The parameters are the same as those used in desc().

  • info(): Internally calls dis.show_code to display basic information about the bytecode.

  • dis(*args, **kw): Calls the dis module to output the disassembly of the bytecode, equivalent to dis.dis(c.to_code()).

  • decompile(version=None, *args, **kw): Calls the uncompyle6 library to decompile the code object into source code. (The uncompyle6 library is optional when installing the pyobject package.)

Factory Functions

  • fromfunc(function): Creates a Code instance from a Python function object, equivalent to Code(func.__code__).

  • fromstring(string, mode='exec', filename=''): Creates a Code instance from a source code string. The parameters are the same as those used in the built-in compile function, which is called internally.

Compatibility Details

  • Attribute co_lnotab: In Python 3.10 and later, attempts to set the co_lnotab attribute will automatically be converted into setting the co_linetable attribute.

Example usage: (excerpted from the doctest):

>>> def f():print("Hello")
>>> c=Code.fromfunc(f) # or c=Code(f.__code__)
>>> c.co_consts
(None, 'Hello')
>>> c.co_consts=(None, 'Hello World!')
>>> c.exec()
Hello World!
>>>
>>> # Save to pickle files
>>> import os,pickle
>>> temp=os.getenv('temp')
>>> with open(os.path.join(temp,"temp.pkl"),'wb') as f:
...     pickle.dump(c,f)
...
>>> # Execute bytecodes from pickle files
>>> f=open(os.path.join(temp,"temp.pkl"),'rb')
>>> pickle.load(f).to_func()()
Hello World!
>>> # Convert to pyc files and import them
>>> c.to_pycfile(os.path.join(temp,"temppyc.pyc"))
>>> sys.path.append(temp)
>>> import temppyc
Hello World!
>>> Code.from_pycfile(os.path.join(temp,"temppyc.pyc")).exec()
Hello World!

Object Proxy Classes ObjChain and ProxiedObj

pyobject.objproxy is a powerful tool for proxying any other object and generating the code that calls the object. It is capable of recording detailed access and call history of the object.
ObjChain is a class encapsulation used to manage multiple ProxiedObj objects, where ProxiedObj is a class that acts as a proxy to other objects.

Example usage:

from pyobject import ObjChain

chain = ObjChain(export_attrs=["__array_struct__"])
np = chain.new_object("import numpy as np", "np")
plt = chain.new_object("import matplotlib.pyplot as plt", "plt",
                        export_funcs=["show"])

# Testing the pseudo numpy and matplotlib modules
arr = np.array(range(1, 11))
arr_squared = arr ** 2
print(np.mean(arr)) # Output the average value

plt.plot(arr, arr_squared) # Plot the graph of y=x**2
plt.show()

# Display the auto-generated code calling numpy and matplotlib libraries
print(f"Code:\n{chain.get_code()}\n")
print(f"Optimized:\n{chain.get_optimized_code()}")

Output:

Code: # Unoptimized code that contains all detailed access records for objects
import numpy as np
import matplotlib.pyplot as plt
var0 = np.array
var1 = var0(range(1, 11))
var2 = var1 ** 2
var3 = np.mean
var4 = var3(var1)
var5 = var1.mean
var6 = var5(axis=None, dtype=None, out=None)
ex_var7 = str(var4)
var8 = plt.plot
var9 = var8(var1, var2)
var10 = var1.to_numpy
var11 = var1.values
var12 = var1.shape
var13 = var1.ndim
...
var81 = var67.__array_struct__
ex_var82 = iter(var70)
ex_var83 = iter(var70)
var84 = var70.mask
var85 = var70.__array_struct__
var86 = plt.show
var87 = var86()

Optimized: # Optimized code
import numpy as np
import matplotlib.pyplot as plt
var1 = np.array(range(1, 11))
plt.plot(var1, var1 ** 2)
plt.show()

Detailed Usage

``ObjChain``
- ObjChain(export_funcs=None, export_attrs=None): Creates an ObjChain object, where export_funcs is a list of functions to be exported at the global level, and export_attrs is a list of attributes to be exported at the global level. Since these are at global scope, they are effective for all variables. - new_object(code_line, name, export_funcs=None, export_attrs=None, use_target_obj=True): Adds a new object and returns a proxy object of type ProxiedObj that can be directly used as a normal object.
code_line is the code that needs to be executed to obtain the object (e.g., "import numpy as np"), and name is the variable name in which the object is stored after execution (e.g., "np").
export_funcs and export_attrs are the lists of methods and attributes for this object that need to be exported.
use_target_obj indicates whether to create a proxy template object in real-time and operate on it (see the “Implementation” section for details). - add_existing_obj(obj, name): Adds an existing object and returns a proxy object of type ProxiedObj.
obj is the object to be added, and name is an arbitrary variable name that will be used to refer to this object in the code generated by ObjChain. use_exported_obj determines whether not to pass the ProxiedObj object as a calling parameter to __target_obj. - get_code(start_lineno=None, end_lineno=None): Retrieves the original code generated by ObjChain. start_lineno and end_lineno are line numbers starting from 0, and if not specified, they default to the beginning and end. - get_optimized_code(no_optimize_vars=None, remove_internal=True, remove_export_type=True): Retrieves the optimized code. Internally, a directed acyclic graph (DAG) is used for optimization (see the “Implementation” section).
no_optimize_vars: A list of variable names that should not be removed, such as ["temp_var"].
remove_internal: Whether to remove internal code generated during the execution of the code. For example, with plt.plot and arr, arr2 being ProxiedObj objects, if remove_internal is False, the internal code generated by accessing arr and arr2 during the call plt.plot(arr, arr2) (such as var13 = arr.ndim) will not be removed.
remove_export_type: Whether to remove unnecessary type exports, such as str(var).

``ProxiedObj``

ProxiedObj is the type of object returned by ObjChain’s new_object() and add_existing_obj() methods. It can be used as a substitute for any regular object, though it is generally not recommended to directly use the methods and properties of the ProxiedObj class itself.

Implementation Details

The ObjChain class tracks all objects added to an ObjChain as well as the objects derived from them, and it maintains a namespace dictionary containing the tracked objects to be used when calling exec to execute its own generated code.
Each ProxiedObj object belongs to an ObjChain. All special magic methods (such as __call__, __getattr__) of the ProxiedObj class are overridden. The overridden methods both record the call history into the associated ObjChain and call the same magic method on the object’s proxy target (__target_obj, if available).
When operations on a ProxiedObj return a new object (such as when obj.attr returns a new attribute), the new object will also be tracked by the ObjChain, forming a long chain of all derived objects starting from the first object within the ObjChain.
If the ProxiedObj has a __target_obj attribute, magic method calls on the ProxiedObj will synchronously call the corresponding magic method on the __target_obj and pass the result to the next ProxiedObj as its __target_obj property.
If the __target_obj attribute does not exist, the ProxiedObj will not synchronously call the magic method. Instead, it will generate a record of the call code, temporarily storing it in the ProxiedObj until an export (export) method or attribute is needed, at which point all accumulated code is executed at once and the result is returned.

Principle of Code Optimization

In the code, the dependency relationship between variables can be represented as a graph. For instance, the statement y = func(x) can be represented as an edge from the node x to y.
However, since in the code generated by ProxiedObj each object corresponds to a unique variable and the variables cannot be reassigned (similar to JavaScript’s const), the result is a directed acyclic graph (DAG).
During optimization, variables that affect 0 or 1 other variables (i.e., that point to 0-1 other nodes) are first identified. If a variable affects only one other variable, its value is inlined into the dependent statement; otherwise, the variable is simply removed.
For example:
temp_var = [1, 2, 3]
unused_var = func(temp_var)
Here, temp_var only has one edge pointing to unused_var, while unused_var does not point to any other node.
By inlining the value of temp_var into func(temp_var), the code becomes unused_var = func([1,2,3]). After removing unused_var, the optimized code is func([1, 2, 3]).

Module: pyobj_extension

This module is written in C and can be imported directly using import pyobject.pyobj_extension as pyobj_extension. It includes the following functions:

convptr(pointer):

Converts an integer pointer to a Python object, as a reverse of id().

py_decref(obj):

Decreases the reference count of an object.

py_incref(obj):

Increases the reference count of an object.

getrealrefcount(obj):

Get the actual reference count of the object before calling this function.
Unlike sys.getrefcount(), this function does not consider the additional reference count that is created when the function is called. (The difference is the constant _REFCNT_DELTA)
For example, getrealrefcount([]) will return 0, since after the call finishes, [] will never be referenced by any objects, whereas sys.getrefcount([]) will return 1.
Additionally, a=[]; getrealrefcount(a) will return 1 instead of 2.

setrefcount(obj, n):

Set the actual reference count of the object (before calling the function) to n.
This is the opposite of getrealrefcount() and also does not consider the additional reference count created when the function is called.

getrefcount_nogil(obj) and setrefcount_nogil(obj, ref_data):

In the GIL-free version of Python 3.13+, get and set reference counts, where ref_data is (ob_ref_local, ob_ref_shared), without considering the reference counts added during the call.

Warning: Improper use of these functions above may lead to crash of the intepreter.

list_in(obj, lst):

Determine whether obj is in the sequence lst. Compared to the built-in Python call obj in lst that invokes the == operator (__eq__()) multiple times, this function directly compares the pointers to improve the performance.

get_string_intern_dict():

Return the internal dictionary for interning strings (sys.intern()).

Current ``pyobject`` Version: 1.3.4

Change Log

2026-1-22(v1.3.4): Added get_string_intern_dict() to pyobject.pyobj_extension module (available for 3.12+).
2026-1-4(v1.3.3): Improved the support for Python 3.14 and describe() function. Adjusted the minimum supported Python version to 3.6.
2025-6-23(v1.3.2): Added the use_exported_obj parameter to the pyobject.objproxy module and further optimized the performance.
2025-6-6(v1.3.0): Optimized the performance of the pyobject.objproxy module.
2025-4-30(v1.2.9): Improved and enhanced the sub-module pyobject.objproxy, and renamed the sub-module pyobject.code_ to pyobject.code.
2025-3-31(v1.2.8): Renamed pyobject.super_proxy to pyobject.objproxy and officially released it; modified the pyobject.pyobj_extension module.
2025-3-6 (v1.2.7): Added support for special class attributes excluded from dir() (such as __flags__, __mro__) in pyobject.browser and modified the pyobj_extension module.
2025-2-15 (v1.2.6): Fixed the lag issue when browsing large objects in pyobject.browser, improved the pyobject.code_ module, introduced a new reflection library pyobject.super_proxy currently in development, and added getrefcount_nogil and setrefcount_nogil to the pyobj_extension module.
2024-10-24 (v1.2.5): Fixed high DPI support for pyobject.browser on Windows, modified the pyobj_extension module, along with other improvements.
2024-08-12 (v1.2.4): Added support for Python 3.10 and above in pyobject.code_; further optimized search performance in the search module, along with various other fixes and improvements.
2024-06-20 (v1.2.3): Updated the .pyc file packing tool in the test directory of the package, and enhanced the object browser in pyobject.browser with new features such as displaying lists and dictionary items, back, forward, refresh page options, as well as adding, editing, and deleting items.
2022-07-25 (v1.2.2): Added a C language module pyobj_extension for manipulating Python’s underlying object references and object pointers.
2022-02-02 (v1.2.0): Fixed several bugs and optimized the performance of the search module; added the Code class in code_, introduced editing properties functionality in browser, and added doctests for the Code class.

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

pyobject-1.3.4.tar.gz (56.6 kB view details)

Uploaded Source

Built Distributions

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

pyobject-1.3.4-pp311-pypy311_pp73-win_amd64.whl (54.1 kB view details)

Uploaded PyPyWindows x86-64

pyobject-1.3.4-pp38-pypy38_pp73-win_amd64.whl (54.2 kB view details)

Uploaded PyPyWindows x86-64

pyobject-1.3.4-cp314-cp314t-win_amd64.whl (55.6 kB view details)

Uploaded CPython 3.14tWindows x86-64

pyobject-1.3.4-cp314-cp314-win_amd64.whl (54.9 kB view details)

Uploaded CPython 3.14Windows x86-64

pyobject-1.3.4-cp313-cp313t-win_amd64.whl (54.9 kB view details)

Uploaded CPython 3.13tWindows x86-64

pyobject-1.3.4-cp313-cp313-win_amd64.whl (54.2 kB view details)

Uploaded CPython 3.13Windows x86-64

pyobject-1.3.4-cp312-cp312-win_amd64.whl (54.1 kB view details)

Uploaded CPython 3.12Windows x86-64

pyobject-1.3.4-cp311-cp311-win_amd64.whl (54.0 kB view details)

Uploaded CPython 3.11Windows x86-64

pyobject-1.3.4-cp310-cp310-win_amd64.whl (54.2 kB view details)

Uploaded CPython 3.10Windows x86-64

pyobject-1.3.4-cp310-cp310-win32.whl (53.4 kB view details)

Uploaded CPython 3.10Windows x86

pyobject-1.3.4-cp39-cp39-win_amd64.whl (54.0 kB view details)

Uploaded CPython 3.9Windows x86-64

pyobject-1.3.4-cp39-cp39-win32.whl (53.5 kB view details)

Uploaded CPython 3.9Windows x86

pyobject-1.3.4-cp38-cp38-win_amd64.whl (54.0 kB view details)

Uploaded CPython 3.8Windows x86-64

pyobject-1.3.4-cp38-cp38-win32.whl (53.4 kB view details)

Uploaded CPython 3.8Windows x86

pyobject-1.3.4-cp37-cp37m-win_amd64.whl (54.1 kB view details)

Uploaded CPython 3.7mWindows x86-64

pyobject-1.3.4-cp37-cp37m-win32.whl (53.5 kB view details)

Uploaded CPython 3.7mWindows x86

pyobject-1.3.4-cp36-cp36m-win_amd64.whl (54.1 kB view details)

Uploaded CPython 3.6mWindows x86-64

pyobject-1.3.4-cp36-cp36m-win32.whl (57.0 kB view details)

Uploaded CPython 3.6mWindows x86

File details

Details for the file pyobject-1.3.4.tar.gz.

File metadata

  • Download URL: pyobject-1.3.4.tar.gz
  • Upload date:
  • Size: 56.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for pyobject-1.3.4.tar.gz
Algorithm Hash digest
SHA256 d66936df2dcc062c38e3978b39ef2f9102ea3b0335118c9ca7806654a8f9d130
MD5 60490c02f0606643eeb2eaecc8fdd616
BLAKE2b-256 ad7205d0c6200cc427e0d6df3f0d28866d58cab52b10a8b1578e76ee7135a769

See more details on using hashes here.

File details

Details for the file pyobject-1.3.4-pp311-pypy311_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for pyobject-1.3.4-pp311-pypy311_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 5b0539fac9e493327984caadccc6f712b6b69d66579680c3e57289ff6f69c496
MD5 c343b1c0e35f5d25588d2653d68e53b9
BLAKE2b-256 235ff87a632413223e3eafee08411a9ebeb73914cbc41f03501550e2753cb952

See more details on using hashes here.

File details

Details for the file pyobject-1.3.4-pp38-pypy38_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for pyobject-1.3.4-pp38-pypy38_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 43b821cd9b6b2261cfa344daecc4f04af8fea9a1303af21811fa8844328c01ee
MD5 e3a7e007cd381303bda7514ab6f3d3b7
BLAKE2b-256 08ffa0fa549c013479dcea556d1e763c28e15e67368f6bc100735c13a0ceb6c7

See more details on using hashes here.

File details

Details for the file pyobject-1.3.4-cp314-cp314t-win_amd64.whl.

File metadata

  • Download URL: pyobject-1.3.4-cp314-cp314t-win_amd64.whl
  • Upload date:
  • Size: 55.6 kB
  • Tags: CPython 3.14t, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for pyobject-1.3.4-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 8550116cac01e3e7f6f078410610ceab47ad162275786979698c4ead59a3cc8e
MD5 4e59961b048d0857cd3e0525067d378a
BLAKE2b-256 9191cf88fbde5d0db892e9fe459ed3e284dfe59054ab92a9baf53b1d5fcecd83

See more details on using hashes here.

File details

Details for the file pyobject-1.3.4-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: pyobject-1.3.4-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 54.9 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for pyobject-1.3.4-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 44fbe678b5f6db2c61c4dc0c31fd6b1359938456aca45bd8fd6136db6b748e19
MD5 d1ad882ea8ced7e8ea0600964329743d
BLAKE2b-256 118806376afbe921e7f45da06d391ed533558c6e3d5a3752e12923cb917366e0

See more details on using hashes here.

File details

Details for the file pyobject-1.3.4-cp313-cp313t-win_amd64.whl.

File metadata

  • Download URL: pyobject-1.3.4-cp313-cp313t-win_amd64.whl
  • Upload date:
  • Size: 54.9 kB
  • Tags: CPython 3.13t, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for pyobject-1.3.4-cp313-cp313t-win_amd64.whl
Algorithm Hash digest
SHA256 851c49384daedc444473640a9cc3db264aac5b64da3e9b01f742a2e1f821d375
MD5 927b47d44723c622cbdd1062a4126465
BLAKE2b-256 99b5166b1b9025743998205a040dbff47e7e61a86821ec8c8678355cfabb66f9

See more details on using hashes here.

File details

Details for the file pyobject-1.3.4-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: pyobject-1.3.4-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 54.2 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for pyobject-1.3.4-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 c3b0ee5262739207dbaf9e4cb759a043b50fbd55462eeefe2d6adf9110775826
MD5 b125ffe4c50a200adc18a533c29a407d
BLAKE2b-256 3b740a1b21f4000143e935a0fb9f0380865f8ae41b9ef3d615a168b68b4474bc

See more details on using hashes here.

File details

Details for the file pyobject-1.3.4-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: pyobject-1.3.4-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 54.1 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for pyobject-1.3.4-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 994fa915a13e14b58ca6da144344ddc9cb306a81c97063bf4402626321a7be92
MD5 e04e6e514e808fd36a3d9a5e509703ca
BLAKE2b-256 ce9be6f28deeec8945a4277db7be62edec3be6b2ba853249e0889f2ad63f7e98

See more details on using hashes here.

File details

Details for the file pyobject-1.3.4-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: pyobject-1.3.4-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 54.0 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for pyobject-1.3.4-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 66bb44a9e678f9f0973315ff246ed3242803bb9ee3e7d4df9723a4aa47eab18e
MD5 8a2233948ffb70c77df8cdfdf88de754
BLAKE2b-256 87bce781f9149d41a44ac40831bf77e5c49947a025c6c46df6d14e613aa8d5f7

See more details on using hashes here.

File details

Details for the file pyobject-1.3.4-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: pyobject-1.3.4-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 54.2 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for pyobject-1.3.4-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 26bb9770dcc8d4f79ca78c22fd06f8e9a1a690236fa9bdb65de10cebf04728a7
MD5 2f93b469966be6b72b7b53b9bac4db1f
BLAKE2b-256 f7b67d5793254eb699120fed69d4e6192aa16a7ec950c15dd0bb45bbbd875264

See more details on using hashes here.

File details

Details for the file pyobject-1.3.4-cp310-cp310-win32.whl.

File metadata

  • Download URL: pyobject-1.3.4-cp310-cp310-win32.whl
  • Upload date:
  • Size: 53.4 kB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for pyobject-1.3.4-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 44dd4eb35e96f549ae37121b3083ca7eea52c6fb86bf013923471b8b6e9efabb
MD5 c5d3d49d83526a011510af1a78617529
BLAKE2b-256 b939dcafe41d6a511d244d7c7ece46f1aa3c5132ffe087f6b9b3fca6f51e4c80

See more details on using hashes here.

File details

Details for the file pyobject-1.3.4-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: pyobject-1.3.4-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 54.0 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for pyobject-1.3.4-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 b9051ed471e598d1a0672ef626add4a62f3b930488f973fc1663518116e342fc
MD5 56fa058c571533693f91ff2bea719a63
BLAKE2b-256 28f9ee0645d44f1d5ecdca20eae6c0d04448d270d47c2f361f298df3c8bf4594

See more details on using hashes here.

File details

Details for the file pyobject-1.3.4-cp39-cp39-win32.whl.

File metadata

  • Download URL: pyobject-1.3.4-cp39-cp39-win32.whl
  • Upload date:
  • Size: 53.5 kB
  • Tags: CPython 3.9, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for pyobject-1.3.4-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 9305fad10da7013e3d2fb2102c85c66ab2f330665d5a69f71e498012fbd5bb24
MD5 283b45bbc28dfc473fbb6d0abbbbaab0
BLAKE2b-256 1a67b4a7afbdbe21177a53cc12a2dca62a89590213d404ba60405bf9ae07bc47

See more details on using hashes here.

File details

Details for the file pyobject-1.3.4-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: pyobject-1.3.4-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 54.0 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for pyobject-1.3.4-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 2db6355f728f87138ac184296cb4436d7e61b3d27cb8caec8e8ac0f2204f2a09
MD5 791fd0a6e38a282d0ce2aa2eb893f9d7
BLAKE2b-256 62c43fe0ed206ce248a16556728c9def0a8a3791954ccce2b7dfe2e382e41f73

See more details on using hashes here.

File details

Details for the file pyobject-1.3.4-cp38-cp38-win32.whl.

File metadata

  • Download URL: pyobject-1.3.4-cp38-cp38-win32.whl
  • Upload date:
  • Size: 53.4 kB
  • Tags: CPython 3.8, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for pyobject-1.3.4-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 1408b3cadd5f5ef85035eb04750a424b20648af03fd8d7383743058d21025b3c
MD5 89d18a8af45f453523f101a5e37db1da
BLAKE2b-256 362e635a5927a6afdd734dfe46ed82c12281847a97c41a0ae49b46d154ee0ab7

See more details on using hashes here.

File details

Details for the file pyobject-1.3.4-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: pyobject-1.3.4-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 54.1 kB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for pyobject-1.3.4-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 daf7c2b650b78c888cd7b2e5bdf06d115506491d67c75a9d4977205e1dc9a0eb
MD5 4790935fcd57261e0c71d753e2a48399
BLAKE2b-256 3d0ff2a6ee06366d72f7491d45a4fcf3e36c279603de0bec2dd15f33f29eb263

See more details on using hashes here.

File details

Details for the file pyobject-1.3.4-cp37-cp37m-win32.whl.

File metadata

  • Download URL: pyobject-1.3.4-cp37-cp37m-win32.whl
  • Upload date:
  • Size: 53.5 kB
  • Tags: CPython 3.7m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for pyobject-1.3.4-cp37-cp37m-win32.whl
Algorithm Hash digest
SHA256 0d69bf5fb64cea0ab443bdfafc179bd6331c38870a7434b8b8b41a04771f9344
MD5 ab1f11379f560cd4cf991ddde079ce54
BLAKE2b-256 0fcd8d9867d250676df0bc8f2169786817dbfe61a4f78a558c17813a2cd3776c

See more details on using hashes here.

File details

Details for the file pyobject-1.3.4-cp36-cp36m-win_amd64.whl.

File metadata

  • Download URL: pyobject-1.3.4-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 54.1 kB
  • Tags: CPython 3.6m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for pyobject-1.3.4-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 5b9d041a2bab85ade5457cade45dfa93d9b0a2682a22dea09b8e2bcb7fc5b049
MD5 5e9d641c31c188ef00be1b8d2652ca44
BLAKE2b-256 0179c18322a8a45a73486eac305d4171e37ee771c586fca934bd435633f2fa8c

See more details on using hashes here.

File details

Details for the file pyobject-1.3.4-cp36-cp36m-win32.whl.

File metadata

  • Download URL: pyobject-1.3.4-cp36-cp36m-win32.whl
  • Upload date:
  • Size: 57.0 kB
  • Tags: CPython 3.6m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for pyobject-1.3.4-cp36-cp36m-win32.whl
Algorithm Hash digest
SHA256 ee6ca4eb1229a43d075e913cdda9bc26a209df164573448bbfc72bfd9d703544
MD5 28c49338ebd68d561907fe3e893db616
BLAKE2b-256 4daac28a23e0f19266a6e5d454d45d00a213c455d581d91ced8fe6e131d7aa24

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