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.3-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.3-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (3.9 MB view details)

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

togo-0.4.3-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.3-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.3-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.3-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (3.9 MB view details)

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

togo-0.4.3-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.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (3.9 MB view details)

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

togo-0.4.3-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.3-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.3-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.3-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.3-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.3-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.3-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.3-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.3-cp314-cp314t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for togo-0.4.3-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 24fd6f87e58060e20ce2b659eab6374e2c607bd41db7e202a5dea5fa5dd01c17
MD5 1cdc6740e85c708bf1202cbc9b2d6f99
BLAKE2b-256 e742ef679197d620d712e929c795168aa9e6700add4d714ac8d50c96977b565f

See more details on using hashes here.

Provenance

The following attestation bundles were made for togo-0.4.3-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.3-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for togo-0.4.3-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7fd0738ebdfd9c4f0928421d85e76fbfa428a7f756e1bd817e2826ba4b0ca787
MD5 eb300a894d0af10797167e50015803d7
BLAKE2b-256 b1f8af1f45d6a0691b9dc80581519f4180e8990dddb7e0499cfffac4dae7f8ae

See more details on using hashes here.

Provenance

The following attestation bundles were made for togo-0.4.3-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.3-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for togo-0.4.3-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 6954cd1c1365ae99d6f5996766217b2c0cb12e8ce084855e4f81c67e4e9d274c
MD5 7933456741c49324ee474ce7b28d785c
BLAKE2b-256 a1b9a6002d326493045146a53b2fbc3c5a9cdba96b032b0198ca823af7328b20

See more details on using hashes here.

Provenance

The following attestation bundles were made for togo-0.4.3-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.3-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for togo-0.4.3-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c23566cc0f76605b2a67823386b15d3864bf7239ec972e013fe61bf2c5959b16
MD5 1eb56c309a796b33f2f015f5e11b8fb3
BLAKE2b-256 8b08adf6419f46d567853a5302d5711b5c096999a1af81e29e62e5110fa34f16

See more details on using hashes here.

Provenance

The following attestation bundles were made for togo-0.4.3-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.3-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for togo-0.4.3-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 86e81a2714aa9468e32addf57900e5ef10f49540c246f96129400ed9eda33615
MD5 15b51a1e5de3a8a31eab8ae5a559b231
BLAKE2b-256 abbd06c53a0af4dca170d5d8e2c957e1efe79c7b1235c4bde251ff9f1a755048

See more details on using hashes here.

Provenance

The following attestation bundles were made for togo-0.4.3-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.3-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for togo-0.4.3-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d58e431233134cd4fe8adb2a798176a7c87200ca22a7565226bad2ec03989d06
MD5 ebc362bf057b42749c3867dff03b3d0c
BLAKE2b-256 d5f979b6e1bf30f4d73be5b43855397f561694a809ed7c5131d40a4534e032f1

See more details on using hashes here.

Provenance

The following attestation bundles were made for togo-0.4.3-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.3-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for togo-0.4.3-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9bc5ce961a82e1dc28b5922d5fbd9c172f726b759a1ce497bce25989b986c243
MD5 025dcb404d10fb26452c5ff4c763a743
BLAKE2b-256 692d64ee1bc9e209b9893a53d03a833f582d0535790a0131453ac3f0444885a8

See more details on using hashes here.

Provenance

The following attestation bundles were made for togo-0.4.3-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.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for togo-0.4.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3a3cdec35daac519aa972287dfeeed7d989fc588f5894fc8429f9a0496a05197
MD5 43edfc5aae9cb02c685e5bfe98ffc907
BLAKE2b-256 41245668d42d8b8fbc9a0fc3b8acab952c66a2e8220764370a41cd7a92992c6a

See more details on using hashes here.

Provenance

The following attestation bundles were made for togo-0.4.3-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.3-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for togo-0.4.3-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8b1b370f65f8d5e62933dc4c919286d2e3efb38c801dc2802a5e3a079bc35ecc
MD5 c072b71158b3df714c3668cebc48f3e9
BLAKE2b-256 76b2297d7c1a652c1d881dc8055cb861860038ade1a119f3293591e89e094e26

See more details on using hashes here.

Provenance

The following attestation bundles were made for togo-0.4.3-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.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for togo-0.4.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ab44782cbd52e5185bd7b3c8e159bf955563014392c62cc09789256ef9bc26d5
MD5 93da5f41740c2c24a463963339530436
BLAKE2b-256 8a21922fcc818a80d1c9171dff0d4010cd0bdbd7df18667a8686e1f210e6b297

See more details on using hashes here.

Provenance

The following attestation bundles were made for togo-0.4.3-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.3-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for togo-0.4.3-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 337d162c72fdbf740853b4956ed0efabdbf72332eee2516238db27404f20a0a4
MD5 f22300a5a25c02c571fa4de577e9b0ec
BLAKE2b-256 4c1af04c1082ace1ed643e725343df6c6033d76c7d427dced7c59c52d7837ca7

See more details on using hashes here.

Provenance

The following attestation bundles were made for togo-0.4.3-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.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for togo-0.4.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b957f374af80167eae24082c5dabcae7f85e2916c9219ddcf163b942341cfbf9
MD5 438f8718c49bdb98276c2f92eb50f9ba
BLAKE2b-256 00dd2ec621762c1b9401003870282781a2d0e926a9d393902d4e03a83a8064ef

See more details on using hashes here.

Provenance

The following attestation bundles were made for togo-0.4.3-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.3-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: togo-0.4.3-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.3-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 55415d333a9e29bed9f6bd226efa88c97008b12d5a35480f539ec6688686f206
MD5 6fe56f9ea1b21ce6436dc4c8ade36e03
BLAKE2b-256 e9b83b3ca94e71cb79079329e28a07ae8aff266db57727d2f70888e9ee538455

See more details on using hashes here.

Provenance

The following attestation bundles were made for togo-0.4.3-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.3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for togo-0.4.3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7e6cfbb033627d245d8fae6e5d4ee44136b44086ba62447ae924ccc09c353d6f
MD5 25c893198c250add0e44f3b93c5c03ea
BLAKE2b-256 627a579f270db0471df55ef4878980105e7ea4a3c8b07b465489a438d8903761

See more details on using hashes here.

Provenance

The following attestation bundles were made for togo-0.4.3-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.3-cp38-cp38-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: togo-0.4.3-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.3-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 66f8e3b5b58537a48dc7d5b2cedd5269064e9124e4e0d5e78fb995ee61ac7d5b
MD5 6b792efbb01775a7aebd544fff336e8b
BLAKE2b-256 cea5b9cc4986c0f74a943bcfbb7866db987a7637648e5dd7f7d491b859917c99

See more details on using hashes here.

Provenance

The following attestation bundles were made for togo-0.4.3-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.3-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for togo-0.4.3-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1ed82d8bf05371c02de858d345163045f984fb61acc92582c835d59266572686
MD5 5ea08d4b494187324a7c8ba5e310ff34
BLAKE2b-256 eeb05466cedf5b1ba6ccd8abb50841797f3f249ccda570278b918eda9056239b

See more details on using hashes here.

Provenance

The following attestation bundles were made for togo-0.4.3-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