From c21df9237b5ad29a630f865d28982cc8438b954f Mon Sep 17 00:00:00 2001 From: CoprDistGit Date: Mon, 10 Apr 2023 13:53:48 +0000 Subject: automatic import of python-import-expression --- .gitignore | 1 + python-import-expression.spec | 342 ++++++++++++++++++++++++++++++++++++++++++ sources | 1 + 3 files changed, 344 insertions(+) create mode 100644 python-import-expression.spec create mode 100644 sources diff --git a/.gitignore b/.gitignore index e69de29..c4e4123 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1 @@ +/import_expression-1.1.4.tar.gz diff --git a/python-import-expression.spec b/python-import-expression.spec new file mode 100644 index 0000000..ff89922 --- /dev/null +++ b/python-import-expression.spec @@ -0,0 +1,342 @@ +%global _empty_manifest_terminate_build 0 +Name: python-import-expression +Version: 1.1.4 +Release: 1 +Summary: Parses a superset of Python allowing for inline module import expressions +License: MIT +URL: https://github.com/iomintz/import-expression-parser +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/cf/b7/aca3c80b4efd272597754b37cf894521ac7dd82c2c2ebe58eaef494e627f/import_expression-1.1.4.tar.gz +BuildArch: noarch + +Requires: python3-astunparse +Requires: python3-pytest +Requires: python3-pytest-cov + +%description +# 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`, `parse`, `find_imports`, and `update_globals`. +See their docstrings for details. + +By default, the filename for `SyntaxError`s is ``. +To change this, pass in a filename via the `filename` kwarg. + +### Reusing compiled code objects + +import_expression.eval/exec/compile should not be passed strings in a tight loop. \ +Doing so will recompile the string every time. Instead, you should pre-compile the string to a code object +and pass that to import_expression.eval / import_expression.exec. +For example, instead of this: + +```py +for line in sys.stdin: + print(import_expression.eval('foo!.bar(l)', dict(l=line)) +``` + +Prefer this: + +```py +code = import_expression.compile('foo!.bar(l)', mode='eval') +for line in sys.stdin: + print(import_expression.eval(code, dict(l=line))) +``` + +### Custom encoding + +```py +# encoding: import_expression +print(typing!.TYPE_CHECKING) +``` + +This file, when run, will print True/False. For maximum laziness you can also do `#coding:ie`. + +### 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. + +### Running a file + +Run `import-expression `. + +### File rewriter + +Run `import-expression-rewrite ` to rewrite a file containing import expressions to standard Python. \ +Add the `-i` flag to rewrite in-place. + +## 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/iomintz/import-expression-parser/blob/main/LICENSE) + +Copyright © 2018–2019 Io Mintz <>. All Rights Reserved. \ +Licensed under the MIT License. See the LICENSE file for details. + + + + +%package -n python3-import-expression +Summary: Parses a superset of Python allowing for inline module import expressions +Provides: python-import-expression +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-import-expression +# 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`, `parse`, `find_imports`, and `update_globals`. +See their docstrings for details. + +By default, the filename for `SyntaxError`s is ``. +To change this, pass in a filename via the `filename` kwarg. + +### Reusing compiled code objects + +import_expression.eval/exec/compile should not be passed strings in a tight loop. \ +Doing so will recompile the string every time. Instead, you should pre-compile the string to a code object +and pass that to import_expression.eval / import_expression.exec. +For example, instead of this: + +```py +for line in sys.stdin: + print(import_expression.eval('foo!.bar(l)', dict(l=line)) +``` + +Prefer this: + +```py +code = import_expression.compile('foo!.bar(l)', mode='eval') +for line in sys.stdin: + print(import_expression.eval(code, dict(l=line))) +``` + +### Custom encoding + +```py +# encoding: import_expression +print(typing!.TYPE_CHECKING) +``` + +This file, when run, will print True/False. For maximum laziness you can also do `#coding:ie`. + +### 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. + +### Running a file + +Run `import-expression `. + +### File rewriter + +Run `import-expression-rewrite ` to rewrite a file containing import expressions to standard Python. \ +Add the `-i` flag to rewrite in-place. + +## 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/iomintz/import-expression-parser/blob/main/LICENSE) + +Copyright © 2018–2019 Io Mintz <>. All Rights Reserved. \ +Licensed under the MIT License. See the LICENSE file for details. + + + + +%package help +Summary: Development documents and examples for import-expression +Provides: python3-import-expression-doc +%description help +# 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`, `parse`, `find_imports`, and `update_globals`. +See their docstrings for details. + +By default, the filename for `SyntaxError`s is ``. +To change this, pass in a filename via the `filename` kwarg. + +### Reusing compiled code objects + +import_expression.eval/exec/compile should not be passed strings in a tight loop. \ +Doing so will recompile the string every time. Instead, you should pre-compile the string to a code object +and pass that to import_expression.eval / import_expression.exec. +For example, instead of this: + +```py +for line in sys.stdin: + print(import_expression.eval('foo!.bar(l)', dict(l=line)) +``` + +Prefer this: + +```py +code = import_expression.compile('foo!.bar(l)', mode='eval') +for line in sys.stdin: + print(import_expression.eval(code, dict(l=line))) +``` + +### Custom encoding + +```py +# encoding: import_expression +print(typing!.TYPE_CHECKING) +``` + +This file, when run, will print True/False. For maximum laziness you can also do `#coding:ie`. + +### 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. + +### Running a file + +Run `import-expression `. + +### File rewriter + +Run `import-expression-rewrite ` to rewrite a file containing import expressions to standard Python. \ +Add the `-i` flag to rewrite in-place. + +## 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/iomintz/import-expression-parser/blob/main/LICENSE) + +Copyright © 2018–2019 Io Mintz <>. All Rights Reserved. \ +Licensed under the MIT License. See the LICENSE file for details. + + + + +%prep +%autosetup -n import-expression-1.1.4 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-import-expression -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Mon Apr 10 2023 Python_Bot - 1.1.4-1 +- Package Spec generated diff --git a/sources b/sources new file mode 100644 index 0000000..5830d93 --- /dev/null +++ b/sources @@ -0,0 +1 @@ +c6fa0195b38c427fc7a624b2ccd99e04 import_expression-1.1.4.tar.gz -- cgit v1.2.3