Skip to main content

File organization made easy using tags

Project description

HyperTag

File organization made easy. HyperTag let's humans intuitively express how they think about their files using tags.

Install

$ pip install hypertag

Quickstart

HyperTag offers a slick CLI but more importantly it creates a directory called HyperTagFS which is a file system based representation of your files and tags using symbolic links and directories. HyperTag also recognizes a multitude of file types and groups them automatically together into folders (e.g. Images, Documents, Source Code), which can be found in HyperTagFS.

CLI Functions

Set HyperTagFS directory path

Default is the user's home directory.

$ hypertag set_hypertagfs_dir path/to/directory

Import existing directory recursively

Import files with tags inferred from existing directory hierarchy

$ hypertag import path/to/directory

Tag file/s

Manually tag files

$ hypertag tag humans/*.txt with human "Homo Sapiens"

Tag a tag

Metatag tag/s to create tag hierarchies

$ hypertag metatag human with animal

Merge tags

Merges all associations (files & tags) of tag_a into tag_b

$ hypertag merge human into "Homo Sapiens"

Query using Set Theory

Prints file names matching the query. Nesting is currently not supported, queries are evaluated from left to right.

Print paths: $ hypertag query human --path

Default operand is AND (intersection):
$ hypertag query human "Homo Sapiens"

OR (union):
$ hypertag query human or "Homo Sapiens"

MINUS (difference):
$ hypertag query human minus "Homo Sapiens"

Print all tags of file/s

$ hypertag tags filename1 filename1

Print all tags

$ hypertag show

Print all files

Print names: $ hypertag show files

Print paths: $ hypertag show files --path

Architecture

  • Python powers HyperTag
  • SQLite3 serves as the meta data storage engine (located at ~/.config/hypertag/hypertag.db)
  • Symbolic links are used to create the HyperTagFS directory structure

Development

  • Clone repo: $ git clone https://github.com/SeanPedersen/HyperTag.git
  • $ cd HyperTag/
  • Install Poetry
  • Install dependencies: $ poetry install
  • Activate virtual environment: $ poetry shell
  • Run all tests & show coverage stats: $ pytest -v --cov
  • Run Black formatter: $ black hypertag/
  • Run PyLint: $ pylint **/*.py
  • Run MyPy: $ mypy **/*.py
  • Run Bandit: $ bandit --exclude tests/ -r .
  • Run HyperTag: $ python -m hypertag

Inspiration

This project is inspired by other existing open-source projects:

What is the point of HyperTag's existence? HyperTag offers some unique features such as the import function that make it very convenient to use. Also HyperTag's code base is written in Python and thus extremely small (<500 LOC) compared to TMSU (>10,000 LOC) and SuperTag (>25,000 LOC), making it very easy to modify / extend / fix it yourself.

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

hypertag-0.1.3.3.tar.gz (9.4 kB view details)

Uploaded Source

Built Distribution

hypertag-0.1.3.3-py3-none-any.whl (9.5 kB view details)

Uploaded Python 3

File details

Details for the file hypertag-0.1.3.3.tar.gz.

File metadata

  • Download URL: hypertag-0.1.3.3.tar.gz
  • Upload date:
  • Size: 9.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.4 CPython/3.9.1 Linux/5.10.3-arch1-1

File hashes

Hashes for hypertag-0.1.3.3.tar.gz
Algorithm Hash digest
SHA256 94ba130af586e9137c4d4bdf56d54c2252c865b34147a81e2fc0183cfd45a611
MD5 0f43cf3ff5cda1a2e5741ef7f05da6fb
BLAKE2b-256 4a7d31e525a009e11112fc5959c6c4ba249d7abdb87a737b83abf7270152ad1f

See more details on using hashes here.

File details

Details for the file hypertag-0.1.3.3-py3-none-any.whl.

File metadata

  • Download URL: hypertag-0.1.3.3-py3-none-any.whl
  • Upload date:
  • Size: 9.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.4 CPython/3.9.1 Linux/5.10.3-arch1-1

File hashes

Hashes for hypertag-0.1.3.3-py3-none-any.whl
Algorithm Hash digest
SHA256 7ddb440af5eb88c56e2f5e1931122a8da627c49535939398d6ed1c588bb81e7a
MD5 868ce3f9452592a18840d037f7d07200
BLAKE2b-256 71209b997d80592bdfb69dee4bd75531074e716d44bda063f6df8a245791c437

See more details on using hashes here.

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