Skip to main content

Solvor all your optimization needs.

Project description

Build Status Docs codecov License: Apache 2.0 PyPI Downloads Python 3.12 | 3.13 | 3.14

solvOR

Solvor all your optimization needs.

What's in the box?

Category Solvors Use Case
Linear/Integer solve_lp, solve_lp_interior, solve_milp, solve_cg, solve_bp Resource allocation, cutting stock
Constraint solve_sat, Model Sudoku, puzzles, and that one config problem that's been bugging you
Combinatorial solve_knapsack, solve_bin_pack, solve_job_shop, solve_vrptw Packing, scheduling, routing
Local Search anneal, tabu_search, lns, alns TSP, combinatorial optimization
Population evolve, differential_evolution, particle_swarm Global search, nature-inspired
Gradient gradient_descent, momentum, rmsprop, adam ML, curve fitting
Quasi-Newton bfgs, lbfgs Fast convergence, smooth functions
Derivative-Free nelder_mead, powell, bayesian_opt Black-box, expensive functions
Pathfinding bfs, dfs, dijkstra, astar, astar_grid, bellman_ford, floyd_warshall Shortest paths, graph traversal
Graph max_flow, min_cost_flow, kruskal, prim, topological_sort, strongly_connected_components, pagerank, louvain, articulation_points, bridges, kcore_decomposition Flow, MST, dependency, centrality, community detection
Assignment solve_assignment, solve_hungarian, network_simplex Matching, min-cost flow
Exact Cover solve_exact_cover N-Queens, tiling puzzles
Utilities FenwickTree, UnionFind Data structures for algorithms

Quickstart

uv add solvor
from solvor import solve_lp, solve_tsp, dijkstra, solve_hungarian

# Linear Programming
result = solve_lp(c=[1, 2], A=[[1, 1], [2, 1]], b=[4, 5])
print(result.solution)  # optimal x

# TSP with tabu search
distances = [[0, 10, 15], [10, 0, 20], [15, 20, 0]]
result = solve_tsp(distances)
print(result.solution)  # best tour found

# Shortest path
graph = {'A': [('B', 1), ('C', 4)], 'B': [('C', 2)], 'C': []}
result = dijkstra('A', 'C', lambda n: graph.get(n, []))
print(result.solution)  # ['A', 'B', 'C']

# Assignment
costs = [[10, 5], [3, 9]]
result = solve_hungarian(costs)
print(result.solution)  # [1, 0] - row 0 gets col 1, row 1 gets col 0

Solvors

Linear & Integer Programming

solve_lp

For resource allocation, blending, production planning. Finds the exact optimum for linear objectives with linear constraints.

# minimize 2x + 3y subject to x + y >= 4, x <= 3
result = solve_lp(
    c=[2, 3],
    A=[[-1, -1], [1, 0]],  # constraints as Ax <= b
    b=[-4, 3]
)

solve_milp

When some variables must be integers. Diet problems, scheduling with discrete slots, set covering.

# same as above, but x must be integer
result = solve_milp(c=[2, 3], A=[[-1, -1], [1, 0]], b=[-4, 3], integers=[0])

solve_cg

Column generation for problems with exponentially many variables. Cutting stock, bin packing, vehicle routing, crew scheduling.

# Cutting stock: minimize rolls to cut required pieces
result = solve_cg(
    demands=[97, 610, 395, 211],
    roll_width=100,
    piece_sizes=[45, 36, 31, 14],
)
print(result.objective)  # 454 rolls

solve_bp

Branch-and-price for optimal integer solutions. Combines column generation with branch-and-bound for proven optimality.

# Cutting stock with guaranteed integer optimality
result = solve_bp(
    demands=[97, 610, 395, 211],
    roll_width=100,
    piece_sizes=[45, 36, 31, 14],
)
print(result.objective)  # Integer optimal
Constraint Programming

solve_sat

For "is this configuration valid?" problems. Dependencies, exclusions, implications - anything that boils down to boolean constraints.

# (x1 OR x2) AND (NOT x1 OR x3) AND (NOT x2 OR NOT x3)
result = solve_sat([[1, 2], [-1, 3], [-2, -3]])
print(result.solution)  # {1: True, 2: False, 3: True}

