pdfschedule


Namepdfschedule JSON
Version 0.4.0 PyPI version JSON
download
home_pagehttps://github.com/jwodder/schedule
SummaryWeekly schedule typesetter
upload_time2023-05-03 22:58:42
maintainer
docs_urlNone
authorJohn Thorvald Wodder II
requires_python>=3.7
licenseMIT
keywords pdf schedule week
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            .. image:: http://www.repostatus.org/badges/latest/active.svg
    :target: http://www.repostatus.org/#active
    :alt: Project Status: Active — The project has reached a stable, usable
          state and is being actively developed.

.. image:: https://img.shields.io/pypi/pyversions/pdfschedule.svg
    :target: https://pypi.org/project/pdfschedule/

.. image:: https://img.shields.io/github/license/jwodder/schedule.svg
    :target: https://opensource.org/licenses/MIT
    :alt: MIT License

`GitHub <https://github.com/jwodder/schedule>`_
| `PyPI <https://pypi.org/project/pdfschedule/>`_
| `Issues <https://github.com/jwodder/schedule/issues>`_
| `Changelog <https://github.com/jwodder/schedule/blob/master/CHANGELOG.md>`_

``pdfschedule`` is a Python 3 script for creating PDF documents showing
one's weekly schedule of events.


Installation
============
``pdfschedule`` requires Python 3.7 or higher.  Just use `pip
<https://pip.pypa.io>`_ for Python 3 (You have pip, right?) to install
``pdfschedule`` and its dependencies::

    python3 -m pip install pdfschedule


Usage
=====

::

    pdfschedule [<OPTIONS>] [<infile> [<outfile>]]

Input — formatted as described below under "`Input Format`_" — is read from
``<infile>`` (defaulting to standard input), and the resulting PDF is written
to ``<outfile>`` (defaulting to ``<infile>`` with its file extension changed to
``.pdf``, or to standard output if ``<infile>`` is standard input).


Options
-------

-C, --color             Color the event boxes various colors instead of just
                        grey.

-E TIME, --end-time TIME
                        Specify the time of day at which each day should start.
                        Times are specified in the format ``HH:MM`` using
                        24-hour time, the minutes being optional (and
                        optionally separated from the hour by a colon or
                        period).  Defaults to half an hour before the earliest
                        event start time or 00:00, whichever is later.

-F FONT, --font FONT    Typeset text in the given font.  ``FONT`` must be
                        either the name of a builtin PostScript font or the
                        path to a ``.ttf`` file.  By default, text is typeset
                        in Helvetica.

-f SIZE, --font-size SIZE
                        Set the size of the font used for event information to
                        ``SIZE`` (default 10).  The names of the days of the
                        week are typeset at ``SIZE * 1.2``; the times of day
                        are typeset at ``SIZE / 1.2``.

-M, --start-monday      Use Monday as the first day of the week instead of
                        Sunday.

-p, --portrait          Typeset the table in "portrait mode," i.e., with the
                        shorter side of the paper as the width.  The default is
                        to typeset it in "landscape mode."

-s FACTOR, --scale FACTOR
                        Divide the length of each side of the table by
                        ``FACTOR``.  Without this option, the table fills the
                        whole page, except for a one-inch margin on each side.

-S TIME, --start-time TIME
                        Specify the time of day at which each day should end.
                        Times are specified in the format ``HH:MM`` using
                        24-hour time, the minutes being optional (and
                        optionally separated from the hour by a colon or
                        period).  Defaults to half an hour after the latest
                        event end time or 24:00, whichever is earlier.

-T, --no-times          Do not show the times for each hour line.

--no-weekends           Do not show Sunday and Saturday.


Input Format
============

Input is a `YAML <http://yaml.org>`_ list of dictionaries.  Each dictionary
represents a single weekly event and must contain the following keys:

``name``
   *(optional)* The (possibly multiline) text to display in the event's box on
   the schedule

``days``
   The days of the week on which the event occurs, specified as a string of one
   or more of the following abbreviations in any order (optionally with
   intervening whitespace and/or commas):

   ===================================  =========
   Abbreviation                         Day
   ===================================  =========
   ``Su`` or ``Sun``                    Sunday
   ``M`` or ``Mo`` or ``Mon``           Monday
   ``T`` or ``Tu`` or ``Tue``           Tuesday
   ``W`` or ``We`` or ``Wed``           Wednesday
   ``H`` or ``R`` or ``Th`` or ``Thu``  Thursday
   ``F`` or ``Fr`` or ``Fri``           Friday
   ``Sa`` or ``Sat``                    Saturday
   ===================================  =========

   Case is significant.  Unknown abbreviations are ignored.

``time``
   The start & end times of the event in the format ``HH:MM - HH:MM``.  Times
   are specified in 24-hour format, the minutes being optional (and optionally
   separated from the hour by a colon or period).

