Skip to main content

Lightweight Python bindings for the TG geometry library

Project description

ToGo logo

Python bindings for TG (Geometry library for C - Fast point-in-polygon)

ToGo is a high-performance Python library for computational geometry, providing a Cython wrapper around the above-mentioned C library.

Note on pronunciation: "ToGo" is pronounced like the country Togo ("TOH-go"), not like "to go".

The main goal is to offer a Pythonic, object-oriented, fast and memory-efficient library for geometric operations, including spatial predicates, format conversions, and spatial indexing. ToGo's API is flexible and allows you to reason in either TG concepts (if you're familiar with the TG library) or Shapely conventions (the de facto standard for geospatial work in Python)—whichever fits your workflow best.

See SHAPELY_API.md for more details on Shapely compatibility. See the "Error Behavior vs Shapely" section in SHAPELY_API.md for overlay and predicate compatibility notes. See CHANGELOG.md for version-by-version release notes.

Installation

pip install togo

Features

  • Fast and efficient geometric operations
  • Support for standard geometry types: Point, Line, Ring, Polygon, and their multi-variants
  • Flexible API supporting both TG and Shapely conventions
  • Geometric predicates: contains, intersects, covers, touches, etc. — accept any wrapper type directly (no manual .as_geometry() conversion needed)
  • Format conversion between WKT, GeoJSON, WKB, and HEX
  • Spatial indexing for accelerated queries
  • Memory-efficient C implementation with Python-friendly interface
  • Advanced operations via libgeos integration (buffer, unary union, simplify, centroid, convex_hull, etc.)
  • Distance and proximity operations (nearest_points, shortest_line, project)
  • MultiPolygon and MultiLineString are real Python classes — isinstance() checks work correctly
  • Geometry equality via == operator consistent with Shapely semantics

Basic Usage

ToGo's API supports multiple styles of interaction. You can use Shapely-like conventions for familiarity, TG-like conventions if you're already familiar with that library, or mix both as needed.

Creating Geometries

from togo import Point, LineString, Polygon, Ring, Poly, Geometry

# Shapely-like syntax
point = Point(1.0, 2.0)
line = LineString([(0, 0), (1, 1), (2, 2)])
poly = Polygon([(0, 0), (4, 0), (4, 4), (0, 4), (0, 0)])

# TG-like syntax with Ring and Poly
ring = Ring([(0,0), (10,0), (10,10), (0,10), (0,0)])
polygon = Poly(ring)

# Direct Geometry creation from formats
geom = Geometry("POINT(1 2)", fmt='wkt')
geom2 = Geometry('{"type":"Point","coordinates":[1,2]}', fmt='geojson')

Working with Geometries

from togo import Point, Polygon

# Access properties (works with both API styles)
point = Point(1.0, 2.0)
print(point.geom_type)     # 'Point'
print(point.bounds)        # (1.0, 2.0, 1.0, 2.0)
print(point.coords[0])     # (1.0, 2.0)  — indexable coordinate sequence

poly = Polygon([(0, 0), (4, 0), (4, 4), (0, 4), (0, 0)])
print(poly.area)           # 16.0
print(poly.length)         # 16.0

# Convert between formats
print(point.to_wkt())      # 'POINT (1 2)'
print(point.to_geojson())  # '{"type":"Point","coordinates":[1.0,2.0]}'

# Spatial predicates — wrapper objects are accepted directly, no .as_geometry() needed
if poly.contains(point):
    print("Polygon contains point!")

if poly.intersects(Polygon([(3, 3), (5, 3), (5, 5), (3, 5), (3, 3)])):
    print("Polygons intersect!")

# Polygon.boundary — exterior ring as a LineString
boundary = poly.boundary
print(boundary.length)     # perimeter of polygon

# Polygon.from_bounds — create a rectangle from a bounding box
bbox = Polygon.from_bounds(0, 0, 10, 5)
print(bbox.area)           # 50.0

# Centroid (Shapely-compatible)
centroid = poly.centroid  # Returns a Point geometry
print(centroid.to_wkt())  # e.g., 'POINT (2 2)'

# Convex hull (Shapely-compatible)
from togo import convex_hull
concave_poly = Polygon([(0, 0), (2, 0), (2, 2), (1, 1), (0, 2), (0, 0)])
hull = convex_hull(concave_poly)
print(hull.to_wkt())  # 'POLYGON((0 0,2 0,2 2,0 2,0 0))'

