Skip to main content

CLI to find an optimal, personal schedule for the 37c3 congress.

Project description

Optimal Congress

Command Line Interface to find an optimal, personal schedule for the 37c3 congress.

Project status

⚠️ Development for this project is currently on hold. It can quickly be adapted for future CCC events. ⚠️

Optimization logic

The optimization relies on a simple 2-fold logic:

  1. Find a personal schedule that maximizes the sum of 'rating scores' assigned to scheduled events.
  2. The schedule must be feasible, i.e. the times of scheduled events must not overlap.

Installation

pip install optimal-congress

Available commands

optimal-congress provides the following commands:

$ optimal-congress -h

 Usage: optimal-congress [OPTIONS] COMMAND [ARGS]...

 Optimize your personal schedule for the 37c3.

╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --verbose  -v        Include debug messages in output.                               │
│ --help     -h        Show this message and exit.                                     │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ───────────────────────────────────────────────────────────────────────────╮
│ dump                   Export all latest ratings to CSV, for bulk editing.           │
│ fetch                  Fetch events and rooms from API, and update local cache.      │
│ load                   Bulk import ratings from CSV.                                 │
│ next                   List next upcoming events, filtered by minimum rating.        │
│ optimize               Optimize the schedule based on ratings.                       │
│ rate                   Interactively rate those events that have not been rated yet. │
│ ratings                List all latest ratings.                                      │
╰──────────────────────────────────────────────────────────────────────────────────────╯

Example Workflow

  1. Fetch events and rooms from congress API:
$ optimal-congress fetch

Fetching events and rooms from API...
Fetched 49 events and 58 rooms from API.

Comparing API with cache...
Found 0 new events, and 0 removed events.

Updating cache...
Done.
  1. Interactively rate events, if not already rated:
$ optimal-congress rate

Unrated event (1/65):

2023-12-28 20:15 - 20:55

Lützerath Lebt! Einblicke in den Widerstand

You can't evict a movement! Der Energiekonzern RWE wird noch Jahre brauchen, die Kohle unter Lützi abzubaggern: Der Kampf gegen die Kohle und für Klimagerechtigkeit geht weiter!

https://events.ccc.de/congress/2023/hub/en/event/lutzerath_lebt_einblicke_in_den_widerstand

Rate from 0 to 10 (Enter to exit):
  1. Review you current ratings:
$ optimal-congress ratings

loading events and ratings from cache...

Latest ratings:
- Rating: 8.0 - Amateurfunk als Hilfe in Not- und Katastrophenfäll..https://events.ccc.de/congress/2023/hub/en/event/amateurfunk-als-hilfe-in-not-und-katastrophenfalle
- Rating: 8.0 - InfraNodus: Reveal Non-Obvious and Find the Gaps w..https://events.ccc.de/congress/2023/hub/en/event/infranodus-reveal-non-obvious-and-find-the-gaps-wi
  1. Optimize your personal schedule:
$ optimal-congress optimize

loading events, ratings, and rooms from cache...

Scheduled events:
- Wed 27 10:30-11:00 Saal 1..........37C3: Feierliche Eröffnung................https://events.ccc.de/congress/2023/hub/en/event/37c3_feierliche_eroffnung
- Wed 27 11:00-11:40 Saal Granville..The Trouble with Green Electricity Certi..https://events.ccc.de/congress/2023/hub/en/event/the_trouble_with_green_electricity_certificates
...

Testing

Software testing uses pytest, relying upon poetry and tox.
To run all tests, across multiple python versions:

poetry run tox

Roadmap

  • output more/all information with associated events (see feature request and example for more compact hyperlinks with rich)
  • change rating scheme, to minimize effort and maximize flexibility (see feature request),
    e.g. by first marking favorites, and only requiring relative ratings for conflicting favorites
  • test export of schedule to iOS app via QR code (same format as halfnarp)

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

optimal_congress-0.7.4.tar.gz (11.7 kB view details)

Uploaded Source

Built Distribution

optimal_congress-0.7.4-py3-none-any.whl (12.7 kB view details)

Uploaded Python 3

File details

Details for the file optimal_congress-0.7.4.tar.gz.

File metadata

  • Download URL: optimal_congress-0.7.4.tar.gz
  • Upload date:
  • Size: 11.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.10.6 Linux/6.6.6-76060606-generic

File hashes

Hashes for optimal_congress-0.7.4.tar.gz
Algorithm Hash digest
SHA256 eb3f15f4dcb5642b583fcf6b3969c0f235d267b7922f37af374e3dd0a4472ccb
MD5 94fb18e265780adea232c11a16becb7d
BLAKE2b-256 bc2c63f43a1b36c5b4a5e607f41a01a4b6c63e24b2d3f28d93d7ef7705189ee9

See more details on using hashes here.

File details

Details for the file optimal_congress-0.7.4-py3-none-any.whl.

File metadata

  • Download URL: optimal_congress-0.7.4-py3-none-any.whl
  • Upload date:
  • Size: 12.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.10.6 Linux/6.6.6-76060606-generic

File hashes

Hashes for optimal_congress-0.7.4-py3-none-any.whl
Algorithm Hash digest
SHA256 84496f4fed9a23b4b22d4847c8c91f6885a1657e2a379b2e80a099b6290c6380
MD5 7db21f60291272fb1af5737b151abf29
BLAKE2b-256 f0bda17d8ef40f115b9a0665d97007fa5879689e52995a8763e62199d768a359

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page