Metadata-Version: 2.4
Name: howdoi
Version: 1.2.1
Summary: Instant coding answers via the command line
Home-page: https://github.com/gleitz/howdoi
Author: Benjamin Gleitzman
Author-email: gleitz@mit.edu
Maintainer: Benjamin Gleitzman
Maintainer-email: gleitz@mit.edu
License: MIT
Keywords: howdoi help console command line answer
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Topic :: Documentation
Description-Content-Type: text/x-rst
Requires-Dist: pyquery
Requires-Dist: pygments
Requires-Dist: requests
Requires-Dist: cachelib
Requires-Dist: appdirs
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: keywords
Dynamic: license
Dynamic: maintainer
Dynamic: maintainer-email
Dynamic: requires-dist
Dynamic: summary


howdoi
====================================================

.. image:: http://imgs.xkcd.com/comics/tar.png
        :target: https://xkcd.com/1168/

instant coding answers via the command line
-------------------------------------------

.. image:: https://secure.travis-ci.org/gleitz/howdoi.png?branch=master
        :target: https://travis-ci.org/gleitz/howdoi

.. image:: https://pepy.tech/badge/howdoi
        :target: https://pepy.tech/project/howdoi

Are you a hack programmer? Do you find yourself constantly Googling for
how to do basic programming tasks?

Suppose you want to know how to format a date in bash. Why open your browser
and read through blogs (risking major distraction) when you can simply stay
in the console and ask howdoi:

::

    $ howdoi format date bash
    > DATE=`date +%Y-%m-%d`

howdoi will answer all sorts of queries:

::

    $ howdoi print stack trace python
    > import traceback
    >
    > try:
    >     1/0
    > except:
    >     print '>>> traceback <<<'
    >     traceback.print_exc()
    >     print '>>> end of traceback <<<'
    > traceback.print_exc()

    $ howdoi convert mp4 to animated gif
    > video=/path/to/video.avi
    > outdir=/path/to/output.gif
    > mplayer "$video" \
    >         -ao null \
    >         -ss "00:01:00" \  # starting point
    >         -endpos 10 \ # duration in second
    >         -vo gif89a:fps=13:output=$outdir \
    >         -vf scale=240:180

    $ howdoi create tar archive
    > tar -cf backup.tar --exclude "www/subf3" www

Installation
------------

::

    pip install howdoi

or

::

    pip install git+https://github.com/gleitz/howdoi.git#egg=howdoi

or

::

    python setup.py install

Usage
-----

::

    usage: howdoi.py [-h] [-p POS] [-a] [-l] [-c] [-n NUM_ANSWERS] [-C] [-v] [-e ENGINE] QUERY [QUERY ...]

    instant coding answers via the command line

    positional arguments:
      QUERY                 the question to answer

    optional arguments:
      -h, --help            show this help message and exit
      -p POS, --pos POS     select answer in specified position (default: 1)
      -a, --all             display the full text of the answer
      -l, --link            display only the answer link
      -c, --color           enable colorized output
      -n NUM_ANSWERS, --num-answers NUM_ANSWERS
                            number of answers to return
      -C, --clear-cache     clear the cache
      -v, --version         displays the current version of howdoi
      -e ENGINE, --engine ENGINE  change search engine for this query only. Currently supported engines: google (default), bing.


As a shortcut, if you commonly use the same parameters each time and don't want to type them, add something similar to your .bash_profile (or otherwise). This example gives you 5 colored results each time.

::

    alias h='function hdi(){ howdoi $* -c -n 5; }; hdi'

And then to run it from the command line simply type:

::

    $h this is my query for howdoi

Author
------

-  Benjamin Gleitzman (`@gleitz <http://twitter.com/gleitz>`_)

Notes
-----

