8000 Merge pull request #6137 from dhalbert/7.2.x-__future__ · adafruit/circuitpython@dbc8a31 · GitHub
[go: up one dir, main page]

Skip to content

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit dbc8a31

Browse files
authored
Merge pull request #6137 from dhalbert/7.2.x-__future__
Backport from __future__ import annotations from #6117
2 parents 50e93fe + 19e7647 commit dbc8a31

File tree

8 files changed

+117
-7
lines changed

8 files changed

+117
-7
lines changed

ports/atmel-samd/boards/arduino_zero/mpconfigboard.mk

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,6 @@ CHIP_FAMILY = samd21
99
INTERNAL_FLASH_FILESYSTEM = 1
1010
LONGINT_IMPL = NONE
1111
CIRCUITPY_FULL_BUILD = 0
12+
13+
CIRCUITPY_ONEWIREIO = 0
14+
CIRCUITPY_RAINBOWIO = 0

ports/atmel-samd/boards/matrixportal_m4/mpconfigboard.mk

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,15 @@ QSPI_FLASH_FILESYSTEM = 1
1010
EXTERNAL_FLASH_DEVICES = "S25FL116K, S25FL216K, GD25Q16C"
1111
LONGINT_IMPL = MPZ
1212

13+
CIRCUITPY_BLEIO = 0
14+
CIRCUITPY_BLEIO_HCI = 0
15+
CIRCUITPY_ONEWIREIO = 0
16+
CIRCUITPY_PARALLELDISPLAY = 0
17+
CIRCUITPY_SDCARDIO = 0
18+
CIRCUITPY_SHARPDISPLAY = 0
19+
1320
# Include these Python libraries in firmware.
1421
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_PortalBase
1522
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Requests
1623
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_ESP32SPI
1724
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel
18-
19-
CIRCUITPY_SHARPDISPLAY=0
20-
CIRCUITPY_SDCARDIO=0
21-
CIRCUITPY_BLEIO_HCI=0
22-
CIRCUITPY_BLEIO=0

ports/atmel-samd/boards/sensebox_mcu/mpconfigboard.mk

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,6 @@ LONGINT_IMPL = NONE
1111
CIRCUITPY_FULL_BUILD = 0
1212

1313
# There are many pin definitions on this board; it doesn't quite fit on very large translations.
14+
CIRCUITPY_ONEWIREIO = 0
1415
CIRCUITPY_RAINBOWIO = 0
16+
CIRCUITPY_USB_MIDI = 0

py/circuitpy_defns.mk

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,10 @@ ifeq ($(CIRCUITPY_FREQUENCYIO),1)
174174
SRC_PATTERNS += frequencyio/%
175175
endif
176176

