Metadata-Version: 2.1
Name: magicalimport
Version: 0.9.1
Summary: importing a module by physical file path
Home-page: https://github.com/podhmo/magicalimport
Author: podhmo
Author-email: ababjam61+github@gmail.com
License: UNKNOWN
Keywords: import,physical address,file path
Platform: UNKNOWN
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: Implementation :: CPython
Provides-Extra: docs
Provides-Extra: testing
License-File: LICENSE

magicalimport
========================================

.. image:: https://travis-ci.org/podhmo/magicalimport.svg?branch=master
  :target: https://travis-ci.org/podhmo/magicalimport

Importing a module from physical file path.

examples
----------------------------------------

these files are existed, then..

.. code-block:: bash

  $ tree
  .
  ├── a
  │   └── b
  │       └── c
  │           └── foo.py
  └── main.py

  4 directories, 3 files


a/b/c/foo.py

.. code-block:: python

  name = "foo"
  _age = "*secret*"

.. code-block:: python

  from magicalimport import import_from_physical_path

  # importing foo.py as the module named foo2
  foo = import_from_physical_path("./a/b/c/foo.py", as_="foo2")
  print(foo.name)

  # cached in sys.modules, so it is ok.
  import foo2
  print(foo2.name)


here option
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. code-block:: python

  from magicalimport import import_from_physical_path

  import_from_physical_path("bar.py", here="/tmp/foo", as_="bar")

star import
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. code-block:: python

   from magicalimport import import_from_physical_path
   from magicalimport import expose_all_members

   # something of like a `from foo import *`
   expose_all_members(import_from_physical_path("./a/b/c/foo.py"))
   print(name)  # "foo"
   # print(_age)  # NameError.. because expose_all_members() doesn't expose the symbols started by "_"

   # or
   from magicalimport import expose_members
   expose_members(import_from_physical_path("./a/b/c/foo.py"), members=["_age"])
   print(_age)  # "*secret*"


0.9.1

- import_module() and import_symbol()'s cwd is True

0.9.0

- revert default behaviour (detail https://github.com/podhmo/magicalimport/pull/18 )

0.8.1

- cwd option

0.8.0

- default behaviour is changed, from now, if here option is omitted, treated as `here=__file__` on caller module.
- ( previous behaviour is `here=os.getcwd()` )

0.7.3

- skip needless __init__.py creation, in some cases

0.7.2

- fix directly import module handling is not enough, now, treated as a same module

0.7.1

- fix permission error, and same file, treated as a same module

0.7.0

- fix same file, treated as a same module

0.6.0

- fix module_id is not stored in sys.modules, on exec_module()

0.5.0

- raised exception adjustment

0.3.0

- ns option in import_symbol

0.2.1

- here option is supported

0.2

- python2 support

0.1

- first release


