Metadata-Version: 1.2
Name: csmdirsearch
Version: 0.1.1
Summary: Search the Mines directory
Home-page: https://github.com/jackrosenthal/csmdirsearch
Author: Jack Rosenthal, Samuel Warfield
Author-email: warfield@mines.edu
License: MIT
Description: Mines DirSearch Python Library, CLI, and Mutt Integration
        =========================================================
        
        The `Mines DirSearch`_ website allows search of Mines personnel who have their
        directory information listed in the Banner system. This is a convenient Python
        interface to that website.
        
        .. _`Mines DirSearch`: https://webapps.mines.edu/DirSearch
        
        :Author: Jack Rosenthal
        :Requires: Python 3.4 or greater, Beautiful Soup 4.4.0 or greater, Requests
        :License: MIT
        :Contributing: See ``CONTRIBUTING.rst``
        
        Installing
        ----------
        
        Clone `the repository`_ and install::
        
            $ pip install . --user
        
        Or install from PyPI::
        
            $ pip install csmdirsearch --user
        
        .. _`the repository`: https://github.com/jackrosenthal/csmdirsearch
        
        Usage from Python
        -----------------
        
        Use ``search(query)`` to search for a user by either (part of) a username, or
        (part of) a full name. ``search`` is a generator that will yield unique
        ``Person`` objects. Typical attributes on this object include ``name``,
        ``business_email``, ``major``, ``classification``, and ``department``; however,
        only the ``name`` attribute is guaranteed to exist.
        
        Each ``Person`` object also has a few properties:
        
        :``username``:
            Based on the ``business_email`` (and potentially more information in the
            future), a "best guess" for the username of the user, otherwise ``None``.
        :``desc``:
            An automatic, brief description of the person, for example:
            ``Undergraduate Student, Computer Science``.
        
        The ``name`` of each person is also a special ``Name`` type, containing
        ``first``, ``last``, and ``nick`` attributes. You can convert a name to a
        string using the ``strfname`` function, or use ``str(person.name)`` for a
        "reasonable default":
        
        >>> name = Name("Rosenthal, Jack (NickName)")
        >>> name.strfname("{first} {last}")
        'Jack Rosenthal'
        >>> str(name)
        'Jack (NickName) Rosenthal'
        
        There's also convenience properties to be used in ``strfname``:
        
        :``pfirst``:
            Short for "preferred first". This will be set to ``nick`` if there is a
            nick name, ``first`` otherwise.
        :``nickp``:
            Short for "nick, wrapped in parens, if there is one". This will be set to
            ``' (nick)'`` if there's a nick name, ``''`` otherwise.
        
        Example:
        
        >>> name = Name("Rosenthal, Jack (NickName)")
        >>> name.strfname("{pfirst} {last}")
        'NickName Rosenthal'
        >>> name.strfname("{first}{nickp} {last}")
        'Jack (NickName) Rosenthal'
        
        Here is an example::
        
            import csmdirsearch
            for person in csmdirsearch.search("Jack Rosenthal"):
                print(person.name, person.desc)
        
        If you wish to limit your search to **just** a partial username (no real
        names), use the ``search_by_partial`` generator instead of ``search``.
        
        Finally, if you wish to limit your search to **just** a partial full name (most
        efficent), use the ``search_by_name`` generator instead of ``search``. This
        generator also has means to limit a search to a certain classification or
        department. Read the source code for more details.
        
        Usage from the Command Line
        ---------------------------
        
        This is wicked simple::
        
            $ dirsearch "Jack Rosenthal"
            Jack Rosenthal
            Undergraduate Student
            Business Email: ...
        
        If you wish to use the ``search_by_name`` or ``search_by_partial`` functions to
        limit the scope of the input, use ``--input=name`` or ``--input=partial``
        respectively::
        
            $ dirsearch --input=partial "jrosent"
            Jack Rosenthal
            ...
        
        Usage from Mutt
        ---------------
        
        Add to your ``.muttrc``::
        
            set query_command = "dirsearch --format=mutt %s"
        
        Then press ``Q`` to compose using a search, or ``^T`` while writing a name or
        address.
        
        
Keywords: directory mines scraping
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Education
Classifier: Topic :: System :: Systems Administration :: Authentication/Directory
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.7
Requires-Python: >=3.7, <7
