Metadata-Version: 2.1
Name: xdev
Version: 1.2.0
Summary: An excellent developer tool for excellent developers
Home-page: UNKNOWN
Author: Jon Crall
Author-email: erotemic@gmail.com
License: Apache 2
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Utilities
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Requires-Python: >=3.7
Description-Content-Type: text/x-rst
License-File: LICENSE
Requires-Dist: IPython (>=7.16.2)
Requires-Dist: parse (>=1.19.0)
Requires-Dist: pyfiglet (>=0.7)
Requires-Dist: pyflakes (>=2.5.0)
Requires-Dist: pygments (>=2.12.0)
Requires-Dist: scriptconfig (>=0.7.4)
Requires-Dist: ubelt (>=1.2.3)
Requires-Dist: xinspect (>=0.2.0)
Requires-Dist: numpy (>=1.19.3) ; python_version < "3.10" and python_version >= "3.9"
Requires-Dist: numpy (>=1.21.1) ; python_version < "3.11" and python_version >= "3.10"
Requires-Dist: numpy (>=1.12.0) ; python_version < "3.7" and python_version >= "3.6"
Requires-Dist: numpy (>=1.14.5) ; python_version < "3.8" and python_version >= "3.7"
Requires-Dist: numpy (>=1.19.2) ; python_version < "3.9" and python_version >= "3.8"
Requires-Dist: numpy (>=1.23.5) ; python_version < "4.0" and python_version >= "3.11"
Provides-Extra: all
Requires-Dist: IPython (>=7.16.2) ; extra == 'all'
Requires-Dist: autoflake (>=1.5.0) ; extra == 'all'
Requires-Dist: fire (>=0.4.0) ; extra == 'all'
Requires-Dist: parse (>=1.19.0) ; extra == 'all'
Requires-Dist: pyfiglet (>=0.7) ; extra == 'all'
Requires-Dist: pyflakes (>=2.5.0) ; extra == 'all'
Requires-Dist: pygments (>=2.12.0) ; extra == 'all'
Requires-Dist: scriptconfig (>=0.7.4) ; extra == 'all'
Requires-Dist: ubelt (>=1.2.3) ; extra == 'all'
Requires-Dist: xdoctest (>=0.14.0) ; extra == 'all'
Requires-Dist: xinspect (>=0.2.0) ; extra == 'all'
Requires-Dist: yapf (>=0.16.3) ; extra == 'all'
Provides-Extra: all-strict
Requires-Dist: IPython (==7.16.2) ; extra == 'all-strict'
Requires-Dist: autoflake (==1.5.0) ; extra == 'all-strict'
Requires-Dist: fire (==0.4.0) ; extra == 'all-strict'
Requires-Dist: parse (==1.19.0) ; extra == 'all-strict'
Requires-Dist: pyfiglet (==0.7) ; extra == 'all-strict'
Requires-Dist: pyflakes (==2.5.0) ; extra == 'all-strict'
Requires-Dist: pygments (==2.12.0) ; extra == 'all-strict'
Requires-Dist: scriptconfig (==0.7.4) ; extra == 'all-strict'
Requires-Dist: ubelt (==1.2.3) ; extra == 'all-strict'
Requires-Dist: xdoctest (==0.14.0) ; extra == 'all-strict'
Requires-Dist: xinspect (==0.2.0) ; extra == 'all-strict'
Requires-Dist: yapf (==0.16.3) ; extra == 'all-strict'
Requires-Dist: Levenshtein (==0.18.0) ; (python_version < "3.10" and python_version >= "3.9") and extra == 'all-strict'
Requires-Dist: coverage (==5.3.1) ; (python_version < "3.10" and python_version >= "3.9") and extra == 'all-strict'
Requires-Dist: line-profiler (==3.4.0) ; (python_version < "3.10" and python_version >= "3.9") and extra == 'all-strict'
Requires-Dist: numpy (==1.19.3) ; (python_version < "3.10" and python_version >= "3.9") and extra == 'all-strict'
Requires-Dist: pytest (==4.6.0) ; (python_version < "3.10.0" and python_version >= "3.7.0") and extra == 'all-strict'
Requires-Dist: Levenshtein (==0.18.2) ; (python_version < "3.11" and python_version >= "3.10") and extra == 'all-strict'
Requires-Dist: line-profiler (==3.4.0) ; (python_version < "3.11" and python_version >= "3.10") and extra == 'all-strict'
Requires-Dist: numpy (==1.21.1) ; (python_version < "3.11" and python_version >= "3.10") and extra == 'all-strict'
Requires-Dist: pytest (==6.2.5) ; (python_version < "3.11" and python_version >= "3.10") and extra == 'all-strict'
Requires-Dist: Levenshtein (==0.18.0) ; (python_version < "3.7" and python_version >= "3.6") and extra == 'all-strict'
Requires-Dist: coverage (==6.1.1) ; (python_version < "3.7" and python_version >= "3.6") and extra == 'all-strict'
Requires-Dist: line-profiler (==3.4.0) ; (python_version < "3.7" and python_version >= "3.6") and extra == 'all-strict'
Requires-Dist: numpy (==1.12.0) ; (python_version < "3.7" and python_version >= "3.6") and extra == 'all-strict'
Requires-Dist: pytest (==4.6.0) ; (python_version < "3.7.0" and python_version >= "3.6.0") and extra == 'all-strict'
Requires-Dist: Levenshtein (==0.18.0) ; (python_version < "3.8" and python_version >= "3.7") and extra == 'all-strict'
Requires-Dist: coverage (==6.1.1) ; (python_version < "3.8" and python_version >= "3.7") and extra == 'all-strict'
Requires-Dist: line-profiler (==3.4.0) ; (python_version < "3.8" and python_version >= "3.7") and extra == 'all-strict'
Requires-Dist: numpy (==1.14.5) ; (python_version < "3.8" and python_version >= "3.7") and extra == 'all-strict'
Requires-Dist: Levenshtein (==0.18.0) ; (python_version < "3.9" and python_version >= "3.8") and extra == 'all-strict'
Requires-Dist: coverage (==6.1.1) ; (python_version < "3.9" and python_version >= "3.8") and extra == 'all-strict'
Requires-Dist: line-profiler (==3.4.0) ; (python_version < "3.9" and python_version >= "3.8") and extra == 'all-strict'
Requires-Dist: numpy (==1.19.2) ; (python_version < "3.9" and python_version >= "3.8") and extra == 'all-strict'
Requires-Dist: Levenshtein (==0.20.3) ; (python_version < "4.0" and python_version >= "3.11") and extra == 'all-strict'
Requires-Dist: line-profiler (==4.0.0) ; (python_version < "4.0" and python_version >= "3.11") and extra == 'all-strict'
Requires-Dist: numpy (==1.23.5) ; (python_version < "4.0" and python_version >= "3.11") and extra == 'all-strict'
Requires-Dist: pytest (==7.0.0) ; (python_version < "4.0" and python_version >= "3.11") and extra == 'all-strict'
Requires-Dist: coverage (==6.1.1) ; (python_version >= "3.10") and extra == 'all-strict'
Requires-Dist: pytest-cov (==3.0.0) ; (python_version >= "3.6.0") and extra == 'all-strict'
Requires-Dist: Levenshtein (>=0.18.0) ; (python_version < "3.10" and python_version >= "3.9") and extra == 'all'
Requires-Dist: coverage (>=5.3.1) ; (python_version < "3.10" and python_version >= "3.9") and extra == 'all'
Requires-Dist: line-profiler (>=3.4.0) ; (python_version < "3.10" and python_version >= "3.9") and extra == 'all'
Requires-Dist: numpy (>=1.19.3) ; (python_version < "3.10" and python_version >= "3.9") and extra == 'all'
Requires-Dist: pytest (>=4.6.0) ; (python_version < "3.10.0" and python_version >= "3.7.0") and extra == 'all'
Requires-Dist: Levenshtein (>=0.18.2) ; (python_version < "3.11" and python_version >= "3.10") and extra == 'all'
Requires-Dist: line-profiler (>=3.4.0) ; (python_version < "3.11" and python_version >= "3.10") and extra == 'all'
Requires-Dist: numpy (>=1.21.1) ; (python_version < "3.11" and python_version >= "3.10") and extra == 'all'
Requires-Dist: pytest (>=6.2.5) ; (python_version < "3.11" and python_version >= "3.10") and extra == 'all'
Requires-Dist: Levenshtein (>=0.18.0) ; (python_version < "3.7" and python_version >= "3.6") and extra == 'all'
Requires-Dist: coverage (>=6.1.1) ; (python_version < "3.7" and python_version >= "3.6") and extra == 'all'
Requires-Dist: line-profiler (>=3.4.0) ; (python_version < "3.7" and python_version >= "3.6") and extra == 'all'
Requires-Dist: numpy (>=1.12.0) ; (python_version < "3.7" and python_version >= "3.6") and extra == 'all'
Requires-Dist: pytest (>=4.6.0) ; (python_version < "3.7.0" and python_version >= "3.6.0") and extra == 'all'
Requires-Dist: Levenshtein (>=0.18.0) ; (python_version < "3.8" and python_version >= "3.7") and extra == 'all'
Requires-Dist: coverage (>=6.1.1) ; (python_version < "3.8" and python_version >= "3.7") and extra == 'all'
Requires-Dist: line-profiler (>=3.4.0) ; (python_version < "3.8" and python_version >= "3.7") and extra == 'all'
Requires-Dist: numpy (>=1.14.5) ; (python_version < "3.8" and python_version >= "3.7") and extra == 'all'
Requires-Dist: Levenshtein (>=0.18.0) ; (python_version < "3.9" and python_version >= "3.8") and extra == 'all'
Requires-Dist: coverage (>=6.1.1) ; (python_version < "3.9" and python_version >= "3.8") and extra == 'all'
Requires-Dist: line-profiler (>=3.4.0) ; (python_version < "3.9" and python_version >= "3.8") and extra == 'all'
Requires-Dist: numpy (>=1.19.2) ; (python_version < "3.9" and python_version >= "3.8") and extra == 'all'
Requires-Dist: Levenshtein (>=0.20.3) ; (python_version < "4.0" and python_version >= "3.11") and extra == 'all'
Requires-Dist: line-profiler (>=4.0.0) ; (python_version < "4.0" and python_version >= "3.11") and extra == 'all'
Requires-Dist: numpy (>=1.23.5) ; (python_version < "4.0" and python_version >= "3.11") and extra == 'all'
Requires-Dist: pytest (>=7.0.0) ; (python_version < "4.0" and python_version >= "3.11") and extra == 'all'
Requires-Dist: coverage (>=6.1.1) ; (python_version >= "3.10") and extra == 'all'
Requires-Dist: pytest-cov (>=3.0.0) ; (python_version >= "3.6.0") and extra == 'all'
Provides-Extra: optional
Requires-Dist: autoflake (>=1.5.0) ; extra == 'optional'
Requires-Dist: fire (>=0.4.0) ; extra == 'optional'
Requires-Dist: yapf (>=0.16.3) ; extra == 'optional'
Provides-Extra: optional-strict
Requires-Dist: autoflake (==1.5.0) ; extra == 'optional-strict'
Requires-Dist: fire (==0.4.0) ; extra == 'optional-strict'
Requires-Dist: yapf (==0.16.3) ; extra == 'optional-strict'
Requires-Dist: Levenshtein (==0.18.0) ; (python_version < "3.10" and python_version >= "3.9") and extra == 'optional-strict'
Requires-Dist: line-profiler (==3.4.0) ; (python_version < "3.10" and python_version >= "3.9") and extra == 'optional-strict'
Requires-Dist: Levenshtein (==0.18.2) ; (python_version < "3.11" and python_version >= "3.10") and extra == 'optional-strict'
Requires-Dist: line-profiler (==3.4.0) ; (python_version < "3.11" and python_version >= "3.10") and extra == 'optional-strict'
Requires-Dist: Levenshtein (==0.18.0) ; (python_version < "3.7" and python_version >= "3.6") and extra == 'optional-strict'
Requires-Dist: line-profiler (==3.4.0) ; (python_version < "3.7" and python_version >= "3.6") and extra == 'optional-strict'
Requires-Dist: Levenshtein (==0.18.0) ; (python_version < "3.8" and python_version >= "3.7") and extra == 'optional-strict'
Requires-Dist: line-profiler (==3.4.0) ; (python_version < "3.8" and python_version >= "3.7") and extra == 'optional-strict'
Requires-Dist: Levenshtein (==0.18.0) ; (python_version < "3.9" and python_version >= "3.8") and extra == 'optional-strict'
Requires-Dist: line-profiler (==3.4.0) ; (python_version < "3.9" and python_version >= "3.8") and extra == 'optional-strict'
Requires-Dist: Levenshtein (==0.20.3) ; (python_version < "4.0" and python_version >= "3.11") and extra == 'optional-strict'
Requires-Dist: line-profiler (==4.0.0) ; (python_version < "4.0" and python_version >= "3.11") and extra == 'optional-strict'
Requires-Dist: Levenshtein (>=0.18.0) ; (python_version < "3.10" and python_version >= "3.9") and extra == 'optional'
Requires-Dist: line-profiler (>=3.4.0) ; (python_version < "3.10" and python_version >= "3.9") and extra == 'optional'
Requires-Dist: Levenshtein (>=0.18.2) ; (python_version < "3.11" and python_version >= "3.10") and extra == 'optional'
Requires-Dist: line-profiler (>=3.4.0) ; (python_version < "3.11" and python_version >= "3.10") and extra == 'optional'
Requires-Dist: Levenshtein (>=0.18.0) ; (python_version < "3.7" and python_version >= "3.6") and extra == 'optional'
Requires-Dist: line-profiler (>=3.4.0) ; (python_version < "3.7" and python_version >= "3.6") and extra == 'optional'
Requires-Dist: Levenshtein (>=0.18.0) ; (python_version < "3.8" and python_version >= "3.7") and extra == 'optional'
Requires-Dist: line-profiler (>=3.4.0) ; (python_version < "3.8" and python_version >= "3.7") and extra == 'optional'
Requires-Dist: Levenshtein (>=0.18.0) ; (python_version < "3.9" and python_version >= "3.8") and extra == 'optional'
Requires-Dist: line-profiler (>=3.4.0) ; (python_version < "3.9" and python_version >= "3.8") and extra == 'optional'
Requires-Dist: Levenshtein (>=0.20.3) ; (python_version < "4.0" and python_version >= "3.11") and extra == 'optional'
Requires-Dist: line-profiler (>=4.0.0) ; (python_version < "4.0" and python_version >= "3.11") and extra == 'optional'
Provides-Extra: runtime-strict
Requires-Dist: IPython (==7.16.2) ; extra == 'runtime-strict'
Requires-Dist: parse (==1.19.0) ; extra == 'runtime-strict'
Requires-Dist: pyfiglet (==0.7) ; extra == 'runtime-strict'
Requires-Dist: pyflakes (==2.5.0) ; extra == 'runtime-strict'
Requires-Dist: pygments (==2.12.0) ; extra == 'runtime-strict'
Requires-Dist: scriptconfig (==0.7.4) ; extra == 'runtime-strict'
Requires-Dist: ubelt (==1.2.3) ; extra == 'runtime-strict'
Requires-Dist: xinspect (==0.2.0) ; extra == 'runtime-strict'
Requires-Dist: numpy (==1.19.3) ; (python_version < "3.10" and python_version >= "3.9") and extra == 'runtime-strict'
Requires-Dist: numpy (==1.21.1) ; (python_version < "3.11" and python_version >= "3.10") and extra == 'runtime-strict'
Requires-Dist: numpy (==1.12.0) ; (python_version < "3.7" and python_version >= "3.6") and extra == 'runtime-strict'
Requires-Dist: numpy (==1.14.5) ; (python_version < "3.8" and python_version >= "3.7") and extra == 'runtime-strict'
Requires-Dist: numpy (==1.19.2) ; (python_version < "3.9" and python_version >= "3.8") and extra == 'runtime-strict'
Requires-Dist: numpy (==1.23.5) ; (python_version < "4.0" and python_version >= "3.11") and extra == 'runtime-strict'
Provides-Extra: tests
Requires-Dist: xdoctest (>=0.14.0) ; extra == 'tests'
Provides-Extra: tests-strict
Requires-Dist: xdoctest (==0.14.0) ; extra == 'tests-strict'
Requires-Dist: coverage (==5.3.1) ; (python_version < "3.10" and python_version >= "3.9") and extra == 'tests-strict'
Requires-Dist: pytest (==4.6.0) ; (python_version < "3.10.0" and python_version >= "3.7.0") and extra == 'tests-strict'
Requires-Dist: pytest (==6.2.5) ; (python_version < "3.11" and python_version >= "3.10") and extra == 'tests-strict'
Requires-Dist: coverage (==6.1.1) ; (python_version < "3.7" and python_version >= "3.6") and extra == 'tests-strict'
Requires-Dist: pytest (==4.6.0) ; (python_version < "3.7.0" and python_version >= "3.6.0") and extra == 'tests-strict'
Requires-Dist: coverage (==6.1.1) ; (python_version < "3.8" and python_version >= "3.7") and extra == 'tests-strict'
Requires-Dist: coverage (==6.1.1) ; (python_version < "3.9" and python_version >= "3.8") and extra == 'tests-strict'
Requires-Dist: pytest (==7.0.0) ; (python_version < "4.0" and python_version >= "3.11") and extra == 'tests-strict'
Requires-Dist: coverage (==6.1.1) ; (python_version >= "3.10") and extra == 'tests-strict'
Requires-Dist: pytest-cov (==3.0.0) ; (python_version >= "3.6.0") and extra == 'tests-strict'
Requires-Dist: coverage (>=5.3.1) ; (python_version < "3.10" and python_version >= "3.9") and extra == 'tests'
Requires-Dist: pytest (>=4.6.0) ; (python_version < "3.10.0" and python_version >= "3.7.0") and extra == 'tests'
Requires-Dist: pytest (>=6.2.5) ; (python_version < "3.11" and python_version >= "3.10") and extra == 'tests'
Requires-Dist: coverage (>=6.1.1) ; (python_version < "3.7" and python_version >= "3.6") and extra == 'tests'
Requires-Dist: pytest (>=4.6.0) ; (python_version < "3.7.0" and python_version >= "3.6.0") and extra == 'tests'
Requires-Dist: coverage (>=6.1.1) ; (python_version < "3.8" and python_version >= "3.7") and extra == 'tests'
Requires-Dist: coverage (>=6.1.1) ; (python_version < "3.9" and python_version >= "3.8") and extra == 'tests'
Requires-Dist: pytest (>=7.0.0) ; (python_version < "4.0" and python_version >= "3.11") and extra == 'tests'
Requires-Dist: coverage (>=6.1.1) ; (python_version >= "3.10") and extra == 'tests'
Requires-Dist: pytest-cov (>=3.0.0) ; (python_version >= "3.6.0") and extra == 'tests'