# Binary union (Shapely-compatible)
other = Polygon([(3, 3), (5, 3), (5, 5), (3, 5), (3, 3)])
merged = poly.union(other)
print(merged.geom_type)

You can also call the module-level helper with from togo import union and then union(poly, other).

Core Classes

Geometry

The base class that wraps tg_geom structures and provides core operations:

  • Create geometries directly from WKT, GeoJSON, HEX, and other supported serialized formats.
  • Use common predicates such as intersects(), contains(), and within() directly on Geometry instances.
  • Convert geometries back to WKT/GeoJSON/WKB using to_wkt(), to_geojson(), and to_wkb().
  • Index collection-like geometries such as GeometryCollection, MultiLineString, and MultiPolygon using geom[idx].
  • High-risk accessor, predicate, and overlay paths now fail with managed exceptions when used on uninitialized base Geometry() objects.

Point

from togo import Point

# Create a point
p = Point(1.0, 2.0)

# Access coordinates
print(f"X: {p.x}, Y: {p.y}")

# Get as a tuple
print(p.as_tuple())

# Convert to a Geometry object
geom = p.as_geometry()
print(geom.type_string())

Segment

from togo import Segment, Point

# Create a segment from two points (or tuples)
seg = Segment(Point(0, 0), Point(1, 1))
# Or using tuples
tuple_seg = Segment((0, 0), (1, 1))

# Access endpoints
print(seg.a)  # Point(0, 0)
print(seg.b)  # Point(1, 1)

# Get the bounding rectangle
rect = seg.rect()
print(rect)  # ((0.0, 0.0), (1.0, 1.0))

# Check intersection with another segment
other = Segment((1, 1), (2, 2))
print(seg.intersects(other))  # True or False

Line

from togo import Line

# Create a line from a list of tuples
line = Line([(0,0), (1,1), (2,0)])

# Get number of points
print(f"Number of points: {line.num_points}")

# Get all points as a list of tuples
print(f"Points: {line.points()}")

# Get the length of the line
print(f"Length: {line.length}")

# Get the bounding box
print(f"Bounding box: {line.rect()}")

# Get a point by index
print(f"First point: {line[0].as_tuple()}")

Ring

from togo import Ring

# Create a ring (must be closed)
ring = Ring([(0,0), (10,0), (10,10), (0,10), (0,0)])

# Get area and perimeter
print(f"Area: {ring.area}")
print(f"Perimeter: {ring.length}")

# Check if it's convex or clockwise
print(f"Is convex: {ring.is_convex()}")
print(f"Is clockwise: {ring.is_clockwise()}")

# Get bounding box
min_pt, max_pt = ring.rect().min, ring.rect().max
print(f"Bounding box: {min_pt.as_tuple()}, {max_pt.as_tuple()}")

Poly

from togo import Poly, Ring, Point

# Create a polygon with one exterior ring and one interior hole
exterior = Ring([(0,0), (10,0), (10,10), (0,10), (0,0)])
hole1 = Ring([(1,1), (2,1), (2,2), (1,2), (1,1)])
poly = Poly(exterior, holes=[hole1])

# Get the exterior ring
ext_ring = poly.exterior
print(f"Exterior has {ext_ring.num_points} points")

# Get number of holes
print(f"Number of holes: {poly.num_holes()}")

# Get a hole by index
h = poly.hole(0)
print(f"Hole area: {h.area()}")

# A polygon is a geometry, so you can use geometry methods
geom = poly.as_geometry()
print(f"Contains point (5,5): {geom.contains(Point(5,5).as_geometry())}")
# Point is inside the hole, so it is not contained by the polygon
print(f"Contains point (1.5,1.5): {geom.contains(Point(1.5,1.5).as_geometry())}")

MultiGeometries

MultiPolygon and MultiLineString are real Python classes, so isinstance() checks work correctly:

from togo import MultiPoint, MultiLineString, MultiPolygon, Poly, Ring, Geometry

# MultiPolygon — real class, supports isinstance
poly1 = Poly(Ring([(0,0), (1,0), (1,1), (0,1), (0,0)]))
poly2 = Poly(Ring([(2,2), (3,2), (3,3), (2,3), (2,2)]))
multi_poly = MultiPolygon([poly1, poly2])
print(isinstance(multi_poly, MultiPolygon))  # True
print(isinstance(multi_poly, Geometry))      # True

