summaryrefslogtreecommitdiffstats
path: root/Lib/importlib/NOTES
blob: bdbedec653e34759030e1e562d30ad1995f39c89 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
to do
/////

* Change failed loading based on PEP 302 changes.

* Refactor source/bytecode finder/loader code such that bytecode support is a
  subclass of source support (makes it nicer for VMs that don't use CPython
  bytecode).

* Implement PEP 302 protocol for loaders (should just be a matter of testing).

    + Built-in.
    + Frozen.
    + Extension.
    + Source/bytecode.

* Public API left to expose (w/ docs!)

  + abc

      - Finder

        * find_module

      - Loader

        * load_module

      - (?) Importer(Finder, Loader)

      - ResourceLoader(Loader)

        * get_data

      - InspectLoader(Loader)

        * is_package
        * get_code
        * get_source

      - (?) SourceLoader(ResourceLoader)

        * source_path
        * bytecode_path
        * write_bytecode (not abstract)

  + util

      - get_module decorator (rename: module_for_loader)
      - set___package__ decorator

  + machinery

      - (?) Chained path hook/finder
      - Extensions importers

          * ExtensionFinder
          * (?) Loader

      - Source/bytecode importers

          * SourceFinder
          * (?) Loader

      - PathFinder

* Make sure that there is documentation *somewhere* fully explaining the
semantics of import that can be referenced from the package's documentation
(even if it is in the package documentation itself, although it might be best
in the language specification).

* Write benchmark suite.

* OPTIMIZE!

  + Fast path absolute name.
  + Fast path pulling from sys.modules.

* Bootstrap importlib as implementation of builtins.__import__

* Replace standard library modules.

  + imp
  + py_compile
  + compileall