Skip to content

[intellisense bug] Unable to access underlying AVM native data types (using VS Code w/ Pylance v2025.4.1) #460

@th0tmaker

Description

@th0tmaker

Issue synopsis

Spotted this issue about a month ago the first time, tried to reproduce it again recently and saw it still wasn't resolved. I am not sure this is a puya py compiler issue specifically, but i didn't know where else to report it. So basically, I was working on my smart contract using the algopy module and the VS Code IDE that's using Pylance for Python-related intellisense handling. My Pylance extension has the auto-update feature on, and when it got updated from version 2025.3.2 to version 2025.4.1, i was no longer able to access (or even see) the native data types properties Uin64 and Bytes from various ARC4 data types. In example:

abc = arc4.UInt16(100)

Both abc.native and abc.bytes are not provided/recognized by the PyLance v2025.4.1 intellisense feature in my VS Code editor. However, the compiler itself recognizes them and is able to correctly parse both of these commands and build the smart contract without any errors.

Environment info

language: algorand-python
framework: algokit
module: algopy
compiler: puyapy

Algokit Doctor output

AlgoKit: 2.6.2
AlgoKit Python: 3.13.0
OS: Windows-11-10.0.26100-SP0
docker: 28.0.4
docker compose: 2.34.0-desktop.1
git: 2.47.0.windows.2
python: 3.13.0
python3: 3.13.0
pipx: 1.7.1
poetry: 2.1.1
node: 23.1.0
npm: 10.9.0
winget: 1.10.390

Steps to reproduce

  1. Use VS Code
  2. Use the Pylance extension and upgrade to the latest version (v2025.4.1)
  3. Define any algopy ARC4 data type (except arc4.Struct, if i recall correctly from about a month ago, i was able to successfully access the underlying bytes of this particular ARC4 data type weirdly enough, but not others)
  4. Try accessing it's underlying AVM native data types

Expected behaviour

You should be able to access the underlying AVM native data types (Uin64 and Bytes) from any ARC4 data type using Pylance.

Actual behaviour

You aren't able to do the above using Pylance v2025.4.1 , barring some exceptions (like the underlying bytes of arc4.Struct).

Current workaround

Downgrading to the previous version of Pylance v2025.3.2 still works as expected and intended.

Visual evidence

Image

Image

Forgot to mention

As one of the images above depicts, Pylance v2025.4.1 is also unable to properly retrieve/recognize the correct ensuing data type from performing an operation. In example.

abc = arc4.UInt16(100)
result = abc.native + UInt64(400)

The result variable here (on mouse hover to inspect w/ Pylance) should be recognized as type UIn64. However, Plyance v.2025.4.1 does not recognize the type as such, but rather, it shows Any.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions