Skip to main content

Powerful human readable version of dir().

Project description

explore

Python object explorer which shows you what you can do with an object.

It takes the output from dir(), checks this and classifies it in a table. With that, you don't have to read the entire output of dir() and visually filter it for the relevant information.

Installation

Install the package:

pip install object-explore

or

pip install git+git://github.com/Talon24/explore

or

pip install git+https://github.com/Talon24/explore

Example

From this

# Very long line with very specific information, like all the dunder-methods
import datetime
print(dir(datetime.datetime.now()))
['__add__', '__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__ne__', '__new__', '__radd__', '__reduce__', '__reduce_ex__', '__repr__', '__rsub__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', 'astimezone', 'combine', 'ctime', 'date', 'day', 'dst', 'fold', 'fromisocalendar', 'fromisoformat', 'fromordinal', 'fromtimestamp', 'hour', 'isocalendar', 'isoformat', 'isoweekday', 'max', 'microsecond', 'min', 'minute', 'month', 'now', 'replace', 'resolution', 'second', 'strftime', 'strptime', 'time', 'timestamp', 'timetuple', 'timetz', 'today', 'toordinal', 'tzinfo', 'tzname', 'utcfromtimestamp', 'utcnow', 'utcoffset', 'utctimetuple', 'weekday', 'year']

To this

from explore import explore as ex
import datetime

ex(datetime.datetime.now())
  Inherits:
datetime -> date -> object
  Description:
datetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]])

The year, month and day arguments are required. tzinfo may be None, or an
instance of a tzinfo subclass. The remaining arguments may be ints.
+ Class datetime --+-----------------------+------+
| Methods          | Data                  | Ops  |
+------------------+-----------------------+------+
| astimezone       | day: int              | !=   |
| combine          | fold: int             | +    |
| ctime            | hour: int             | -    |
| date             | max: datetime         | <    |
| dst              | microsecond: int      | <=   |
| fromisocalendar  | min: datetime         | ==   |
| fromisoformat    | minute: int           | >    |
| fromordinal      | month: int            | >=   |
| fromtimestamp    | resolution: timedelta | hash |
| isocalendar      | second: int           | str  |
| isoformat        | tzinfo: NoneType      |      |
| isoweekday       | year: int             |      |
| now              |                       |      |
| replace          |                       |      |
| strftime         |                       |      |
| strptime         |                       |      |
| time             |                       |      |
| timestamp        |                       |      |
| timetuple        |                       |      |
| timetz           |                       |      |
| today            |                       |      |
| toordinal        |                       |      |
| tzname           |                       |      |
| utcfromtimestamp |                       |      |
| utcnow           |                       |      |
| utcoffset        |                       |      |
| utctimetuple     |                       |      |
| weekday          |                       |      |
+------------------+-----------------------+------+

Usage

The module's name is explore and it provides a function called explore(). To simplify exploration, i'd recommend aliasing it as something short like ex.

Settings

You can change the style of the table. The DoubleTable is the default, if the text viewer can't handle unicode, then the AsciiTable might be useful. Some examples to change the Table style:

import explore
explore.TABLETYPE = explore.terminaltables.AsciiTable
explore.TABLETYPE = explore.terminaltables.SingleTable
explore.TABLETYPE = explore.terminaltables.DoubleTable
explore.TABLETYPE = explore.terminaltables.GithubFlavoredMarkdownTable

Module

from explore import explore as ex
import pathlib

ex(pathlib)
+ module: pathlib ------+---------------------+-----------------+
| Constants | Modules   | Functions           | Classes         |
+-----------+-----------+---------------------+-----------------+
| EBADF     | fnmatch   | urlquote_from_bytes | Path            |
| EINVAL    | functools |                     | PosixPath       |
| ELOOP     | io        |                     | PurePath        |
| ENOENT    | ntpath    |                     | PurePosixPath   |
| ENOTDIR   | os        |                     | PureWindowsPath |
| S_ISBLK   | posixpath |                     | Sequence        |
| S_ISCHR   | re        |                     | WindowsPath     |
| S_ISDIR   | sys       |                     | attrgetter      |
| S_ISFIFO  | warnings  |                     |                 |
| S_ISLNK   |           |                     |                 |
| S_ISREG   |           |                     |                 |
| S_ISSOCK  |           |                     |                 |
+-----------+-----------+---------------------+-----------------+

Function

from explore import explore as ex
def a_function(pos: int, /, both: float, untyped=4, *, kw_only: str = "blue") -> complex:
    """Kinds of arguments."""
ex(a_function)
  Description:
Kinds of arguments.
+ Function a_function -> complex --------------------+
| Argument | Default | Type  | Kind                  |
+----------+---------+-------+-----------------------+
| pos      | ---     | int   | positional-only       |
| both     | ---     | float | positional or keyword |
| untyped  | 4       | Any   | positional or keyword |
| kw_only  | 'blue'  | str   | keyword-only          |
+----------+---------+-------+-----------------------+

Class

On Classes (Not instances), the constructor is also printed.

from explore import explore as ex
import requests
ex(requests.Request)
  Inherits:
Request -> RequestHooksMixin -> object
  Description:
A user-created :class:`Request <Request>` object.
+ type: Request --+------+
| Functions       | Ops  |
+-----------------+------+
| deregister_hook | !=   |
| prepare         | <    |
| register_hook   | <=   |
|                 | ==   |
|                 | >    |
|                 | >=   |
|                 | hash |
|                 | str  |
+-----------------+------+
  Description:
A user-created :class:`Request <Request>` object.
...
+ Constructor -------+
| Argument | Default |
+----------+---------+
| method   | None    |
| url      | None    |
| headers  | None    |
| files    | None    |
| data     | None    |
| params   | None    |
| auth     | None    |
| cookies  | None    |
| hooks    | None    |
| json     | None    |
+----------+---------+
from explore import explore as ex
import fractions
ex(fractions.Fraction)
  Inherits:
Fraction -> Rational -> Real -> Complex -> Number -> object
  Description:
This class implements rational numbers.
...
+ ABCMeta: Fraction ---------------+-----------------------+--------+
| Methods      | Functions         | Data                  | Ops    |
+--------------+-------------------+-----------------------+--------+
| from_decimal | as_integer_ratio  | denominator: property | !=     |
| from_float   | conjugate         | imag: property        | %      |
|              | limit_denominator | numerator: property   | *      |
|              |                   | real: property        | **     |
|              |                   |                       | +      |
|              |                   |                       | +()    |
|              |                   |                       | -      |
|              |                   |                       | -()    |
|              |                   |                       | /      |
|              |                   |                       | //     |
|              |                   |                       | <      |
|              |                   |                       | <=     |
|              |                   |                       | ==     |
|              |                   |                       | >      |
|              |                   |                       | >=     |
|              |                   |                       | abs    |
|              |                   |                       | divmod |
|              |                   |                       | float  |
|              |                   |                       | hash   |
|              |                   |                       | round  |
|              |                   |                       | str    |
+--------------+-------------------+-----------------------+--------+
  Description:
This class implements rational numbers.
...
+ Constructor +---------+-----------------------+
| Argument    | Default | Kind                  |
+-------------+---------+-----------------------+
| numerator   | 0       | positional or keyword |
| denominator | None    | positional or keyword |
| _normalize  | True    | keyword-only          |
+-------------+---------+-----------------------+

Automatic import

If you have ipython, you can create a file in ~/.ipython/profile_default/startup/ that imports it, it will then be available at the start of ipython.

This can look like this:

from explore import explore as ex
from explore import explore_signature as exs
from explore import explore_object as exo

get_ipython().magic("%autocall 1")  # With this, it's callable without parens; e.g. `ex os.path`

More explanation here.

Limitations

The library won't always work on some builtin objects like print or libraries written in c, e.g. numpy.array.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

object-explore-0.1.11.tar.gz (14.6 kB view details)

Uploaded Source

Built Distribution

object_explore-0.1.11-py3-none-any.whl (9.2 kB view details)

Uploaded Python 3

File details

Details for the file object-explore-0.1.11.tar.gz.

File metadata

  • Download URL: object-explore-0.1.11.tar.gz
  • Upload date:
  • Size: 14.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.8.5

File hashes

Hashes for object-explore-0.1.11.tar.gz
Algorithm Hash digest
SHA256 76d4d61a7a89d7f1c34b4ce2a18eb0d773b7f8996f37db75d0b44c8324a94e86
MD5 70a295c9e20e4de62826a048e1b4ff35
BLAKE2b-256 f40a901ba00daec22db9afb5435a9e3df4c61ef840bf1127e078acb3ca86d477

See more details on using hashes here.

File details

Details for the file object_explore-0.1.11-py3-none-any.whl.

File metadata

  • Download URL: object_explore-0.1.11-py3-none-any.whl
  • Upload date:
  • Size: 9.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.8.5

File hashes

Hashes for object_explore-0.1.11-py3-none-any.whl
Algorithm Hash digest
SHA256 769fef5eac5d3a96875d2f6e8d2a72f00ffa756160acd037018261d0db5f95a2
MD5 4d5fb0c460c2dfc746f4fbaeea3e0708
BLAKE2b-256 7148f959d4f40dbb6e7b213e149a031be613ec974bf6b4f27de57358aaba08e7

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page