Xdev - Excellent Developer
--------------------------

|GithubActions| |CircleCI| |Codecov| |Pypi| |Downloads| |ReadTheDocs|

Xdev is an excellent developer tool for excellent developers.
It contains miscellaneous and/or interactive debugging tools.

I mostly maintain this for myself, but I could see polishing it up in the
future.


Remarks
-------

Perhaps I should just use `ipdb` but I often just like to directly embed with
IPython whenever I want:


.. code:: python

    import xdev
    xdev.embed()


Or wherever I want whenever there is an exception.

.. code:: python

    import xdev
    with xdev.embed_on_exception_context:
        some_code()


I don't feel like I need  ``ipdb``'s other features. 


I also like to 


.. code:: python

    def func(a=1, b=2, c=3):
        """
        Example:
            >>> from this.module import *  # import contextual namespace
            >>> import xinspect
            >>> globals().update(xinspect.get_func_kwargs(func))  # populates globals with default kwarg value
            >>> print(a + b + c)
            6
        """

But I know these things are a little dirty. 

But these aren't production practices. These are development tricks and life
hacks to make working faster.


Also see ``xinspect`` for things like ``autogen_imports``


.. code:: python

    >>> import ubelt as ub
    >>> source = ub.codeblock(
    >>>     '''
    >>>     p = os.path.dirname(join('a', 'b'))
    >>>     glob.glob(p)
    >>>     ''')
    >>> # Generate a list of lines to fix the name errors
    >>> lines = autogen_imports(source=source)
    >>> print(lines)
    ['import glob', 'from os.path import join', 'import os']