``color``
   *(optional)* The background color of the event's box, given as six
   hexadecimal digits.  The default background color is either grey or, if
   ``--color`` is in effect, taken from a small palette of basic colors based
   on the event's index.


Example
=======

The following input file:

.. code:: yaml

    - name: Garfield impersonation
      days: M
      time: 7-9
      color: "FFB04E"

    - name: Work to live
      days: MTWRF
      time: 9-17

    - name: |
        Exercise class
        (The one on Main Street)
      days: M, W, F
      time: 17:00 - 18:00
      color: "29FF65"

    - name: Have they brought back my favorite show yet?
      days: R
      time: 19-19.30
      color: "FF84DF"

    - name: Poor decisions
      days: F
      time: 22-23.59
      color: "000000"

    - name: Sleep in
      days: SatSun
      time: 7-12
      color: "4226C4"

produces (using the default options) an output file that looks like this:

.. image:: https://github.com/jwodder/schedule/raw/v0.4.0/examples/example01.png

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/jwodder/schedule",
    "name": "pdfschedule",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": "",
    "keywords": "pdf,schedule,week",
    "author": "John Thorvald Wodder II",
    "author_email": "pdfschedule@varonathe.org",
    "download_url": "https://files.pythonhosted.org/packages/f5/07/070c0a3e885a5f69ca3d828dcd2f06b6c4cd85ef3594db19d21f0bd9aacb/pdfschedule-0.4.0.tar.gz",
    "platform": null,
    "description": ".. image:: http://www.repostatus.org/badges/latest/active.svg\n    :target: http://www.repostatus.org/#active\n    :alt: Project Status: Active \u2014 The project has reached a stable, usable\n          state and is being actively developed.\n\n.. image:: https://img.shields.io/pypi/pyversions/pdfschedule.svg\n    :target: https://pypi.org/project/pdfschedule/\n\n.. image:: https://img.shields.io/github/license/jwodder/schedule.svg\n    :target: https://opensource.org/licenses/MIT\n    :alt: MIT License\n\n`GitHub <https://github.com/jwodder/schedule>`_\n| `PyPI <https://pypi.org/project/pdfschedule/>`_\n| `Issues <https://github.com/jwodder/schedule/issues>`_\n| `Changelog <https://github.com/jwodder/schedule/blob/master/CHANGELOG.md>`_\n\n``pdfschedule`` is a Python 3 script for creating PDF documents showing\none's weekly schedule of events.\n\n\nInstallation\n============\n``pdfschedule`` requires Python 3.7 or higher.  Just use `pip\n<https://pip.pypa.io>`_ for Python 3 (You have pip, right?) to install\n``pdfschedule`` and its dependencies::\n\n    python3 -m pip install pdfschedule\n\n\nUsage\n=====\n\n::\n\n    pdfschedule [<OPTIONS>] [<infile> [<outfile>]]\n\nInput \u2014 formatted as described below under \"`Input Format`_\" \u2014 is read from\n``<infile>`` (defaulting to standard input), and the resulting PDF is written\nto ``<outfile>`` (defaulting to ``<infile>`` with its file extension changed to\n``.pdf``, or to standard output if ``<infile>`` is standard input).\n\n\nOptions\n-------\n\n-C, --color             Color the event boxes various colors instead of just\n                        grey.\n\n-E TIME, --end-time TIME\n                        Specify the time of day at which each day should start.\n                        Times are specified in the format ``HH:MM`` using\n                        24-hour time, the minutes being optional (and\n                        optionally separated from the hour by a colon or\n                        period).  Defaults to half an hour before the earliest\n                        event start time or 00:00, whichever is later.\n\n-F FONT, --font FONT    Typeset text in the given font.  ``FONT`` must be\n                        either the name of a builtin PostScript font or the\n                        path to a ``.ttf`` file.  By default, text is typeset\n                        in Helvetica.\n\n-f SIZE, --font-size SIZE\n                        Set the size of the font used for event information to\n                        ``SIZE`` (default 10).  The names of the days of the\n                        week are typeset at ``SIZE * 1.2``; the times of day\n                        are typeset at ``SIZE / 1.2``.\n\n-M, --start-monday      Use Monday as the first day of the week instead of\n                        Sunday.\n\n-p, --portrait          Typeset the table in \"portrait mode,\" i.e., with the\n                        shorter side of the paper as the width.  The default is\n                        to typeset it in \"landscape mode.\"\n\n-s FACTOR, --scale FACTOR\n                        Divide the length of each side of the table by\n                        ``FACTOR``.  Without this option, the table fills the\n                        whole page, except for a one-inch margin on each side.\n\n-S TIME, --start-time TIME\n                        Specify the time of day at which each day should end.\n                        Times are specified in the format ``HH:MM`` using\n                        24-hour time, the minutes being optional (and\n                        optionally separated from the hour by a colon or\n                        period).  Defaults to half an hour after the latest\n                        event end time or 24:00, whichever is earlier.\n\n-T, --no-times          Do not show the times for each hour line.\n\n--no-weekends           Do not show Sunday and Saturday.\n\n\nInput Format\n============\n\nInput is a `YAML <http://yaml.org>`_ list of dictionaries.  Each dictionary\nrepresents a single weekly event and must contain the following keys:\n\n``name``\n   *(optional)* The (possibly multiline) text to display in the event's box on\n   the schedule\n\n``days``\n   The days of the week on which the event occurs, specified as a string of one\n   or more of the following abbreviations in any order (optionally with\n   intervening whitespace and/or commas):\n\n   ===================================  =========\n   Abbreviation                         Day\n   ===================================  =========\n   ``Su`` or ``Sun``                    Sunday\n   ``M`` or ``Mo`` or ``Mon``           Monday\n   ``T`` or ``Tu`` or ``Tue``           Tuesday\n   ``W`` or ``We`` or ``Wed``           Wednesday\n   ``H`` or ``R`` or ``Th`` or ``Thu``  Thursday\n   ``F`` or ``Fr`` or ``Fri``           Friday\n   ``Sa`` or ``Sat``                    Saturday\n   ===================================  =========\n\n   Case is significant.  Unknown abbreviations are ignored.\n\n``time``\n   The start & end times of the event in the format ``HH:MM - HH:MM``.  Times\n   are specified in 24-hour format, the minutes being optional (and optionally\n   separated from the hour by a colon or period).\n\n``color``\n   *(optional)* The background color of the event's box, given as six\n   hexadecimal digits.  The default background color is either grey or, if\n   ``--color`` is in effect, taken from a small palette of basic colors based\n   on the event's index.\n\n\nExample\n=======\n\nThe following input file:\n\n.. code:: yaml\n\n    - name: Garfield impersonation\n      days: M\n      time: 7-9\n      color: \"FFB04E\"\n\n    - name: Work to live\n      days: MTWRF\n      time: 9-17\n\n    - name: |\n        Exercise class\n        (The one on Main Street)\n      days: M, W, F\n      time: 17:00 - 18:00\n      color: \"29FF65\"\n\n    - name: Have they brought back my favorite show yet?\n      days: R\n      time: 19-19.30\n      color: \"FF84DF\"\n\n    - name: Poor decisions\n      days: F\n      time: 22-23.59\n      color: \"000000\"\n\n    - name: Sleep in\n      days: SatSun\n      time: 7-12\n      color: \"4226C4\"\n\nproduces (using the default options) an output file that looks like this:\n\n.. image:: https://github.com/jwodder/schedule/raw/v0.4.0/examples/example01.png\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Weekly schedule typesetter",
    "version": "0.4.0",
    "project_urls": {
        "Bug Tracker": "https://github.com/jwodder/schedule/issues",
        "Homepage": "https://github.com/jwodder/schedule",
        "Source Code": "https://github.com/jwodder/schedule"
    },
    "split_keywords": [
        "pdf",
        "schedule",
        "week"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0660c4a2042ddf0cc33e34ea78a4fa39f50c74b4f5a96b2925d0edbb492cd657",
                "md5": "88f2eb3f92f5d56b31b8c65ca0901eda",
                "sha256": "ae21daca71038712bcbce1575e787c8670a8fce3f122ef283fc8dcfe06ea5d42"
            },
            "downloads": -1,
            "filename": "pdfschedule-0.4.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "88f2eb3f92f5d56b31b8c65ca0901eda",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 9233,
            "upload_time": "2023-05-03T22:58:40",
            "upload_time_iso_8601": "2023-05-03T22:58:40.015460Z",
            "url": "https://files.pythonhosted.org/packages/06/60/c4a2042ddf0cc33e34ea78a4fa39f50c74b4f5a96b2925d0edbb492cd657/pdfschedule-0.4.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f507070c0a3e885a5f69ca3d828dcd2f06b6c4cd85ef3594db19d21f0bd9aacb",
                "md5": "1749365968c421f9ac413be0e4a47259",
                "sha256": "7b7a98a2c6248562b329143c0d90ec605dc38cb0f19a9be285b2dc2b7430d585"
            },
            "downloads": -1,
            "filename": "pdfschedule-0.4.0.tar.gz",
            "has_sig": false,
            "md5_digest": "1749365968c421f9ac413be0e4a47259",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 40714,
            "upload_time": "2023-05-03T22:58:42",
            "upload_time_iso_8601": "2023-05-03T22:58:42.068150Z",
            "url": "https://files.pythonhosted.org/packages/f5/07/070c0a3e885a5f69ca3d828dcd2f06b6c4cd85ef3594db19d21f0bd9aacb/pdfschedule-0.4.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-05-03 22:58:42",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "jwodder",
    "github_project": "schedule",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "tox": true,
    "lcname": "pdfschedule"
}
        
Elapsed time: 0.07145s