Metadata-Version: 2.1 Name: import-expression Version: 0.7.0 Summary: Parses a superset of Python allowing for inline module import expressions Home-page: https://github.com/iomintz/import-expression-parser Author: Io Mintz Author-email: io@mintz.cc License: MIT Platform: UNKNOWN Classifier: License :: OSI Approved :: MIT License Description-Content-Type: text/markdown Provides-Extra: test Requires-Dist: pytest ; extra == 'test' Requires-Dist: pytest-cov ; extra == 'test' # Import Expression Parser (for lack of a better name) [![Build Status](https://img.shields.io/travis/iomintz/import-expression-parser/main.svg?label=tests)](https://travis-ci.org/iomintz/import-expression-parser) [![Coverage Status](https://coveralls.io/repos/github/iomintz/import-expression-parser/badge.svg?branch=main)](https://coveralls.io/github/iomintz/import-expression-parser?branch=main) Import Expression Parser converts code like this: ```py urllib.parse!.quote('hello there') ``` Into this equivalent code: ```py importlib.import_module('urllib.parse').quote('hello there') ``` ## Usage ```py >>> 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 `SyntaxError`s is ``. 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](https://github.com/bmintz/import-expression-parser/blob/main/LICENSE) Copyright © 2018–2019 Io Mintz <>. All Rights Reserved. \ Licensed under the MIT License. See the LICENSE.md file for details.