# MultiLineString — real class, supports isinstance
multi_line = MultiLineString([[(0,0), (1,1)], [(2,2), (3,3)]])
print(isinstance(multi_line, MultiLineString))  # True

# MultiPoint — factory (returns Geometry)
multi_point = MultiPoint([(0,0), (1,1), (2,2)])

# Low-level factory methods still available on Geometry
multi_poly2 = Geometry.from_multipolygon([poly1, poly2])

LineString.project()

project() returns the distance along a line to the nearest projected point — equivalent to Shapely's project(). Use normalized=True to get a fraction of total line length:

from togo import LineString, Point

line = LineString([(0, 0), (10, 0)])

# Distance to the start: 0.0
print(line.project(Point(0, 0).as_geometry()))   # 0.0

# Distance to the midpoint: 5.0
print(line.project(Point(5, 0).as_geometry()))   # 5.0

# Point above the midpoint still projects to 5.0
print(line.project(Point(5, 3).as_geometry()))   # 5.0

# Normalized distance in [0.0, 1.0]
print(line.project(Point(5, 0).as_geometry(), normalized=True))   # 0.5
print(line.project(Point(10, 0).as_geometry(), normalized=True))  # 1.0

Polygon Indexing

Togo supports different polygon indexing strategies for optimized spatial operations:

from togo import TGIndex, set_polygon_indexing_mode

# Set the indexing mode
set_polygon_indexing_mode(TGIndex.NATURAL)  # or NONE, YSTRIPES

Integration with tgx and libgeos

Togo integrates with the tgx extension and libgeos to provide advanced geometry operations, such as topological unions and conversions between TG and GEOS geometry formats. This allows you to leverage the speed of TG for basic operations and the flexibility of GEOS for more complex tasks.

Example: Unary Union (GEOS integration)

unary_union is a module-level function (Shapely-compatible) that merges multiple geometries into one using GEOS topological union. It accepts any wrapper type directly — no .as_geometry() conversion required:

from togo import Polygon, unary_union

# Create several polygons using the Shapely-compatible constructor
poly1 = Polygon([(0,0), (2,0), (2,2), (0,2), (0,0)])
poly2 = Polygon([(1,1), (3,1), (3,3), (1,3), (1,1)])

# Module-level unary_union — accepts Polygon wrapper objects directly
union = unary_union([poly1, poly2])

# The result is a single geometry representing the union
print(union.geom_type)   # 'Polygon'
print(union.to_wkt())

# Works with mixed types (Poly, Polygon, Geometry, etc.)
from togo import Poly, Ring, Geometry
poly3 = Poly(Ring([(5,0), (7,0), (7,2), (5,2), (5,0)]))
union2 = unary_union([poly1, poly3])
print(union2.geom_type)  # 'MultiPolygon' (non-overlapping)

This operation uses tgx to convert TG geometries to GEOS, applies the union in libgeos, and converts the result back to TG format for further use in ToGo.

Example: Buffer Operations (GEOS integration)

The buffer() method creates geometrical buffers (expanded or shrunk versions of geometries) using GEOS:

from togo import Point, LineString, Polygon, Ring, Geometry

# Buffer a point to create a circular zone
point = Point(0, 0)
circular_zone = point.buffer(10.0, quad_segs=16)
print(f"Point buffer: {circular_zone.geom_type}")  # Polygon

# Buffer a line to create a corridor around it
line = LineString([(0, 0), (10, 10)])
corridor = line.buffer(2.0, cap_style=1)  # round ends
print(f"Line buffer: {corridor.geom_type}")  # Polygon

# Buffer a polygon to expand or shrink it
exterior = Ring([(0, 0), (10, 0), (10, 10), (0, 10), (0, 0)])
poly = Polygon(exterior)

expanded = poly.buffer(2.0)    # Expand outward by 2 units
shrunk = poly.buffer(-1.0)     # Shrink inward by 1 unit

# Via Geometry object with advanced parameters
geom = Geometry("POLYGON((0 0, 20 0, 20 20, 0 20, 0 0))")
buffered = geom.buffer(
    distance=3.0,
    quad_segs=16,           # Segments per quadrant (higher = smoother)
    cap_style=1,            # 1=round, 2=flat, 3=square
    join_style=1,           # 1=round, 2=mitre, 3=bevel
    mitre_limit=5.0         # Mitre ratio limit
)

