From 77196ae0f6ece1418dd941db7270065f8512c2ed Mon Sep 17 00:00:00 2001 From: Matthias Kramm Date: Thu, 17 Sep 2015 08:33:18 -0700 Subject: [PATCH] rework directory hierarchy --- README.md | 57 +++++++++++++++++--------- {2.7 => builtins/2.7}/_bisect.pyi | 0 {2.7 => builtins/2.7}/_codecs.pyi | 0 {2.7 => builtins/2.7}/_collections.pyi | 0 {2.7 => builtins/2.7}/_functools.pyi | 0 {2.7 => builtins/2.7}/_heapq.pyi | 0 {2.7 => builtins/2.7}/_random.pyi | 0 {2.7 => builtins/2.7}/_sre.pyi | 0 {2.7 => builtins/2.7}/_struct.pyi | 0 {2.7 => builtins/2.7}/array.pyi | 0 {2.7 => builtins/2.7}/binascii.pyi | 0 {2.7 => builtins/2.7}/cStringIO.pyi | 0 {2.7 => builtins/2.7}/cmath.pyi | 0 {2.7 => builtins/2.7}/errno.pyi | 0 {2.7 => builtins/2.7}/fcntl.pyi | 0 {2.7 => builtins/2.7}/gc.pyi | 0 {2.7 => builtins/2.7}/imp.pyi | 0 {2.7 => builtins/2.7}/marshal.pyi | 0 {2.7 => builtins/2.7}/math.pyi | 0 {2.7 => builtins/2.7}/operator.pyi | 0 {2.7 => builtins/2.7}/select.pyi | 0 {2.7 => builtins/2.7}/signal.pyi | 0 {2.7 => builtins/2.7}/strop.pyi | 0 {2.7 => builtins/2.7}/sys.pyi | 0 {2.7 => builtins/2.7}/thread.pyi | 0 {2.7 => builtins/2.7}/time.pyi | 0 {2.7 => builtins/2.7}/unicodedata.pyi | 0 {2.7 => builtins/2.7}/xxsubtype.pyi | 0 {2.7 => builtins/2.7}/zipimport.pyi | 0 {2.7 => builtins/2.7}/zlib.pyi | 0 {3 => builtins/3}/_bisect.pyi | 0 {3 => builtins/3}/_codecs.pyi | 0 {3 => builtins/3}/_heapq.pyi | 0 {3 => builtins/3}/_json.pyi | 0 {3 => builtins/3}/_operator.pyi | 0 {3 => builtins/3}/_stat.pyi | 0 {3 => builtins/3}/_tracemalloc.pyi | 0 {3 => builtins/3}/_warnings.pyi | 0 {3 => builtins/3}/atexit.pyi | 0 {3 => builtins/3}/cmath.pyi | 0 {3 => builtins/3}/marshal.pyi | 0 {3 => builtins/3}/math.pyi | 0 {3 => builtins/3}/signal.pyi | 0 {3 => builtins/3}/time.pyi | 0 {2.7 => stdlib/2.7}/_hotshot.pyi | 0 {2.7 => stdlib/2.7}/_json.pyi | 0 {2.7 => stdlib/2.7}/datetime.pyi | 0 47 files changed, 38 insertions(+), 19 deletions(-) rename {2.7 => builtins/2.7}/_bisect.pyi (100%) rename {2.7 => builtins/2.7}/_codecs.pyi (100%) rename {2.7 => builtins/2.7}/_collections.pyi (100%) rename {2.7 => builtins/2.7}/_functools.pyi (100%) rename {2.7 => builtins/2.7}/_heapq.pyi (100%) rename {2.7 => builtins/2.7}/_random.pyi (100%) rename {2.7 => builtins/2.7}/_sre.pyi (100%) rename {2.7 => builtins/2.7}/_struct.pyi (100%) rename {2.7 => builtins/2.7}/array.pyi (100%) rename {2.7 => builtins/2.7}/binascii.pyi (100%) rename {2.7 => builtins/2.7}/cStringIO.pyi (100%) rename {2.7 => builtins/2.7}/cmath.pyi (100%) rename {2.7 => builtins/2.7}/errno.pyi (100%) rename {2.7 => builtins/2.7}/fcntl.pyi (100%) rename {2.7 => builtins/2.7}/gc.pyi (100%) rename {2.7 => builtins/2.7}/imp.pyi (100%) rename {2.7 => builtins/2.7}/marshal.pyi (100%) rename {2.7 => builtins/2.7}/math.pyi (100%) rename {2.7 => builtins/2.7}/operator.pyi (100%) rename {2.7 => builtins/2.7}/select.pyi (100%) rename {2.7 => builtins/2.7}/signal.pyi (100%) rename {2.7 => builtins/2.7}/strop.pyi (100%) rename {2.7 => builtins/2.7}/sys.pyi (100%) rename {2.7 => builtins/2.7}/thread.pyi (100%) rename {2.7 => builtins/2.7}/time.pyi (100%) rename {2.7 => builtins/2.7}/unicodedata.pyi (100%) rename {2.7 => builtins/2.7}/xxsubtype.pyi (100%) rename {2.7 => builtins/2.7}/zipimport.pyi (100%) rename {2.7 => builtins/2.7}/zlib.pyi (100%) rename {3 => builtins/3}/_bisect.pyi (100%) rename {3 => builtins/3}/_codecs.pyi (100%) rename {3 => builtins/3}/_heapq.pyi (100%) rename {3 => builtins/3}/_json.pyi (100%) rename {3 => builtins/3}/_operator.pyi (100%) rename {3 => builtins/3}/_stat.pyi (100%) rename {3 => builtins/3}/_tracemalloc.pyi (100%) rename {3 => builtins/3}/_warnings.pyi (100%) rename {3 => builtins/3}/atexit.pyi (100%) rename {3 => builtins/3}/cmath.pyi (100%) rename {3 => builtins/3}/marshal.pyi (100%) rename {3 => builtins/3}/math.pyi (100%) rename {3 => builtins/3}/signal.pyi (100%) rename {3 => builtins/3}/time.pyi (100%) rename {2.7 => stdlib/2.7}/_hotshot.pyi (100%) rename {2.7 => stdlib/2.7}/_json.pyi (100%) rename {2.7 => stdlib/2.7}/datetime.pyi (100%) diff --git a/README.md b/README.md index eed5946c5..f17c61b0d 100644 --- a/README.md +++ b/README.md @@ -18,18 +18,50 @@ of the stub files. ## Directory structure +### Builtins vs stdlib + +Python ships with a set of built-in modules, i.e., modules that are baked into +the Python executable. For a specific Python build, you can use +`sys.builtin_module_names` to query which modules are built in. Also, you +can determine whether a module is a built-in module by doing +`import module; import.__file__`. If `__file__` exists, the module is not +built in. Typeshed stores built-in modules in the "builtins/" directory. +Examples for built-in modules: sys, array, math, signal. + +There are other modules that ship with Python, but are not linked into the +Python binary. E.g. os.py, glob.py, zipfile.py. (But also some C extensions +like datetime) +These modules are stored in the stdlib/ directory. + +Note that built-in modules have higher precedence in the import path than stdlib +modules. The former are implicitly prepended to the start of your PYTHONPATH, +whereas the latter are implicitly appended to it. + +### Version numbers + We store stubs for both Python 2 as well as Python 3. We also distinguish between minor versions (E.g. 3.2 <-> 3.3). To accomplish not having to duplicate modules that are the same between all minor versions, we have e.g. a top-level directory 3/ that contains all the stubs for Python 3. More specialized stubs go into e.g. 3.3/ and supersede the more generic stubs in 3/. (And, if needed, -a directory 3.3.1/ would be able to supersede stubs in 3.3/): +a directory 3.3.1/ would be able to supersede stubs in 3.3/). +Modules that are the same under both Python 2 and Python 3 go into 2and3/. -Directory | Contents -------------- | ------------- -2.7/ | Stubs for Python 2.7 -3/ | Stubs for Python 3 -3.3/ | Some specialized stubs for Python 3.3 (replacing generic stubs in 3/) +### Example + +Directory | Contents +------------- | ------------- +builtins/2and3/ | Builtin stubs for Python 2 and Python 3 +builtins/2/ | Builtin stubs for Python 2 +... | ... +builtins/2.7/ | Builtin stubs for Python 2.7 +builtins/3/ | Builtin stubs for Python 3 +... | ... +builtins/3.3/ | Builtin stubs for Python 3.3 (replacing generic stubs in 3/) +stdlib/2and3/ | Standard library stubs for Python 2 and Python 3 +stdlib/2.7/ | Standard library stubs for Python 2.7 +... | ... +stdlib/2.7.6/ | Standard library stubs specialized for Python 2.7.6 ## Example @@ -55,19 +87,6 @@ class date(object): def weekday(self) -> int: ... ``` -## About builtins vs stdlib - -C extensions that are built into Python (E.g. sys, array, math, signal, ...) have -higher precedence in the import path than modules that ship with Python but -are not built into the python binary (like os.py, glob.py, zipfile.py etc.; -but also some C extensions like datetime). The -former are implicitly prepended to the start of your PYTHONPATH, whereas the -latter are implicitly appended to it. - -Typeshed doesn't explicitly distinguish between the two module types. For a specific -Python build, you can use `sys.builtin_module_names` to query which modules -are built in and set import priority accordingly. - ## Contributions We're welcoming contributions (pull requests) for types of third party diff --git a/2.7/_bisect.pyi b/builtins/2.7/_bisect.pyi similarity index 100% rename from 2.7/_bisect.pyi rename to builtins/2.7/_bisect.pyi diff --git a/2.7/_codecs.pyi b/builtins/2.7/_codecs.pyi similarity index 100% rename from 2.7/_codecs.pyi rename to builtins/2.7/_codecs.pyi diff --git a/2.7/_collections.pyi b/builtins/2.7/_collections.pyi similarity index 100% rename from 2.7/_collections.pyi rename to builtins/2.7/_collections.pyi diff --git a/2.7/_functools.pyi b/builtins/2.7/_functools.pyi similarity index 100% rename from 2.7/_functools.pyi rename to builtins/2.7/_functools.pyi diff --git a/2.7/_heapq.pyi b/builtins/2.7/_heapq.pyi similarity index 100% rename from 2.7/_heapq.pyi rename to builtins/2.7/_heapq.pyi diff --git a/2.7/_random.pyi b/builtins/2.7/_random.pyi similarity index 100% rename from 2.7/_random.pyi rename to builtins/2.7/_random.pyi diff --git a/2.7/_sre.pyi b/builtins/2.7/_sre.pyi similarity index 100% rename from 2.7/_sre.pyi rename to builtins/2.7/_sre.pyi diff --git a/2.7/_struct.pyi b/builtins/2.7/_struct.pyi similarity index 100% rename from 2.7/_struct.pyi rename to builtins/2.7/_struct.pyi diff --git a/2.7/array.pyi b/builtins/2.7/array.pyi similarity index 100% rename from 2.7/array.pyi rename to builtins/2.7/array.pyi diff --git a/2.7/binascii.pyi b/builtins/2.7/binascii.pyi similarity index 100% rename from 2.7/binascii.pyi rename to builtins/2.7/binascii.pyi diff --git a/2.7/cStringIO.pyi b/builtins/2.7/cStringIO.pyi similarity index 100% rename from 2.7/cStringIO.pyi rename to builtins/2.7/cStringIO.pyi diff --git a/2.7/cmath.pyi b/builtins/2.7/cmath.pyi similarity index 100% rename from 2.7/cmath.pyi rename to builtins/2.7/cmath.pyi diff --git a/2.7/errno.pyi b/builtins/2.7/errno.pyi similarity index 100% rename from 2.7/errno.pyi rename to builtins/2.7/errno.pyi diff --git a/2.7/fcntl.pyi b/builtins/2.7/fcntl.pyi similarity index 100% rename from 2.7/fcntl.pyi rename to builtins/2.7/fcntl.pyi diff --git a/2.7/gc.pyi b/builtins/2.7/gc.pyi similarity index 100% rename from 2.7/gc.pyi rename to builtins/2.7/gc.pyi diff --git a/2.7/imp.pyi b/builtins/2.7/imp.pyi similarity index 100% rename from 2.7/imp.pyi rename to builtins/2.7/imp.pyi diff --git a/2.7/marshal.pyi b/builtins/2.7/marshal.pyi similarity index 100% rename from 2.7/marshal.pyi rename to builtins/2.7/marshal.pyi diff --git a/2.7/math.pyi b/builtins/2.7/math.pyi similarity index 100% rename from 2.7/math.pyi rename to builtins/2.7/math.pyi diff --git a/2.7/operator.pyi b/builtins/2.7/operator.pyi similarity index 100% rename from 2.7/operator.pyi rename to builtins/2.7/operator.pyi diff --git a/2.7/select.pyi b/builtins/2.7/select.pyi similarity index 100% rename from 2.7/select.pyi rename to builtins/2.7/select.pyi diff --git a/2.7/signal.pyi b/builtins/2.7/signal.pyi similarity index 100% rename from 2.7/signal.pyi rename to builtins/2.7/signal.pyi diff --git a/2.7/strop.pyi b/builtins/2.7/strop.pyi similarity index 100% rename from 2.7/strop.pyi rename to builtins/2.7/strop.pyi diff --git a/2.7/sys.pyi b/builtins/2.7/sys.pyi similarity index 100% rename from 2.7/sys.pyi rename to builtins/2.7/sys.pyi diff --git a/2.7/thread.pyi b/builtins/2.7/thread.pyi similarity index 100% rename from 2.7/thread.pyi rename to builtins/2.7/thread.pyi diff --git a/2.7/time.pyi b/builtins/2.7/time.pyi similarity index 100% rename from 2.7/time.pyi rename to builtins/2.7/time.pyi diff --git a/2.7/unicodedata.pyi b/builtins/2.7/unicodedata.pyi similarity index 100% rename from 2.7/unicodedata.pyi rename to builtins/2.7/unicodedata.pyi diff --git a/2.7/xxsubtype.pyi b/builtins/2.7/xxsubtype.pyi similarity index 100% rename from 2.7/xxsubtype.pyi rename to builtins/2.7/xxsubtype.pyi diff --git a/2.7/zipimport.pyi b/builtins/2.7/zipimport.pyi similarity index 100% rename from 2.7/zipimport.pyi rename to builtins/2.7/zipimport.pyi diff --git a/2.7/zlib.pyi b/builtins/2.7/zlib.pyi similarity index 100% rename from 2.7/zlib.pyi rename to builtins/2.7/zlib.pyi diff --git a/3/_bisect.pyi b/builtins/3/_bisect.pyi similarity index 100% rename from 3/_bisect.pyi rename to builtins/3/_bisect.pyi diff --git a/3/_codecs.pyi b/builtins/3/_codecs.pyi similarity index 100% rename from 3/_codecs.pyi rename to builtins/3/_codecs.pyi diff --git a/3/_heapq.pyi b/builtins/3/_heapq.pyi similarity index 100% rename from 3/_heapq.pyi rename to builtins/3/_heapq.pyi diff --git a/3/_json.pyi b/builtins/3/_json.pyi similarity index 100% rename from 3/_json.pyi rename to builtins/3/_json.pyi diff --git a/3/_operator.pyi b/builtins/3/_operator.pyi similarity index 100% rename from 3/_operator.pyi rename to builtins/3/_operator.pyi diff --git a/3/_stat.pyi b/builtins/3/_stat.pyi similarity index 100% rename from 3/_stat.pyi rename to builtins/3/_stat.pyi diff --git a/3/_tracemalloc.pyi b/builtins/3/_tracemalloc.pyi similarity index 100% rename from 3/_tracemalloc.pyi rename to builtins/3/_tracemalloc.pyi diff --git a/3/_warnings.pyi b/builtins/3/_warnings.pyi similarity index 100% rename from 3/_warnings.pyi rename to builtins/3/_warnings.pyi diff --git a/3/atexit.pyi b/builtins/3/atexit.pyi similarity index 100% rename from 3/atexit.pyi rename to builtins/3/atexit.pyi diff --git a/3/cmath.pyi b/builtins/3/cmath.pyi similarity index 100% rename from 3/cmath.pyi rename to builtins/3/cmath.pyi diff --git a/3/marshal.pyi b/builtins/3/marshal.pyi similarity index 100% rename from 3/marshal.pyi rename to builtins/3/marshal.pyi diff --git a/3/math.pyi b/builtins/3/math.pyi similarity index 100% rename from 3/math.pyi rename to builtins/3/math.pyi diff --git a/3/signal.pyi b/builtins/3/signal.pyi similarity index 100% rename from 3/signal.pyi rename to builtins/3/signal.pyi diff --git a/3/time.pyi b/builtins/3/time.pyi similarity index 100% rename from 3/time.pyi rename to builtins/3/time.pyi diff --git a/2.7/_hotshot.pyi b/stdlib/2.7/_hotshot.pyi similarity index 100% rename from 2.7/_hotshot.pyi rename to stdlib/2.7/_hotshot.pyi diff --git a/2.7/_json.pyi b/stdlib/2.7/_json.pyi similarity index 100% rename from 2.7/_json.pyi rename to stdlib/2.7/_json.pyi diff --git a/2.7/datetime.pyi b/stdlib/2.7/datetime.pyi similarity index 100% rename from 2.7/datetime.pyi rename to stdlib/2.7/datetime.pyi