Import for Humans 💅🏻
Project description
This is to be a project on modifying sys.metapath and making Python import statement as smooth as possible.
Inspiration
This idea was originally inspired from the Bro/Zeek language, where it uses @load statement what import doses in Python, except that the @load statement takes a relative path as its specifier. For example:
@load ./sample_local.bro
@load ../sample_parent.bro
@load ../sample/child.bro
with the project structure as following:
root
|-- foo
| |-- this_script.bro
| |-- sample_local.bro
| |-- sample
| |-- child.bro
|-- sample_parent.bro
which means, the @load statement is always relative to where it comes from, rather than a working directory or package root as in Python.
Thus, we intend to make the Python import statement works just like @load. This is the back story of the impfxxk project.
Expectation
When your project is as such:
root
|-- foo
| |-- this_script.py
| |-- sample_local.py
| |-- sample
| |-- child.py
|-- sample_parent.py
Normally, you will want to do:
import .sample_local
import .sample.child
import ..sample_parent
there can be some issues when the Python interpreter tries to figure out what is what when you are not running it at /root/foo/, where the relative paths are ought to be.
However, with impfxxk, you can simply add a statement (it’s not decided yet) before your original import statements, just like __future__ does; and your code will work just as you wish.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for impfxxk-0.0.0.dev0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 009af476401b12bc85e90871c061857348076f7bcda01f82a58dcbd7678c051a |
|
MD5 | c885895d85ee5b938f7f0b865178e8ef |
|
BLAKE2b-256 | f0db494563e6420db90e76ee7a110ca3554383e87f964ffe0c5509d1abcd7734 |