Skip to content

Repo Structure

Jakub Dakowski edited this page May 27, 2023 · 3 revisions

Project structure explained

Folder structure

Here I sorted all the folders in this repo into different categories. Below, you can find a legend for the symbols:

Symbol Explanation
🤔 Discussed
🧰 Not ready
💀 Not maintained

platrynchos package

  • commons - Code that is common to different sub-packages.
    • alphabit.py - Implements the alphabit system used to speed up database querying
    • exceptions.py - All exceptions of the package can be imported from here
    • logger.py - Logger configuration
    • misc.py - Miscellaneous functions and classes
    • utils.py - Different functions and objects not related to the logic of the software
  • crossword - Crossword representation
    • base.py - The most basic crossword representation
    • colrow.py - Wrapper over single columns and rows
    • addable.py 💀 - Crosswords that can be combined, used in the old generation method, require hints
    • improvable.py - Size-constrained crosswords with a smart word insertion method
  • cruciverbalist - word sets, ColRow selection and word difficulty
  • director 🤔 - Implements different generators and optimizers
  • exclusive - functions and classes specific to the runtime
    • cpython.py - CPython specific functions
    • pyodide.py - Pyodide specific functions
  • scripts.py 🧰 - scripts that can be run using poetry run ...` (more on them here)
  • visualize.py 💀 - visualization in LaTeX

Web app

The app folder contains the webpack project for the web app. It relies on copying Poetry build from dist to app/dist. JavaScript functions written there are imported in platrynchos/exclusive/pyodide.py and are responsible for allowing the usage of non-python libraries when running in the browser.

Tests and docs

  • benchmarks - different crossword generators used for profiling
  • tests - classic PyTest tests
  • doctests - contains GitHub Wiki docs (this is why it is a submodule) and doctests run by PyTest

Data stuff

  • data - Already generated crosswords and related data
  • analysis 💀 - Data analysis scripts

Technical folders

  • .github - GitHub stuff (Actions, Dependabot, Issue templates)
  • .vscode - Visual Studio Code configuration and tasks

GitHub Actions

Using Poetry

In this project, we use Poetry as our packaging and dependency manager. You can read about its basic usage here. Here are some pointers on using it in this project:

  • Installation:
    • On Mac/Linux:

      curl -sSL https://install.python-poetry.org | python3 -

    • On Windows:

      (Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py -

    • Using pipx: pipx install poetry. Find more info here.

  • Activate the virtual environment using poetry shell,
  • Run single commands in the virtual environments using poetry run [command]. For example, poetry run pytest.
  • Run predefined poetry functions:
    • poetry run en-download redownloads the English database.