https://github.com/Erotemic/xinspect


.. |CircleCI| image:: https://circleci.com/gh/Erotemic/xdev.svg?style=svg
    :target: https://circleci.com/gh/Erotemic/xdev
.. |Travis| image:: https://img.shields.io/travis/Erotemic/xdev/master.svg?label=Travis%20CI
   :target: https://travis-ci.org/Erotemic/xdev?branch=master
.. |Appveyor| image:: https://ci.appveyor.com/api/projects/status/github/Erotemic/xdev?branch=master&svg=True
   :target: https://ci.appveyor.com/project/Erotemic/xdev/branch/master
.. |Codecov| image:: https://codecov.io/github/Erotemic/xdev/badge.svg?branch=master&service=github
   :target: https://codecov.io/github/Erotemic/xdev?branch=master
.. |Pypi| image:: https://img.shields.io/pypi/v/xdev.svg
   :target: https://pypi.python.org/pypi/xdev
.. |Downloads| image:: https://img.shields.io/pypi/dm/xdev.svg
   :target: https://pypistats.org/packages/xdev
.. |ReadTheDocs| image:: https://readthedocs.org/projects/xdev/badge/?version=latest
    :target: http://xdev.readthedocs.io/en/latest/
.. |GithubActions| image:: https://github.com/Erotemic/xdev/actions/workflows/tests.yml/badge.svg?branch=main
    :target: https://github.com/Erotemic/xdev/actions?query=branch%3Amain


