Skip to main content

LOS — Language for Optimization Specification

License: MIT Python 3.9+ Security: Hardened

LOS is a Language for Optimization Specification. It compiles human-readable model definitions into executable Python code (currently using PuLP as the primary engine), keeping your business logic clean and your data pipeline separate.

"Write Math, Run Python."


Installation

pip install los-lang

Or install from source:

git clone https://github.com/jowpereira/los.git
cd los
pip install -e .

Quick Start

1. Write a Model (production.los)

import "products.csv"
import "factories.csv"

set Products
set Factories

param Cost[Products]
param Capacity[Factories]

var qty[Products, Factories] >= 0

minimize:
    sum(qty[p,f] * Cost[p] for p in Products, f in Factories)

subject to:
    capacity_limit:
        sum(qty[p,f] for p in Products) <= Capacity[f]
        for f in Factories

2. Prepare Data

products.csv

Products,Cost
WidgetA,10
WidgetB,15

factories.csv

Factories,Capacity
Factory1,1000
Factory2,2000

3. Solve (solve.py)

import los

result = los.solve("production.los")

if result.is_optimal:
    print(f"Optimal Cost: {result.objective}")
    print(result.get_variable("qty", as_df=True))

Why LOS?

Feature LOS Raw PuLP/Pyomo
Readability Whiteboard-like syntax Python boilerplate
Data Binding Native CSV imports Manual DataFrame wrangling
Security Sandboxed execution Full Python access
Debug Inspect generated code (model.code()) Black box
Solver CBC, GLPK, Gurobi, CPLEX (via PuLP) Same
Backends PuLP (Pyomo planned) N/A

Advanced: Manual Data Binding

For dynamic data (APIs, databases), inject DataFrames directly:

import los
import pandas as pd

df = pd.DataFrame({"Products": ["A", "B"], "Cost": [10, 20]})

result = los.solve("model.los", data={"Products": df})

Documentation

Document Description
User Manual Full syntax reference and API guide
Security Policy Sandbox details and threat model
Changelog Version history
Backlog Roadmap and future features
Contributing How to contribute

License

MIT © Jonathan Pereira

Metadata

Release files for los-lang 3.3.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for los-lang 3.3.7
File Size Uploaded Provenance
los_lang-3.3.7.tar.gz 280.2 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for los-lang 3.3.7
File Interpreter ABI Platform
los_lang-3.3.7-py3-none-any.whl Python 3 none any Details

Total release size: 358.9 kB

Release files / los_lang-3.3.7.tar.gz

Download URL los_lang-3.3.7.tar.gz
Size 280.2 kB
Tags Source
SHA-256 checksum
How to use checksums
102ef55433f2ac2104dafed9f2008479177953e10a7723d5ff6572c170ff0d08
BLAKE2b-256 checksum
How to use checksums
4994cedf2e91ecec9f9a0d01cd9ff6f0ed62f6f30a9f82af274d12e14d606937
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.7.9

Release files / los_lang-3.3.7-py3-none-any.whl

Download URL los_lang-3.3.7-py3-none-any.whl
Size 78.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
59800c82845fc199f9608826f408c5aa59f7e51f7353dac06b3d256ffc3706e3
BLAKE2b-256 checksum
How to use checksums
16f48120d434bdb4e1db1d315b18403e7cab542567d22d1ef720eef2210de236
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.7.9

Security for los-lang 3.3.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page