Like unary_union, buffer operations automatically handle TG ↔ GEOS conversions. For comprehensive buffer documentation, see BUFFER_API.md.

Example: Distance and Proximity Operations (GEOS integration)

The nearest_points() and shortest_line() functions find the closest points between geometries:

from togo import Point, LineString, Polygon, Ring, nearest_points, shortest_line, from_wkt

# Find nearest points between geometries (module-level function)
point = Point(0, 0)
line = LineString([(10, 0), (10, 10)])
pt1, pt2 = nearest_points(point, line)
print(f"Nearest on point: ({pt1.x}, {pt1.y})")  # (0.0, 0.0)
print(f"Nearest on line: ({pt2.x}, {pt2.y})")   # (10.0, 0.0)

# Get the connecting line (Shapely v2 API - module-level function)
shortest = shortest_line(point, line)
print(f"Distance: {shortest.length}")  # 10.0
print(f"Connecting line: {shortest.coords}")  # [(0.0, 0.0), (10.0, 0.0)]

# Method style also works
shortest = point.shortest_line(line)
pt1, pt2 = point.nearest_points(line)

# Measure gap between polygons
poly1 = Polygon(Ring([(0, 0), (5, 0), (5, 5), (0, 5), (0, 0)]))
poly2 = Polygon(Ring([(10, 0), (15, 0), (15, 5), (10, 5), (10, 0)]))
gap_line = shortest_line(poly1, poly2)
print(f"Gap between polygons: {gap_line.length}")  # 5.0

# Practical use case: Check if features are within distance
def within_distance(geom1, geom2, max_dist):
    return shortest_line(geom1, geom2).length <= max_dist

building1 = Polygon(Ring([(0, 0), (10, 0), (10, 10), (0, 10), (0, 0)]))
building2 = Polygon(Ring([(20, 0), (30, 0), (30, 10), (20, 10), (20, 0)]))

if within_distance(building1, building2, 15):
    print("Buildings meet separation requirement")

# Works with WKT geometries
g1 = from_wkt("POINT(0 0)")
g2 = from_wkt("LINESTRING(5 5, 10 10)")
connecting = shortest_line(g1, g2)
print(f"Distance: {connecting.length:.2f}")

For more examples, see the shortest-line tests and examples/shortest_line_demo.py.

Performance Considerations

  • Togo is optimized for speed and memory efficiency
  • For large datasets, proper indexing can significantly improve performance
  • Creating geometries with the appropriate format avoids unnecessary conversions
  • Buffer operations support quad_segs parameter to balance quality vs. performance

Soon there will be a full API documentation, for now please refer to the test suite for more usage examples.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

