diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..d4a2c44 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,21 @@ +# http://editorconfig.org + +root = true + +[*] +indent_style = space +indent_size = 4 +trim_trailing_whitespace = true +insert_final_newline = true +charset = utf-8 +end_of_line = lf + +[*.bat] +indent_style = tab +end_of_line = crlf + +[LICENSE] +insert_final_newline = false + +[Makefile] +indent_style = tab diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..74ffd4e --- /dev/null +++ b/.gitignore @@ -0,0 +1,43 @@ +*.py[cod] + +# C extensions +*.so + +# Packages +*.egg +*.egg-info +dist +build +eggs +parts +bin +var +sdist +develop-eggs +.installed.cfg +lib +lib64 + +# Installer logs +pip-log.txt + +# Unit test / coverage reports +.coverage +.tox +nosetests.xml +htmlcov + +# Translations +*.mo + +# Mr Developer +.mr.developer.cfg +.project +.pydevproject + +# Complexity +output/*.html +output/*/index.html + +# Sphinx +docs/_build diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..3dad601 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,16 @@ +# Config file for automatic testing at travis-ci.org + +language: python + +python: + - "3.4" + - "3.3" + - "2.7" + - "2.6" + - "pypy" + +# command to install dependencies, e.g. pip install -r requirements.txt --use-mirrors +install: pip install -r requirements.txt + +# command to run tests, e.g. python setup.py test +script: python setup.py test diff --git a/AUTHORS.rst b/AUTHORS.rst new file mode 100644 index 0000000..eaa038a --- /dev/null +++ b/AUTHORS.rst @@ -0,0 +1,13 @@ +======= +Credits +======= + +Development Lead +---------------- + +* Vadim Kravcenko + +Contributors +------------ + +None yet. Why not be the first? diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst new file mode 100644 index 0000000..2eac4cd --- /dev/null +++ b/CONTRIBUTING.rst @@ -0,0 +1,111 @@ +============ +Contributing +============ + +Contributions are welcome, and they are greatly appreciated! Every +little bit helps, and credit will always be given. + +You can contribute in many ways: + +Types of Contributions +---------------------- + +Report Bugs +~~~~~~~~~~~ + +Report bugs at https://github.com/bndr/pipreqs/issues. + +If you are reporting a bug, please include: + +* Your operating system name and version. +* Any details about your local setup that might be helpful in troubleshooting. +* Detailed steps to reproduce the bug. + +Fix Bugs +~~~~~~~~ + +Look through the GitHub issues for bugs. Anything tagged with "bug" +is open to whoever wants to implement it. + +Implement Features +~~~~~~~~~~~~~~~~~~ + +Look through the GitHub issues for features. Anything tagged with "feature" +is open to whoever wants to implement it. + +Write Documentation +~~~~~~~~~~~~~~~~~~~ + +pipreqs could always use more documentation, whether as part of the +official pipreqs docs, in docstrings, or even on the web in blog posts, +articles, and such. + +Submit Feedback +~~~~~~~~~~~~~~~ + +The best way to send feedback is to file an issue at https://github.com/bndr/pipreqs/issues. + +If you are proposing a feature: + +* Explain in detail how it would work. +* Keep the scope as narrow as possible, to make it easier to implement. +* Remember that this is a volunteer-driven project, and that contributions + are welcome :) + +Get Started! +------------ + +Ready to contribute? Here's how to set up `pipreqs` for local development. + +1. Fork the `pipreqs` repo on GitHub. +2. Clone your fork locally:: + + $ git clone git@github.com:your_name_here/pipreqs.git + +3. Install your local copy into a virtualenv. Assuming you have virtualenvwrapper installed, this is how you set up your fork for local development:: + + $ mkvirtualenv pipreqs + $ cd pipreqs/ + $ python setup.py develop + +4. Create a branch for local development:: + + $ git checkout -b name-of-your-bugfix-or-feature + + Now you can make your changes locally. + +5. When you're done making changes, check that your changes pass flake8 and the tests, including testing other Python versions with tox:: + + $ flake8 pipreqs tests + $ python setup.py test + $ tox + + To get flake8 and tox, just pip install them into your virtualenv. + +6. Commit your changes and push your branch to GitHub:: + + $ git add . + $ git commit -m "Your detailed description of your changes." + $ git push origin name-of-your-bugfix-or-feature + +7. Submit a pull request through the GitHub website. + +Pull Request Guidelines +----------------------- + +Before you submit a pull request, check that it meets these guidelines: + +1. The pull request should include tests. +2. If the pull request adds functionality, the docs should be updated. Put + your new functionality into a function with a docstring, and add the + feature to the list in README.rst. +3. The pull request should work for Python 2.6, 2.7, 3.3, and 3.4, and for PyPy. Check + https://travis-ci.org/bndr/pipreqs/pull_requests + and make sure that the tests pass for all supported Python versions. + +Tips +---- + +To run a subset of tests:: + + $ python -m unittest tests.test_pipreqs diff --git a/HISTORY.rst b/HISTORY.rst new file mode 100644 index 0000000..45dcc1a --- /dev/null +++ b/HISTORY.rst @@ -0,0 +1,9 @@ +.. :changelog: + +History +------- + +0.1.0 (2015-04-22) +--------------------- + +* First release on Github. diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 0000000..2bb6bb1 --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1,11 @@ +include AUTHORS.rst +include CONTRIBUTING.rst +include HISTORY.rst +include LICENSE +include README.rst + +recursive-include tests * +recursive-exclude * __pycache__ +recursive-exclude * *.py[co] + +recursive-include docs *.rst conf.py Makefile make.bat diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..6b828e2 --- /dev/null +++ b/Makefile @@ -0,0 +1,70 @@ +.PHONY: clean-pyc clean-build docs clean + +help: + @echo "clean - remove all build, test, coverage and Python artifacts" + @echo "clean-build - remove build artifacts" + @echo "clean-pyc - remove Python file artifacts" + @echo "clean-test - remove test and coverage artifacts" + @echo "lint - check style with flake8" + @echo "test - run tests quickly with the default Python" + @echo "test-all - run tests on every Python version with tox" + @echo "coverage - check code coverage quickly with the default Python" + @echo "docs - generate Sphinx HTML documentation, including API docs" + @echo "release - package and upload a release" + @echo "dist - package" + @echo "install - install the package to the active Python's site-packages" + +clean: clean-build clean-pyc clean-test + +clean-build: + rm -fr build/ + rm -fr dist/ + rm -fr .eggs/ + find . -name '*.egg-info' -exec rm -fr {} + + find . -name '*.egg' -exec rm -f {} + + +clean-pyc: + find . -name '*.pyc' -exec rm -f {} + + find . -name '*.pyo' -exec rm -f {} + + find . -name '*~' -exec rm -f {} + + find . -name '__pycache__' -exec rm -fr {} + + +clean-test: + rm -fr .tox/ + rm -f .coverage + rm -fr htmlcov/ + +lint: + flake8 pipreqs tests + +test: + python setup.py test + +test-all: + tox + +coverage: + coverage run --source pipreqs setup.py test + coverage report -m + coverage html + open htmlcov/index.html + +docs: + rm -f docs/pipreqs.rst + rm -f docs/modules.rst + sphinx-apidoc -o docs/ pipreqs + $(MAKE) -C docs clean + $(MAKE) -C docs html + open docs/_build/html/index.html + +release: clean + python setup.py sdist upload + python setup.py bdist_wheel upload + +dist: clean + python setup.py sdist + python setup.py bdist_wheel + ls -l dist + +install: clean + python setup.py install diff --git a/README.rst b/README.rst new file mode 100644 index 0000000..beab71a --- /dev/null +++ b/README.rst @@ -0,0 +1,20 @@ +=============================== +pipreqs +=============================== + +.. image:: https://img.shields.io/travis/bndr/pipreqs.svg + :target: https://travis-ci.org/bndr/pipreqs + +.. image:: https://img.shields.io/pypi/v/pipreqs.svg + :target: https://pypi.python.org/pypi/pipreqs + + +Pip Requirements generator + +* Free software: BSD license +* Documentation: https://pipreqs.readthedocs.org. + +Features +-------- + +* TODO diff --git a/docs/Makefile b/docs/Makefile new file mode 100644 index 0000000..e22b800 --- /dev/null +++ b/docs/Makefile @@ -0,0 +1,177 @@ +# Makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +PAPER = +BUILDDIR = _build + +# User-friendly check for sphinx-build +ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) +$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) +endif + +# Internal variables. +PAPEROPT_a4 = -D latex_paper_size=a4 +PAPEROPT_letter = -D latex_paper_size=letter +ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . +# the i18n builder cannot share the environment and doctrees with the others +I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . + +.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext + +help: + @echo "Please use \`make ' where is one of" + @echo " html to make standalone HTML files" + @echo " dirhtml to make HTML files named index.html in directories" + @echo " singlehtml to make a single large HTML file" + @echo " pickle to make pickle files" + @echo " json to make JSON files" + @echo " htmlhelp to make HTML files and a HTML help project" + @echo " qthelp to make HTML files and a qthelp project" + @echo " devhelp to make HTML files and a Devhelp project" + @echo " epub to make an epub" + @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" + @echo " latexpdf to make LaTeX files and run them through pdflatex" + @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" + @echo " text to make text files" + @echo " man to make manual pages" + @echo " texinfo to make Texinfo files" + @echo " info to make Texinfo files and run them through makeinfo" + @echo " gettext to make PO message catalogs" + @echo " changes to make an overview of all changed/added/deprecated items" + @echo " xml to make Docutils-native XML files" + @echo " pseudoxml to make pseudoxml-XML files for display purposes" + @echo " linkcheck to check all external links for integrity" + @echo " doctest to run all doctests embedded in the documentation (if enabled)" + +clean: + rm -rf $(BUILDDIR)/* + +html: + $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." + +dirhtml: + $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." + +singlehtml: + $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml + @echo + @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." + +pickle: + $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle + @echo + @echo "Build finished; now you can process the pickle files." + +json: + $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json + @echo + @echo "Build finished; now you can process the JSON files." + +htmlhelp: + $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp + @echo + @echo "Build finished; now you can run HTML Help Workshop with the" \ + ".hhp project file in $(BUILDDIR)/htmlhelp." + +qthelp: + $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp + @echo + @echo "Build finished; now you can run "qcollectiongenerator" with the" \ + ".qhcp project file in $(BUILDDIR)/qthelp, like this:" + @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/pipreqs.qhcp" + @echo "To view the help file:" + @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/pipreqs.qhc" + +devhelp: + $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp + @echo + @echo "Build finished." + @echo "To view the help file:" + @echo "# mkdir -p $$HOME/.local/share/devhelp/pipreqs" + @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/pipreqs" + @echo "# devhelp" + +epub: + $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub + @echo + @echo "Build finished. The epub file is in $(BUILDDIR)/epub." + +latex: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo + @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." + @echo "Run \`make' in that directory to run these through (pdf)latex" \ + "(use \`make latexpdf' here to do that automatically)." + +latexpdf: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo "Running LaTeX files through pdflatex..." + $(MAKE) -C $(BUILDDIR)/latex all-pdf + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." + +latexpdfja: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo "Running LaTeX files through platex and dvipdfmx..." + $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." + +text: + $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text + @echo + @echo "Build finished. The text files are in $(BUILDDIR)/text." + +man: + $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man + @echo + @echo "Build finished. The manual pages are in $(BUILDDIR)/man." + +texinfo: + $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo + @echo + @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." + @echo "Run \`make' in that directory to run these through makeinfo" \ + "(use \`make info' here to do that automatically)." + +info: + $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo + @echo "Running Texinfo files through makeinfo..." + make -C $(BUILDDIR)/texinfo info + @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." + +gettext: + $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale + @echo + @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." + +changes: + $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes + @echo + @echo "The overview file is in $(BUILDDIR)/changes." + +linkcheck: + $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck + @echo + @echo "Link check complete; look for any errors in the above output " \ + "or in $(BUILDDIR)/linkcheck/output.txt." + +doctest: + $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest + @echo "Testing of doctests in the sources finished, look at the " \ + "results in $(BUILDDIR)/doctest/output.txt." + +xml: + $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml + @echo + @echo "Build finished. The XML files are in $(BUILDDIR)/xml." + +pseudoxml: + $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml + @echo + @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." diff --git a/docs/authors.rst b/docs/authors.rst new file mode 100644 index 0000000..e122f91 --- /dev/null +++ b/docs/authors.rst @@ -0,0 +1 @@ +.. include:: ../AUTHORS.rst diff --git a/docs/conf.py b/docs/conf.py new file mode 100755 index 0000000..2cbd667 --- /dev/null +++ b/docs/conf.py @@ -0,0 +1,275 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# pipreqs documentation build configuration file, created by +# sphinx-quickstart on Tue Jul 9 22:26:36 2013. +# +# This file is execfile()d with the current directory set to its +# containing dir. +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +import sys +import os + +# If extensions (or modules to document with autodoc) are in another +# directory, add these directories to sys.path here. If the directory is +# relative to the documentation root, use os.path.abspath to make it +# absolute, like shown here. +#sys.path.insert(0, os.path.abspath('.')) + +# Get the project root dir, which is the parent dir of this +cwd = os.getcwd() +project_root = os.path.dirname(cwd) + +# Insert the project root dir as the first element in the PYTHONPATH. +# This lets us ensure that the source package is imported, and that its +# version is used. +sys.path.insert(0, project_root) + +import pipreqs + +# -- General configuration --------------------------------------------- + +# If your documentation needs a minimal Sphinx version, state it here. +#needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom ones. +extensions = ['sphinx.ext.autodoc', 'sphinx.ext.viewcode'] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix of source filenames. +source_suffix = '.rst' + +# The encoding of source files. +#source_encoding = 'utf-8-sig' + +# The master toctree document. +master_doc = 'index' + +# General information about the project. +project = u'pipreqs' +copyright = u'2015, Vadim Kravcenko' + +# The version info for the project you're documenting, acts as replacement +# for |version| and |release|, also used in various other places throughout +# the built documents. +# +# The short X.Y version. +version = pipreqs.__version__ +# The full version, including alpha/beta/rc tags. +release = pipreqs.__version__ + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +#language = None + +# There are two options for replacing |today|: either, you set today to +# some non-false value, then it is used: +#today = '' +# Else, today_fmt is used as the format for a strftime call. +#today_fmt = '%B %d, %Y' + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +exclude_patterns = ['_build'] + +# The reST default role (used for this markup: `text`) to use for all +# documents. +#default_role = None + +# If true, '()' will be appended to :func: etc. cross-reference text. +#add_function_parentheses = True + +# If true, the current module name will be prepended to all description +# unit titles (such as .. function::). +#add_module_names = True + +# If true, sectionauthor and moduleauthor directives will be shown in the +# output. They are ignored by default. +#show_authors = False + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + +# A list of ignored prefixes for module index sorting. +#modindex_common_prefix = [] + +# If true, keep warnings as "system message" paragraphs in the built +# documents. +#keep_warnings = False + + +# -- Options for HTML output ------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +html_theme = 'default' + +# Theme options are theme-specific and customize the look and feel of a +# theme further. For a list of options available for each theme, see the +# documentation. +#html_theme_options = {} + +# Add any paths that contain custom themes here, relative to this directory. +#html_theme_path = [] + +# The name for this set of Sphinx documents. If None, it defaults to +# " v documentation". +#html_title = None + +# A shorter title for the navigation bar. Default is the same as +# html_title. +#html_short_title = None + +# The name of an image file (relative to this directory) to place at the +# top of the sidebar. +#html_logo = None + +# The name of an image file (within the static path) to use as favicon +# of the docs. This file should be a Windows icon file (.ico) being +# 16x16 or 32x32 pixels large. +#html_favicon = None + +# Add any paths that contain custom static files (such as style sheets) +# here, relative to this directory. They are copied after the builtin +# static files, so a file named "default.css" will overwrite the builtin +# "default.css". +html_static_path = ['_static'] + +# If not '', a 'Last updated on:' timestamp is inserted at every page +# bottom, using the given strftime format. +#html_last_updated_fmt = '%b %d, %Y' + +# If true, SmartyPants will be used to convert quotes and dashes to +# typographically correct entities. +#html_use_smartypants = True + +# Custom sidebar templates, maps document names to template names. +#html_sidebars = {} + +# Additional templates that should be rendered to pages, maps page names +# to template names. +#html_additional_pages = {} + +# If false, no module index is generated. +#html_domain_indices = True + +# If false, no index is generated. +#html_use_index = True + +# If true, the index is split into individual pages for each letter. +#html_split_index = False + +# If true, links to the reST sources are added to the pages. +#html_show_sourcelink = True + +# If true, "Created using Sphinx" is shown in the HTML footer. +# Default is True. +#html_show_sphinx = True + +# If true, "(C) Copyright ..." is shown in the HTML footer. +# Default is True. +#html_show_copyright = True + +# If true, an OpenSearch description file will be output, and all pages +# will contain a tag referring to it. The value of this option +# must be the base URL from which the finished HTML is served. +#html_use_opensearch = '' + +# This is the file name suffix for HTML files (e.g. ".xhtml"). +#html_file_suffix = None + +# Output file base name for HTML help builder. +htmlhelp_basename = 'pipreqsdoc' + + +# -- Options for LaTeX output ------------------------------------------ + +latex_elements = { + # The paper size ('letterpaper' or 'a4paper'). + #'papersize': 'letterpaper', + + # The font size ('10pt', '11pt' or '12pt'). + #'pointsize': '10pt', + + # Additional stuff for the LaTeX preamble. + #'preamble': '', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, author, documentclass +# [howto/manual]). +latex_documents = [ + ('index', 'pipreqs.tex', + u'pipreqs Documentation', + u'Vadim Kravcenko', 'manual'), +] + +# The name of an image file (relative to this directory) to place at +# the top of the title page. +#latex_logo = None + +# For "manual" documents, if this is true, then toplevel headings +# are parts, not chapters. +#latex_use_parts = False + +# If true, show page references after internal links. +#latex_show_pagerefs = False + +# If true, show URL addresses after external links. +#latex_show_urls = False + +# Documents to append as an appendix to all manuals. +#latex_appendices = [] + +# If false, no module index is generated. +#latex_domain_indices = True + + +# -- Options for manual page output ------------------------------------ + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + ('index', 'pipreqs', + u'pipreqs Documentation', + [u'Vadim Kravcenko'], 1) +] + +# If true, show URL addresses after external links. +#man_show_urls = False + + +# -- Options for Texinfo output ---------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + ('index', 'pipreqs', + u'pipreqs Documentation', + u'Vadim Kravcenko', + 'pipreqs', + 'One line description of project.', + 'Miscellaneous'), +] + +# Documents to append as an appendix to all manuals. +#texinfo_appendices = [] + +# If false, no module index is generated. +#texinfo_domain_indices = True + +# How to display URL addresses: 'footnote', 'no', or 'inline'. +#texinfo_show_urls = 'footnote' + +# If true, do not generate a @detailmenu in the "Top" node's menu. +#texinfo_no_detailmenu = False diff --git a/docs/contributing.rst b/docs/contributing.rst new file mode 100644 index 0000000..e582053 --- /dev/null +++ b/docs/contributing.rst @@ -0,0 +1 @@ +.. include:: ../CONTRIBUTING.rst diff --git a/docs/history.rst b/docs/history.rst new file mode 100644 index 0000000..2506499 --- /dev/null +++ b/docs/history.rst @@ -0,0 +1 @@ +.. include:: ../HISTORY.rst diff --git a/docs/index.rst b/docs/index.rst new file mode 100644 index 0000000..a97b26b --- /dev/null +++ b/docs/index.rst @@ -0,0 +1,27 @@ +.. pipreqs documentation master file, created by + sphinx-quickstart on Tue Jul 9 22:26:36 2013. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to pipreqs's documentation! +====================================== + +Contents: + +.. toctree:: + :maxdepth: 2 + + readme + installation + usage + contributing + authors + history + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` + diff --git a/docs/installation.rst b/docs/installation.rst new file mode 100644 index 0000000..d3db13d --- /dev/null +++ b/docs/installation.rst @@ -0,0 +1,12 @@ +============ +Installation +============ + +At the command line:: + + $ easy_install pipreqs + +Or, if you have virtualenvwrapper installed:: + + $ mkvirtualenv pipreqs + $ pip install pipreqs diff --git a/docs/make.bat b/docs/make.bat new file mode 100644 index 0000000..8164d47 --- /dev/null +++ b/docs/make.bat @@ -0,0 +1,242 @@ +@ECHO OFF + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set BUILDDIR=_build +set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% . +set I18NSPHINXOPTS=%SPHINXOPTS% . +if NOT "%PAPER%" == "" ( + set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% + set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS% +) + +if "%1" == "" goto help + +if "%1" == "help" ( + :help + echo.Please use `make ^` where ^ is one of + echo. html to make standalone HTML files + echo. dirhtml to make HTML files named index.html in directories + echo. singlehtml to make a single large HTML file + echo. pickle to make pickle files + echo. json to make JSON files + echo. htmlhelp to make HTML files and a HTML help project + echo. qthelp to make HTML files and a qthelp project + echo. devhelp to make HTML files and a Devhelp project + echo. epub to make an epub + echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter + echo. text to make text files + echo. man to make manual pages + echo. texinfo to make Texinfo files + echo. gettext to make PO message catalogs + echo. changes to make an overview over all changed/added/deprecated items + echo. xml to make Docutils-native XML files + echo. pseudoxml to make pseudoxml-XML files for display purposes + echo. linkcheck to check all external links for integrity + echo. doctest to run all doctests embedded in the documentation if enabled + goto end +) + +if "%1" == "clean" ( + for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i + del /q /s %BUILDDIR%\* + goto end +) + + +%SPHINXBUILD% 2> nul +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.http://sphinx-doc.org/ + exit /b 1 +) + +if "%1" == "html" ( + %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The HTML pages are in %BUILDDIR%/html. + goto end +) + +if "%1" == "dirhtml" ( + %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. + goto end +) + +if "%1" == "singlehtml" ( + %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml. + goto end +) + +if "%1" == "pickle" ( + %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can process the pickle files. + goto end +) + +if "%1" == "json" ( + %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can process the JSON files. + goto end +) + +if "%1" == "htmlhelp" ( + %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can run HTML Help Workshop with the ^ +.hhp project file in %BUILDDIR%/htmlhelp. + goto end +) + +if "%1" == "qthelp" ( + %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can run "qcollectiongenerator" with the ^ +.qhcp project file in %BUILDDIR%/qthelp, like this: + echo.^> qcollectiongenerator %BUILDDIR%\qthelp\pipreqs.qhcp + echo.To view the help file: + echo.^> assistant -collectionFile %BUILDDIR%\qthelp\pipreqs.ghc + goto end +) + +if "%1" == "devhelp" ( + %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. + goto end +) + +if "%1" == "epub" ( + %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The epub file is in %BUILDDIR%/epub. + goto end +) + +if "%1" == "latex" ( + %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. + goto end +) + +if "%1" == "latexpdf" ( + %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex + cd %BUILDDIR%/latex + make all-pdf + cd %BUILDDIR%/.. + echo. + echo.Build finished; the PDF files are in %BUILDDIR%/latex. + goto end +) + +if "%1" == "latexpdfja" ( + %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex + cd %BUILDDIR%/latex + make all-pdf-ja + cd %BUILDDIR%/.. + echo. + echo.Build finished; the PDF files are in %BUILDDIR%/latex. + goto end +) + +if "%1" == "text" ( + %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The text files are in %BUILDDIR%/text. + goto end +) + +if "%1" == "man" ( + %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The manual pages are in %BUILDDIR%/man. + goto end +) + +if "%1" == "texinfo" ( + %SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo. + goto end +) + +if "%1" == "gettext" ( + %SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The message catalogs are in %BUILDDIR%/locale. + goto end +) + +if "%1" == "changes" ( + %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes + if errorlevel 1 exit /b 1 + echo. + echo.The overview file is in %BUILDDIR%/changes. + goto end +) + +if "%1" == "linkcheck" ( + %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck + if errorlevel 1 exit /b 1 + echo. + echo.Link check complete; look for any errors in the above output ^ +or in %BUILDDIR%/linkcheck/output.txt. + goto end +) + +if "%1" == "doctest" ( + %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest + if errorlevel 1 exit /b 1 + echo. + echo.Testing of doctests in the sources finished, look at the ^ +results in %BUILDDIR%/doctest/output.txt. + goto end +) + +if "%1" == "xml" ( + %SPHINXBUILD% -b xml %ALLSPHINXOPTS% %BUILDDIR%/xml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The XML files are in %BUILDDIR%/xml. + goto end +) + +if "%1" == "pseudoxml" ( + %SPHINXBUILD% -b pseudoxml %ALLSPHINXOPTS% %BUILDDIR%/pseudoxml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The pseudo-XML files are in %BUILDDIR%/pseudoxml. + goto end +) + +:end diff --git a/docs/readme.rst b/docs/readme.rst new file mode 100644 index 0000000..72a3355 --- /dev/null +++ b/docs/readme.rst @@ -0,0 +1 @@ +.. include:: ../README.rst diff --git a/docs/usage.rst b/docs/usage.rst new file mode 100644 index 0000000..9bbfff0 --- /dev/null +++ b/docs/usage.rst @@ -0,0 +1,7 @@ +======== +Usage +======== + +To use pipreqs in a project:: + + import pipreqs diff --git a/pipreqs/__init__.py b/pipreqs/__init__.py new file mode 100755 index 0000000..5b735ea --- /dev/null +++ b/pipreqs/__init__.py @@ -0,0 +1,5 @@ +# -*- coding: utf-8 -*- + +__author__ = 'Vadim Kravcenko' +__email__ = 'vadim.kravcenko@gmail.com' +__version__ = '0.1.0' diff --git a/pipreqs/pipreqs.py b/pipreqs/pipreqs.py new file mode 100755 index 0000000..03b3961 --- /dev/null +++ b/pipreqs/pipreqs.py @@ -0,0 +1,80 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +"""pipreqs - Generate pip requirements.txt file based on imports + +Usage: + pipreqs + pipreqs [options] + +Options: + --debug prints debug information. + --savepath path to requirements.txt (Optional) +""" +import os, re, logging +from docopt import docopt +import yarg + +REGEXP = [re.compile(r'import ([a-zA-Z123456789]+)'),re.compile(r'from (.*?) import (?:.*)')] + +def get_all_imports(start_path): + imports = [] + packages = [] + for root, dirs, files in os.walk(start_path): + path = root.split('/') + packages.append(os.path.basename(root)) + for file in files: + if file[-3:] != ".py": + continue + for rex in REGEXP: + with open(root + "/" + file, "r") as f: + s = rex.match(f.read()) + if s: + for item in s.groups(): + if "." in item: + imports.append(item.split(".")[0]) + else: + imports.append(item) + local_packages = list(set(packages) & set(imports)) + third_party_packages = list(set(imports) - set(local_packages)) + with open(os.path.dirname(__file__)+"/stdlib", "r") as f: + data = [x.strip() for x in f.readlines()] + return list(set(third_party_packages) - set(data)) + +def generate_requirements_file(path, imports): + with open(path, "w") as ff: + for item in imports: + ff.write(item['name']) + ff.write("==") + ff.write(item['version']) + ff.write("\n") + +def get_imports_info(imports): + result = [] + for item in imports: + data = yarg.get(item) + if not data or len(data.release_ids) < 1: + continue + last_release = data.release_ids[-1] + result.append({'name':item,'version':last_release}) + return result + +def init(args): + imports = get_all_imports(args['']) + imports_with_info = get_imports_info(imports) + path = args["--savepath"] if args["--savepath"] else os.path.join(args[''],"requirements.txt") + generate_requirements_file(path, imports_with_info) + +def main(): + args = docopt(__doc__, version='xstat 0.1') + log_level = logging.WARNING + if args['--debug']: + log_level = logging.DEBUG + logging.basicConfig(level=log_level, format='%(levelname)s: %(message)s') + + try: + init(args) + except KeyboardInterrupt: + sys.exit(0) + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/pipreqs/stdlib b/pipreqs/stdlib new file mode 100644 index 0000000..71edcc8 --- /dev/null +++ b/pipreqs/stdlib @@ -0,0 +1,1076 @@ +__builtin__ +__future__ +__main__ +_winreg +abc +aepack +aetools +aetypes +aifc +AL +al +anydbm +applesingle +argparse +array +ast +asynchat +asyncore +atexit +audioop +autoGIL +base64 +BaseHTTPServer +Bastion +bdb +binascii +binhex +bisect +bsddb +buildtools +bz2 +calendar +Carbon +Carbon.AE +Carbon.AH +Carbon.App +Carbon.Appearance +Carbon.CarbonEvents +Carbon.CarbonEvt +Carbon.CF +Carbon.CG +Carbon.Cm +Carbon.Components +Carbon.ControlAccessor +Carbon.Controls +Carbon.CoreFounation +Carbon.CoreGraphics +Carbon.Ctl +Carbon.Dialogs +Carbon.Dlg +Carbon.Drag +Carbon.Dragconst +Carbon.Events +Carbon.Evt +Carbon.File +Carbon.Files +Carbon.Fm +Carbon.Folder +Carbon.Folders +Carbon.Fonts +Carbon.Help +Carbon.IBCarbon +Carbon.IBCarbonRuntime +Carbon.Icns +Carbon.Icons +Carbon.Launch +Carbon.LaunchServices +Carbon.List +Carbon.Lists +Carbon.MacHelp +Carbon.MediaDescr +Carbon.Menu +Carbon.Menus +Carbon.Mlte +Carbon.OSA +Carbon.OSAconst +Carbon.Qd +Carbon.Qdoffs +Carbon.QDOffscreen +Carbon.Qt +Carbon.QuickDraw +Carbon.QuickTime +Carbon.Res +Carbon.Resources +Carbon.Scrap +Carbon.Snd +Carbon.Sound +Carbon.TE +Carbon.TextEdit +Carbon.Win +Carbon.Windows +cd +cfmfile +cgi +CGIHTTPServer +cgitb +chunk +cmath +cmd +code +codecs +codeop +collections +ColorPicker +colorsys +commands +compileall +compiler +compiler.ast +compiler.visitor +ConfigParser +contextlib +Cookie +cookielib +copy +copy_reg +cPickle +cProfile +crypt +cStringIO +csv +ctypes +curses +curses.ascii +curses.panel +curses.textpad +datetime +dbhash +dbm +decimal +DEVICE +difflib +dircache +dis +distutils +distutils.archive_util +distutils.bcppcompiler +distutils.ccompiler +distutils.cmd +distutils.command +distutils.command.bdist +distutils.command.bdist_dumb +distutils.command.bdist_msi +distutils.command.bdist_packager +distutils.command.bdist_rpm +distutils.command.bdist_wininst +distutils.command.build +distutils.command.build_clib +distutils.command.build_ext +distutils.command.build_py +distutils.command.build_scripts +distutils.command.check +distutils.command.clean +distutils.command.config +distutils.command.install +distutils.command.install_data +distutils.command.install_headers +distutils.command.install_lib +distutils.command.install_scripts +distutils.command.register +distutils.command.sdist +distutils.core +distutils.cygwinccompiler +distutils.debug +distutils.dep_util +distutils.dir_util +distutils.dist +distutils.emxccompiler +distutils.errors +distutils.extension +distutils.fancy_getopt +distutils.file_util +distutils.filelist +distutils.log +distutils.msvccompiler +distutils.spawn +distutils.sysconfig +distutils.text_file +distutils.unixccompiler +distutils.util +distutils.version +dl +doctest +DocXMLRPCServer +dumbdbm +dummy_thread +dummy_threading +EasyDialogs +email +email.charset +email.encoders +email.errors +email.generator +email.header +email.iterators +email.message +email.mime +email.parser +email.utils +encodings +encodings.idna +encodings.utf_8_sig +ensurepip +errno +exceptions +fcntl +filecmp +fileinput +findertools +FL +fl +flp +fm +fnmatch +formatter +fpectl +fpformat +fractions +FrameWork +ftplib +functools +future_builtins +gc +gdbm +gensuitemodule +getopt +getpass +gettext +gl +GL +glob +grp +gzip +hashlib +heapq +hmac +hotshot +hotshot.stats +htmlentitydefs +htmllib +HTMLParser +httplib +ic +icopen +imageop +imaplib +imgfile +imghdr +imp +importlib +imputil +inspect +io +itertools +jpeg +json +keyword +lib2to3 +linecache +locale +logging +logging.config +logging.handlers +macerrors +MacOS +macostools +macpath +macresource +mailbox +mailcap +marshal +math +md5 +mhlib +mimetools +mimetypes +MimeWriter +mimify +MiniAEFrame +mmap +modulefinder +msilib +msvcrt +multifile +multiprocessing +multiprocessing.connection +multiprocessing.dummy +multiprocessing.managers +multiprocessing.pool +multiprocessing.sharedctypes +mutex +Nav +netrc +new +nis +nntplib +numbers +operator +optparse +os +os.path +ossaudiodev +parser +pdb +pickle +pickletools +pipes +PixMapWrapper +pkgutil +platform +plistlib +popen2 +poplib +posix +posixfile +pprint +profile +pstats +pty +pwd +py_compile +pyclbr +pydoc +Queue +quopri +random +re +readline +resource +rexec +rfc822 +rlcompleter +robotparser +runpy +sched +ScrolledText +select +sets +sgmllib +sha +shelve +shlex +shutil +signal +SimpleHTTPServer +SimpleXMLRPCServer +site +smtpd +smtplib +sndhdr +socket +SocketServer +spwd +sqlite3 +ssl +stat +statvfs +string +StringIO +stringprep +struct +subprocess +sunau +sunaudiodev +SUNAUDIODEV +symbol +symtable +sys +sysconfig +syslog +tabnanny +tarfile +telnetlib +tempfile +termios +test +test.test_support +textwrap +thread +threading +time +timeit +Tix +Tkinter +token +tokenize +trace +traceback +ttk +tty +turtle +types +unicodedata +unittest +urllib +urllib2 +urlparse +user +UserDict +UserList +UserString +uu +uuid +videoreader +W +warnings +wave +weakref +webbrowser +whichdb +winsound +wsgiref +wsgiref.handlers +wsgiref.headers +wsgiref.simple_server +wsgiref.util +wsgiref.validate +xdrlib +xml +xml.dom +xml.dom.minidom +xml.dom.pulldom +xml.etree.ElementTree +xml.parsers.expat +xml.sax +xml.sax.handler +xml.sax.saxutils +xml.sax.xmlreader +xmlrpclib +zipfile +zipimport +zlib +__future__ +__main__ +_dummy_thread +_thread +abc +aifc +argparse +array +ast +asynchat +asyncio +asyncore +atexit +audioop +base64 +bdb +binascii +binhex +bisect +builtins +bz2 +calendar +cgi +cgitb +chunk +cmath +cmd +code +codecs +codeop +collections +collections.abc +colorsys +compileall +concurrent +concurrent.futures +configparser +contextlib +copy +copyreg +cProfile +crypt +csv +ctypes +curses +curses.ascii +curses.panel +curses.textpad +datetime +dbm +dbm.dumb +dbm.gnu +dbm.ndbm +decimal +difflib +dis +distutils +distutils.archive_util +distutils.bcppcompiler +distutils.ccompiler +distutils.cmd +distutils.command +distutils.command.bdist +distutils.command.bdist_dumb +distutils.command.bdist_msi +distutils.command.bdist_packager +distutils.command.bdist_rpm +distutils.command.bdist_wininst +distutils.command.build +distutils.command.build_clib +distutils.command.build_ext +distutils.command.build_py +distutils.command.build_scripts +distutils.command.check +distutils.command.clean +distutils.command.config +distutils.command.install +distutils.command.install_data +distutils.command.install_headers +distutils.command.install_lib +distutils.command.install_scripts +distutils.command.register +distutils.command.sdist +distutils.core +distutils.cygwinccompiler +distutils.debug +distutils.dep_util +distutils.dir_util +distutils.dist +distutils.errors +distutils.extension +distutils.fancy_getopt +distutils.file_util +distutils.filelist +distutils.log +distutils.msvccompiler +distutils.spawn +distutils.sysconfig +distutils.text_file +distutils.unixccompiler +distutils.util +distutils.version +doctest +dummy_threading +email +email.charset +email.contentmanager +email.encoders +email.errors +email.generator +email.header +email.headerregistry +email.iterators +email.message +email.mime +email.parser +email.policy +email.utils +encodings +encodings.idna +encodings.mbcs +encodings.utf_8_sig +ensurepip +enum +errno +faulthandler +fcntl +filecmp +fileinput +fnmatch +formatter +fpectl +fractions +ftplib +functools +gc +getopt +getpass +gettext +glob +grp +gzip +hashlib +heapq +hmac +html +html.entities +html.parser +http +http.client +http.cookiejar +http.cookies +http.server +imaplib +imghdr +imp +importlib +importlib.abc +importlib.machinery +importlib.util +inspect +io +ipaddress +itertools +json +keyword +lib2to3 +linecache +locale +logging +logging.config +logging.handlers +lzma +macpath +mailbox +mailcap +marshal +math +mimetypes +mmap +modulefinder +msilib +msvcrt +multiprocessing +multiprocessing.connection +multiprocessing.dummy +multiprocessing.managers +multiprocessing.pool +multiprocessing.sharedctypes +netrc +nis +nntplib +numbers +operator +optparse +os +os.path +ossaudiodev +parser +pathlib +pdb +pickle +pickletools +pipes +pkgutil +platform +plistlib +poplib +posix +pprint +profile +pstats +pty +pwd +py_compile +pyclbr +pydoc +queue +quopri +random +re +readline +reprlib +resource +rlcompleter +runpy +sched +select +selectors +shelve +shlex +shutil +signal +site +smtpd +smtplib +sndhdr +socket +socketserver +spwd +sqlite3 +ssl +stat +statistics +string +stringprep +struct +subprocess +sunau +symbol +symtable +sys +sysconfig +syslog +tabnanny +tarfile +telnetlib +tempfile +termios +test +test.support +textwrap +threading +time +timeit +tkinter +tkinter.scrolledtext +tkinter.tix +tkinter.ttk +token +tokenize +trace +traceback +tracemalloc +tty +turtle +turtledemo +types +unicodedata +unittest +unittest.mock +urllib +urllib.error +urllib.parse +urllib.request +urllib.response +urllib.robotparser +uu +uuid +venv +warnings +wave +weakref +webbrowser +winreg +winsound +wsgiref +wsgiref.handlers +wsgiref.headers +wsgiref.simple_server +wsgiref.util +wsgiref.validate +xdrlib +xml +xml.dom +xml.dom.minidom +xml.dom.pulldom +xml.etree.ElementTree +xml.parsers.expat +xml.parsers.expat.errors +xml.parsers.expat.model +xml.sax +xml.sax.handler +xml.sax.saxutils +xml.sax.xmlreader +xmlrpc +xmlrpc.client +xmlrpc.server +zipfile +zipimport +zlib +__future__ +__main__ +_dummy_thread +_thread +abc +aifc +argparse +array +ast +asynchat +asyncio +asyncore +atexit +audioop +base64 +bdb +binascii +binhex +bisect +builtins +bz2 +calendar +cgi +cgitb +chunk +cmath +cmd +code +codecs +codeop +collections +collections.abc +colorsys +compileall +concurrent +concurrent.futures +configparser +contextlib +copy +copyreg +cProfile +crypt +csv +ctypes +curses +curses.ascii +curses.panel +curses.textpad +datetime +dbm +dbm.dumb +dbm.gnu +dbm.ndbm +decimal +difflib +dis +distutils +distutils.archive_util +distutils.bcppcompiler +distutils.ccompiler +distutils.cmd +distutils.command +distutils.command.bdist +distutils.command.bdist_dumb +distutils.command.bdist_msi +distutils.command.bdist_packager +distutils.command.bdist_rpm +distutils.command.bdist_wininst +distutils.command.build +distutils.command.build_clib +distutils.command.build_ext +distutils.command.build_py +distutils.command.build_scripts +distutils.command.check +distutils.command.clean +distutils.command.config +distutils.command.install +distutils.command.install_data +distutils.command.install_headers +distutils.command.install_lib +distutils.command.install_scripts +distutils.command.register +distutils.command.sdist +distutils.core +distutils.cygwinccompiler +distutils.debug +distutils.dep_util +distutils.dir_util +distutils.dist +distutils.errors +distutils.extension +distutils.fancy_getopt +distutils.file_util +distutils.filelist +distutils.log +distutils.msvccompiler +distutils.spawn +distutils.sysconfig +distutils.text_file +distutils.unixccompiler +distutils.util +distutils.version +doctest +dummy_threading +email +email.charset +email.contentmanager +email.encoders +email.errors +email.generator +email.header +email.headerregistry +email.iterators +email.message +email.mime +email.parser +email.policy +email.utils +encodings +encodings.idna +encodings.mbcs +encodings.utf_8_sig +ensurepip +enum +errno +faulthandler +fcntl +filecmp +fileinput +fnmatch +formatter +fpectl +fractions +ftplib +functools +gc +getopt +getpass +gettext +glob +grp +gzip +hashlib +heapq +hmac +html +html.entities +html.parser +http +http.client +http.cookiejar +http.cookies +http.server +imaplib +imghdr +imp +importlib +importlib.abc +importlib.machinery +importlib.util +inspect +io +ipaddress +itertools +json +json.tool +keyword +lib2to3 +linecache +locale +logging +logging.config +logging.handlers +lzma +macpath +mailbox +mailcap +marshal +math +mimetypes +mmap +modulefinder +msilib +msvcrt +multiprocessing +multiprocessing.connection +multiprocessing.dummy +multiprocessing.managers +multiprocessing.pool +multiprocessing.sharedctypes +netrc +nis +nntplib +numbers +operator +optparse +os +os.path +ossaudiodev +parser +pathlib +pdb +pickle +pickletools +pipes +pkgutil +platform +plistlib +poplib +posix +pprint +profile +pstats +pty +pwd +py_compile +pyclbr +pydoc +queue +quopri +random +re +readline +reprlib +resource +rlcompleter +runpy +sched +select +selectors +shelve +shlex +shutil +signal +site +smtpd +smtplib +sndhdr +socket +socketserver +spwd +sqlite3 +ssl +stat +statistics +string +stringprep +struct +subprocess +sunau +symbol +symtable +sys +sysconfig +syslog +tabnanny +tarfile +telnetlib +tempfile +termios +test +test.support +textwrap +threading +time +timeit +tkinter +tkinter.scrolledtext +tkinter.tix +tkinter.ttk +token +tokenize +trace +traceback +tracemalloc +tty +turtle +turtledemo +types +unicodedata +unittest +unittest.mock +urllib +urllib.error +urllib.parse +urllib.request +urllib.response +urllib.robotparser +uu +uuid +venv +warnings +wave +weakref +webbrowser +winreg +winsound +wsgiref +wsgiref.handlers +wsgiref.headers +wsgiref.simple_server +wsgiref.util +wsgiref.validate +xdrlib +xml +xml.dom +xml.dom.minidom +xml.dom.pulldom +xml.etree.ElementTree +xml.parsers.expat +xml.parsers.expat.errors +xml.parsers.expat.model +xml.sax +xml.sax.handler +xml.sax.saxutils +xml.sax.xmlreader +xmlrpc +xmlrpc.client +xmlrpc.server +zipapp +zipfile +zipimport +zlib diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..0f586ae --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +wheel==0.23.0 +Yarg==0.1.9 \ No newline at end of file diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 0000000..5e40900 --- /dev/null +++ b/setup.cfg @@ -0,0 +1,2 @@ +[wheel] +universal = 1 diff --git a/setup.py b/setup.py new file mode 100755 index 0000000..00b8c0a --- /dev/null +++ b/setup.py @@ -0,0 +1,62 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + + +try: + from setuptools import setup +except ImportError: + from distutils.core import setup + + +with open('README.rst') as readme_file: + readme = readme_file.read() + +with open('HISTORY.rst') as history_file: + history = history_file.read().replace('.. :changelog:', '') + +requirements = [ + 'docopt', 'yarg' +] + +test_requirements = [ + # TODO: put package test requirements here +] + +setup( + name='pipreqs', + version='0.1.0', + description="Pip Requirements generator based on imports in project", + long_description=readme + '\n\n' + history, + author="Vadim Kravcenko", + author_email='vadim.kravcenko@gmail.com', + url='https://github.com/bndr/pipreqs', + packages=[ + 'pipreqs', + ], + package_dir={'pipreqs': + 'pipreqs'}, + include_package_data=True, + install_requires=requirements, + license="Apache License 2.0", + zip_safe=False, + keywords='pipreqs', + classifiers=[ + 'Development Status :: 2 - Pre-Alpha', + 'Intended Audience :: Developers', + 'License :: OSI Approved :: Apache License 2.0', + 'Natural Language :: English', + "Programming Language :: Python :: 2", + 'Programming Language :: Python :: 2.6', + 'Programming Language :: Python :: 2.7', + 'Programming Language :: Python :: 3', + 'Programming Language :: Python :: 3.3', + 'Programming Language :: Python :: 3.4', + ], + test_suite='tests', + tests_require=test_requirements, + entry_points={ + 'console_scripts': [ + 'pipreqs = pipreqs.pipreqs:main', + ], + }, +) diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100755 index 0000000..40a96af --- /dev/null +++ b/tests/__init__.py @@ -0,0 +1 @@ +# -*- coding: utf-8 -*- diff --git a/tests/test_pipreqs.py b/tests/test_pipreqs.py new file mode 100755 index 0000000..3f5e478 --- /dev/null +++ b/tests/test_pipreqs.py @@ -0,0 +1,28 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +""" +test_pipreqs +---------------------------------- + +Tests for `pipreqs` module. +""" + +import unittest + +from pipreqs import pipreqs + + +class TestPipreqs(unittest.TestCase): + + def setUp(self): + pass + + def test_something(self): + pass + + def tearDown(self): + pass + +if __name__ == '__main__': + unittest.main() diff --git a/tox.ini b/tox.ini new file mode 100644 index 0000000..440b75d --- /dev/null +++ b/tox.ini @@ -0,0 +1,9 @@ +[tox] +envlist = py26, py27, py33, py34 + +[testenv] +setenv = + PYTHONPATH = {toxinidir}:{toxinidir}/pipreqs +commands = python setup.py test +deps = + -r{toxinidir}/requirements.txt