Skip to main content

A package to parse sign up genius form responses

Project description

signup-genius

A library for parsing signup-genius responses from the signup html, as a free alternative to a paid Signup Genius subscription.

Install

pip install signup-genius

Usage

from signup_genius import get_signups

signups = get_signups('https://www.signup-genius.com/go/xyz...')

The signup objects returned will vary depending on the type of signup genius encountered.

For example for a simple yes/no response with adult / child counts the signup will look like:

class Signup:
    name: str
    response: str
    comments: str = ''
    adult_count: int = 0
    child_count: int = 0

Whereas for a signup-genius with Date / Location / Time and multiple slots with capacities, it will look like:

class Signup:
    name: str
    comments: str = ''
    count: int = 0
    slot: Slot

# where the embedded slot object is:

class Slot:
    date: str
    location: str
    time: str
    name: str
    comments: str = ""
    capacity: int = 1
    filled: int = 0

Name Mapping

Often times it is useful to coerce the signup names returned to a known set of names, e.g. a club or organization whose menbers are known but where there may be variations in how those names are entered in the signup genius ... Jeff vs. Jeffrey, amy vs Amy, etc.

2 Options are supported:

An explicit mapping from what is entered to the final representation

mapping = {'Jeff Adams': 'Jeffrey Adams'}
signups = get_signups(url, name_mapping=mapping)

Where a signup is updated, an _original_name attribute will be added to the object allowing you to detect after the fact which signups have been updated

Fuzzy matching against a population of names

You can supply a population of known names, and any names not matching this population will be mapped to the closest match (using Levenshtein distance).

known_names = ['Jeffrey Adams', 'John Doe', Amy Malone']
signups = get_signups(url, match_names=known_names)

Again the signups that are updated will be annotated with an _original_name attribute.

Signup Genius Variants supported

So far the following variants are supported:

  • Yes / No / Maybe responses with guest count
  • Yes / No / Maybe responses with adult, child counts
  • Date / Time / Slot signups
  • Date / Location / Time / Slot signups

The call to get_signups will first inspect the signup genius to interpret the variant, and use the appropriate parser. If the variant is not known then a UnsupportedVariant exception will be raised

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

signup-genius-0.0.8.tar.gz (14.1 kB view hashes)

Uploaded Source

Built Distribution

signup_genius-0.0.8-py3-none-any.whl (15.6 kB view hashes)

Uploaded Python 3

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