Model

Constraint programming for puzzles and scheduling with "all different", arithmetic, and logical constraints. Sudoku, N-Queens, timetabling.

m = Model()
cells = [[m.int_var(1, 9, f'c{i}{j}') for j in range(9)] for i in range(9)]

# All different in each row
for row in cells:
    m.add(m.all_different(row))

result = m.solve()
Metaheuristics

anneal

Simulated annealing, sometimes you have to go downhill to find a higher peak.

result = anneal(
    initial=initial_solution,
    objective_fn=cost_function,
    neighbors=random_neighbor,
    temperature=1000,
    cooling=0.9995
)

tabu_search

Greedy local search with a "don't go back there" list. Simple but surprisingly effective.

result = tabu_search(
    initial=initial_solution,
    objective_fn=cost_function,
    neighbors=get_neighbors,  # returns [(move, solution), ...]
    cooldown=10
)

lns / alns

Large Neighborhood Search, destroy part of your solution and rebuild it better. ALNS learns which operators work best.

result = lns(initial, objective_fn, destroy_ops, repair_ops, max_iter=1000)
result = alns(initial, objective_fn, destroy_ops, repair_ops, max_iter=1000)  # adaptive

evolve / differential_evolution / particle_swarm

Population-based global search. Let a swarm of candidates explore for you. DE and PSO work on continuous spaces.

result = evolve(objective_fn=fitness, population=pop, crossover=cx, mutate=mut)
result = differential_evolution(objective_fn, bounds=[(0, 10)] * n, population_size=50)
result = particle_swarm(objective_fn, bounds=[(0, 10)] * n, n_particles=30)
Continuous Optimization

Gradient-Based

gradient_descent, momentum, rmsprop, adam - follow the slope. Adam adapts learning rates per parameter.

def grad_fn(x):
    return [2 * x[0], 2 * x[1]]  # gradient of x^2 + y^2

result = adam(grad_fn, x0=[5.0, 5.0])

Quasi-Newton

bfgs, lbfgs - approximate Hessian for faster convergence. L-BFGS uses limited memory.

result = bfgs(objective_fn, grad_fn, x0=[5.0, 5.0])
result = lbfgs(objective_fn, grad_fn, x0=[5.0, 5.0], memory=10)

Derivative-Free

nelder_mead, powell - no gradients needed. Good for noisy, non-smooth, or "I have no idea what this function looks like" situations.

result = nelder_mead(objective_fn, x0=[5.0, 5.0])
result = powell(objective_fn, x0=[5.0, 5.0])

bayesian_opt

When each evaluation is expensive. Builds a surrogate model to sample intelligently. Perfect for hyperparameter tuning or when your simulation takes 10 minutes per run.

result = bayesian_opt(expensive_fn, bounds=[(0, 1), (0, 1)], max_iter=30)
Pathfinding

bfs / dfs

Unweighted graph traversal. BFS finds shortest paths (fewest edges), DFS explores depth-first. Both work with any state type and neighbor function.

# Find shortest path in a grid
def neighbors(pos):
    x, y = pos
    return [(x+1, y), (x-1, y), (x, y+1), (x, y-1)]

result = bfs(start=(0, 0), goal=(5, 5), neighbors=neighbors)
print(result.solution)  # path from start to goal

dijkstra

Weighted shortest paths. Classic algorithm for when edges have costs. Stops early when goal is found.

def neighbors(node):
    return graph[node]  # returns [(neighbor, cost), ...]

result = dijkstra(start='A', goal='Z', neighbors=neighbors)

astar / astar_grid

A* with heuristics. Faster than Dijkstra when you have a good distance estimate. astar_grid handles 2D grids with built-in heuristics.

# Grid pathfinding with obstacles
grid = [[0, 0, 1, 0], [0, 0, 1, 0], [0, 0, 0, 0]]
result = astar_grid(grid, start=(0, 0), goal=(2, 3))

bellman_ford

Handles negative edge weights. Slower than Dijkstra but detects negative cycles, which is useful when costs can go negative.

