BradenM / micropy-stubs

Automatically Generated Stub Packages for Micropy-Cli and whomever else
Other
29 stars 6 forks source link

Cannot create stubs on WiPy #10

Closed JonathanVusich closed 2 years ago

JonathanVusich commented 4 years ago

I tried creating stubs for my WiPy, but got this error message at the end. Any ideas on what may cause this?

C:\Users\Jonathan\Documents\GitHub\weather-station>micropy stubs create COM7

MicroPy  Connecting to Pyboard @ COM7
MicroPy  ✔ Connected!
MicroPy  Executing stubber on pyboard...
MicroPy  Pyboard  Stub module: uasyncio/core
MicroPy  Pyboard  Stub module: umqtt/robust
MicroPy  Pyboard  Stub module: umqtt/simple
MicroPy  Pyboard  Stub module: urllib/urequest
MicroPy  Pyboard  Stub module: _thread
MicroPy  Pyboard  Stub module: ak8963
MicroPy  Pyboard  Stub module: apa102
MicroPy  Pyboard  Stub module: apa106
MicroPy  Pyboard  Stub module: array
MicroPy  Pyboard  Stub module: binascii
MicroPy  Pyboard  Stub module: btree
MicroPy  Pyboard  Stub module: builtins
MicroPy  Pyboard  Stub module: cmath
MicroPy  Pyboard  Stub module: collections
MicroPy  Pyboard  Stub module: crypto
MicroPy  Pyboard  Stub module: curl
MicroPy  Pyboard  Stub module: dht
MicroPy  Pyboard  Stub module: display
MicroPy  Pyboard  Stub module: ds18x20
MicroPy  Pyboard  Stub module: errno
MicroPy  Pyboard  Stub module: e p
MicroPy  Pyboard  Stub module: esp32
MicroPy  Pyboard  Stub module: flashbdev
MicroPy  Pyboard  Stub module: framebuf
MicroPy  Pyboard  Stub module: freesans20
MicroPy  Pyboard  Stub module: functools
MicroPy  Pyboard  Stub module: gc
MicroPy  Pyboard  Stub module: gsm
MicroPy  Pyboard  Stub module: hashlib
MicroPy  Pyboard  Stub module: heapq
MicroPy  Pyboard  Stub module: inisetup
MicroPy  Pyboard  Stub module: io
MicroPy  Pyboard  Stub module: json
MicroPy  Pyboard  Stub module: logging
MicroPy  Pyboard  Stub module: lwip
MicroPy  Pyboard  Stub module: machine
MicroPy  Pyboard  Stub module: math
MicroPy  Pyboard  Stub module: microWebSocket
MicroPy  Pyboard  Stub module: microWebSrv
MicroPy  Pyboard  Stub module: microWebTemplate
MicroPy  Pyboard  Stub module: micropython
MicroPy  Pyboard  Stub module: mpu6500
MicroPy  Pyboard  Stub module: mpu9250
MicroPy  Pyboard  Stub module: neopixel
MicroPy  Pyboard  Stub module: network
MicroPy  Pyboard  Stub module: ntptime
MicroPy  Pyboard  Stub module: onewire
MicroPy  Pyboard  Stub module: os
MicroPy  Pyboard  Stub module: port_diag
MicroPy  Pyboard  Stub module: pycom
MicroPy  Pyboard  Stub module: pye
MicroPy  Pyboard  Stub module: random
MicroPy  Pyboard  Stub module: re
MicroPy  Pyboard  Stub module: requests
MicroPy  Pyboard  Stub module: select
MicroPy  Pyboard  Stub module: socket
MicroPy  Pyboard  Stub module: ssd1306
MicroPy  Pyboard  Stub module: ssh
MicroPy  Pyboard  Stub module: ssl
MicroPy  Pyboard  Stub module: struct
MicroPy  Pyboard  Stub module: sys
MicroPy  Pyboard  Stub module: time
MicroPy  Pyboard  Stub module: tpcalib
MicroPy  Pyboard  Stub module: ubinascii
MicroPy  Pyboard  Stub module: ucollections
MicroPy  Pyboard  Stub module: ucryptolib
MicroPy  Pyboard  Stub module: uctypes
MicroPy  Pyboard  Stub module: uerrno
MicroPy  Pyboard  Stub module: uhashlib
MicroPy  Pyboard  Stub module: uheapq
MicroPy  Pyboard  Stub module: uio
MicroPy  Pyboard  Stub module: ujson
MicroPy  Pyboard  Stub module: uos
MicroPy  Pyboard  Stub module: upip
MicroPy  Pyboard  Stub module: upip_utarfile
MicroPy  Pyboard  Stub module: urandom
MicroPy  Pyboard  Stub module: ure
MicroPy  Pyboard  Stub module: urequests
MicroPy  Pyboard  Stub module: uselect
MicroPy  Pyboard  Stub module: usocket
MicroPy  Pyboard  Stub module: ussl
MicroPy  Pyboard  Stub module: ustruct
MicroPy  Pyboard  Stub module: utime
MicroPy  Pyboard  Stub module: utimeq
MicroPy  Pyboard  Stub module: uwebsocket
MicroPy  Pyboard  Stub module: uzlib
MicroPy  Pyboard  Stub module: websocket
MicroPy  Pyboard  Stub module: websocket_helper
MicroPy  Pyboard  Stub module: writer
MicroPy  Pyboard  Stub module: ymodem
MicroPy  Pyboard  Stub module: zlib
MicroPy  ✔ Done!
MicroPy  Copying stubs...
Source directory /pyboard/stubs does not exist.
Traceback (most recent call last):
  File "c:\python38\lib\runpy.py", line 194, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "c:\python38\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "C:\Python38\Scripts\micropy.exe\__main__.py", line 9, in <module>
  File "c:\python38\lib\site-packages\click\core.py", line 829, in __call__
    return self.main(*args, **kwargs)
  File "c:\python38\lib\site-packages\click\core.py", line 782, in main
    rv = self.invoke(ctx)
  File "c:\python38\lib\site-packages\click\core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "c:\python38\lib\site-packages\click\core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "c:\python38\lib\site-packages\click\core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "c:\python38\lib\site-packages\click\core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "c:\python38\lib\site-packages\click\decorators.py", line 73, in new_func
    return ctx.invoke(f, obj, *args, **kwargs)
  File "c:\python38\lib\site-packages\click\core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "c:\python38\lib\site-packages\micropy\cli.py", line 280, in create
    return mpy.create_stubs(port, verbose=verbose)
  File "c:\python38\lib\site-packages\micropy\main.py", line 124, in create_stubs
    stub_path = next(out_dir.iterdir())