-  Works with Python2 and Python3
-  A GUI that wraps howdoi `is available here <https://pypi.org/project/pysimplegui-howdoi/>`_.
-  An Alfred Workflow for howdoi can be found at `http://blog.gleitzman.com/post/48539944559/howdoi-alfred-even-more-instant-answers <http://blog.gleitzman.com/post/48539944559/howdoi-alfred-even-more-instant-answers>`_.
-  Slack integration available through `slack-howdoi <https://github.com/ellisonleao/slack-howdoi>`_.
-  Howdoi uses a cache for faster access to previous questions. Caching functionality can be disabled by setting the HOWDOI_DISABLE_CACHE environment variable. The cache is stored in `~/.cache/howdoi`.
-  You can set the HOWDOI_URL environment variable to change the source url for answers (default: `stackoverflow.com`, also supported: `serverfault.com`, `pt.stackoverflow.com`, `full list <http://stackexchange.com/sites?view=list#traffic>`_).
-  You can set the HOWDOI_SEARCH_ENGINE environment variable to change the underlying search engine for StackOverflow links (default: `google`, also supported: `bing`). The -e flag will switch the underlying engine for a single query.
-  Setting the HOWDOI_COLORIZE environment variable will colorize the output by default.
-  Special thanks to Rich Jones (`@miserlou <https://github.com/miserlou>`_) for the idea.

Development
-----------

-  Checkout the repo
-  Run ``python -m howdoi.howdoi QUERY`` (if you try running ``python howdoi/howdoi.py`` you might get ``ValueError: Attempted relative import in non-package``).

If you would like to use howdoi from within a python script, use the following snippet:

::

    from howdoi import howdoi

    query = "for loop python"
    parser = howdoi.get_parser()
    args = vars(parser.parse_args(query.split(' ')))

    output = howdoi.howdoi(args)

Contributing
------------

I'm happy to accept pull requests that make howdoi better. If you're thinking of contributing and want a little feedback before you jump into the codebase, post an `issue <https://github.com/gleitz/howdoi/issues>`_ on Github.

Before PRs are accepted they must pass all `Travis tests <https://travis-ci.org/gleitz/howdoi>`_ and not have any flake8 or pylint warnings or errors. This projects uses vanilla configuration files for both linters (``.flake8rc`` and ``.pylintrc`` in the root directory), but with a max line length of 119.

Troubleshooting
---------------

You might get the following error when installing with Homebrew:

::

    ==> python setup.py install

    http://peak.telecommunity.com/EasyInstall.html

    Please make the appropriate changes for your system and try again.

Fix the error by executing the following command:

::

    sudo chmod -R go+w /Library/Python/2.7/site-packages/


An official lxml for python 3.3+ for windows has not yet been released. You may get an error while installing.
Try and install an unofficial binary for lxml from

::

    http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml


News
====

1.2.1
------
- Fix dependency issue

1.2.0
------
- Massive speed improvements of startup, answer fetching, and caching
- Command line flags for alternate search engines
- Remove duplicate answers

1.1.14
------
-  Links displayed with markdown syntax
-  Improved performance and caching (again)

1.1.13
------
-  Improved performance and caching
-  More friendly answer display
-  Added support for Python 3.6
-  Removed support for Python 2.6

1.1.12
------
-  Add additional search engine support

1.1.11
------
-  Fix issue with UTF-8 encoding

1.1.10
------
-  Include the link in output when asking for >1 answer
-  Compatibility with linuxbrew

1.1.9
------
-  Fix issue with upload to PyPI

1.1.8
------
-  Fix colorization when HOWDOI_COLORIZE env variable is enabled
-  Fix certificate validation when SSL disabled

1.1.7
------
-  Add Localization support with HOWDOI_LOCALIZATION env variable (Currently only pt-br and en)

1.1.6
------
-  Updates for Python3
-  Updates for caching

1.1.5
------
-  Updates for Python3
-  Fix issues with cache
-  Allow disabling SSL when accessing Google

1.1.4
------
-  Added caching

1.1.3
------
-  Added fix to handle change in Google search page HTML
-  Updated Travis CI tests

1.1.2
------
-  Compatibility fixes for Python3.2
-  Travis CI tests now being run for Python 2.6, 2.7, 3.2, and 3.3

1.1.1
------
-  Added message when question has no answer

1.1
------

-  Added multiple answers with -n/--num-answers flag
-  Added colorized output with -c/--color flag
-  Added answer link to the bottom of questions with -a/--all flag
-  Unit tests now managed through Travis CI

1.0
------

-  Added support for Python3
-  Switched to the requests library instead of urllib2
-  Project status changed to Production/Stable
-  Added troubleshooting steps to the README

0.2
------

-  Added sane flags
-  Now using ``/usr/bin/env python`` instead of ``/usr/bin/python``
-  Updated README for brew installation instructions

0.1.2
------

-  Added Windows executable
-  Updated README for pip installation instructions

0.1.1
------

-  Added to PyPI

0.1
------

-  We're doing it live!


