Sun, 25 Aug 2019 19:25:37 +0200
Started to add the stubs for MicroPython.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MicroPython/btree.py Sun Aug 25 19:25:37 2019 +0200 @@ -0,0 +1,33 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2019 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module containing stubs for API generation of the def 'btree' module. +""" + +INCL = 1 +DESC = 2 + +def open(stream, *, flags=0, pagesize=0, cachesize=0, minkeypage=0): + pass + +class BTree(): + def close(self): + pass + + def flush(self): + pass + + def get(self, key, default=None): + pass + + def keys(self, start_key=None, end_key=None, flags=0): + pass + + def values(self, start_key=None, end_key=None, flags=0): + pass + + def items(self, start_key=None, end_key=None, flags=0): + pass
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MicroPython/framebuf.py Sun Aug 25 19:25:37 2019 +0200 @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2019 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module containing stubs for API generation of the def 'framebuf' module. +""" + +MONO_VLSB = 0 +MONO_HLSB = 0 +MONO_HMSB = 0 +RGB565 = 0 +GS2_HMSB = 0 +GS4_HMSB = 0 +GS8 = 0 + +class FrameBuffer(): + def __init__(self, buffer, width, height, format, stride=None): + pass + + def fill(self, c): + pass + + def pixel(self, x, y, c=None): + pass + + def hline(self, x, y, w, c): + pass + + def vline(self, x, y, h, c): + pass + + def line(self, x1, y1, x2, y2, c): + pass + + def rect(self, x, y, w, h, c): + pass + + def fill_rect(self, x, y, w, h, c): + pass + + def text(self, s, x, y, c=None): + pass + + def scroll(self, xstep, ystep): + pass + + def blit(self, fbuf, x, y, key=None): + pass
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MicroPython/machine.py Sun Aug 25 19:25:37 2019 +0200 @@ -0,0 +1,315 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2019 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module containing stubs for API generation of the def 'machine' module. +""" + +IDLE = 0 +SLEEP = 0 +DEEPSLEEP = 0 +PWRON_RESET = 0 +HARD_RESET = 0 +WDT_RESET = 0 +DEEPSLEEP_RESET = 0 +SOFT_RESET = 0 +WLAN_WAKE = 0 +PIN_WAKE = 0 +RTC_WAKE = 0 + +def reset(): + pass + +def reset_cause(): + pass + +def disable_irq(): + pass + +def enable_irq(state): + pass + +def freq(): + pass + +def idle(): + pass + +def sleep(): + pass + +def lightsleep(time_ms=None): + pass + +def deepsleep(time_ms=None): + pass + +def wake_reason(): + pass + +def unique_id(): + pass + +def time_pulse_us(pin, pulse_level, timeout_us=1000000): + pass + +def rng(): + pass + +class Pin(): + IN = 0 + OUT = 0 + OPEN_DRAIN = 0 + ALT = 0 + ALT_OPEN_DRAIN = 0 + PULL_UP = 0 + PULL_DOWN = 0 + PULL_HOLD = 0 + LOW_POWER = 0 + MED_POWER = 0 + HIGH_POWER = 0 + IRQ_FALLING = 0 + IRQ_RISING = 0 + IRQ_LOW_LEVEL = 0 + IRQ_HIGH_LEVEL = 0 + + def __init__(self, id, mode=-1, pull=-1, *, value, drive, alt): + pass + + def init(self, mode=-1, pull=-1, *, value, drive, alt): + pass + + def value(self, x=None): + pass + + def on(self): + pass + + def off(self): + pass + + def mode(self, mode=-1): + pass + + def pull(self, pull=-1): + pass + + def drive(self, drive=None): + pass + + def irq(self, handler=None, trigger=(IRQ_FALLING | IRQ_RISING), *, + priority=1, wake=None, hard=False): + pass + +class Signal(): + def __init__(self, pin, *, invert=False): + pass + + def value(self, x=None): + pass + + def on(self): + pass + + def off(self): + pass + +class ADC(): + def __init__(self, id=0, *, bits=12): + pass + + def channel(self, id, *, pin): + pass + + def init(self): + pass + + def deinit(self): + pass + +class ADCChannel(): + def value(self): + pass + + def init(self): + pass + + def deinit(self): + pass + +def adcchannel(): + pass + +class UART(): + RX_ANY = 0 + + def __init__(self, id, baudrate=9600, bits=8, parity=None, stop=1, + **kwargs): + pass + + def init(baudrate=9600, bits=8, parity=None, stop=1, **kwargs): + pass + + def deinit(self): + pass + + def any(self): + pass + + def read(self, nbytes=None): + pass + + def readinto(self, buf, nbytes=None): + pass + + def readline(self): + pass + + def write(self, buf): + pass + + def sendbreak(self): + pass + + def irq(self, trigger, priority=1, handler=None, wake=IDLE): + pass + +class SPI(): + MASTER = 0 + MSB = 0 + LSB = 0 + + def __init__(self, id, baudrate=1000000, *, polarity=0, phase=0, bits=8, + firstbit=MSB, sck=None, mosi=None, miso=None, + pins=("SCK", "MOSI", "MISO")): + pass + + def init(self, baudrate=1000000, *, polarity=0, phase=0, bits=8, + firstbit=MSB, sck=None, mosi=None, miso=None, + pins=("SCK", "MOSI", "MISO")): + pass + + def deinit(self): + pass + + def read(self, nbytes, write=0x00): + pass + + def readinto(self, buf, write=0x00): + pass + + def write(self, buf): + pass + + def write_readinto(self, write_buf, read_buf): + pass + +class I2C(): + def __init__(self, id=-1, *, scl, sda, freq=400000): + pass + + def init(self, scl, sda, *, freq=400000): + pass + + def deinit(self): + pass + + def scan(self): + pass + + def start(self): + pass + + def stop(self): + pass + + def readinto(self, buf, nack=True): + pass + + def write(self, buf): + pass + + def readfrom(self, addr, nbytes, stop=True): + pass + + def readfrom_into(self, addr, buf, stop=True): + pass + + def writeto(self, addr, buf, stop=True): + pass + + def writevto(self, addr, vector, stop=True): + pass + + def readfrom_mem(self, addr, memaddr, nbytes, *, addrsize=8): + pass + + def readfrom_mem_into(self, addr, memaddr, buf, *, addrsize=8): + pass + + def writeto_mem(self, addr, memaddr, buf, *, addrsize=8): + pass + +class RTC(): + ALARM0 = 0 + + def __init__(self, id=0, datetime=None): + pass + + def init(self, datetime): + pass + + def now(self): + pass + + def deinit(self): + pass + + def alarm(self, id, time, *, repeat=False): + pass + + def alarm_left(self, alarm_id=0): + pass + + def cancel(self, alarm_id=0): + pass + + def irq(self, *, trigger, handler=None, wake=IDLE): + pass + +class Timer(): + ONE_SHOT = 0 + PERIODIC = 0 + + def __init__(self, id, *, mode=PERIODIC, period=-1, callback=None): + pass + + def init(self, *, mode=PERIODIC, period=-1, callback=None): + pass + + def deinit(self): + pass + +class WDT(): + def __init__(self, id=0, timeout=5000): + pass + + def feed(self): + pass + +class SD(): + def __init__(self, id=0, pins=('GP10', 'GP11', 'GP15')): + pass + + def init(self, id=0, pins=('GP10', 'GP11', 'GP15')): + pass + + def deinit(self): + pass + +class SDcard(): + def __init__(self, lot=1, width=1, cd=None, wp=None, sck=None, miso=None, + mosi=None, cs=None): + pass
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MicroPython/math.py Sun Aug 25 19:25:37 2019 +0200 @@ -0,0 +1,125 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2019 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module containing stubs for API generation of the 'math' module. +""" + +def acos(x): + pass + +def acosh(x): + pass + +def asin(x): + pass + +def asinh(x): + pass + +def atan(x): + pass + +def atan2(y, x): + pass + +def atanh(x): + pass + +def ceil(x): + pass + +def copysign(x, y): + pass + +def cos(x): + pass + +def cosh(x): + pass + +def degrees(x): + pass + +def erf(x): + pass + +def erfc(x): + pass + +def exp(x): + pass + +def expm1(x): + pass + +def fabs(x): + pass + +def floor(x): + pass + +def fmod(x, y): + pass + +def frexp(x): + pass + +def gamma(x): + pass + +def isfinite(x): + pass + +def isinf(x): + pass + +def isnan(x): + pass + +def ldexp(x, exp): + pass + +def lgamma(x): + pass + +def log(x): + pass + +def log10(x): + pass + +def log2(x): + pass + +def modf(x): + pass + +def pow(x, y): + pass + +def radians(x): + pass + +def sin(x): + pass + +def sinh(x): + pass + +def sqrt(x): + pass + +def tan(x): + pass + +def tanh(x): + pass + +def trunc(x): + pass + +e = 2.718281828459045 +pi = 3.141592653589793
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MicroPython/micropython.py Sun Aug 25 19:25:37 2019 +0200 @@ -0,0 +1,38 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2019 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module containing stubs for API generation of the def 'micropython' module. +""" + +def const(expr): + pass + +def opt_level(level=None): + pass + +def alloc_emergency_exception_buf(size): + pass + +def mem_info(verbose=False): + pass + +def qstr_info(verbose=False): + pass + +def stack_use(): + pass + +def heap_lock(): + pass + +def heap_unlock(): + pass + +def kbd_intr(chr): + pass + +def schedule(func, arg): + pass
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MicroPython/network.py Sun Aug 25 19:25:37 2019 +0200 @@ -0,0 +1,186 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2019 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module containing stubs for API generation of the def 'network' module. +""" + +class AbstractNIC(): + def __init__(self, id=None): + pass + + def active(self, is_active=None): + pass + + def connect(self, service_id=None, key=None, *args): + pass + + def disconnect(self): + pass + + def isconnected(self): + pass + + def scan(self, *args): + pass + + def status(self, param=None): + pass + + def ifconfig(self, params=tuple()): + pass + + def config(self, param): + pass + + def config(self, **params): + pass + +STA_IF = 0 +AP_IF = 1 + +AUTH_OPEN = 0 +AUTH_WEP = 1 +AUTH_WPA2_PSK = 3 +AUTH_WPA_PSK = 2 +AUTH_WPA_WPA2_PSK = 4 + +STAT_IDLE = 0 +STAT_CONNECTING = 0 +STAT_WRONG_PASSWORD = 0 +STAT_NO_AP_FOUND = 0 +STAT_CONNECT_FAIL = 0 +STAT_GOT_IP = 0 + +class WLAN(): + def __init__(self, interface_id): + pass + + def active(self, is_active=None): + pass + + def connect(self, ssid=None, password=None, *, bssid=None): + pass + + def disconnect(self): + pass + + def scan(self): + pass + + def status(self, param=None): + pass + + def isconnected(self): + pass + + def ifconfig(self, params=tuple()): + pass + + def config(self, param): + pass + + def config(self, **params): + pass + +class WLANWiPy(): + STA = 0 + AP = 0 + WEP = 0 + WPA = 0 + WPA2 = 0 + INT_ANT = 0 + EXT_ANT = 0 + + def __init__(self, id=0, **args): + pass + + def init(self, mode, *, ssid, auth, channel, antenna): + pass + + def connect(self, ssid, *, auth=None, bssid=None, timeout=None): + pass + + def scan(): + pass + + def disconnect(): + pass + + def isconnected(): + pass + + def ifconfig(self, if_id=0, config=tuple()): + pass + + def ifconfig(self, if_id=0, config="dhcp"): + pass + + def mode(self, mode=None): + pass + + def ssid(self, ssid=None): + pass + + def auth(self, auth=None): + pass + + def channel(self, channel=None): + pass + + def antenna(self, antenna=None): + pass + + def mac(self, mac_addr=None): + pass + + def irq(self, *, handler, wake): + pass + +class CC3K(): + WEP = 0 + WPA = 0 + WPA2 = 0 + + def __init__(self, spi, pin_cs, pin_en, pin_irq): + pass + + def connect(self, ssid, key=None, *, security=WPA2, bssid=None): + pass + + def disconnect(self): + pass + + def isconnected(self): + pass + + def ifconfig(self): + pass + + def patch_version(self): + pass + + def patch_program(self, pgm): + pass + +class WIZNET5K(): + def __init__(self, spi, pin_cs, pin_rst): + pass + + def isconnected(self): + pass + + def ifconfig(self, params=tuple()): + pass + + def regs(self): + pass + +def phy_mode(mode=None): + pass + +MODE_11B = 0 +MODE_11G = 0 +MODE_11N = 0
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MicroPython/pyb.py Sun Aug 25 19:25:37 2019 +0200 @@ -0,0 +1,177 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2019 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module containing stubs for API generation of the def 'pyb' module. +""" + +hid_mouse = 0 +hid_keyboard = 0 + +def delay(ms): + pass + +def udelay(us): + pass + +def millis(): + pass + +def micros(): + pass + +def elapsed_millis(start): + pass + +def elapsed_micros(start): + pass + +def hard_reset(): + pass + +def bootloader(): + pass + +def fault_debug(value): + pass + +def disable_irq(): + pass + +def enable_irq(state=True): + pass + +def freq(sysclk=None, hclk=None, pclk1=None, pclk2=None): + pass + +def wfi(): + pass + +def stop(): + pass + +def standby(): + pass + +def have_cdc(): + pass + +def hid(buttons, x, y, z): + pass + +def info(dump_alloc_table=None): + pass + +def main(filename): + pass + +def mount(device, mountpoint, *, readonly=False, mkfs=False): + pass + +def repl_uart(uart): + pass + +def rng(): + pass + +def sync(): + pass + +def unique_id(): + pass + +def usb_mode(modestr=None, vid=0xf055, pid=0x9801, hid=hid_mouse): + pass + +class Accel(): + def __init__(self): + pass + + def filtered_xyz(self): + pass + + def tilt(self): + pass + + def x(self): + pass + + def y(self): + pass + + def z(self): + pass + +class ADC(): + def __init__(self, pin): + pass + + def read(self): + pass + + def read_timed(self, buf, timer): + pass + + def read_timed_multi(self, adcs, bufs, timer): + pass + +class CAN(): + NORMAL = 0 + LOOPBACK = 0 + SILENT = 0 + SILENT_LOOPBACK = 0 + STOPPED = 0 + ERROR_ACTIVE = 0 + ERROR_WARNING = 0 + ERROR_PASSIVE = 0 + BUS_OFF = 0 + LIST16 = 0 + MASK16 = 0 + LIST32 = 0 + MASK32 = 0 + + def __init__(self, bus, mode, extframe=False, prescaler=100, *, sjw=1, + bs1=6, bs2=8, auto_restart=False): + pass + + def init(self, mode, extframe=False, prescaler=100, *, sjw=1, bs1=6, bs2=8, + auto_restart=False): + pass + + @classmethod + def initfilterbanks(cls, nr): + pass + + def deinit(self): + pass + + def restart(self): + pass + + def state(self): + pass + + def info(self, list=None): + pass + + def setfilter(self, bank, mode, fifo, params, *, rtr): + pass + + def clearfilter(self, bank): + pass + + def any(self, fifo): + pass + + def recv(self, fifo, list=None, *, timeout=5000): + pass + + def send(self, data, id, *, timeout=0, rtr=False): + pass + + def rxcallback(self, fifo, fun): + pass + +# TODO: complete this
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MicroPython/sys.py Sun Aug 25 19:25:37 2019 +0200 @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2019 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module containing stubs for API generation of the 'sys' module. +""" + +def exit(retval=0): + pass + +def atexit(func): + pass + +def print_exception(exc, file=sys.stdout): + pass + +argv = [] +byteorder = "" +implementation = tuple() +maxsize = 1 +modules = {} +path = [] +platform = "" +stderr = 2 +stdin = 0 +stdout = 1 +version = "" +version_info = tuple()
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MicroPython/ubinascii.py Sun Aug 25 19:25:37 2019 +0200 @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2019 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module containing stubs for API generation of the 'ubinascii' module. +""" + +def hexlify(data, sep=""): + pass + +def unhexlify(data): + pass + +def a2b_base64(data): + pass + +def b2a_base64(data): + pass
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MicroPython/ucollections.py Sun Aug 25 19:25:37 2019 +0200 @@ -0,0 +1,26 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2019 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module containing stubs for API generation of the 'ucollections' module. +""" + +class deque(): + def __init__(self, iterable, maxlen, flags=0): + pass + + def append(self, x): + pass + + def popleft(self): + pass + +class namedtuple(): + def __init__(self, name, fields): + pass + +class OrderedDict(): + def __init__(self, iterableOfKeyValue): + pass
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MicroPython/ucryptolib.py Sun Aug 25 19:25:37 2019 +0200 @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2019 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module containing stubs for API generation of the def 'ucryptolib' module. +""" + +MODE_ECB = 1 +MODE_CBC = 2 +MODE_CTR = 6 + +class aes(): + def __init__(self, key, mode, IV=None): + pass + + def encrypt(self, in_buf, out_buf=None): + pass + + def decrypt(self, in_buf, out_buf=None): + pass
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MicroPython/uctypes.py Sun Aug 25 19:25:37 2019 +0200 @@ -0,0 +1,42 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2019 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module containing stubs for API generation of the def 'uctypes' module. +""" + +LITTLE_ENDIAN = 0 +BIG_ENDIAN = 0 +NATIVE = 0 +UINT8 = 0 +INT8 = 0 +UINT16 = 0 +INT16 = 0 +UINT32 = 0 +INT32 = 0 +UINT64 = 0 +INT64 = 0 +FLOAT32 = 0 +FLOAT64 = 0 +VOID = 0 +PTR = 0 +ARRAY = 0 + +def sizeof(struct, layout_type=NATIVE): + pass + +def addressof(obj): + pass + +def bytes_at(addr, size): + pass + +def bytearray_at(addr, size): + pass + +class struct(): + def __init__(self, addr, descriptor, layout_type=NATIVE): + pass +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MicroPython/uerrno.py Sun Aug 25 19:25:37 2019 +0200 @@ -0,0 +1,33 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2019 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module containing stubs for API generation of the 'uerrno' module. +""" + +errorcode = {} + +EACCES = 0 +EADDRINUSE = 0 +EAGAIN = 0 +EALREADY = 0 +EBADF = 0 +ECONNABORTED = 0 +ECONNREFUSED = 0 +ECONNRESET = 0 +EEXIST = 0 +EHOSTUNREACH = 0 +EINPROGRESS = 0 +EINVAL = 0 +EIO = 0 +EISDIR = 0 +ENOBUFS = 0 +ENODEV = 0 +ENOENT = 0 +ENOMEM = 0 +ENOTCONN = 0 +EOPNOTSUPP = 0 +EPERM = 0 +ETIMEDOUT = 0
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MicroPython/uhashlib.py Sun Aug 25 19:25:37 2019 +0200 @@ -0,0 +1,38 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2019 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module containing stubs for API generation of the 'uhashlib' module. +""" + +class sha1(): + def __init__(self, data=bytes()): + pass + + def update(self, data): + pass + + def digest(self): + pass + +class sha256(): + def __init__(self, data=bytes()): + pass + + def update(self, data): + pass + + def digest(self): + pass + +class md5(): + def __init__(self, data=bytes()): + pass + + def update(self, data): + pass + + def digest(self): + pass
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MicroPython/uheapq.py Sun Aug 25 19:25:37 2019 +0200 @@ -0,0 +1,17 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2019 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module containing stubs for API generation of the 'uheapq' module. +""" + +def heappush(heap, item): + pass + +def heappop(heap): + pass + +def heapify(x): + pass
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MicroPython/uio.py Sun Aug 25 19:25:37 2019 +0200 @@ -0,0 +1,130 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2019 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module containing stubs for API generation of the def 'uiodef' module. +""" + +def open(name, mode='r', **kwargs): + pass + +class FileIO(): + def __init__(self, name, mode='r', **kwargs): + pass + + def close(self): + pass + + def flush(self): + pass + + def read(self, size=-1): + pass + + def readinto(self, b): + pass + + def readline(self, size=-1): + pass + + def readlines(self, hint=-1): + pass + + def seek(self, offset, whence=0): + pass + + def tell(self): + pass + + def write(self, b): + pass + +class TextIOWrapper(): + def __init__(self, name, mode='r', **kwargs): + pass + + def close(self): + pass + + def flush(self): + pass + + def read(self, size=-1): + pass + + def readinto(self, b): + pass + + def readline(self, size=-1): + pass + + def readlines(self, hint=-1): + pass + + def seek(self, offset, whence=0): + pass + + def tell(self): + pass + + def write(self, s): + pass + +class StringIO(): + def __init__(self, initial_value=""): + pass + + def close(self): + pass + + def flush(self): + pass + + def getvalue(self): + pass + + def read(self, size=-1): + pass + + def readinto(self, b): + pass + + def readline(self, size=-1): + pass + + def seek(self, offset, whence=0): + pass + + def write(self, s): + pass + + +class BytesIO(): + def __init__(self, initial_value=b""): + pass + + def close(self): + pass + + def flush(self): + pass + + def getvalue(self): + pass + + def read(self, size=-1): + pass + + def readinto(self, b): + pass + + def readline(self, size=-1): + pass + + def seek(self, offset, whence=0): + pass + + def write(self, b): + pass
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MicroPython/ujson.py Sun Aug 25 19:25:37 2019 +0200 @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2019 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module containing stubs for API generation of the def 'ujson' module. +""" + +def dump(obj, stream): + pass + +def dumps(obj): + pass + +def load(stream): + pass + +def loads(string): + pass
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MicroPython/uos.py Sun Aug 25 19:25:37 2019 +0200 @@ -0,0 +1,77 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2019 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module containing stubs for API generation of the def 'uos' module. +""" + +def uname(): + pass + +def urandom(n): + pass + +def chdir(path): + pass + +def getcwd(): + pass + +def ilistdir(dir="."): + pass + +def listdir(dir="."): + pass + +def mkdir(path): + pass + +def remove(path): + pass + +def rmdir(path): + pass + +def rename(old_path, new_path): + pass + +def stat(path): + pass + +def statvfs(path): + pass + +def sync(): + pass + +def dupterm(stream_object, index=0): + pass + +def mount(fsobj, mount_point, *, readonly): + pass + +def umount(mount_point): + pass + +class VfsFat(): + def __init__(self, block_dev): + pass + + @staticmethod + def mkfs(block_dev): + pass + +class AbstractBlockDev(): + def __init__(self): + pass + + def readblocks(self, block_num, buf): + pass + + def writeblocks(self, block_num, buf): + pass + + def ioctl(self, op, arg): + pass
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MicroPython/ure.py Sun Aug 25 19:25:37 2019 +0200 @@ -0,0 +1,52 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2019 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module containing stubs for API generation of the def 'ure' module. +""" + +def compile(regex_str, flags=0): + pass + +def match(regex_str, string): + pass + +def search(regex_str, string): + pass + +def sub(regex_str, replace, string, count=0, flags=0): + pass + +DEBUG = False + +class regex_object(): + def match(self, string): + pass + + def search(self, string): + pass + + def sub(self, replace, string, count=0, flags=0): + pass + + def split(self, string, max_split=-1): + pass + + +class match_object(): + def group(self, index): + pass + + def groups(self): + pass + + def start(self, index=0): + pass + + def end(self, index=0): + pass + + def span(self, index=0): + pass
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MicroPython/uselect.py Sun Aug 25 19:25:37 2019 +0200 @@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2019 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module containing stubs for API generation of the def 'uselect' module. +""" + +def poll(): + pass + +def select(rlist, wlist, xlist, timeout=-1): + pass + +POLLIN = 1 +POLLOUT = 4 +POLLERR = 8 +POLLHUP = 16 + +class Poll(): + def register(self, obj, eventmask = POLLIN | POLLOUT): + pass + + def unregister(self, obj): + pass + + def modify(self, obj, eventmask): + pass + + def poll(self, timeout=-1): + pass + + def ipoll(self, timeout=-1, flags=0): + pass
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MicroPython/usocket.py Sun Aug 25 19:25:37 2019 +0200 @@ -0,0 +1,87 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2019 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module containing stubs for API generation of the def 'usocket' module. +""" + +AF_INET = 2 +AF_INET6 = 10 +SOCK_STREAM = 1 +SOCK_DGRAM = 2 +SOCK_RAW = 3 +IPPROTO_IP = 0 +IPPROTO_UDP = 17 +IPPROTO_TCP = 6 +IP_ADD_MEMBERSHIP = 3 +SOL_SOCKET = 4095 +SO_REUSEADDR = 4 + +def socket(af=AF_INET, type=SOCK_STREAM, proto=IPPROTO_TCP): + pass + +def getaddrinfo(host, port, af=0, type=0, proto=0, flags=0): + pass + +def inet_ntop(af, bin_addr): + pass + +def inet_pton(af, txt_addr): + pass + +class Socket(): + def close(self): + pass + + def bind(self, address): + pass + + def listen(self, backlog=None): + pass + + def accept(self): + pass + + def connect(self, address): + pass + + def send(self, bytes): + pass + + def sendall(self, bytes): + pass + + def recv(self, bufsize): + pass + + def sendto(self, bytes, address): + pass + + def recvfrom(self, bufsize): + pass + + def setsockopt(self, level, optname, value): + pass + + def settimeout(self, value): + pass + + def setblocking(self, flag): + pass + + def makefile(self, mode='rb', buffering=0): + pass + + def read(self, size=None): + pass + + def readinto(self, buf, nbytes=None): + pass + + def readline(self): + pass + + def write(self, buf): + pass
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MicroPython/ussl.py Sun Aug 25 19:25:37 2019 +0200 @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2019 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module containing stubs for API generation of the def 'ussl' module. +""" + +CERT_NONE = 0 +CERT_OPTIONAL = 0 +CERT_REQUIRED = 0 + +def wrap_socket(sock, server_side=False, keyfile=None, certfile=None, + cert_reqs=CERT_NONE, ca_certs=None): + pass
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MicroPython/ustruct.py Sun Aug 25 19:25:37 2019 +0200 @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2019 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module containing stubs for API generation of the def 'ustruct' module. +""" + +def calcsize(fmt): + pass + +def pack(fmt, *variables): + pass + +def pack_into(fmt, buffer, offset, *variables): + pass + +def unpack(fmt, data): + pass + +def unpack_from(fmt, data, offset=0): + pass
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MicroPython/utime.py Sun Aug 25 19:25:37 2019 +0200 @@ -0,0 +1,38 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2019 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module containing stubs for API generation of the def 'utime' module. +""" + +def localtime(secs=None): + pass + +def sleep(seconds): + pass + +def sleep_ms(ms): + pass + +def sleep_us(us): + pass + +def ticks_ms(): + pass + +def ticks_us(): + pass + +def ticks_cpu(): + pass + +def ticks_add(ticks, delta): + pass + +def ticks_diff(ticks1, ticks2): + pass + +def time(): + pass
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MicroPython/uzlib.py Sun Aug 25 19:25:37 2019 +0200 @@ -0,0 +1,15 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2019 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module containing stubs for API generation of the def 'uzlib' module. +""" + +def decompress(data, wbits=0, bufsize=0): + pass + +class DecompIO(): + def __init__(self, stream, wbits=0): + pass
--- a/micropython.api Sat Aug 24 18:31:16 2019 +0200 +++ b/micropython.api Sun Aug 25 19:25:37 2019 +0200 @@ -1,6 +1,15 @@ array.array.append?4(value) array.array.extend?4(iterable) array.array?1(typecode, iterable=None) +btree.BTree.close?4() +btree.BTree.flush?4() +btree.BTree.get?4(key, default=None) +btree.BTree.items?4(start_key=None, end_key=None, flags=0) +btree.BTree.keys?4(start_key=None, end_key=None, flags=0) +btree.BTree.values?4(start_key=None, end_key=None, flags=0) +btree.DESC?7 +btree.INCL?7 +btree.open?4(stream, *, flags=0, pagesize=0, cachesize=0, minkeypage=0) cmath.cos?4(z) cmath.e?7 cmath.exp?4(z) @@ -12,6 +21,24 @@ cmath.rect?4(r, phi) cmath.sin?4(z) cmath.sqrt?4(z) +framebuf.FrameBuffer.blit?4(fbuf, x, y, key=None) +framebuf.FrameBuffer.fill?4(c) +framebuf.FrameBuffer.fill_rect?4(x, y, w, h, c) +framebuf.FrameBuffer.hline?4(x, y, w, c) +framebuf.FrameBuffer.line?4(x1, y1, x2, y2, c) +framebuf.FrameBuffer.pixel?4(x, y, c=None) +framebuf.FrameBuffer.rect?4(x, y, w, h, c) +framebuf.FrameBuffer.scroll?4(xstep, ystep) +framebuf.FrameBuffer.text?4(s, x, y, c=None) +framebuf.FrameBuffer.vline?4(x, y, h, c) +framebuf.FrameBuffer?1(buffer, width, height, format, stride=None) +framebuf.GS2_HMSB?7 +framebuf.GS4_HMSB?7 +framebuf.GS8?7 +framebuf.MONO_HLSB?7 +framebuf.MONO_HMSB?7 +framebuf.MONO_VLSB?7 +framebuf.RGB565?7 gc.collect?4() gc.disable?4() gc.enable?4() @@ -19,3 +46,317 @@ gc.mem_free?4() gc.threshold?4() gc.threshold?4(amount) +machine.ADC.channel?4(id, *, pin) +machine.ADC.deinit?4() +machine.ADC.init?4() +machine.ADC?1(id=0, *, bits=12) +machine.ADCChannel.deinit?4() +machine.ADCChannel.init?4() +machine.ADCChannel.value?4() +machine.DEEPSLEEP?7 +machine.DEEPSLEEP_RESET?7 +machine.HARD_RESET?7 +machine.IDLE?7 +machine.PIN_WAKE?7 +machine.PWRON_RESET?7 +machine.Pin.ALT?7 +machine.Pin.ALT_OPEN_DRAIN?7 +machine.Pin.HIGH_POWER?7 +machine.Pin.IN?7 +machine.Pin.IRQ_FALLING?7 +machine.Pin.IRQ_HIGH_LEVEL?7 +machine.Pin.IRQ_LOW_LEVEL?7 +machine.Pin.IRQ_RISING?7 +machine.Pin.LOW_POWER?7 +machine.Pin.MED_POWER?7 +machine.Pin.OPEN_DRAIN?7 +machine.Pin.OUT?7 +machine.Pin.PULL_DOWN?7 +machine.Pin.PULL_HOLD?7 +machine.Pin.PULL_UP?7 +machine.Pin.drive?4(drive=None) +machine.Pin.init?4(mode=-1, pull=-1, *, value, drive, alt) +machine.Pin.irq?4(handler=None, trigger=(IRQ_FALLING | IRQ_RISING), *, priority=1, wake=None, hard=False) +machine.Pin.mode?4(mode=-1) +machine.Pin.off?4() +machine.Pin.on?4() +machine.Pin.pull?4(pull=-1) +machine.Pin.value?4(x=None) +machine.Pin?1(id, mode=-1, pull=-1, *, value, drive, alt) +machine.RTC_WAKE?7 +machine.SLEEP?7 +machine.SOFT_RESET?7 +machine.Signal.off?4() +machine.Signal.on?4() +machine.Signal.value?4(x=None) +machine.Signal?1(pin, *, invert=False) +machine.UART.RX_ANY?7 +machine.UART.any?4() +machine.UART.deinit?4() +machine.UART.init?4(bits=8, parity=None, stop=1, *, ...) +machine.UART.irq?4(trigger, priority=1, handler=None, wake=machine.IDLE) +machine.UART.read?4(nbytes=None) +machine.UART.readinto?4(buf, nbytes=None) +machine.UART.readline?4() +machine.UART.sendbreak?4() +machine.UART.write?4(buf) +machine.UART?1(id, *args) +machine.WDT_RESET?7 +machine.WLAN_WAKE?7 +machine.adcchannel?4() +machine.deepsleep?4(time_ms=None) +machine.disable_irq?4() +machine.enable_irq?4(state) +machine.freq?4() +machine.idle?4() +machine.lightsleep?4(time_ms=None) +machine.reset?4() +machine.reset_cause?4() +machine.rng?4() +machine.sleep?4() +machine.time_pulse_us?4(pin, pulse_level, timeout_us=1000000) +machine.unique_id?4() +machine.wake_reason?4() +math.acos?4(x) +math.acosh?4(x) +math.asin?4(x) +math.asinh?4(x) +math.atan2?4(y, x) +math.atan?4(x) +math.atanh?4(x) +math.ceil?4(x) +math.copysign?4(x, y) +math.cos?4(x) +math.cosh?4(x) +math.degrees?4(x) +math.e?7 +math.erf?4(x) +math.erfc?4(x) +math.exp?4(x) +math.expm1?4(x) +math.fabs?4(x) +math.floor?4(x) +math.fmod?4(x, y) +math.frexp?4(x) +math.gamma?4(x) +math.isfinite?4(x) +math.isinf?4(x) +math.isnan?4(x) +math.ldexp?4(x, exp) +math.lgamma?4(x) +math.log10?4(x) +math.log2?4(x) +math.log?4(x) +math.modf?4(x) +math.pi?7 +math.pow?4(x, y) +math.radians?4(x) +math.sin?4(x) +math.sinh?4(x) +math.sqrt?4(x) +math.tan?4(x) +math.tanh?4(x) +math.trunc?4(x) +sys.argv?7 +sys.atexit?4(func) +sys.byteorder?7 +sys.exit?4(retval=0) +sys.implementation?7 +sys.maxsize?7 +sys.modules?7 +sys.path?7 +sys.platform?7 +sys.print_exception?4(exc, file=sys.stdout) +sys.stderr?7 +sys.stdin?7 +sys.stdout?7 +sys.version?7 +sys.version_info?7 +ubinascii.a2b_base64?4(data) +ubinascii.b2a_base64?4(data) +ubinascii.hexlify?4(data, sep="") +ubinascii.unhexlify?4(data) +ucollections.OrderedDict?1(iterableOfKeyValue) +ucollections.deque.append?4(x) +ucollections.deque.popleft?4() +ucollections.deque?1(iterable, maxlen, flags=0) +ucollections.namedtuple?1(name, fields) +uerrno.EACCES?7 +uerrno.EADDRINUSE?7 +uerrno.EAGAIN?7 +uerrno.EALREADY?7 +uerrno.EBADF?7 +uerrno.ECONNABORTED?7 +uerrno.ECONNREFUSED?7 +uerrno.ECONNRESET?7 +uerrno.EEXIST?7 +uerrno.EHOSTUNREACH?7 +uerrno.EINPROGRESS?7 +uerrno.EINVAL?7 +uerrno.EIO?7 +uerrno.EISDIR?7 +uerrno.ENOBUFS?7 +uerrno.ENODEV?7 +uerrno.ENOENT?7 +uerrno.ENOMEM?7 +uerrno.ENOTCONN?7 +uerrno.EOPNOTSUPP?7 +uerrno.EPERM?7 +uerrno.ETIMEDOUT?7 +uerrno.errorcode?7 +uhashlib.md5.digest?4() +uhashlib.md5.update?4(data) +uhashlib.md5?1(data=bytes()) +uhashlib.sha1.digest?4() +uhashlib.sha1.update?4(data) +uhashlib.sha1?1(data=bytes()) +uhashlib.sha256.digest?4() +uhashlib.sha256.update?4(data) +uhashlib.sha256?1(data=bytes()) +uheapq.heapify?4(x) +uheapq.heappop?4(heap) +uheapq.heappush?4(heap, item) +uio.BytesIO.close?4() +uio.BytesIO.flush?4() +uio.BytesIO.getvalue?4() +uio.BytesIO.read?4(size=-1) +uio.BytesIO.readinto?4(b) +uio.BytesIO.readline?4(size=-1) +uio.BytesIO.seek?4(offset, whence=0) +uio.BytesIO.write?4(b) +uio.BytesIO?1(initial_value=b"") +uio.FileIO.close?4() +uio.FileIO.flush?4() +uio.FileIO.read?4(size=-1) +uio.FileIO.readinto?4(b) +uio.FileIO.readline?4(size=-1) +uio.FileIO.readlines?4(hint=-1) +uio.FileIO.seek?4(offset, whence=0) +uio.FileIO.tell?4() +uio.FileIO.write?4(b) +uio.FileIO?1(name, mode='r', **kwargs) +uio.StringIO.close?4() +uio.StringIO.flush?4() +uio.StringIO.getvalue?4() +uio.StringIO.read?4(size=-1) +uio.StringIO.readinto?4(b) +uio.StringIO.readline?4(size=-1) +uio.StringIO.seek?4(offset, whence=0) +uio.StringIO.write?4(s) +uio.StringIO?1(initial_value="") +uio.TextIOWrapper.close?4() +uio.TextIOWrapper.flush?4() +uio.TextIOWrapper.read?4(size=-1) +uio.TextIOWrapper.readinto?4(b) +uio.TextIOWrapper.readline?4(size=-1) +uio.TextIOWrapper.readlines?4(hint=-1) +uio.TextIOWrapper.seek?4(offset, whence=0) +uio.TextIOWrapper.tell?4() +uio.TextIOWrapper.write?4(s) +uio.TextIOWrapper?1(name, mode='r', **kwargs) +uio.open?4(name, mode='r', **kwargs) +ujson.dump?4(obj, stream) +ujson.dumps?4(obj) +ujson.load?4(stream) +ujson.loads?4(string) +uos.AbstractBlockDev.ioctl?4(op, arg) +uos.AbstractBlockDev.readblocks?4(block_num, buf) +uos.AbstractBlockDev.writeblocks?4(block_num, buf) +uos.AbstractBlockDev?1() +uos.VfsFat.mkfs?4() +uos.VfsFat?1(block_dev) +uos.chdir?4(path) +uos.dupterm?4(stream_object, index=0) +uos.getcwd?4() +uos.ilistdir?4(dir=".") +uos.listdir?4(dir=".") +uos.mkdir?4(path) +uos.mount?4(fsobj, mount_point, *, readonly) +uos.remove?4(path) +uos.rename?4(old_path, new_path) +uos.rmdir?4(path) +uos.stat?4(path) +uos.statvfs?4(path) +uos.sync?4() +uos.umount?4(mount_point) +uos.uname?4() +uos.urandom?4(n) +ure.DEBUG?7 +ure.compile?4(regex_str, flags=0) +ure.match?4(regex_str, string) +ure.match_object.end?4(index=0) +ure.match_object.group?4(index) +ure.match_object.groups?4() +ure.match_object.span?4(index=0) +ure.match_object.start?4(index=0) +ure.regex_object.match?4(string) +ure.regex_object.search?4(string) +ure.regex_object.split?4(string, max_split=-1) +ure.regex_object.sub?4(replace, string, count=0, flags=0) +ure.search?4(regex_str, string) +ure.sub?4(regex_str, replace, string, count=0, flags=0) +uselect.POLLERR?7 +uselect.POLLHUP?7 +uselect.POLLIN?7 +uselect.POLLOUT?7 +uselect.Poll.ipoll?4(timeout=-1, flags=0) +uselect.Poll.modify?4(obj, eventmask) +uselect.Poll.poll?4(timeout=-1) +uselect.Poll.register?4(obj, eventmask = POLLIN | POLLOUT) +uselect.Poll.unregister?4(obj) +uselect.poll?4() +uselect.select?4(rlist, wlist, xlist, timeout=-1) +usocket.AF_INET6?7 +usocket.AF_INET?7 +usocket.IPPROTO_IP?7 +usocket.IPPROTO_TCP?7 +usocket.IPPROTO_UDP?7 +usocket.IP_ADD_MEMBERSHIP?7 +usocket.SOCK_DGRAM?7 +usocket.SOCK_RAW?7 +usocket.SOCK_STREAM?7 +usocket.SOL_SOCKET?7 +usocket.SO_REUSEADDR?7 +usocket.Socket.accept?4() +usocket.Socket.bind?4(address) +usocket.Socket.close?4() +usocket.Socket.connect?4(address) +usocket.Socket.listen?4(backlog=None) +usocket.Socket.makefile?4(mode='rb', buffering=0) +usocket.Socket.read?4(size=None) +usocket.Socket.readinto?4(buf, nbytes=None) +usocket.Socket.readline?4() +usocket.Socket.recv?4(bufsize) +usocket.Socket.recvfrom?4(bufsize) +usocket.Socket.send?4(bytes) +usocket.Socket.sendall?4(bytes) +usocket.Socket.sendto?4(bytes, address) +usocket.Socket.setblocking?4(flag) +usocket.Socket.setsockopt?4(level, optname, value) +usocket.Socket.settimeout?4(value) +usocket.Socket.write?4(buf) +usocket.getaddrinfo?4(host, port, af=0, type=0, proto=0, flags=0) +usocket.inet_ntop?4(af, bin_addr) +usocket.inet_pton?4(af, txt_addr) +usocket.socket?4(af=AF_INET, type=SOCK_STREAM, proto=IPPROTO_TCP) +ussl.CERT_NONE?7 +ussl.CERT_OPTIONAL?7 +ussl.CERT_REQUIRED?7 +ussl.wrap_socket?4(sock, server_side=False, keyfile=None, certfile=None, cert_reqs=CERT_NONE, ca_certs=None) +ustruct.calcsize?4(fmt) +ustruct.pack?4(fmt, *variables) +ustruct.pack_into?4(fmt, buffer, offset, *variables) +ustruct.unpack?4(fmt, data) +ustruct.unpack_from?4(fmt, data, offset=0) +utime.localtime?4(secs=None) +utime.sleep?4(seconds) +utime.sleep_ms?4(ms) +utime.sleep_us?4(us) +utime.ticks_add?4(ticks, delta) +utime.ticks_cpu?4() +utime.ticks_diff?4(ticks1, ticks2) +utime.ticks_ms?4() +utime.ticks_us?4() +utime.time?4() +uzlib.DecompIO?1(stream, wbits=0) +uzlib.decompress?4(data, wbits=0, bufsize=0)
--- a/micropython.e4p Sat Aug 24 18:31:16 2019 +0200 +++ b/micropython.e4p Sun Aug 25 19:25:37 2019 +0200 @@ -14,8 +14,33 @@ <Eol index="1"/> <Sources> <Source>MicroPython/array.py</Source> + <Source>MicroPython/btree.py</Source> <Source>MicroPython/cmath.py</Source> + <Source>MicroPython/framebuf.py</Source> <Source>MicroPython/gc.py</Source> + <Source>MicroPython/machine.py</Source> + <Source>MicroPython/math.py</Source> + <Source>MicroPython/micropython.py</Source> + <Source>MicroPython/network.py</Source> + <Source>MicroPython/pyb.py</Source> + <Source>MicroPython/sys.py</Source> + <Source>MicroPython/ubinascii.py</Source> + <Source>MicroPython/ucollections.py</Source> + <Source>MicroPython/ucryptolib.py</Source> + <Source>MicroPython/uctypes.py</Source> + <Source>MicroPython/uerrno.py</Source> + <Source>MicroPython/uhashlib.py</Source> + <Source>MicroPython/uheapq.py</Source> + <Source>MicroPython/uio.py</Source> + <Source>MicroPython/ujson.py</Source> + <Source>MicroPython/uos.py</Source> + <Source>MicroPython/ure.py</Source> + <Source>MicroPython/uselect.py</Source> + <Source>MicroPython/usocket.py</Source> + <Source>MicroPython/ussl.py</Source> + <Source>MicroPython/ustruct.py</Source> + <Source>MicroPython/utime.py</Source> + <Source>MicroPython/uzlib.py</Source> <Source>Microbit/audio.py</Source> <Source>Microbit/machine.py</Source> <Source>Microbit/microbit/__init__.py</Source> @@ -153,6 +178,7 @@ <FiletypeAssociation pattern="*.idl" type="INTERFACES"/> <FiletypeAssociation pattern="*.md" type="OTHERS"/> <FiletypeAssociation pattern="*.proto" type="PROTOCOLS"/> + <FiletypeAssociation pattern="*.py" type="SOURCES"/> <FiletypeAssociation pattern="*.rst" type="OTHERS"/> <FiletypeAssociation pattern="*.sh" type="OTHERS"/> <FiletypeAssociation pattern="*.txt" type="OTHERS"/>