Skip to main content

Parses a superset of Python allowing for inline module import expressions

Project description

Import Expression Parser (for lack of a better name)

Build Status Coverage Status

Import Expression Parser converts code like this:

urllib.parse!.quote('hello there')

Into this equivalent code:

importlib.import_module('urllib.parse').quote('hello there')

Usage

>>> import import_expression
>>> import_expression.eval('collections!.Counter("bccdddeeee")')
Counter({'e': 4, 'd': 3, 'c': 2, 'b': 1})

The other public functions are exec, compile, and parse. See their docstrings for details.

By default, the filename for SyntaxErrors is <string>. To change this, pass in a filename via the filename kwarg.

AST usage

REPL usage

Run import_expression for an import expression enabled REPL.
Run import_expression -a for a REPL that supports both import expressions and top level await (3.8+).

See import_expression --help for more details.

Monkey Patching the REPL

import_expression.patch.patch is deprecated in favor of using python -m import_expression.

Limitations / Known Issues

  • Due to the hell that is f-string parsing, and because ! is already an operator inside f-strings, import expressions inside f-strings will likely never be supported.
  • Due to python limitations, results of import_expression.exec will have no effect on the caller's globals or locals without an explicit globals argument.
  • Unlike real operators, spaces before and after the import expression operator (such as x ! .y are not supported).

License

Copyright © 2018–2019 Io Mintz <io@mintz.cc>. All Rights Reserved.
Licensed under the MIT License. See the LICENSE.md file for details.

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

import_expression-0.7.0.tar.gz (11.7 kB view hashes)

Uploaded Source

Built Distribution

import_expression-0.7.0-py3-none-any.whl (17.7 kB view hashes)

Uploaded Python 3

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