Metadata-Version: 2.1
Name: cs.fstags
Version: 20200113
Summary: Simple filesystem based file tagging and the associated `fstags` command line script.
Home-page: https://bitbucket.org/cameron_simpson/css/commits/all
Author: Cameron Simpson
Author-email: cs@cskk.id.au
License: GNU General Public License v3 or later (GPLv3+)
Description: *Latest release 20200113*:
        Mirror tags to user.cs.fstags xattr to honour Linux namespace requirements. Add "filesize" to available tag string format (-o option). Small bugfixes.
        
        Simple filesystem based file tagging
        and the associated `fstags` command line script.
        
        Tags are stored in a file `.fstags` in directories
        with a line for each entry in the directory
        consisting of the directory entry name and the associated tags.
        
        The tags for a file are the union of its direct tags
        and all relevant ancestor tags,
        with priority given to tags closer to the file.
        
        For example, a media file for a television episode with the pathname
        `/path/to/series-name/season-02/episode-name--s02e03--something.mp4`
        might obtain the tags:
        
            series.title="Series Full Name"
            season=2
            sf
            episode=3
            episode.title="Full Episode Title"
        
        from the following `.fstags` files and entries:
        * `/path/to/.fstags`:
          `series-name sf series.title="Series Full Name"`
        * `/path/to/series-name/.fstags`:
          `season-02 season=2`
        * `/path/to/series-name/season-02.fstags`:
          `episode-name--s02e03--something.mp4 episode=3 episode.title="Full Episode Title"`
        
        Tags may be "bare", or have a value.
        If there is a value it is expressed with an equals (`'='`)
        followed by the JSON encoding of the value.
        
        ## Class `FSTags`
        
        A class to examine filesystem tags.
        
        ## Class `FSTagsCommand(cs.cmdutils.BaseCommand)`
        
        fstag main command line class.
        
        ## Function `infer_tags(name, rules=None)`
        
        Infer `Tag`s from `name` via `rules`. Return a `TagSet`.
        
        `rules` is an iterable of objects with a `.infer_tags(name)` method
        which returns an iterable of `Tag`s.
        
        ## Function `loadrc(rcfilepath=None)`
        
        Read rc file, return rules.
        
        If `rcfilepath` is `None` default to `'~/.fstagsrc'` (from `RCFILE`).
        
        ## Function `main(argv=None)`
        
        Command line mode.
        
        ## Class `RegexpTagRule`
        
        A regular expression based `Tag` rule.
        
        ## Function `rfilepaths(path, name_selector=None)`
        
        Generator yielding pathnames of files found under `path`.
        
        ## Function `rpaths(path, yield_dirs=False, name_selector=None)`
        
        Generator yielding pathnames found under `path`.
        
        ## Function `rsync_patterns(paths, top_path)`
        
        Return a list of rsync include lines
        suitable for use with the `--include-from` option.
        
        ## Class `Tag`
        
        A Tag has a `.name` (`str`) and a `.value`.
        
        The `name` must be a dotted identifier.
        
        A "bare" `Tag` has a `value` of `None`.
        
        ## Class `TagChoice(TagChoice,builtins.tuple)`
        
        A "tag choice", an apply/reject flag and a `Tag`,
        used to apply changes to a `TagSet`
        or as a criterion for a tag search.
        
        Attributes:
        * `spec`: the source text from which this choice was parsed,
          possible `None`
        * `choice`: the apply/reject flag
        * `tag`: the `Tag` representing the criterion
        
        ## Class `TagFile`
        
        A reference to a specific file containing tags.
        
        This manages a mapping of `name` => `TagSet`,
        itself a mapping of tag name => tag value.
        
        ## Class `TagFileEntry(builtins.tuple)`
        
        TagFileEntry(tagfile, name)
        
        ## Class `TaggedPath`
        
        Class to manipulate the tags for a specific path.
        
        ## Class `TagSet`
        
        A setlike class associating a set of tag names with values.
        A `TagFile` maintains one of these for each name.
        
        ### Method `TagSet.__init__(self, *, defaults=None)`
        
        Initialise the `TagSet`.
        
        Parameters:
        * `defaults`: a mapping of name->TagSet to provide default values.
        
        
        
        # Release Log
        
        *Release 20200113*:
        Mirror tags to user.cs.fstags xattr to honour Linux namespace requirements. Add "filesize" to available tag string format (-o option). Small bugfixes.
        
        *Release 20191230*:
        Command line: new "find" command to search a file tree based on tags.
        Command line: new "mv" command to move a file and its tags.
        Command line: Python string formats for "find" and "ls" output.
        TaggedPath.autotag: new optional `no_save` parameter, default False, to suppress update of the associated .fstags file.
        Inital and untested "mirror tags to xattrs" support.
        
        *Release 20191201*:
        New "edit" subcommand to rename files and edit tags.
        
        *Release 20191130.1*:
        Initial release: fstags, filesystem based tagging utility.
Keywords: python3
Platform: UNKNOWN
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
Description-Content-Type: text/markdown