togo-0.4.4-cp314-cp314t-musllinux_1_2_x86_64.whl (4.9 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

togo-0.4.4-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

togo-0.4.4-cp314-cp314-musllinux_1_2_x86_64.whl (4.9 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

togo-0.4.4-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (3.9 MB view details)

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

togo-0.4.4-cp313-cp313-musllinux_1_2_x86_64.whl (4.9 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

togo-0.4.4-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (4.0 MB view details)

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

togo-0.4.4-cp312-cp312-musllinux_1_2_x86_64.whl (4.9 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

togo-0.4.4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (4.0 MB view details)

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

togo-0.4.4-cp311-cp311-musllinux_1_2_x86_64.whl (5.0 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

togo-0.4.4-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (4.0 MB view details)

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

togo-0.4.4-cp310-cp310-musllinux_1_2_x86_64.whl (4.9 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

togo-0.4.4-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (3.9 MB view details)

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

togo-0.4.4-cp39-cp39-musllinux_1_2_x86_64.whl (4.9 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

togo-0.4.4-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (3.9 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

togo-0.4.4-cp38-cp38-musllinux_1_2_x86_64.whl (5.0 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ x86-64

togo-0.4.4-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

File details

Details for the file togo-0.4.4-cp314-cp314t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for togo-0.4.4-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 97c0d84304c64555f493023aee30bb11d19dd7aaeee0044b92225d91ec0c123c
MD5 aa7d8b9cefaabaec13c65425899e14a7
BLAKE2b-256 e225c43b79cf6c3a7986bad460d676fecc689b8f40723bdca8a91a5618c39eac

See more details on using hashes here.

Provenance

The following attestation bundles were made for togo-0.4.4-cp314-cp314t-musllinux_1_2_x86_64.whl:

Publisher: build-wheels.yml on mindflayer/togo

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

File details

Details for the file togo-0.4.4-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for togo-0.4.4-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5d333fb1166fcb2de2445ed5df6d5b3398006dffecf71ed998b4a3cf3807cdde
MD5 6272f37074e5e680039f840f9e3f911a
BLAKE2b-256 e6301bd0d0f9a131723daaee2de8d2b54e6036324f37797a83d911703e168abe

See more details on using hashes here.

Provenance

The following attestation bundles were made for togo-0.4.4-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build-wheels.yml on mindflayer/togo

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

File details

Details for the file togo-0.4.4-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for togo-0.4.4-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d12d7c4f3646b4d9d38b69d6de415622981450bebeac043102a81d1b245ca4d5
MD5 36f4793e13d89f2f1b78b0cf2d0e8002
BLAKE2b-256 bda574e908e8b728e4c806863aab3de35f5368ca998ed7a8e515ac2f7e295241

See more details on using hashes here.

Provenance

The following attestation bundles were made for togo-0.4.4-cp314-cp314-musllinux_1_2_x86_64.whl:

Publisher: build-wheels.yml on mindflayer/togo

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

File details

Details for the file togo-0.4.4-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for togo-0.4.4-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d3d60524ea9be717f6b76ef14ec5d4c4d7af1ac87a2f5e41d94142c6109fafc9
MD5 040a191e1ad140841245590775d0546d
BLAKE2b-256 645a7383cb7d67edd0d5de2ce9bc3d13527b0de57c9bb9e6cc52fbbc4a15c429

See more details on using hashes here.

Provenance

The following attestation bundles were made for togo-0.4.4-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build-wheels.yml on mindflayer/togo

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

File details

Details for the file togo-0.4.4-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for togo-0.4.4-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 403847be84bb28ff13ae525c14bd7525db68fa4fdd29bde30e4dcf94ccea4055
MD5 ade44f17c3f13fb052915c7059451229
BLAKE2b-256 bccdf648f6b09fe709a183289e5bd5c91e618be5c872fa22b897547bc4d7ca5a

See more details on using hashes here.

Provenance

The following attestation bundles were made for togo-0.4.4-cp313-cp313-musllinux_1_2_x86_64.whl:

Publisher: build-wheels.yml on mindflayer/togo

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

File details

Details for the file togo-0.4.4-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for togo-0.4.4-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 33c4e8b21f9f2696a1f22eeecd032032f6d8566426f202682d09b1f31ba45628
MD5 11f61f00b3196924d5960b5bd5d0b81b
BLAKE2b-256 cfd003fba70341bfb77245a0dd810b96ced24baf3118f78238aa06625d4c99b4

See more details on using hashes here.

Provenance

The following attestation bundles were made for togo-0.4.4-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build-wheels.yml on mindflayer/togo

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

File details

Details for the file togo-0.4.4-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for togo-0.4.4-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d11ef76d10ecfd4a0a5af354e9d373ba88b6ec6f7b8f18efa2548efc25581400
MD5 fa6f50e2367d6e09123a816e77e71ed7
BLAKE2b-256 987ed42690ae4a28680322bd6a673c2e7255521b5e64be526bf859f83240527f

See more details on using hashes here.

Provenance

The following attestation bundles were made for togo-0.4.4-cp312-cp312-musllinux_1_2_x86_64.whl:

Publisher: build-wheels.yml on mindflayer/togo

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

File details

Details for the file togo-0.4.4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for togo-0.4.4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ffdf6116322085711b4d1be7fbd62840cc9ac57d9bba0b24051f2f849f65ecfc
MD5 bfa9eaee2e390c0eff254adf6dabc5ce
BLAKE2b-256 9b48cbfa168dbdf4bb1b50d2600cefe036ffb04d847642680291d9fc40a36287

See more details on using hashes here.

Provenance

The following attestation bundles were made for togo-0.4.4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build-wheels.yml on mindflayer/togo

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

File details

Details for the file togo-0.4.4-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for togo-0.4.4-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0e3b8a18249d6d9c948fbe1523aafea2cb834098c6dbe4db326d18ff2d41418b
MD5 a9f6fc6ec30c28fab56d806a47048bb7
BLAKE2b-256 c82e4ea470d8c2705e3391bce0e94ea5d658f4459d2b057a808e6f926c2d2fb9

See more details on using hashes here.

Provenance

The following attestation bundles were made for togo-0.4.4-cp311-cp311-musllinux_1_2_x86_64.whl:

Publisher: build-wheels.yml on mindflayer/togo

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

File details

Details for the file togo-0.4.4-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for togo-0.4.4-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c3b57e856cdb434c9929665d043cfbe09073d06b0eaf63c3d4b8f565467ec0e0
MD5 479084ced67bcc20162d4a24eb4bc074
BLAKE2b-256 c734fd275457a1a80038a29dee5f41d0a9d696411ba215a634aa4148e2c92468

See more details on using hashes here.

Provenance

The following attestation bundles were made for togo-0.4.4-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build-wheels.yml on mindflayer/togo

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

File details

Details for the file togo-0.4.4-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for togo-0.4.4-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 39553811a72e1ac658a892d82abd2ec551fa41dae8f79fbbc6fd41f297291748
MD5 10d635b14e3f7b82d313ebf3d6409c53
BLAKE2b-256 19aa0adb800a1ba99dc02fef925eea39306fba04747f0811536ed6287f0b855e

See more details on using hashes here.

Provenance

The following attestation bundles were made for togo-0.4.4-cp310-cp310-musllinux_1_2_x86_64.whl:

Publisher: build-wheels.yml on mindflayer/togo

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

File details

Details for the file togo-0.4.4-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for togo-0.4.4-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1be92c0fe9ca937852644118279cb81d37da2b089bf7721f5c2eb20f69e5ab9c
MD5 abed2f56b4be62294e03682f4ccda6e9
BLAKE2b-256 67bdca110e776fb6aec670a6a36e77114bf4c52fc2b86b1892ac049f6e67f974

See more details on using hashes here.

Provenance

The following attestation bundles were made for togo-0.4.4-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build-wheels.yml on mindflayer/togo

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

File details

Details for the file togo-0.4.4-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: togo-0.4.4-cp39-cp39-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 4.9 MB
  • Tags: CPython 3.9, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for togo-0.4.4-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8eda1f2e0ec8b9ccce87504678c5427b95c47ccfcd9ce66f230e96b9f0237b45
MD5 3d44dc8b09870267346f4a8fb253e442
BLAKE2b-256 7d832fc55bffc5f214d10fbbc4984f05396b8ab68bb2038bedcb6af620b4324a

See more details on using hashes here.

Provenance

The following attestation bundles were made for togo-0.4.4-cp39-cp39-musllinux_1_2_x86_64.whl:

Publisher: build-wheels.yml on mindflayer/togo

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

File details

Details for the file togo-0.4.4-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for togo-0.4.4-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e8c55a408659e6afa03b17fedfd13aa1bd4a555fd0092b5c8c3356b3cebbb630
MD5 57ba6975b408c4ea4a4f0af6518af1f2
BLAKE2b-256 3e3f2e61e1e90febfd0070341a6be7acbb0285aeee1ff03f2a3016be29d57eb1

See more details on using hashes here.

Provenance

The following attestation bundles were made for togo-0.4.4-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build-wheels.yml on mindflayer/togo

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

File details

Details for the file togo-0.4.4-cp38-cp38-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: togo-0.4.4-cp38-cp38-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 5.0 MB
  • Tags: CPython 3.8, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for togo-0.4.4-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d696b87c018c68ed7ff262b55aa421dd3a5f8b8c380218533cbc3eb8d9762a11
MD5 06bbbea1d4833aceaa4a0b4cf0e1929d
BLAKE2b-256 0de3da23bb83057946ab8f349b2f6d2a11886ed9cca84be4860630a92d294fbb

See more details on using hashes here.

Provenance

The following attestation bundles were made for togo-0.4.4-cp38-cp38-musllinux_1_2_x86_64.whl:

Publisher: build-wheels.yml on mindflayer/togo

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

File details

Details for the file togo-0.4.4-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for togo-0.4.4-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 fc6eb67c5862571af8786f3e4daf47faaea314246ef87c695566012b883d64b4
MD5 5ce98ee9de2a07ebaf162dc07369f85a
BLAKE2b-256 8870aba0d4cd7a3b054feccf2b2ba2573b5f7980578276dd67368882a438b457

See more details on using hashes here.

Provenance

The following attestation bundles were made for togo-0.4.4-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build-wheels.yml on mindflayer/togo

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