{ "info": { "author": "Michael Ren", "author_email": "michael.ren@mailbox.org", "bugtrack_url": null, "classifiers": [ "Environment :: Console", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Operating System :: POSIX", "Operating System :: Unix", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "Tagnote: Minimalist Note Organization\n=====================================\n\nInstallation\n------------\nIf installing from PyPI::\n\n $ pip3 install tagnote\n\nIf installing from source::\n\n $ python3 setup.py sdist\n $ pip3 install -U dist/tagnote-$VERSION.$FORMAT\n\nTo create and edit notes, Tagnote needs a text editor with an appropriate plugin. Currently, Tagnote only supports ``vim``, so you will need to make sure that ``vim`` is installed.\n\nTo install the ``vim`` plugin, copy tagnote.vim_ to the ``~/.vim/plugin`` directory, creating the directory if needed.\n\nFor synchronizing notes, Tagnote requires the ``rsync`` command. Install ``rsync`` if you need to synchronize notes.\n\n.. _tagnote.vim: https://raw.githubusercontent.com/michael-ren/tagnote/v4.2.2/tagnote.vim\n\nIntroduction\n------------\n\nThe first problem with note-taking software is you might not realize it's a note until after it's been written.\n\nNormally, notes like this would exist as a collection of text files with gibberish names in several unrelated directories. Tagnote allows you to do this::\n\n :W\n \"~/notes/2018-07-11_19-37-44.txt\" [New] *L, *C written\n\nThere's no need to think of a name right now, and Tagnote preserves the most important metadata, the creation date, for you. There's no need to open up a separate note application, copy and paste the contents of the note, and then put the note in the right place. Tagnote is for when you want to get your idea out first and organize it later.\n\nWorking with Labels\n-------------------\n\nIf, after the fact, you wish to add a label, you can do this::\n\n :A groceries\n\nThe Tagnote command can also do this if you know the name of the note::\n\n $ tag add 2018-07-11_19-37-44.txt groceries\n\nYou can then open the note afterwards by label::\n\n $ tag last groceries\n\nThis opens the note in a text editor. If you make changes to the note, you can either save them normally or create a copy of the note::\n\n :W\n \"~/notes/2018-07-11_19-45-04.txt\" [New] *L, *C written\n\nThis command remembers the current note's labels and applies them to the copy. When you run ``tag last groceries`` again, Tagnote displays the most recent note, ``2018-07-11_19-45-04.txt``.\n\nYou can also edit the previous note::\n\n $ tag -r 1: last groceries\n\nThis passes the ``-r`` flag, which filters out the latest note using the slice ``1:``.\n\nInstead of switching between these two notes manually, you can see their changes by running a diff on them::\n\n $ tag last -d groceries\n\nThis opens up a diff editor with the changes highlighted.\n\nSummary Commands\n----------------\n\nYou can see all members of the ``groceries`` label::\n\n $ tag members groceries\n\nThis lists all members of ``groceries`` in sorted order. Sorting puts the notes in chronological order because of the way Tagnote names notes.\n\nThis is handy for reporting::\n\n $ tag show groceries | less\n\nThis prints out the content of the notes as well as a formatted header and footer around each note. This is great for getting a summary of the material in each label. By default, ``show`` puts notes in reverse chronological order.\n\nYou can also get a forward chronological account::\n\n $ tag -o a show groceries | less\n\nThe ``-o`` flag takes the ``a`` argument which is short for \"ascending.\"\n\nYou can confirm that a note is in fact a member of a label::\n\n $ tag categories 2018-07-11_19-45-04.txt\n\nThis prints the labels the note is a part of, in this case ``groceries``.\n\nYou can also list all top-level tags::\n\n $ tag members\n\nYou'll notice that this only includes ``groceries`` and not the two notes. This is because the ``members`` command only lists immediate children, and since ``groceries`` is now the parent of the two notes, those two notes are not members of the top level.\n\nThe ``show`` command works differently::\n\n $ tag show | less\n\nThis lists all notes in reverse chronological order, even if they are children of another label. ``show`` can also show notes from several labels::\n\n :A foods\n\n $ tag show groceries foods\n\nEven if a note is a member of several labels, ``show`` shows each note only once.\n\nImportant Filters\n-----------------\n\nYou can also ask Tagnote to search for text inside notes directly::\n\n $ tag -s lentils -s kale show | less\n\nThis only shows notes that have both the text ``lentils`` and the text ``kale`` in them.\n\nSimilarly, you can search by date range::\n\n $ tag -t 2018-07-11_19-40: -t 2005-*-29:2007 show\n\nThis shows notes created at 7:40 PM on July 11th, 2018 or later or notes created in 2005, 2006, or 2007 on the 29th, 30th, or 31st of each month, which means the command only includes the ``2018-07-11_19-45-04.txt`` note.\n\nDealing with Remotes\n--------------------\n\nYou can back up your notes to another location::\n\n $ tag push michael@my-server:notes\n\nThis copies the directory containing your notes, by default ``~/notes``, to the remote location. The remote location can be anything ``rsync`` accepts as a destination. Unlike in ``rsync``, the name you pass in the command is always the name of the immediate directory containing the notes. In this example, even if there is no trailing slash, the destination directory is never ``notes/notes``.\n\nTo change the directory Tagnote stores your notes, see the `Configuration`_ section below. This doesn't move notes that already exist; use ``tag push`` to copy them over before changing the directory.\n\nWhen synchronizing between several copies of the notes, sometimes you need to copy a remote source into your notes directory::\n\n $ tag pull michael@my-server:notes\n\nThis works the same way as ``tag push`` except in the opposite direction.\n\nWhen there are conflicts, ``tag push`` and ``tag pull`` create backup files like ``2018-07-11_19-45-04.txt.2018-07-11_21-10-24.bak``. Tagnote indicates the conflicted file and adds the timestamp when you ran ``tag push`` or ``tag pull`` as well as the ``.bak`` extension. The new version exists as ``2018-07-11_19-45-04.txt``, and the old version is the backup file named above.\n\nIf you want to accept all changes after a ``push`` or a ``pull``, simply delete all ``.bak`` files::\n\n $ find ~/notes -name '*.bak' -delete\n\nIf there are changes you would like to keep, Tagnote provides a wizard to incorporate changes from ``.bak`` files::\n\n $ tag reconcile\n\nThis prints the conflicted file and the timestamp of the backup file and then prompts for an action. You can run the diff editor to reconcile changes by choosing the ``edit`` action. If you close the diff editor and the conflicted file and its backup are the same, ``reconcile`` deletes the backup file. To go to the next backup file, choose the ``next`` action. To go to the next conflicted file, choose ``skip``. ``quit`` exits the ``reconcile`` command at any point.\n\nIn addition to ``.bak`` files, the editor might generate other files, such as ``.swp`` files, that the editor must resolve manually. To list all files that Tagnote doesn't recognize, run::\n\n $ tag unknown\n\nThis prints out all such files.\n\nNote Lifecycle\n--------------\n\nYou can import a pre-existing file as a note::\n\n $ tag import asdlfkjfs.txt\n\nThis uses the modification time for the name of the note.\n\nYou can also remove tags and associations between tags::\n\n $ tag remove 2018-07-11_19-45-04.txt groceries\n $ tag remove 2018-07-11_19-45-04.txt\n\nYou must remove all associations for a tag before removing the tag itself.\n\nConfiguration\n-------------\n\nTagnote uses a configuration file for various options. By default, the configuration file exists at ``~/.tag.config.json``. You can change this by passing a different value to the ``-c`` flag on the command line::\n\n tag -c ~/other-tag.config.json ...\n\nThe configuration file is a JSON object that maps string configuration options to configuration values.\n\nBy default, the notes directory is at ``~/notes``. To change the notes directory, use the ``notes_directory`` option::\n\n {\n ...\n \"notes_directory\": \"Documents/notes\",\n ...\n }\n\nNote that the value of ``notes_directory`` is relative to the home directory.\n\nBe sure to also update ``~/.vim/plugin/tagnote.vim``::\n\n ...\n let TAGNOTE_NOTES_DIRECTORY = simplify($HOME . '/Documents/notes')\n ...\n\nBy default, the editor is ``vim`` with no arguments. To change the editor, use the ``editor`` option::\n\n {\n ...\n \"editor\": [\"vim\", \"-n\"],\n ...\n }\n\nYou can also set the editor using environment variables. In order, Tagnote prioritizes ``TAGNOTE_EDITOR``, then ``VISUAL``, and then ``EDITOR``. You cannot pass editor command arguments using environment variables, and the value in the configuration file takes priority over the environment variables.\n\nSimilarly, the default diff editor is ``vimdiff`` with no arguments. To change the editor, use the ``diff`` option::\n\n {\n ...\n \"diff\": [\"meld\"],\n ...\n }\n\nYou can also set the diff editor using the ``TAGNOTE_DIFF`` environment variable. You cannot pass diff editor command arguments using environment variables, and the value in the configuration file takes priority over the environment variable.\n\nBy default, the rsync program is ``rsync``. To change the rsync command, use the ``rsync`` option::\n\n {\n ...\n \"rsync\": [\"/usr/local/bin/rsync\"],\n ...\n }\n\nThe ``TAGNOTE_RSYNC`` environment variable also sets the rsync command and is lower priority than the value in the configuration file.\n\nBy default, notes use local time for timestamps. To use UTC, update the config file::\n\n {\n ...\n \"utc\": true,\n ...\n }\n\nAlso update ``~/.vim/plugin/tagnote.vim``::\n\n ...\n let TAGNOTE_UTC = 1\n ...\n\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/michael-ren/tagnote", "keywords": "", "license": "GPLv3", "maintainer": "", "maintainer_email": "", "name": "tagnote", "package_url": "https://pypi.org/project/tagnote/", "platform": "", "project_url": "https://pypi.org/project/tagnote/", "project_urls": { "Homepage": "https://github.com/michael-ren/tagnote" }, "release_url": "https://pypi.org/project/tagnote/4.2.2/", "requires_dist": null, "requires_python": ">=3.5", "summary": "Minimalist note organization tool", "version": "4.2.2" }, "last_serial": 5758269, "releases": { "4.1.0": [ { "comment_text": "", "digests": { "md5": "283f780893ed9f7fb6549b184884d1e2", "sha256": "639fa73e9f380fde5960171b1300b50df71f1f8e93ec817c6ba39c458e594476" }, "downloads": -1, "filename": "tagnote-4.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "283f780893ed9f7fb6549b184884d1e2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 25038, "upload_time": "2019-05-05T19:13:36", "url": "https://files.pythonhosted.org/packages/dd/52/c7607bc92f44ef6d713944891cee361091c6374de1479c20f41d5616f0c2/tagnote-4.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6519e43b21a261bf389ba0421dc6fc8a", "sha256": "c68467601ba04f676278417b26cc93ac9d8eeb2bf5debd7433e660661d433a60" }, "downloads": -1, "filename": "tagnote-4.1.0.tar.gz", "has_sig": false, "md5_digest": "6519e43b21a261bf389ba0421dc6fc8a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 23934, "upload_time": "2019-05-05T19:13:39", "url": "https://files.pythonhosted.org/packages/2c/1a/57828b987584acbd931f960422b38a4f753513d969fdc86ee1447a8a9d02/tagnote-4.1.0.tar.gz" } ], "4.1.1": [ { "comment_text": "", "digests": { "md5": "566380385e8db6cdf08d4cbd2b5a424e", "sha256": "a582e920dccf902e5caaf2d40d045fb89c5d2ca912c46750726810914635235f" }, "downloads": -1, "filename": "tagnote-4.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "566380385e8db6cdf08d4cbd2b5a424e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 25115, "upload_time": "2019-05-05T21:03:21", "url": "https://files.pythonhosted.org/packages/e4/05/7f48c9c01dff4d984173544242a92f1e358098f6fc9ef652930437a85f23/tagnote-4.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "547476a58ef4f09a99a5083fd0d2cd14", "sha256": "c456cdaaa0a6cdd658e93456810fae3aa3b9d975b04282ba7872cb79e6f70282" }, "downloads": -1, "filename": "tagnote-4.1.1.tar.gz", "has_sig": false, "md5_digest": "547476a58ef4f09a99a5083fd0d2cd14", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 23999, "upload_time": "2019-05-05T21:03:22", "url": "https://files.pythonhosted.org/packages/b5/4a/4159d7a296a6a0b5f72c4a14a200de01767c8ccf151c20a88f2d44664563/tagnote-4.1.1.tar.gz" } ], "4.2.0": [ { "comment_text": "", "digests": { "md5": "96e3834cd98f8389b7b0fca279586549", "sha256": "ceea5f46fdeb80dec947de1a488404135fb41714ae2f700e12f2ad0ab46912be" }, "downloads": -1, "filename": "tagnote-4.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "96e3834cd98f8389b7b0fca279586549", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 25430, "upload_time": "2019-07-18T06:24:06", "url": "https://files.pythonhosted.org/packages/a8/b6/9223f31ea7807f11e70752a0ec17951cbcd01bb9f3a1a6dc77f942daafc5/tagnote-4.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "385ddce2c62297fe77342bba61ffacf3", "sha256": "467f141a777f41ff18905a25bfc99b21b9f473aa2648e33934837888e852167e" }, "downloads": -1, "filename": "tagnote-4.2.0.tar.gz", "has_sig": false, "md5_digest": "385ddce2c62297fe77342bba61ffacf3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 24307, "upload_time": "2019-07-18T06:24:08", "url": "https://files.pythonhosted.org/packages/eb/95/68623af10f9c563f78b0c13ed6d3ee5dbbc916323513d299cfe473191f46/tagnote-4.2.0.tar.gz" } ], "4.2.1": [ { "comment_text": "", "digests": { "md5": "838ef2ff79ba3d03fe7fa5be8b1a77f5", "sha256": "89fa4f600f90604dbfc66c822e7234250286f49d9d4de7add3704fdbd0d9c866" }, "downloads": -1, "filename": "tagnote-4.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "838ef2ff79ba3d03fe7fa5be8b1a77f5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 25432, "upload_time": "2019-08-30T03:14:34", "url": "https://files.pythonhosted.org/packages/6b/1f/9bfdef0d428ab0a8159f597f57acf98e15f4db06f302a552d16d4874566c/tagnote-4.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "549002868faccd29b33cc6a7883a806e", "sha256": "86fd1c3f5496531936303bdaec8bba4c90cba2a75a705bd3986fe7f84fba3af2" }, "downloads": -1, "filename": "tagnote-4.2.1.tar.gz", "has_sig": false, "md5_digest": "549002868faccd29b33cc6a7883a806e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 24307, "upload_time": "2019-08-30T03:14:36", "url": "https://files.pythonhosted.org/packages/dc/e5/45e82bad61bd3c9a282131a92a2fa3dde2b845c79a0aadf92f7d5fd4036c/tagnote-4.2.1.tar.gz" } ], "4.2.2": [ { "comment_text": "", "digests": { "md5": "fc83b09cec0efffd5be79386fd7af6eb", "sha256": "f2fb47fd5ced8cfc214aec7c3116ac23d45304d4497e9bc4cef5a88537a70c66" }, "downloads": -1, "filename": "tagnote-4.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "fc83b09cec0efffd5be79386fd7af6eb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 25431, "upload_time": "2019-08-30T04:29:22", "url": "https://files.pythonhosted.org/packages/5b/e1/c94d100af8150cbf04f4db74b75504506a3691683cf7a6219edc433954ff/tagnote-4.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bcc99198afdb8c24ab952e5e99cd0b3a", "sha256": "6c7a2ae8796241d4b13a695fa6152c96867b7ef1a2afa64db6f904773a1c52ed" }, "downloads": -1, "filename": "tagnote-4.2.2.tar.gz", "has_sig": false, "md5_digest": "bcc99198afdb8c24ab952e5e99cd0b3a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 24297, "upload_time": "2019-08-30T04:29:24", "url": "https://files.pythonhosted.org/packages/3c/b6/8d6d230fca6b2bea124679ba65884c73e0fcc7c685b27f7bca9851709f78/tagnote-4.2.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "fc83b09cec0efffd5be79386fd7af6eb", "sha256": "f2fb47fd5ced8cfc214aec7c3116ac23d45304d4497e9bc4cef5a88537a70c66" }, "downloads": -1, "filename": "tagnote-4.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "fc83b09cec0efffd5be79386fd7af6eb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 25431, "upload_time": "2019-08-30T04:29:22", "url": "https://files.pythonhosted.org/packages/5b/e1/c94d100af8150cbf04f4db74b75504506a3691683cf7a6219edc433954ff/tagnote-4.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bcc99198afdb8c24ab952e5e99cd0b3a", "sha256": "6c7a2ae8796241d4b13a695fa6152c96867b7ef1a2afa64db6f904773a1c52ed" }, "downloads": -1, "filename": "tagnote-4.2.2.tar.gz", "has_sig": false, "md5_digest": "bcc99198afdb8c24ab952e5e99cd0b3a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 24297, "upload_time": "2019-08-30T04:29:24", "url": "https://files.pythonhosted.org/packages/3c/b6/8d6d230fca6b2bea124679ba65884c73e0fcc7c685b27f7bca9851709f78/tagnote-4.2.2.tar.gz" } ] }