Skip to main content

Official Python SDK for the Vilvik optimization cloud API.

Project description

vilvik

Official Python SDK for Vilvik, a cloud platform for running and tracking optimization jobs through a REST API, with scoped keys and webhook delivery. Vilvik currently runs Genetic Algorithm (PyGAD) workloads, and this SDK gives your Python code a typed client, a submit-and-wait helper, and a clean error hierarchy to drive them.

Documentation: SDK guide · REST API reference · all docs

pip install vilvik

Quick start

import vilvik

client = vilvik.Client(api_key="vlk_live_…")

submission = client.submissions.create(
    fitness_func="""
def fitness_func(ga_instance, solution, idx):
    return -sum(s * s for s in solution)
""",
    num_genes=5,
    num_generations=100,
    sol_per_pop=50,
    name="quadratic-minimisation",
)

print(submission.id, submission.status)        # "abc123…", "queued"

result = client.results.wait_for(submission.id, timeout=300)
print(result.best_fitness, result.best_solution)

The run() one-liner

For scripts and notebook cells, vilvik.run(...) packages create-and-wait into a context manager that also cancels the run if you exit the block early:

import vilvik

fn = """
def fitness_func(ga_instance, solution, idx):
    return -sum(s * s for s in solution)
"""

with vilvik.run(fitness_func=fn, num_genes=5, num_generations=50) as result:
    print(result.best_fitness)

The API key is read from VILVIK_API_KEY if you do not pass it explicitly.

Listing and pagination

The list endpoints return a Page whose items are typed dataclasses; for walking everything use iter_all:

page = client.submissions.list(limit=25)
for sub in page:
    print(sub.id, sub.status, sub.name)

# All submissions, transparently following the cursor:
for sub in client.submissions.iter_all():
    ...

Branching a finished run

Results.continue_run branches a fresh run from a finished result. Each call creates a child submission whose parent_submission is the result you forked from. Pass any GA parameter you want to override:

parent = client.results.get(result_id)
variant_a = client.results.continue_run(parent.id, mutation_probability=0.10)
variant_b = client.results.continue_run(parent.id, sol_per_pop=100)

The Vilvik dashboard renders the resulting lineage as an interactive tree on the result page.

Errors

Every SDK error inherits from vilvik.VilvikError. Subclasses let you catch specific failure modes:

try:
    client.submissions.get("does-not-exist")
except vilvik.NotFoundError as e:
    print("Not found:", e.request_id)
except vilvik.RateLimitError as e:
    print("Slow down, retry after", e.retry_after, "seconds")
except vilvik.AuthenticationError:
    print("Check your API key and scopes")
except vilvik.VilvikError:
    print("Something else went wrong")

Configuration

Argument Default Notes
api_key os.environ["VILVIK_API_KEY"] Required. Bearer token created in the dashboard.
base_url https://vilvik.com/api/v1 Override for staging or self-hosted instances.
timeout 60.0 seconds Per-HTTP-request timeout.
max_retries 2 Idempotent (GET / HEAD) retries on network errors.

Documentation

The full SDK guide lives at https://vilvik.com/docs/sdk/, with a page per feature:

Every SDK page links to the matching REST API reference, so you can drop down to the raw HTTP calls whenever you need to.

Development

pip install -e ".[dev]"
pytest

License

MIT.

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

vilvik-0.3.0.tar.gz (26.5 kB view details)

Uploaded Source

Built Distribution

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

vilvik-0.3.0-py3-none-any.whl (22.8 kB view details)

Uploaded Python 3

File details

Details for the file vilvik-0.3.0.tar.gz.

File metadata

  • Download URL: vilvik-0.3.0.tar.gz
  • Upload date:
  • Size: 26.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for vilvik-0.3.0.tar.gz
Algorithm Hash digest
SHA256 770788393b7437ad7ccd0381f81e255d03ff28e763f85101180eaece93aee5cb
MD5 9571c43008d002cb0b3b6ee9c2b199e1
BLAKE2b-256 57fc529db9d7015186f080ea0fad214d40899596286e5a3ce952b51002dccf87

See more details on using hashes here.

Provenance

The following attestation bundles were made for vilvik-0.3.0.tar.gz:

Publisher: release.yml on VilvikInc/vilvik-python

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

File details

Details for the file vilvik-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: vilvik-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 22.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for vilvik-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 81eb2b6f4895d2e23c5895ae43fbba6f2ebc05b08c1089602fcb89d5f43e8df6
MD5 ea3b813000e2c658a775663978b22ca8
BLAKE2b-256 3e420346dcddae8ef4722c6e33019a462b54bd71376b85fe5c3045357ee9ef03

See more details on using hashes here.

Provenance

The following attestation bundles were made for vilvik-0.3.0-py3-none-any.whl:

Publisher: release.yml on VilvikInc/vilvik-python

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