summaryrefslogtreecommitdiffstats
path: root/Lib/importlib/NOTES
blob: 22e4d055ef2b69f4218abad0befc2deb5674a1f3 (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
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
      - (?) FileFinder
      - Extensions importers

          * ExtensionFinder
          * (?) Loader

      - Source/bytecode importers

          * SourceFinder
          * (?) Loader

      - PathFinder

* 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