StopIteration
mattytrentini commented 4 years ago

I have the same error when running against on an STM32WB55 with a daily build of 1.12, running on Windows 10.

I suspect the issue is that the source path for the copy looks incorrect on this platform when fed into rshell. Using rshell and directly connecting to the device:

firmware> ls /pyboard/stubs
Cannot access '/pyboard/stubs': No such file or directory
firmware> ls /flash/stubs
pyboard_v1_12/
firmware> ls /pyboard/flash/stubs
pyboard_v1_12/

Note that /pyboard/stubs is invalid but flash/stubs or /pyboard/flash/stubs seem correct.

mattytrentini commented 4 years ago

Dirty hack/workaround...modify pybwrapper.py:63 (installed here: [virtual-env]\Lib\site-packages\micropy\utils\pybwrapper.py) from:

pyb_path = f"{self.pyb_root}{_path}"

to

pyb_path = f"/flash/{_path}"

micropy stubs create [COMX] will then successfully complete.

A more correct solution appears to be to modify the return of rsh.find_serial_device_by_port() or pyb_root().

edwardjedmonds commented 4 years ago

Dirty hack/workaround...modify pybwrapper.py:63 (installed here: [virtual-env]\Lib\site-packages\micropy\utils\pybwrapper.py) from:

pyb_path = f"{self.pyb_root}{_path}"

to

pyb_path = f"/flash/{_path}"

micropy stubs create [COMX] will then successfully complete.

A more correct solution appears to be to modify the return of rsh.find_serial_device_by_port() or pyb_root().

This worked for me on the stock pyboard 1.1 with 1.13 firmware and windows 10.

Josverl commented 3 years ago

Interesting as V1.13.0 has a [bug] (https://github.com/micropython/micropython/issues/6493) that prevents the subbing process to work. Are you sure that it was not a nightly build 103 or later?

If you need the stubs for 1.13.0-103 you can grab a copy at https://github.com/josverl/micropython-stubs