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 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.

solvor-0.6.0-cp314-cp314t-musllinux_1_2_x86_64.whl (597.3 kB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

solvor-0.6.0-cp314-cp314t-musllinux_1_2_aarch64.whl (559.0 kB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARM64

solvor-0.6.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (381.7 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARM64

solvor-0.6.0-cp314-cp314-win_amd64.whl (260.9 kB view details)

Uploaded CPython 3.14Windows x86-64

solvor-0.6.0-cp314-cp314-musllinux_1_2_x86_64.whl (595.9 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

solvor-0.6.0-cp314-cp314-musllinux_1_2_aarch64.whl (558.1 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

solvor-0.6.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (384.3 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

solvor-0.6.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (381.1 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

solvor-0.6.0-cp314-cp314-macosx_11_0_arm64.whl (357.6 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

solvor-0.6.0-cp314-cp314-macosx_10_12_x86_64.whl (366.3 kB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

solvor-0.6.0-cp313-cp313t-musllinux_1_2_x86_64.whl (597.5 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ x86-64

solvor-0.6.0-cp313-cp313t-musllinux_1_2_aarch64.whl (559.1 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

solvor-0.6.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (381.9 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARM64

solvor-0.6.0-cp313-cp313-win_amd64.whl (261.0 kB view details)

Uploaded CPython 3.13Windows x86-64

solvor-0.6.0-cp313-cp313-musllinux_1_2_x86_64.whl (596.3 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

solvor-0.6.0-cp313-cp313-musllinux_1_2_aarch64.whl (558.3 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

solvor-0.6.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (384.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

solvor-0.6.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (381.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

solvor-0.6.0-cp313-cp313-macosx_11_0_arm64.whl (357.6 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

solvor-0.6.0-cp313-cp313-macosx_10_12_x86_64.whl (366.4 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

solvor-0.6.0-cp312-cp312-win_amd64.whl (261.5 kB view details)

Uploaded CPython 3.12Windows x86-64

solvor-0.6.0-cp312-cp312-musllinux_1_2_x86_64.whl (596.8 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

solvor-0.6.0-cp312-cp312-musllinux_1_2_aarch64.whl (558.7 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

solvor-0.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (385.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

solvor-0.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (381.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

solvor-0.6.0-cp312-cp312-macosx_11_0_arm64.whl (358.0 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

solvor-0.6.0-cp312-cp312-macosx_10_12_x86_64.whl (367.0 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

File details

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

File metadata

File hashes

Hashes for solvor-0.6.0-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9b51fdb2ad736c133404452d4f153e79ae9e78baa54a2f9558e9b033a2b0310c
MD5 93e52488590e8b1cc80a0f2f0b9d8862
BLAKE2b-256 3a4fafdf18e0a96c46d6fc9ce9ad3bd53cedc9c92f03072cf060199e41cb7410

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.0-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.0-cp314-cp314t-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for solvor-0.6.0-cp314-cp314t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 b95043799f756c33f442b15f068fcb6e5bd0bbad554c51c164e3d4183fb2b70a
MD5 fcdde1d30d39da2af1ed5c5dea5cd030
BLAKE2b-256 b2a78dae2321c8fbc8e4c556f71ffb63ffb2540cdecfa79b46f19640d8849063

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.0-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.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for solvor-0.6.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 91a49e8b8d3c8f5ededa4a857c8d05d0b444d6fb21c4866ad916cc63f5f52d3c
MD5 f2efaa93a41096224c06e20b442ae9a2
BLAKE2b-256 c9eaa61c9f85ecfcdb1a00fa11879da569942ccd4aa8975d5e3de37be5bdac57

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.0-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.0-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: solvor-0.6.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 260.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.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 4f52b05d46fe8710a90052c721c4e82bc44f3c86324ca2bd7722aa5076e14b84
MD5 2fd198faa4f8b5c7d798803fb182c8f7
BLAKE2b-256 5a242378f813c80dd476e03bf980c0d175f5d4fb7b98d2c982b481c220a00c45

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.0-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.0-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for solvor-0.6.0-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5092d0896890f677d660465e855c26abc931800f9d3d716c150843ca05b86468
MD5 91f58871cee02bb42a4ee6bc2e8b8d08
BLAKE2b-256 e7de7093c2cd8233e659c76a97bd5fe6c15295733d7194002265777497a42029

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.0-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.0-cp314-cp314-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for solvor-0.6.0-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 3cdac997850bcb325ea9d4bb7c5e1a84ad1b743a1288755bc619c21f7ca5fa0e
MD5 c34a0710a274fa6216351d45938e3961
BLAKE2b-256 43d24dc76021d04c4b525c84d82d253120b9235249ef5df359b7e6583195afd8

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.0-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.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for solvor-0.6.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b184404ec77893a3ec3427f560b3a83c1646e7a8d1f5e86a70a5a031b50dd236
MD5 cbd2824a4ad08a9e3af037b6abd1f1b7
BLAKE2b-256 12f737fc1b41a6c4d6d14dff67b5b74b6c35210bf75338691ffc7911ecf5ae6e

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.0-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.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for solvor-0.6.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6e155237215b1166251ac0b35545b01407d1f8bed0332697eec87aa62e025b5b
MD5 a53d0184263faa2883785fc03a8cf1d6
BLAKE2b-256 e5e87bd7500524861b400dcf9f7e4c23c4dfe38cf9df12ed829e8af8ba09aedc

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.0-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.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for solvor-0.6.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bfd6c05d9732d1598d2621e5bd8960176db28a2a3d08a611c976d890afb39a6d
MD5 407bbe91340c05b7cd097fbcc9b95019
BLAKE2b-256 b8edcd75f2d0b3ff14ce11b8bc88c49118f8f28a9a7ee39342ed8ffd300c7d60

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.0-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.0-cp314-cp314-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for solvor-0.6.0-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 ee747b4b8236dd369b14285d8565c412d57b86c7fd68db4d2a96742e51cc6d57
MD5 6b2dd4b1b8370e8d7cebff1f7eaf92cf
BLAKE2b-256 543020ba1805d611ac17d1d57acd3a7893dce8afd46500f5d2455279f971aa1b

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.0-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.0-cp313-cp313t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for solvor-0.6.0-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 414902cf9f43e8f0c56b83266c41f06bd118a008df7f52b48bd47bf8296cf820
MD5 927c09d5f5e61b31dfcb8f1beb00c8f2
BLAKE2b-256 7a8dd2fd29ff089ee90127a00f90bd3edaf57b1f96fe81b92920ded43c6160e0

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.0-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.0-cp313-cp313t-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for solvor-0.6.0-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 406a9d6371ca879f200469299eb9dd22941d40c0933ce359e0469d5fd9e3d839
MD5 fd4cd5d52f4f6ed3716da66a9d5bd20d
BLAKE2b-256 7621d6b31de39ccd87a1be27f19f838b9d89c6305e5fd62b6e56d85b55975d0b

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.0-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.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for solvor-0.6.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1a9daa6992aff42107563c16a0870b3e3a05dbcbb9bb536ca001350cf04754d5
MD5 afc3598c8305c05f2f2b0b30b6f97342
BLAKE2b-256 802c59ca38ab58775f653b20a7b0ee02c1de40524528e829cbb580d384999c9e

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.0-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.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: solvor-0.6.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 261.0 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.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 0d02eba4c61d7ae67f788deea148e0096e49fe219f296e3421ac4f36b3c71727
MD5 003e073d82fd31e964ff2ea75663588c
BLAKE2b-256 82237cefae7b71d250296ba40dce4799fd06799999e08bfbad0e082166946399

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.0-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.0-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for solvor-0.6.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3670438f175cd52489c9ea59e41126ff74cb5b73012ab6b1d9f9eb39f5391253
MD5 4b3937741ca55635306b7616bdb27591
BLAKE2b-256 7c2765ebacd69871e0818610ea3bd2abe13e292cec36d7fe402b4fb4ccd26957

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.0-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.0-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for solvor-0.6.0-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 96f6fea1ad91a269b497b5110e690063b9ba1c8d06f32156677d4c7a53e2b216
MD5 4c86d8e2f79841522ecde55f8328c2d5
BLAKE2b-256 2a67a4592189befaa19d8bcbc2fbf7d29ffe9f3c88fd9838bbcfd2383a64a804

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.0-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.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for solvor-0.6.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0d5e3b093ae9085abfb4dfbdc365f3adccfbab11bafb4e62310605c91d092192
MD5 853249372ec9f9f2e39389346f5ada1a
BLAKE2b-256 773788ee77fc569ca0ed98f06df74b0ae1a942a4657df56fa68f69a662d29f3c

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.0-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.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for solvor-0.6.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ee174d79c7a169d918f7380abacc9d0187cac78a07d7dee9d43bdf63401984e2
MD5 0450d61f81256430256e1bb56c1f98d0
BLAKE2b-256 d7289576633cb66f2f3f5e095c17d7d58b1e0552a5c0ecef1e762f152b22c802

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.0-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.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for solvor-0.6.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b9e31c2d7b45d2a3e3276630b53b4bcb0b731d698dd9ec98c4cd444555a71c1b
MD5 248b886460f538b09d2ad01f1b691522
BLAKE2b-256 97de97d8fb5579644649b5450b86d4519bd35484927db923e2e5590071fa1b2f

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.0-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.0-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for solvor-0.6.0-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 296fed631430013ef1685a3ba8864a6cda6b35926d3c52cb3efbbd4626cb82e9
MD5 ac89a17099e3214e0d9610991e83e63a
BLAKE2b-256 21d25c29f3f41c99bc326ab0c75c1bd850fd6cc62ed109aed6452ff159ca6326

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.0-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.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: solvor-0.6.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 261.5 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.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 1c389757e431f47363aba1d89cc8b1ed6f68602049a45bdb3a4c2567509735dc
MD5 c515ba5ecb5416079a8cb93b339d9cb4
BLAKE2b-256 438c02ebaf6e4cadc14e548bb71c5c1d96bf2327c87be56ff20c6379f8a74978

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.0-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.0-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for solvor-0.6.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 92b0c4eb2911dffbccf8ad1d9267e33729484ebcb4c59e2d03f3bb3b8b879b3d
MD5 713161685490aed504173bba751beffa
BLAKE2b-256 607565d6a23511b600cf0e0e933be43095b81e4a440caf968ffff27cdacd7c14

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.0-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.0-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for solvor-0.6.0-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 01ac37d03b8d9c5a0f2eca35fa3db6a1c743a70a5a1951541f7e2eb0137f155b
MD5 e0a1142790f627c2090e1974acec5d72
BLAKE2b-256 eb9f02c5263d530e8be99268cf2afda6ad24df9aba22b295404b60931335bbc2

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.0-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.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for solvor-0.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 08a15d7ec0ba63621253c4a09360f2fdac58b914af9f54091ae7625cbc69698f
MD5 bbd3b1367eff0b3891ce94fb2b24fdce
BLAKE2b-256 63fa8921e90d65b35d4016056b88cccff27dc78189cf1bb4ddc1c5bd5b12f4de

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.0-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.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for solvor-0.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2182cc9368402d92a5137d134fb41c65ec0ca2866396f6926b4f64f6d473719c
MD5 7c61b5072862bae145525b3a05fb0dce
BLAKE2b-256 b90042ea3832dc1facd8652cfb52875dd6d2a450be3236ff7bbddad3f158f2d9

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.0-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.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for solvor-0.6.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2ee03474ac141d52484089dd20285f6562e98ee3af0d61e5e1a251e78dd3e5d2
MD5 ccad4131b25441a8350158f313feda8f
BLAKE2b-256 dee66267f379ab9b236fb76f7b3972705aa412d00b56d818b09fe17c3859db22

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.0-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.0-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for solvor-0.6.0-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c17a2ac013fb0eff31d9cf28afaff7d5791699c49a012295cf7e97d559912321
MD5 f187e17684f3b085c23c8b6b27540580
BLAKE2b-256 3addc6c12ce5b23c2a95a71d4e2245e48dd05dc0c19871f7b790ad82aff3ea26

See more details on using hashes here.

Provenance

The following attestation bundles were made for solvor-0.6.0-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