177+
ifeq ($(CIRCUITPY_FUTURE),1)
178+
SRC_PATTERNS += __future__/%
179+
endif
180+
177181
ifeq ($(CIRCUITPY_GAMEPADSHIFT),1)
178182
SRC_PATTERNS += gamepadshift/%
179183
endif
@@ -451,6 +455,7 @@ $(filter $(SRC_PATTERNS), \
451455
_bleio/Attribute.c \
452456
_bleio/ScanEntry.c \
453457
_eve/__init__.c \
458+
__future__/__init__.c \
454459
camera/ImageFormat.c \
455460
canio/Match.c \
456461
countio/Edge.c \

py/circuitpy_mpconfig.mk

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,9 @@ CFLAGS += -DCIRCUITPY__EVE=$(CIRCUITPY__EVE)
222222
CIRCUITPY_FREQUENCYIO ?= $(CIRCUITPY_FULL_BUILD)
223223
CFLAGS += -DCIRCUITPY_FREQUENCYIO=$(CIRCUITPY_FREQUENCYIO)
224224

225+
CIRCUITPY_FUTURE ?= 1
226+
CFLAGS += -DCIRCUITPY_FUTURE=$(CIRCUITPY_FUTURE)
227+
225228
CIRCUITPY_GAMEPADSHIFT ?= 0
226229
CFLAGS += -DCIRCUITPY_GAMEPADSHIFT=$(CIRCUITPY_GAMEPADSHIFT)
227230

shared-bindings/__future__/__init__.c

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
/*
2+
* This file is part of the Micro Python project, http://micropython.org/
3+
*
4+
* The MIT License (MIT)
5+
*
6+
* SPDX-FileCopyrightText: Copyright (c) 2022 Dan Halbert for Adafruit Industries
7+
*
8+
* Permission is hereby granted, free of charge, to any person obtaining a copy
9+
* of this software and associated documentation files (the "Software"), to deal
10+
* in the Software without restriction, including without limitation the rights
11+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12+
* copies of the Software, and to permit persons to whom the Software is
13+
* furnished to do so, subject to the following conditions:
14+
*
15+
* The above copyright notice and this permission notice shall be included in
16+
* all copies or substantial portions of the Software.
17+
*
18+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24+
* THE SOFTWARE.
25+
*/
26+
27+
#include "extmod/vfs.h"
28+
#include "py/mpstate.h"
29+
#include "py/obj.h"
30+
#include "py/objstr.h"
31+
#include "py/runtime.h"
32+
#include "shared-bindings/__future__/__init__.h"
33+
34+
//| """Language features module
35+
//|
36+
//| The `__future__` module is used by other Python implementations to
37+
//| enable forward compatibility for features enabled by default in an upcoming version.
38+
//| """
39+
//|
40+
//| annotations: Any
41+
//| """In CPython, ``from __future import annotations``
42+
//| indicates that evaluation of annotations is postponed, as described in PEP 563.
43+
//| CircuitPython (and MicroPython) ignore annotations entirely, whether or not this feature is imported.
44+
//| This is a limitation of CircuitPython and MicroPython for efficiency reasons.
45+
//| """
46+
47+
STATIC const mp_rom_map_elem_t future_module_globals_table[] = {
48+
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR___future__) },
49+
50+
{ MP_ROM_QSTR(MP_QSTR_annotations), mp_const_true },
51+
};
52+
53+
STATIC MP_DEFINE_CONST_DICT(future_module_globals, future_module_globals_table);
54+
55+
const mp_obj_module_t future_module = {
56+
.base = { &mp_type_module },
57+
.globals = (mp_obj_dict_t *)&future_module_globals,
58+
};
59+
60+
MP_REGISTER_MODULE(MP_QSTR___future__, future_module, CIRCUITPY_FUTURE);

shared-bindings/__future__/__init__.h

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/*
2+
* This file is part of the MicroPython project, http://micropython.org/
3+
*
4+
* The MIT License (MIT)
5+
*
6+
* Copyright (c) 2022 Dan Halbert for Adafruit Industries
7+
*
8+
* Permission is hereby granted, free of charge, to any person obtaining a copy
9+
* of this software and associated documentation files (the "Software"), to deal
10+
* in the Software without restriction, including without limitation the rights
11+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12+
* copies of the Software, and to permit persons to whom the Software is
13+
* furnished to do so, subject to the following conditions:
14+
*
15+
* The above copyright notice and this permission notice shall be included in
16+
* all copies or substantial portions of the Software.
17+
*
18+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALIN 10000 GS IN
24+
* THE SOFTWARE.
25+
*/
26+
27+
#ifndef MICROPY_INCLUDED_SHARED_BINDINGS___FUTURE_____INIT___H
28+
#define MICROPY_INCLUDED_SHARED_BINDINGS___FUTURE_____INIT___H
29+
30+
#endif // MICROPY_INCLUDED_SHARED_BINDINGS___FUTURE_____INIT___H

tools/extract_pyi.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@
1616
import black
1717

1818

19-
IMPORTS_IGNORE = frozenset(
19+
PATHS_IGNORE = frozenset({"shared-bindings/__future__"})
20+
21+
TYPE_MODULE_IMPORTS_IGNORE = frozenset(
2022
{
2123
"int",
2224
"float",
@@ -125,7 +127,7 @@ def collect_annotations(anno_tree):
125127
return
126128
for node in ast.walk(anno_tree):
127129
if isinstance(node, ast.Name):
128-
if node.id in IMPORTS_IGNORE:
130+
if node.id in TYPE_MODULE_IMPORTS_IGNORE:
129131
continue
130132
elif node.id in IMPORTS_TYPING:
131133
typing.add(node.id)
@@ -174,6 +176,9 @@ def convert_folder(top_level, stub_directory):
174176

175177
for filename in filenames:
176178
full_path = os.path.join(top_level, filename)
179+
if full_path in PATHS_IGNORE:
180+
continue
181+
177182
file_lines = []
178183
if os.path.isdir(full_path):
179184
(mok, mtotal) = convert_folder(full_path, os.path.join(stub_directory, filename))

0 commit comments

Comments
 (0)
0