Giter VIP home page Giter VIP logo

pytanis's Introduction

Pytanis logo

Pytanis includes a Pretalx client and all the tooling you need for conferences using Pretalx, from handling the initial call for papers to creating the final program.

CI/CD CI - Test Coverage CD - Build Docs - Build
Package PyPI - Version PyPI - Downloads PyPI - Python Version
Details Hatch project linting - Ruff types - Mypy License - MIT GitHub Sponsors

Trivia: The name Pytanis is a reference to Prytanis using the typical py prefix of Python tools. Prytanis was the name given to the leading members of the government of a city (polis) in ancient Greece. Offices that used this title usually had responsibility for presiding over councils of some kind, which met in the Prytaneion. Romani ite domum!

Features

  • simple configuration management with a config folder in your home directory, just like many other tools do
  • easily access Google Sheets, potentially filled by some Google Forms, and download sheets as data frames
  • easy to use Pretalx client that returns proper Python objects thanks to the power of pydantic
  • simple HelpDesk client for batch mails, e.g. to your reviewers
  • awesome documentation with best practices for the program committee of any community-based conference
  • tools to assign proposals to reviewers based on constraints like preferences
  • tools to support the final selection process of proposals
  • tools to support the creation of the final program schedule

Getting started

To install Pytanis simple run:

pip install pytanis

or to install all recommended additional dependencies:

pip install 'pytanis[all]'

Then create a configuration file and directory in your user's home directory. For Linux/MacOS/Unix use ~/.pytanis/config.toml and for Windows $HOME\.pytanis\config.toml, where $HOME is e.g. C:\Users\yourusername\. Use your favourite editor to open config.toml within the .pytanis directory and add the following content:

[Pretalx]
api_token = "932ndsf9uk32nf9sdkn3454532nj32jn"

[Google]
client_secret_json = "client_secret.json"
token_json = "token.json"
service_user_authentication = false

[HelpDesk]
account = "934jcjkdf-39df-9df-93kf-934jfhuuij39fd"
entity_id = "[email protected]"
token = "dal:Sx4id934C3Y-X934jldjdfjk"

where you need to replace the dummy values in the sections [Pretalx] and [HelpDesk] accordingly. Note that service_user_authentication is not required to be set if authentication via a service user is not necessary (see GSpread using Service Account for more details).

Retrieving the Credentials and Tokens

  • Google:

    • For end users: Follow the Python Quickstart for the Google API to generate and download the file client_secret.json. Move it to the ~/.pytanis folder as client_secret.json. The file token.json will be automatically generated later. Note that config.toml references those two files relative to its own location.
    • For any automation project: Follow GSpread using Service Account to generate and download the file client_secret.json. Move it to the ~/.pytanis folder as client_secret.json. Also make sure to set service_user_authentication = true in your ~/.pytanis/config.toml.
  • Pretalx: The API token can be found in the Pretalx user settings.

  • HelpDesk: Login to the LiveChat Developer Console then go to Tools ยป Personal Access Tokens. Choose Create new token +, enter a the name Pytanis, select all scopes and confirm. In the following screen copy the Account ID, Entity ID and Token and paste them into config.toml. In case there is any trouble with livechat, contact a helpdesk admin. Also note that the Account ID from your token is the Agent ID needed when you create a ticket. The Team ID you get from HelpDesk then Agents ยป Name of your agent and the final part of the URL shown now.

    When setting up your agent the first time, you also need to go to LiveChat then log in with your Helpdesk team credentials and click Request to get an invitation. An admin of LiveChat needs to confirm this and add you as role admin. Then, check HelpDesk to receive the invitation and accept.

Development

This section is only relevant if you want to contribute to Pytanis itself. Your help is highly appreciated!

After having cloned this repository:

  1. install hatch globally, e.g. pipx install hatch,
  2. install pre-commit globally, e.g. pipx install pre-commit,
  3. [only once] run hatch config set dirs.env.virtual .direnv to let VS Code find your virtual environments.

and then you are already set up to start hacking. Use hatch run to do everything you would normally do in a virtual environment, e.g. hatch run juptyer lab to start JupyterLab in the default environment, hatch run cov for unit tests and coverage (like tox) or hatch run docs:serve to build & serve the documentation. For code hygiene, execute hatch run lint:all in order to run ruff and mypy or hatch run lint:fix to automatically fix formatting issues. Check out the [tool.hatch.envs] sections in pyproject.toml to learn about other commands. If you really must enter a virtual environment, use hatch shell to enter the default environment.

Documentation

The documentation is made with Material for MkDocs and is hosted by GitHub Pages. Your help to extend the documentation, especially in the context of using Pytanis for community conferences like PyConDE, EuroPython, etc. is highly appreciated.

License & Credits

Pytanis is distributed under the terms of the MIT license. To start this project off a lot of inspiration and code was taken from Alexander Hendorf and Matthias Hofmann.

pytanis's People

Contributors

christopher0 avatar finkenils avatar florianwilhelm avatar pre-commit-ci[bot] avatar sebastianneubauer avatar theopinard avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.