result = bellman_ford(start=0, edges=[(0, 1, 5), (1, 2, -3), ...], n_nodes=4)

floyd_warshall

All-pairs shortest paths. O(n³) but gives you every shortest path at once. Worth it when you need the full picture.

result = floyd_warshall(n_nodes=4, edges=[(0, 1, 3), (1, 2, 1), ...])
# result.solution[i][j] = shortest distance from i to j
Network Flow & MST

max_flow

"How much can I push through this network?" Assigning workers to tasks, finding bottlenecks.

graph = {
    's': [('a', 10, 0), ('b', 5, 0)],
    'a': [('b', 15, 0), ('t', 10, 0)],
    'b': [('t', 10, 0)],
    't': []
}
result = max_flow(graph, 's', 't')

min_cost_flow / network_simplex

"What's the cheapest way to route X units?" Use min_cost_flow for simplicity, network_simplex for large instances.

# network_simplex for large min-cost flow
arcs = [(0, 1, 10, 2), (0, 2, 5, 3), (1, 2, 15, 1)]  # (from, to, cap, cost)
supplies = [10, 0, -10]  # positive = source, negative = sink
result = network_simplex(n_nodes=3, arcs=arcs, supplies=supplies)

kruskal / prim

Minimum spanning tree. Connect all nodes with minimum total edge weight. Kruskal sorts edges, Prim grows from a start node.

edges = [(0, 1, 4), (0, 2, 3), (1, 2, 2)]  # (u, v, weight)
result = kruskal(n_nodes=3, edges=edges)
# result.solution = [(1, 2, 2), (0, 2, 3)] - MST edges
Assignment

solve_assignment / solve_hungarian

Optimal one-to-one matching. solve_hungarian is O(n³), direct algorithm for assignment problems.

costs = [
    [10, 5, 13],
    [3, 9, 18],
    [10, 6, 12]
]
result = solve_hungarian(costs)
# result.solution[i] = column assigned to row i
# result.objective = total cost

# For maximization
result = solve_hungarian(costs, minimize=False)
Exact Cover

solve_exact_cover

For "place these pieces without overlap" problems. Sudoku, pentomino tiling, N-Queens, or any puzzle where you stare at a grid wondering why nothing fits.

# Tiling problem: cover all columns with non-overlapping rows
matrix = [
    [1, 1, 0, 0],  # row 0 covers columns 0, 1
    [0, 1, 1, 0],  # row 1 covers columns 1, 2
    [0, 0, 1, 1],  # row 2 covers columns 2, 3
    [1, 0, 0, 1],  # row 3 covers columns 0, 3
]
result = solve_exact_cover(matrix)
# result.solution = (0, 2) or (1, 3) - rows that cover all columns exactly once
Combinatorial Solvers

solve_knapsack

The classic "what fits in your bag" problem. Select items to maximize value within capacity.

values = [60, 100, 120]
weights = [10, 20, 30]
result = solve_knapsack(values, weights, capacity=50)
# result.solution = (1, 2) - indices of selected items

solve_bin_pack

Bin packing heuristics. Minimize bins needed for items.

items = [4, 8, 1, 4, 2, 1]
result = solve_bin_pack(items, bin_capacity=10)
# result.solution = (1, 0, 0, 1, 0, 0) - bin index for each item
# result.objective = 2 (number of bins)

solve_job_shop

Job shop scheduling. Minimize makespan for jobs on machines.

# jobs[i] = [(machine, duration), ...] - operations for job i
jobs = [[(0, 3), (1, 2)], [(1, 2), (0, 4)]]
result = solve_job_shop(jobs, n_machines=2)

solve_vrptw

Vehicle Routing with Time Windows. Serve customers with capacity and time constraints.

from solvor import Customer, solve_vrptw

customers = [
    Customer(1, 10, 10, demand=10, tw_start=0, tw_end=50, service_time=5),
    Customer(2, 20, 20, demand=10, tw_start=0, tw_end=50, service_time=5),
    Customer(3, 30, 30, demand=10, tw_start=0, tw_end=50, service_time=5),
]
result = solve_vrptw(customers, vehicles=2, vehicle_capacity=30)

