zettel-org


Namezettel-org JSON
Version 0.8.0 PyPI version JSON
download
home_pagehttps://github.com/bbugyi200/zorg
SummaryThe zettel note manager of the future.
upload_time2024-07-28 17:10:54
maintainerNone
docs_urlNone
authorBryan M Bugyi
requires_python>=3.9
licenseMIT license
keywords
VCS
bugtrack_url
requirements annotated-types antlr4-python3-runtime bolton-clack bolton-eris bolton-ion bolton-logrus bolton-metaman bolton-proctor bolton-typist greenlet jinja2 markdown-it-py markupsafe mdurl pydantic pydantic-core pydantic-settings pygments python-dateutil python-dotenv pyyaml rich six sqlalchemy sqlmodel structlog tqdm typing-extensions vimala
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # zorg

**The zettel note manager of the future.**

_project status badges:_

[![CI Workflow](https://github.com/bbugyi200/zorg/actions/workflows/ci.yml/badge.svg)](https://github.com/bbugyi200/zorg/actions/workflows/ci.yml)
[![Coverage](https://codecov.io/gh/bbugyi200/zorg/branch/master/graph/badge.svg)](https://codecov.io/gh/bbugyi200/zorg)
[![Documentation Status](https://readthedocs.org/projects/zettel-org/badge/?version=latest)](https://zettel-org.readthedocs.io/en/latest/?badge=latest)
[![Package Health](https://snyk.io/advisor/python/zettel-org/badge.svg)](https://snyk.io/advisor/python/zettel-org)

_version badges:_

[![Project Version](https://img.shields.io/pypi/v/zettel-org)](https://pypi.org/project/zettel-org/)
[![Python Versions](https://img.shields.io/pypi/pyversions/zettel-org)](https://pypi.org/project/zettel-org/)
[![Cookiecutter: cc-python](https://img.shields.io/static/v1?label=cc-python&message=2024.01.16-4&color=d4aa00&logo=cookiecutter&logoColor=d4aa00)](https://github.com/python-boltons/cc-python)
[![Docker: pythonboltons/main](https://img.shields.io/static/v1?label=pythonboltons%20%2F%20main&message=2024.01.16&color=8ec4ad&logo=docker&logoColor=8ec4ad)](https://github.com/python-boltons/docker-python)


## Installation 🗹

### Using `pipx` to Install (preferred)

This package _could_ be installed using pip like any other Python package (in
fact, see the section below this one for instructions on how to do just that).
Given that we only need this package's entry points, however, we recommend that
[pipx][11] be used instead:

```shell
# install and setup pipx
python3 -m pip install --user pipx
python3 -m pipx ensurepath

# install zorg
pipx install zettel-org
```

### Using `pip` to Install

To install `zorg` using [pip][9], run the following
commands in your terminal:

``` shell
python3 -m pip install --user zettel-org  # install zorg
```

If you don't have pip installed, this [Python installation guide][10] can guide
you through the process.


## Command-Line Interface (CLI)

The following subsections have been auto-generated using [cog][14]:

### `zorg --help`

<!-- [[[[[kooky.cog
import subprocess

popen = subprocess.Popen(["zorg", "--help"], stdout=subprocess.PIPE)
stdout, _ = popen.communicate()
print("```", stdout.decode().strip(), "```", sep="\n")

for cmd in [
    "action",
    "action open",
    "compile",
    "db",
    "db create",
    "db reindex",
    "edit",
    "file",
    "file rename",
    "note",
    "note move",
    "query",
    "template",
    "template init",
    "template list",
    "template render",
]:
    popen = subprocess.Popen(["zorg"] + cmd.split() + ["--help"], stdout=subprocess.PIPE)
    stdout, _ = popen.communicate()
    print(f"\n### `zorg {cmd} --help`\n")
    print("```", stdout.decode().strip(), "```", sep="\n")
]]]]] -->
```
usage: zorg [-h] [-c CONFIG_FILE] [-L [FILE[:LEVEL][@FORMAT]]] [-v]
            [--version] [-d ZETTEL_DIR]
            {action,compile,db,edit,file,note,query,template} ...

The zettel note manager of the future.

options:
  -c CONFIG_FILE, --config CONFIG_FILE
                        Absolute or relative path to a YAML file that contains
                        this application's configuration.
  -d ZETTEL_DIR, --dir ZETTEL_DIR
                        The directory where all of your notes are stored.
  -h, --help            show this help message and exit
  -L [FILE[:LEVEL][@FORMAT]], --log [FILE[:LEVEL][@FORMAT]]
                        This option can be used to enable a new logging
                        handler. FILE should be either a path to a logfile or
                        one of the following special file types: [1] 'stderr'
                        to log to standard error (enabled by default), [2]
                        'stdout' to log to standard out, [3] 'null' to disable
                        all console (e.g. stderr) handlers, or [4] '+[NAME]'
                        to choose a default logfile path (where NAME is an
                        optional basename for the logfile). LEVEL can be any
                        valid log level (i.e. one of ['CRITICAL', 'DEBUG',
                        'ERROR', 'INFO', 'TRACE', 'WARNING']) and FORMAT can
                        be any valid log format (i.e. one of ['color', 'json',
                        'nocolor']). NOTE: This option can be specified
                        multiple times and has a default argument of '+'.
  -v, --verbose         How verbose should the output be? This option can be
                        specified multiple times (e.g. -v, -vv, -vvv, ...).
  --version             show program's version number and exit

subcommands:
  {action,compile,db,edit,file,note,query,template}
    action              Used to interface with vim via an action protocol.
    compile             Compiles zorg (*.zo) files into zorc (*.zoc) files.
    db                  Commands for managing Zorg's SQL database.
    edit                Generate new day logs from templates and open the main
                        day log in your system's editor. This is the default
                        subcommand.
    file                Commands for managing files.
    note                Commands for managing individual notes.
    query               Run a zorg query against your zettel directory.
    template            Commands for managing .zot templates.
```

### `zorg action --help`

```
usage: zorg action [-h] {open} ...

Used to interface with vim via an action protocol.

options:
  -h, --help  show this help message and exit

subcommands:
  {open}
    open      Open a zettel link if one exists on the provided zorg file line.
```

### `zorg action open --help`

```
usage: zorg action open [-h] zo_path line_number [option_idx]

Open a zettel link if one exists on the provided zorg file line.

positional arguments:
  line_number  The line number that your editor cursor is currently located
               on.
  option_idx   Used on a second 'action open' run to indicate which option was
               selected.
  zo_path      The file that your editor currently has open.

options:
  -h, --help   show this help message and exit
```

### `zorg compile --help`

```
usage: zorg compile [-h] zo_path

Compiles zorg (*.zo) files into zorc (*.zoc) files.

positional arguments:
  zo_path     Path to the zorg file you want to compile.

options:
  -h, --help  show this help message and exit
```

### `zorg db --help`

```
usage: zorg db [-h] {create,reindex} ...

Commands for managing Zorg's SQL database.

options:
  -h, --help        show this help message and exit

subcommands:
  {create,reindex}
    create          Create zorg's backend database from scratch.
    reindex         Reindex any changed files by adding them to the database.
```

### `zorg db create --help`

```
usage: zorg db create [-h] [-f]

Create zorg's backend database from scratch.

options:
  -h, --help            show this help message and exit
  -f, --update-error-file-whitelist
                        If this option is NOT provided, any errors in Zorg
                        files that are NOT already in the error file whitelist
                        will cause Zorg to abort database creation.
```

### `zorg db reindex --help`

```
usage: zorg db reindex [-h] [paths ...]

Reindex any changed files by adding them to the database.

positional arguments:
  paths       Reindex these specific paths. If this argument is not provided,
              we use a hashing approach to check which files have changed.

options:
  -h, --help  show this help message and exit
```

### `zorg edit --help`

```
usage: zorg edit [-h] [zo_paths ...]

Generate new day logs from templates and open the main day log in your system's editor. This is the default subcommand.

positional arguments:
  zo_paths    The .zo files we want to open in an editor.

options:
  -h, --help  show this help message and exit
```

### `zorg file --help`

```
usage: zorg file [-h] {rename} ...

Commands for managing files.

options:
  -h, --help  show this help message and exit

subcommands:
  {rename}
    rename    Rename a file.
```

### `zorg file rename --help`

```
usage: zorg file rename [-h] src_name dest_name

Rename a file.

positional arguments:
  dest_name   The destination filename.
  src_name    The source filename.

options:
  -h, --help  show this help message and exit
```

### `zorg note --help`

```
usage: zorg note [-h] {move} ...

Commands for managing individual notes.

options:
  -h, --help  show this help message and exit

subcommands:
  {move}
    move      Move a note to a different page.
```

### `zorg note move --help`

```
usage: zorg note move [-h] zid new_page [note_type]

Move a note to a different page.

positional arguments:
  new_page    Path to the destination page (i.e. where our note will be moved
              to).
  note_type   If provided, this argument specifies a new note type for the
              moved note. This can be used, for example, to mark an OPEN todo
              as DONE before moving it to a file dedicated to done todos.
              Valid values: ['x', '~']
  zid         ZID of the note we want to move.

options:
  -h, --help  show this help message and exit
```

### `zorg query --help`

```
usage: zorg query [-h] [-e] [-s] query

Run a zorg query against your zettel directory.

positional arguments:
  query                 The zorg query we will run.

options:
  -h, --help            show this help message and exit
  -e, --open-in-editor  Store query results in a temporary Zorg query page and
                        then open this page in an editor.
  -s, --store-in-file   Store query results in temporary Zorg query page and
                        then print that page's file path to STDOUT.
```

### `zorg template --help`

```
usage: zorg template [-h] {init,list,render} ...

Commands for managing .zot templates.

options:
  -h, --help          show this help message and exit

subcommands:
  {init,list,render}
    init              Initialize a new file using a zorg template.
    list              List all zorg template files.
    render            Render a new .zo file using a .zot template.
```

### `zorg template init --help`

```
usage: zorg template init [-h] [-f] [-t TEMPLATE] new_path [variables ...]

Initialize a new file using a zorg template.

positional arguments:
  new_path              Path to the new file you would like to create.
  variables             A list of variable specs of the form of key=value.

options:
  -f, --force           Overwrite target file if the file already exists.
  -h, --help            show this help message and exit
  -t TEMPLATE, --template TEMPLATE
                        Optional path to the .zot template. If a template is
                        not provided, we will infer what template to use based
                        off of the new file's name.
```

### `zorg template list --help`

```
usage: zorg template list [-h]

List all zorg template files.

options:
  -h, --help  show this help message and exit
```

### `zorg template render --help`

```
usage: zorg template render [-h] template [variables ...]

Render a new .zo file using a .zot template.

positional arguments:
  template    Path to the .zot template.
  variables   A list of variable specs of the form of key=value.

options:
  -h, --help  show this help message and exit
```
<!-- [[[[[end]]]]] -->

<!-- [[[[[kooky.cog
from pathlib import Path

lines = Path("./docs/design/design.md").read_text().split("\n")
if any(L.strip() for L in lines):
    fixed_lines = [L.replace("(.", "(./docs/design") if L.startswith("![") else L for L in lines]
    print("## Design Diagrams\n")
    print("\n".join(fixed_lines))
]]]]] -->
<!-- [[[[[end]]]]] -->


## Useful Links 🔗

* [API Reference][3]: A developer's reference of the API exposed by this
  project.
* [cc-python][4]: The [cookiecutter][5] that was used to generate this project.
  Changes made to this cookiecutter are periodically synced with this project
  using [cruft][12].
* [CHANGELOG.md][2]: We use this file to document all notable changes made to
  this project.
* [CONTRIBUTING.md][7]: This document contains guidelines for developers
  interested in contributing to this project.
* [Create a New Issue][13]: Create a new GitHub issue for this project.
* [Documentation][1]: This project's full documentation.


[1]: https://zettel-org.readthedocs.io/en/latest
[2]: https://github.com/bbugyi200/zorg/blob/master/CHANGELOG.md
[3]: https://zettel-org.readthedocs.io/en/latest/modules.html
[4]: https://github.com/python-boltons/cc-python
[5]: https://github.com/cookiecutter/cookiecutter
[6]: https://docs.readthedocs.io/en/stable/
[7]: https://github.com/bbugyi200/zorg/blob/master/CONTRIBUTING.md
[8]: https://github.com/bbugyi200/zorg
[9]: https://pip.pypa.io
[10]: http://docs.python-guide.org/en/latest/starting/installation/
[11]: https://github.com/pypa/pipx
[12]: https://github.com/cruft/cruft
[13]: https://github.com/bbugyi200/zorg/issues/new/choose
[14]: https://pypi.org/project/cogapp/

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/bbugyi200/zorg",
    "name": "zettel-org",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": null,
    "keywords": null,
    "author": "Bryan M Bugyi",
    "author_email": "bryanbugyi34@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/22/6c/e41ecb3de51cb929d0090fce3b1270d1b383cc31bb121d49e8b417a6f5db/zettel_org-0.8.0.tar.gz",
    "platform": null,
    "description": "# zorg\n\n**The zettel note manager of the future.**\n\n_project status badges:_\n\n[![CI Workflow](https://github.com/bbugyi200/zorg/actions/workflows/ci.yml/badge.svg)](https://github.com/bbugyi200/zorg/actions/workflows/ci.yml)\n[![Coverage](https://codecov.io/gh/bbugyi200/zorg/branch/master/graph/badge.svg)](https://codecov.io/gh/bbugyi200/zorg)\n[![Documentation Status](https://readthedocs.org/projects/zettel-org/badge/?version=latest)](https://zettel-org.readthedocs.io/en/latest/?badge=latest)\n[![Package Health](https://snyk.io/advisor/python/zettel-org/badge.svg)](https://snyk.io/advisor/python/zettel-org)\n\n_version badges:_\n\n[![Project Version](https://img.shields.io/pypi/v/zettel-org)](https://pypi.org/project/zettel-org/)\n[![Python Versions](https://img.shields.io/pypi/pyversions/zettel-org)](https://pypi.org/project/zettel-org/)\n[![Cookiecutter: cc-python](https://img.shields.io/static/v1?label=cc-python&message=2024.01.16-4&color=d4aa00&logo=cookiecutter&logoColor=d4aa00)](https://github.com/python-boltons/cc-python)\n[![Docker: pythonboltons/main](https://img.shields.io/static/v1?label=pythonboltons%20%2F%20main&message=2024.01.16&color=8ec4ad&logo=docker&logoColor=8ec4ad)](https://github.com/python-boltons/docker-python)\n\n\n## Installation \ud83d\uddf9\n\n### Using `pipx` to Install (preferred)\n\nThis package _could_ be installed using pip like any other Python package (in\nfact, see the section below this one for instructions on how to do just that).\nGiven that we only need this package's entry points, however, we recommend that\n[pipx][11] be used instead:\n\n```shell\n# install and setup pipx\npython3 -m pip install --user pipx\npython3 -m pipx ensurepath\n\n# install zorg\npipx install zettel-org\n```\n\n### Using `pip` to Install\n\nTo install `zorg` using [pip][9], run the following\ncommands in your terminal:\n\n``` shell\npython3 -m pip install --user zettel-org  # install zorg\n```\n\nIf you don't have pip installed, this [Python installation guide][10] can guide\nyou through the process.\n\n\n## Command-Line Interface (CLI)\n\nThe following subsections have been auto-generated using [cog][14]:\n\n### `zorg --help`\n\n<!-- [[[[[kooky.cog\nimport subprocess\n\npopen = subprocess.Popen([\"zorg\", \"--help\"], stdout=subprocess.PIPE)\nstdout, _ = popen.communicate()\nprint(\"```\", stdout.decode().strip(), \"```\", sep=\"\\n\")\n\nfor cmd in [\n    \"action\",\n    \"action open\",\n    \"compile\",\n    \"db\",\n    \"db create\",\n    \"db reindex\",\n    \"edit\",\n    \"file\",\n    \"file rename\",\n    \"note\",\n    \"note move\",\n    \"query\",\n    \"template\",\n    \"template init\",\n    \"template list\",\n    \"template render\",\n]:\n    popen = subprocess.Popen([\"zorg\"] + cmd.split() + [\"--help\"], stdout=subprocess.PIPE)\n    stdout, _ = popen.communicate()\n    print(f\"\\n### `zorg {cmd} --help`\\n\")\n    print(\"```\", stdout.decode().strip(), \"```\", sep=\"\\n\")\n]]]]] -->\n```\nusage: zorg [-h] [-c CONFIG_FILE] [-L [FILE[:LEVEL][@FORMAT]]] [-v]\n            [--version] [-d ZETTEL_DIR]\n            {action,compile,db,edit,file,note,query,template} ...\n\nThe zettel note manager of the future.\n\noptions:\n  -c CONFIG_FILE, --config CONFIG_FILE\n                        Absolute or relative path to a YAML file that contains\n                        this application's configuration.\n  -d ZETTEL_DIR, --dir ZETTEL_DIR\n                        The directory where all of your notes are stored.\n  -h, --help            show this help message and exit\n  -L [FILE[:LEVEL][@FORMAT]], --log [FILE[:LEVEL][@FORMAT]]\n                        This option can be used to enable a new logging\n                        handler. FILE should be either a path to a logfile or\n                        one of the following special file types: [1] 'stderr'\n                        to log to standard error (enabled by default), [2]\n                        'stdout' to log to standard out, [3] 'null' to disable\n                        all console (e.g. stderr) handlers, or [4] '+[NAME]'\n                        to choose a default logfile path (where NAME is an\n                        optional basename for the logfile). LEVEL can be any\n                        valid log level (i.e. one of ['CRITICAL', 'DEBUG',\n                        'ERROR', 'INFO', 'TRACE', 'WARNING']) and FORMAT can\n                        be any valid log format (i.e. one of ['color', 'json',\n                        'nocolor']). NOTE: This option can be specified\n                        multiple times and has a default argument of '+'.\n  -v, --verbose         How verbose should the output be? This option can be\n                        specified multiple times (e.g. -v, -vv, -vvv, ...).\n  --version             show program's version number and exit\n\nsubcommands:\n  {action,compile,db,edit,file,note,query,template}\n    action              Used to interface with vim via an action protocol.\n    compile             Compiles zorg (*.zo) files into zorc (*.zoc) files.\n    db                  Commands for managing Zorg's SQL database.\n    edit                Generate new day logs from templates and open the main\n                        day log in your system's editor. This is the default\n                        subcommand.\n    file                Commands for managing files.\n    note                Commands for managing individual notes.\n    query               Run a zorg query against your zettel directory.\n    template            Commands for managing .zot templates.\n```\n\n### `zorg action --help`\n\n```\nusage: zorg action [-h] {open} ...\n\nUsed to interface with vim via an action protocol.\n\noptions:\n  -h, --help  show this help message and exit\n\nsubcommands:\n  {open}\n    open      Open a zettel link if one exists on the provided zorg file line.\n```\n\n### `zorg action open --help`\n\n```\nusage: zorg action open [-h] zo_path line_number [option_idx]\n\nOpen a zettel link if one exists on the provided zorg file line.\n\npositional arguments:\n  line_number  The line number that your editor cursor is currently located\n               on.\n  option_idx   Used on a second 'action open' run to indicate which option was\n               selected.\n  zo_path      The file that your editor currently has open.\n\noptions:\n  -h, --help   show this help message and exit\n```\n\n### `zorg compile --help`\n\n```\nusage: zorg compile [-h] zo_path\n\nCompiles zorg (*.zo) files into zorc (*.zoc) files.\n\npositional arguments:\n  zo_path     Path to the zorg file you want to compile.\n\noptions:\n  -h, --help  show this help message and exit\n```\n\n### `zorg db --help`\n\n```\nusage: zorg db [-h] {create,reindex} ...\n\nCommands for managing Zorg's SQL database.\n\noptions:\n  -h, --help        show this help message and exit\n\nsubcommands:\n  {create,reindex}\n    create          Create zorg's backend database from scratch.\n    reindex         Reindex any changed files by adding them to the database.\n```\n\n### `zorg db create --help`\n\n```\nusage: zorg db create [-h] [-f]\n\nCreate zorg's backend database from scratch.\n\noptions:\n  -h, --help            show this help message and exit\n  -f, --update-error-file-whitelist\n                        If this option is NOT provided, any errors in Zorg\n                        files that are NOT already in the error file whitelist\n                        will cause Zorg to abort database creation.\n```\n\n### `zorg db reindex --help`\n\n```\nusage: zorg db reindex [-h] [paths ...]\n\nReindex any changed files by adding them to the database.\n\npositional arguments:\n  paths       Reindex these specific paths. If this argument is not provided,\n              we use a hashing approach to check which files have changed.\n\noptions:\n  -h, --help  show this help message and exit\n```\n\n### `zorg edit --help`\n\n```\nusage: zorg edit [-h] [zo_paths ...]\n\nGenerate new day logs from templates and open the main day log in your system's editor. This is the default subcommand.\n\npositional arguments:\n  zo_paths    The .zo files we want to open in an editor.\n\noptions:\n  -h, --help  show this help message and exit\n```\n\n### `zorg file --help`\n\n```\nusage: zorg file [-h] {rename} ...\n\nCommands for managing files.\n\noptions:\n  -h, --help  show this help message and exit\n\nsubcommands:\n  {rename}\n    rename    Rename a file.\n```\n\n### `zorg file rename --help`\n\n```\nusage: zorg file rename [-h] src_name dest_name\n\nRename a file.\n\npositional arguments:\n  dest_name   The destination filename.\n  src_name    The source filename.\n\noptions:\n  -h, --help  show this help message and exit\n```\n\n### `zorg note --help`\n\n```\nusage: zorg note [-h] {move} ...\n\nCommands for managing individual notes.\n\noptions:\n  -h, --help  show this help message and exit\n\nsubcommands:\n  {move}\n    move      Move a note to a different page.\n```\n\n### `zorg note move --help`\n\n```\nusage: zorg note move [-h] zid new_page [note_type]\n\nMove a note to a different page.\n\npositional arguments:\n  new_page    Path to the destination page (i.e. where our note will be moved\n              to).\n  note_type   If provided, this argument specifies a new note type for the\n              moved note. This can be used, for example, to mark an OPEN todo\n              as DONE before moving it to a file dedicated to done todos.\n              Valid values: ['x', '~']\n  zid         ZID of the note we want to move.\n\noptions:\n  -h, --help  show this help message and exit\n```\n\n### `zorg query --help`\n\n```\nusage: zorg query [-h] [-e] [-s] query\n\nRun a zorg query against your zettel directory.\n\npositional arguments:\n  query                 The zorg query we will run.\n\noptions:\n  -h, --help            show this help message and exit\n  -e, --open-in-editor  Store query results in a temporary Zorg query page and\n                        then open this page in an editor.\n  -s, --store-in-file   Store query results in temporary Zorg query page and\n                        then print that page's file path to STDOUT.\n```\n\n### `zorg template --help`\n\n```\nusage: zorg template [-h] {init,list,render} ...\n\nCommands for managing .zot templates.\n\noptions:\n  -h, --help          show this help message and exit\n\nsubcommands:\n  {init,list,render}\n    init              Initialize a new file using a zorg template.\n    list              List all zorg template files.\n    render            Render a new .zo file using a .zot template.\n```\n\n### `zorg template init --help`\n\n```\nusage: zorg template init [-h] [-f] [-t TEMPLATE] new_path [variables ...]\n\nInitialize a new file using a zorg template.\n\npositional arguments:\n  new_path              Path to the new file you would like to create.\n  variables             A list of variable specs of the form of key=value.\n\noptions:\n  -f, --force           Overwrite target file if the file already exists.\n  -h, --help            show this help message and exit\n  -t TEMPLATE, --template TEMPLATE\n                        Optional path to the .zot template. If a template is\n                        not provided, we will infer what template to use based\n                        off of the new file's name.\n```\n\n### `zorg template list --help`\n\n```\nusage: zorg template list [-h]\n\nList all zorg template files.\n\noptions:\n  -h, --help  show this help message and exit\n```\n\n### `zorg template render --help`\n\n```\nusage: zorg template render [-h] template [variables ...]\n\nRender a new .zo file using a .zot template.\n\npositional arguments:\n  template    Path to the .zot template.\n  variables   A list of variable specs of the form of key=value.\n\noptions:\n  -h, --help  show this help message and exit\n```\n<!-- [[[[[end]]]]] -->\n\n<!-- [[[[[kooky.cog\nfrom pathlib import Path\n\nlines = Path(\"./docs/design/design.md\").read_text().split(\"\\n\")\nif any(L.strip() for L in lines):\n    fixed_lines = [L.replace(\"(.\", \"(./docs/design\") if L.startswith(\"![\") else L for L in lines]\n    print(\"## Design Diagrams\\n\")\n    print(\"\\n\".join(fixed_lines))\n]]]]] -->\n<!-- [[[[[end]]]]] -->\n\n\n## Useful Links \ud83d\udd17\n\n* [API Reference][3]: A developer's reference of the API exposed by this\n  project.\n* [cc-python][4]: The [cookiecutter][5] that was used to generate this project.\n  Changes made to this cookiecutter are periodically synced with this project\n  using [cruft][12].\n* [CHANGELOG.md][2]: We use this file to document all notable changes made to\n  this project.\n* [CONTRIBUTING.md][7]: This document contains guidelines for developers\n  interested in contributing to this project.\n* [Create a New Issue][13]: Create a new GitHub issue for this project.\n* [Documentation][1]: This project's full documentation.\n\n\n[1]: https://zettel-org.readthedocs.io/en/latest\n[2]: https://github.com/bbugyi200/zorg/blob/master/CHANGELOG.md\n[3]: https://zettel-org.readthedocs.io/en/latest/modules.html\n[4]: https://github.com/python-boltons/cc-python\n[5]: https://github.com/cookiecutter/cookiecutter\n[6]: https://docs.readthedocs.io/en/stable/\n[7]: https://github.com/bbugyi200/zorg/blob/master/CONTRIBUTING.md\n[8]: https://github.com/bbugyi200/zorg\n[9]: https://pip.pypa.io\n[10]: http://docs.python-guide.org/en/latest/starting/installation/\n[11]: https://github.com/pypa/pipx\n[12]: https://github.com/cruft/cruft\n[13]: https://github.com/bbugyi200/zorg/issues/new/choose\n[14]: https://pypi.org/project/cogapp/\n",
    "bugtrack_url": null,
    "license": "MIT license",
    "summary": "The zettel note manager of the future.",
    "version": "0.8.0",
    "project_urls": {
        "Homepage": "https://github.com/bbugyi200/zorg"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f3b27224241dba833ac69b64fcf54fea3aeefb87ffcf2a11369e19129afbf23d",
                "md5": "fe8d5af23d366227b47c07fb07ce834b",
                "sha256": "3111ef5e1358f25c5e9c5e1856f00b366d67d6c7dd7f27de03ae697dfa569790"
            },
            "downloads": -1,
            "filename": "zettel_org-0.8.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "fe8d5af23d366227b47c07fb07ce834b",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 136803,
            "upload_time": "2024-07-28T17:10:52",
            "upload_time_iso_8601": "2024-07-28T17:10:52.388680Z",
            "url": "https://files.pythonhosted.org/packages/f3/b2/7224241dba833ac69b64fcf54fea3aeefb87ffcf2a11369e19129afbf23d/zettel_org-0.8.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "226ce41ecb3de51cb929d0090fce3b1270d1b383cc31bb121d49e8b417a6f5db",
                "md5": "0f1109fb99fb34a67599f4cad843faaf",
                "sha256": "688f7b56c8ef74afb176805e943dcdb742a78191388ec64a1a22529c4401f78f"
            },
            "downloads": -1,
            "filename": "zettel_org-0.8.0.tar.gz",
            "has_sig": false,
            "md5_digest": "0f1109fb99fb34a67599f4cad843faaf",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 183866,
            "upload_time": "2024-07-28T17:10:54",
            "upload_time_iso_8601": "2024-07-28T17:10:54.051809Z",
            "url": "https://files.pythonhosted.org/packages/22/6c/e41ecb3de51cb929d0090fce3b1270d1b383cc31bb121d49e8b417a6f5db/zettel_org-0.8.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-07-28 17:10:54",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "bbugyi200",
    "github_project": "zorg",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "annotated-types",
            "specs": [
                [
                    "==",
                    "0.7.0"
                ]
            ]
        },
        {
            "name": "antlr4-python3-runtime",
            "specs": [
                [
                    "==",
                    "4.13.1"
                ]
            ]
        },
        {
            "name": "bolton-clack",
            "specs": [
                [
                    "==",
                    "0.3.12"
                ]
            ]
        },
        {
            "name": "bolton-eris",
            "specs": [
                [
                    "==",
                    "0.2.3"
                ]
            ]
        },
        {
            "name": "bolton-ion",
            "specs": [
                [
                    "==",
                    "0.1.0"
                ]
            ]
        },
        {
            "name": "bolton-logrus",
            "specs": [
                [
                    "==",
                    "0.1.3"
                ]
            ]
        },
        {
            "name": "bolton-metaman",
            "specs": [
                [
                    "==",
                    "0.1.2"
                ]
            ]
        },
        {
            "name": "bolton-proctor",
            "specs": [
                [
                    "==",
                    "0.2.2"
                ]
            ]
        },
        {
            "name": "bolton-typist",
            "specs": [
                [
                    "==",
                    "0.2.0"
                ]
            ]
        },
        {
            "name": "greenlet",
            "specs": [
                [
                    "==",
                    "3.0.3"
                ]
            ]
        },
        {
            "name": "jinja2",
            "specs": [
                [
                    "==",
                    "3.1.4"
                ]
            ]
        },
        {
            "name": "markdown-it-py",
            "specs": [
                [
                    "==",
                    "3.0.0"
                ]
            ]
        },
        {
            "name": "markupsafe",
            "specs": [
                [
                    "==",
                    "2.1.5"
                ]
            ]
        },
        {
            "name": "mdurl",
            "specs": [
                [
                    "==",
                    "0.1.2"
                ]
            ]
        },
        {
            "name": "pydantic",
            "specs": [
                [
                    "==",
                    "2.8.2"
                ]
            ]
        },
        {
            "name": "pydantic-core",
            "specs": [
                [
                    "==",
                    "2.20.1"
                ]
            ]
        },
        {
            "name": "pydantic-settings",
            "specs": [
                [
                    "==",
                    "2.3.4"
                ]
            ]
        },
        {
            "name": "pygments",
            "specs": [
                [
                    "==",
                    "2.18.0"
                ]
            ]
        },
        {
            "name": "python-dateutil",
            "specs": [
                [
                    "==",
                    "2.9.0.post0"
                ]
            ]
        },
        {
            "name": "python-dotenv",
            "specs": [
                [
                    "==",
                    "1.0.1"
                ]
            ]
        },
        {
            "name": "pyyaml",
            "specs": [
                [
                    "==",
                    "6.0.1"
                ]
            ]
        },
        {
            "name": "rich",
            "specs": [
                [
                    "==",
                    "13.7.1"
                ]
            ]
        },
        {
            "name": "six",
            "specs": [
                [
                    "==",
                    "1.16.0"
                ]
            ]
        },
        {
            "name": "sqlalchemy",
            "specs": [
                [
                    "==",
                    "2.0.31"
                ]
            ]
        },
        {
            "name": "sqlmodel",
            "specs": [
                [
                    "==",
                    "0.0.21"
                ]
            ]
        },
        {
            "name": "structlog",
            "specs": [
                [
                    "==",
                    "24.4.0"
                ]
            ]
        },
        {
            "name": "tqdm",
            "specs": [
                [
                    "==",
                    "4.66.4"
                ]
            ]
        },
        {
            "name": "typing-extensions",
            "specs": [
                [
                    "==",
                    "4.12.2"
                ]
            ]
        },
        {
            "name": "vimala",
            "specs": [
                [
                    "==",
                    "0.2.0"
                ]
            ]
        }
    ],
    "tox": true,
    "lcname": "zettel-org"
}
        
Elapsed time: 1.07913s