Result Format

All solvors return a consistent Result dataclass:

Result(
    solution,     # best solution found
    objective,    # objective value
    iterations,   # solver iterations (pivots, generations, etc.)
    evaluations,  # function evaluations
    status,       # OPTIMAL, FEASIBLE, INFEASIBLE, UNBOUNDED, MAX_ITER
    error,        # error message if failed (None on success)
    solutions,    # multiple solutions when solution_limit > 1
)

When to use what?

Problem Solvor
Linear constraints, continuous solve_lp, solve_lp_interior
Linear constraints, integers solve_milp
Cutting stock, crew scheduling solve_cg, solve_bp
Boolean satisfiability solve_sat
Discrete vars, complex constraints Model
Knapsack, subset selection solve_knapsack
Bin packing solve_bin_pack
Job shop scheduling solve_job_shop
Vehicle routing solve_vrptw
Combinatorial, local search tabu_search, anneal
Combinatorial, destroy-repair lns, alns
Global search, continuous differential_evolution, particle_swarm
Global search, discrete evolve
Smooth, differentiable, fast bfgs, lbfgs
Smooth, differentiable, ML adam, rmsprop
Non-smooth, no gradients nelder_mead, powell
Expensive black-box bayesian_opt
Shortest path, unweighted bfs, dfs
Shortest path, weighted dijkstra, astar
Shortest path, negative weights bellman_ford
All-pairs shortest paths floyd_warshall
Minimum spanning tree kruskal, prim
Dependency ordering topological_sort
Circular dependencies strongly_connected_components
Node importance pagerank
Community detection louvain
Single points of failure articulation_points, bridges
Core vs periphery kcore_decomposition
Maximum flow max_flow
Min-cost flow min_cost_flow, network_simplex
Assignment, matching solve_hungarian, solve_assignment
Exact cover, tiling solve_exact_cover

Performance

Have your cake and eat it too. solvOR gives you both:

  • Readable Python - Every algorithm is implemented in clear, documented Python you can study and modify
  • Rust Performance - Optional drop-in Rust backends with 5-60x speedup for compute-heavy algorithms
from solvor import floyd_warshall

# "auto" (default) - Uses Rust if available, falls back to Python
result = floyd_warshall(n_nodes, edges)

# "python" - Force pure Python (for learning, debugging, or extending)
result = floyd_warshall(n_nodes, edges, backend="python")

Pre-built wheels include Rust extensions for Linux, macOS, and Windows. If Rust isn't available, solvOR falls back to Python automatically.

See the Performance docs for which algorithms have Rust backends and benchmarks.


Philosophy

  1. Readable first: every algorithm in clear Python you can actually understand
  2. Performance when needed: optional Rust backends, zero-copy where possible
  3. Consistent: same Result format, same minimize/maximize convention
  4. Practical: solves real problems (and AoC puzzles)

Documentation

Full docs at solvOR.ai: getting started, algorithm reference, cookbook with worked examples, and troubleshooting.


Contributing

See CONTRIBUTING.md for development setup and guidelines.

License

Apache 2.0 License, free for personal and commercial use.

Background of solvOR

A little bit of history.. I learned about solvers back in 2011, working with some great minds at a startup in Paris. I started writing python myself around 2018, always as a hobby, and in 2024 I got back into solvers for an energy management system (EMS) and wrote a few tools (simplex, milp, genetic) myself mainly to improve my understanding.

Over time this toolbox got larger and larger, so I decided to publish it on GitHub so others can use it and improve it even further. Since I am learning Rust, I will eventually replace some performance critical operations with a high performance Rust implementation. But since I work on this project (and others) in my spare time, what and when is uncertain. The name solvOR is a mix of solver(s) and OR (Operations Research).

Disclaimer; I am not a professional software engineer, so there are probably some obvious improvements possible. If so let me know, or create a PR!

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

solvor-0.6.1.tar.gz (115.3 kB view details)

Uploaded Source

Built Distributions

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

solvor-0.6.1-cp314-cp314t-musllinux_1_2_x86_64.whl (601.3 kB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

solvor-0.6.1-cp314-cp314t-musllinux_1_2_aarch64.whl (563.1 kB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARM64

solvor-0.6.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (385.8 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARM64

solvor-0.6.1-cp314-cp314-win_amd64.whl (264.9 kB view details)

Uploaded CPython 3.14Windows x86-64

solvor-0.6.1-cp314-cp314-musllinux_1_2_x86_64.whl (600.0 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

solvor-0.6.1-cp314-cp314-musllinux_1_2_aarch64.whl (562.2 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

solvor-0.6.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (388.3 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

solvor-0.6.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (385.1 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

solvor-0.6.1-cp314-cp314-macosx_11_0_arm64.whl (361.6 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

solvor-0.6.1-cp314-cp314-macosx_10_12_x86_64.whl (370.3 kB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

solvor-0.6.1-cp313-cp313t-musllinux_1_2_x86_64.whl (601.5 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ x86-64

solvor-0.6.1-cp313-cp313t-musllinux_1_2_aarch64.whl (563.2 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

solvor-0.6.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (385.9 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARM64

solvor-0.6.1-cp313-cp313-win_amd64.whl (265.1 kB view details)

Uploaded CPython 3.13Windows x86-64

solvor-0.6.1-cp313-cp313-musllinux_1_2_x86_64.whl (600.3 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

solvor-0.6.1-cp313-cp313-musllinux_1_2_aarch64.whl (562.3 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

solvor-0.6.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (388.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

solvor-0.6.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (385.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

solvor-0.6.1-cp313-cp313-macosx_11_0_arm64.whl (361.6 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

solvor-0.6.1-cp313-cp313-macosx_10_12_x86_64.whl (370.4 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

solvor-0.6.1-cp312-cp312-win_amd64.whl (265.6 kB view details)

Uploaded CPython 3.12Windows x86-64

solvor-0.6.1-cp312-cp312-musllinux_1_2_x86_64.whl (600.9 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

solvor-0.6.1-cp312-cp312-musllinux_1_2_aarch64.whl (562.8 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

solvor-0.6.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (389.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

solvor-0.6.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (385.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

solvor-0.6.1-cp312-cp312-macosx_11_0_arm64.whl (362.0 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

solvor-0.6.1-cp312-cp312-macosx_10_12_x86_64.whl (371.0 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

File details

Details for the file solvor-0.6.1.tar.gz.

File metadata

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

File hashes

Hashes for solvor-0.6.1.tar.gz
Algorithm Hash digest
SHA256 c8cfa4d9ba6e60f05ce7dff4737740d17e1efa3f3b52b2f0cf14b33b3160db94
MD5 bee20df6364c454d91b0163bc1969e46
BLAKE2b-256 bc51c4c58b207ef3232e1fcc79070201b546ea5dc874316c21ee9393df6ff9c6

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.1.tar.gz:

Publisher: publish.yml on StevenBtw/solvOR

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

File details

Details for the file solvor-0.6.1-cp314-cp314t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for solvor-0.6.1-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0d5545c57c0f9460f5b1dcbf579b0651850e2e7b7b075eabab8b1229af5d132d
MD5 1e1bdef6660829e8acef7b3aa03b24cb
BLAKE2b-256 807a33fc01f0748518b2f135a702520573f32165e1f4faeb581cab0b6e8fa16a

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.1-cp314-cp314t-musllinux_1_2_x86_64.whl:

Publisher: publish.yml on StevenBtw/solvOR

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

File details

Details for the file solvor-0.6.1-cp314-cp314t-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for solvor-0.6.1-cp314-cp314t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 2d1b219dce482af186e1f7a291515281c7451acfc51859eb725a23d9b88e2354
MD5 295bd9ef98a6fb1cdcfc569377e372b8
BLAKE2b-256 35005d94746f83a44cef863696957ca9c33bb81078683c22a8255966464bc5b5

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.1-cp314-cp314t-musllinux_1_2_aarch64.whl:

Publisher: publish.yml on StevenBtw/solvOR

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

File details

Details for the file solvor-0.6.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for solvor-0.6.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4061530ec39bf4383c0a0079d13593dae90a61d68efd487c6b600554b75b2674
MD5 933e6604f1c8340c79f3cc4256565522
BLAKE2b-256 9688cc154bea1c332173c0bcd06608444de171cb0e535a10f2bd1588b5571011

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish.yml on StevenBtw/solvOR

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

File details

Details for the file solvor-0.6.1-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: solvor-0.6.1-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 264.9 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 solvor-0.6.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 1b24b9e055567376a52e56db24c28e54a30fdfd6b95c5978d24f084903fd6e7b
MD5 9c89e00bdf5b0228be3d9b4bc0f94206
BLAKE2b-256 562e018f7a701d9e071a62ae547222e9f94e71f561b517d62aef3a4f8b15f6d5

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.1-cp314-cp314-win_amd64.whl:

Publisher: publish.yml on StevenBtw/solvOR

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

File details

Details for the file solvor-0.6.1-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for solvor-0.6.1-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 bd022df7d942302c6a012f6074432f4d284077ae9ab092578b0721e6e1a82df6
MD5 d1b4c5fae26d1b6dea7a0da500fa3c3e
BLAKE2b-256 7522b078ab0aaaad02e8a0277ab94b930c00963db5a264933914048270fe9b64

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.1-cp314-cp314-musllinux_1_2_x86_64.whl:

Publisher: publish.yml on StevenBtw/solvOR

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

File details

Details for the file solvor-0.6.1-cp314-cp314-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for solvor-0.6.1-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 f0c3f0b1c31f01129c66298fb0669b4ae47814e4beb06e902db6c3bdbb4969f3
MD5 250b9249827cc75b2603015ad2427c98
BLAKE2b-256 fb5a9a82a3395c621cbf7fe7859cb6dfe8fd4905ee7e6f8e2bb9bdb8b275c660

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.1-cp314-cp314-musllinux_1_2_aarch64.whl:

Publisher: publish.yml on StevenBtw/solvOR

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

File details

Details for the file solvor-0.6.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for solvor-0.6.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a18a106c8cfee5c5ecd561f4db0f6c2037fb933ec7e3ce368a05c559eead0154
MD5 d18304bfe46f7d651aea8775bec970bc
BLAKE2b-256 f133cbdb053faefd91642a9fb8ec0ffebc72e2433d493fbea3042c9a57ea1c7e

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on StevenBtw/solvOR

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

File details

Details for the file solvor-0.6.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for solvor-0.6.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c1fd6ef33e65f454215cb44754a2f4efc2d62c4078e4f64a6c99b4e16f7394c0
MD5 e1793bf3433ccbc5aca9f33606c3a169
BLAKE2b-256 d63e4bc826801c1c68300cf720eb9e6c6bee8591133571e46171f184b4aacdf8

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish.yml on StevenBtw/solvOR

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

File details

Details for the file solvor-0.6.1-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for solvor-0.6.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0c3c32be778c02b9868254e6d8d3c4cccce9844fdd06330ed0bd5b7049a76b0e
MD5 d3bc5bb126948a1eea3fe125fb036e5e
BLAKE2b-256 5039635a49c29b99402b405b588ba123840fa04746243c2ac84cc2d9bc790229

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.1-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: publish.yml on StevenBtw/solvOR

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

File details

Details for the file solvor-0.6.1-cp314-cp314-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for solvor-0.6.1-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 3e380235ecaffe2d694bd61c78b9f27a5df75840a63338c33b7769838a2cfcde
MD5 3cf5bc1efe66ee3ca4459f7a8bc25ae2
BLAKE2b-256 c92250739693c4f38f31ece046f34741beb6cc90217d91a9890b0a86728c304f

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.1-cp314-cp314-macosx_10_12_x86_64.whl:

Publisher: publish.yml on StevenBtw/solvOR

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

File details

Details for the file solvor-0.6.1-cp313-cp313t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for solvor-0.6.1-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 85624d5d421845083f877b29b2ec3e26bf09ed94d2db4089cc3331b2423bd2f6
MD5 0a8b3d63314a525d21d66aec360b80be
BLAKE2b-256 9dda615c982ec491a7cb111f46bb1d7d8ff1c852b6d5581748ca1e3e7defa1b4

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.1-cp313-cp313t-musllinux_1_2_x86_64.whl:

Publisher: publish.yml on StevenBtw/solvOR

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

File details

Details for the file solvor-0.6.1-cp313-cp313t-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for solvor-0.6.1-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 6f1f1efe6e76d69985165a08626cceea7deeec1617a77ca8dc254da099faab50
MD5 07c606e53cfa57b06c85256d4b209752
BLAKE2b-256 81351ff6bfc20544effa0443b8a25c973a902fdae5cf3bea917153940ad8613e

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.1-cp313-cp313t-musllinux_1_2_aarch64.whl:

Publisher: publish.yml on StevenBtw/solvOR

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

File details

Details for the file solvor-0.6.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for solvor-0.6.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d6a6d5d81de9f8e58506c918ed1a4e72f06fb76ed0cda2161545b18433a09f72
MD5 c957d7332b576318afe884c7973b856c
BLAKE2b-256 ae58d825cef9cb44fed72713fd8db20fcb80b76ae53b45c89f18d5505b4d0f81

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish.yml on StevenBtw/solvOR

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

File details

Details for the file solvor-0.6.1-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: solvor-0.6.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 265.1 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 solvor-0.6.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 85669d0f7289fa206d85345a0f02a1cfe8f0c589f4500a8e7ea3e6c1cbf39f80
MD5 6155dd42173fca81a94816a20964f897
BLAKE2b-256 b7c7e6b6eeafe1d3ce74cc1baa3b1a88b6bbba0d005cf6389493aac5308bbe6a

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.1-cp313-cp313-win_amd64.whl:

Publisher: publish.yml on StevenBtw/solvOR

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

File details

Details for the file solvor-0.6.1-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for solvor-0.6.1-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8d6af66c1a2c549c5cd9660ab8842232b4f8709355cc28c4bf304239aa5ee94a
MD5 84240c23c8f7a7d2532493b65ad9f119
BLAKE2b-256 e40672d4f0168b2326a230e401970c590950ffb9a63d0d97e68fbdeb044834c8

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.1-cp313-cp313-musllinux_1_2_x86_64.whl:

Publisher: publish.yml on StevenBtw/solvOR

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

File details

Details for the file solvor-0.6.1-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for solvor-0.6.1-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 7dccb766351e7640c4c0af1b0b407a078231fb220ddcac6d5a5e8b69d406e0f8
MD5 b50208d795ebc6110f43967904fef496
BLAKE2b-256 c39c4a3cf4f2eea697b5b32a24b0acad146dd372623cac88c7aef3e9338c985a

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.1-cp313-cp313-musllinux_1_2_aarch64.whl:

Publisher: publish.yml on StevenBtw/solvOR

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

File details

Details for the file solvor-0.6.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for solvor-0.6.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b9cb0f28f00ceb25ff7bf8db97b3f0cdf07d2a08cfaef4294cdfad845a44afde
MD5 9e3957a20fccf74ba31015b5099b828a
BLAKE2b-256 af9f1810f9139ed4f2d20e2dd90d8f3d066e2b91a3c7b539c7ec8f865b19b73a

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on StevenBtw/solvOR

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

File details

Details for the file solvor-0.6.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for solvor-0.6.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 054897097e1727859ece528410ad9ac90878a862e2194afc3f48243b997de0e1
MD5 9e5b52be979f99b55ff44b2aae8398c8
BLAKE2b-256 68e6bfc28c3b469accd68b617dd18dfec206321e216b0ee262f8a696fe78bdde

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish.yml on StevenBtw/solvOR

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

File details

Details for the file solvor-0.6.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for solvor-0.6.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4f999ef79ce456895b3f384360e07e8e68453decaedcbed71f4abf6e709ceac8
MD5 c94e9f09ef004398a1a98d2cca09f515
BLAKE2b-256 e934d98364f5f67943e9a3e3f5158fa5faeb6506ce39d1e77c25561a85b2d65d

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.1-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: publish.yml on StevenBtw/solvOR

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

File details

Details for the file solvor-0.6.1-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for solvor-0.6.1-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 aa85afc3272aed7d2c5a725fe27c4c7bd050ae338b886e826e73b85c4107ca01
MD5 4fbf731a7b56bd253491b07d476c8b57
BLAKE2b-256 dcf16d6a22c6894f5252ad2d777440b3186cbe3ede0c0b7a5ddd06cee8e1f972

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.1-cp313-cp313-macosx_10_12_x86_64.whl:

Publisher: publish.yml on StevenBtw/solvOR

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

File details

Details for the file solvor-0.6.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: solvor-0.6.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 265.6 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 solvor-0.6.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 d6c299d7ba7b10e8f7bcd61d8ad9664e0551e90ab3f3344da0b6382e1c6daec6
MD5 f0849a1401320e49d89b9aa33624cec2
BLAKE2b-256 8d47ce96dc613bbbf92df6f7cd1fcae20c8d2dd295161568350f5fdd84d93d11

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.1-cp312-cp312-win_amd64.whl:

Publisher: publish.yml on StevenBtw/solvOR

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

File details

Details for the file solvor-0.6.1-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for solvor-0.6.1-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 6acf4abdddf8a1f6ab2aaf9b528970b9cf0be0d136848761e829c577294d788e
MD5 5055641cd26724469a0690998f964994
BLAKE2b-256 cb4cb6e60c2457004a21e45a31cf5fc42ce9daaa60a9514625d3d199b54b0823

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.1-cp312-cp312-musllinux_1_2_x86_64.whl:

Publisher: publish.yml on StevenBtw/solvOR

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

File details

Details for the file solvor-0.6.1-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for solvor-0.6.1-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 8426f34c996997bdcd792425420c3f9cccf88e23aa56c569faa94145a5003d84
MD5 dd813b27c002a4a7fb12ca9c67f4ca87
BLAKE2b-256 8721071743ec8e5d63983533e164d3a1b5822f8e1d829784444a3f81c078eb17

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.1-cp312-cp312-musllinux_1_2_aarch64.whl:

Publisher: publish.yml on StevenBtw/solvOR

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

File details

Details for the file solvor-0.6.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for solvor-0.6.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4657a2e6b4d201c8af7cc15a62db2a9b372aff23cc72ca276ad67a15893fdd75
MD5 2678c330d5ac601fceaafe8619b11ba4
BLAKE2b-256 bce10e317299c67c575329a69ba801d47c4c4fa783ff7d4b95219bfe0e9ad48d

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on StevenBtw/solvOR

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

File details

Details for the file solvor-0.6.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for solvor-0.6.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 248a6e043d36f9faaa0155b7a28701c01fa0a9fe286b1959142a2c76c44f8670
MD5 3bb9973308454d8a114f4b94439a6f3b
BLAKE2b-256 c38ff09bfc32a144d904188013b63cb0bb189ee85e1a6bc3fe9ff9f11a2fbf7d

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish.yml on StevenBtw/solvOR

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

File details

Details for the file solvor-0.6.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for solvor-0.6.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7aa1f16f2a4cf2ab77ab2b6f3a208b6f3a11efd2306bb2bc7661cf711fdd2056
MD5 6d7eb2fcce1234963aec1c915f68a2e3
BLAKE2b-256 6b8f7fc2b6d1d2edec05943fe1f4e4b8c00321d2dda83fc8642cc94fae496857

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.1-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: publish.yml on StevenBtw/solvOR

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

File details

Details for the file solvor-0.6.1-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for solvor-0.6.1-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 2cdd87a9fc28989ce0d8d7872105bc86428605311bc587d9e4e037548c3fe8de
MD5 8e189c3143835b8ff3e7e26bf4d26ee2
BLAKE2b-256 7a9c0f27c5050be6450989f7ab62d24b5f6eda8582d78b522405eef12d987880

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.1-cp312-cp312-macosx_10_12_x86_64.whl:

Publisher: publish.yml on StevenBtw/solvOR

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