Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Intellisense not working for Panel package with Pylance Language Server #2572

Closed
MarcSkovMadsen opened this issue Apr 16, 2022 · 10 comments
Closed
Labels
reference waiting for user response Requires more information from user

Comments

@MarcSkovMadsen
Copy link

MarcSkovMadsen commented Apr 16, 2022

Environment data

Pylance language server 2022.1.3 (pyright 98868f26)
Windows 10 Enterprise
Python 3.9.4 (PSF distribution)
VS Code 1.57.1
Panel==0.13.0

Expected behavior (with Jedi)

image

image

The above is with

image

Actual behavior (with Pylance)

image

image

As you can see only the sub-modules of the package are available. Not the other objects imported in the __init__.py files. For example the Accordion does not show up when expanding pn..

The above is with

image

Reproduce

  1. Create a new virtual environment python -m venv .venv
  2. Activate the virtual environment source .venv/Scripts/activate
  3. Open VS Code
  4. Create a script.py file
  5. Select the environment above as the Python interpreter
  6. Add the code below to the script.py file.
import panel as pn

pn.
  1. Activate tab-completion/ intellisense using CTRL+Space

Additional Context

I'm a contributor to Panel and would like to find the root cause and fix it, if the cause is on the Panel side. I've opened an issue with Panel here holoviz/panel#3400.

Any hints at how to identify the cause would be greatly appreciated. Thanks.

Logs

[Info  - 05.42.12] Pylance language server 2022.1.3 (pyright 98868f26) starting
[Info  - 05.42.12] Server root directory: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist
[Info  - 05.42.13] Background analysis(1) root directory: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist
[Info  - 05.42.13] Background analysis(1) started
[Info  - 05.42.13] No configuration file found.
[Info  - 05.42.13] No pyproject.toml file found.
[Info  - 05.42.13] Setting pythonPath for service "now": "c:\repos\private\now\.venv\Scripts\python.exe"
[Warn  - 05.42.13] stubPath c:\repos\private\now\typings is not a valid directory.
[Info  - 05.42.14] Assuming Python version 3.9
[Info  - 05.42.14] Assuming Python platform Windows
Search paths for c:\repos\private\now
  c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib
  c:\repos\private\now
  c:\repos\private\now\typings
  c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stubs\...
  c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\bundled\stubs
  c:\Program Files\Python39\DLLs
  c:\Program Files\Python39\Lib
  c:\Program Files\Python39
  c:\repos\private\now\.venv
  c:\repos\private\now\.venv\Lib\site-packages
[Info  - 05.42.14] Searching for source files
[Info  - 05.42.14] Auto-excluding c:\repos\private\now\.venv
[Info  - 05.42.14] Found 1 source file
[FG] parsing: c:\repos\private\now\script.py (23ms)
[FG] parsing: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\builtins.pyi [fs read 3ms] (127ms)
[FG] binding: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\builtins.pyi (54ms)
[FG] binding: c:\repos\private\now\script.py (0ms)
Background analysis message: setConfigOptions
Background analysis message: setImportResolver
Background analysis message: ensurePartialStubPackages
Background analysis message: setTrackedFiles
Background analysis message: markAllFilesDirty
Background analysis message: setFileOpened
Background analysis message: getDiagnosticsForRange
Background analysis message: analyze
[BG(1)] analyzing: c:\repos\private\now\script.py ...
[BG(1)]   parsing: c:\repos\private\now\script.py (22ms)
[BG(1)]   parsing: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\builtins.pyi [fs read 4ms] (145ms)
[BG(1)]   binding: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\builtins.pyi (52ms)
[BG(1)]   binding: c:\repos\private\now\script.py (0ms)
[BG(1)]   checking: c:\repos\private\now\script.py ...
[BG(1)]     parsing: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\typing_extensions.pyi [fs read 2ms] (10ms)
[BG(1)]     binding: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\typing_extensions.pyi (2ms)
[BG(1)]     parsing: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\typing.pyi [fs read 0ms] (40ms)
[BG(1)]     binding: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\typing.pyi (12ms)
[Info  - 05.42.14] Indexer background runner(2) root directory: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist
[Info  - 05.42.14] Indexing(2) started
Loading ONNX runtime...
Loaded ONNX runtime. Creating IntelliCode session...
Created IntelliCode session.
Initialize deeplearning succeeded
[BG(1)]     parsing: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\_typeshed\__init__.pyi [fs read 1ms] (11ms)
[BG(1)]     binding: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\_typeshed\__init__.pyi (2ms)
[BG(1)]     parsing: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\abc.pyi [fs read 1ms] (1ms)
[BG(1)]     binding: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\abc.pyi (0ms)
[BG(1)]     parsing: c:\repos\private\now\.venv\Lib\site-packages\panel\__init__.py [fs read 0ms] (14ms)
[BG(1)]     binding: c:\repos\private\now\.venv\Lib\site-packages\panel\__init__.py (1ms)
[BG(1)]   checking: c:\repos\private\now\script.py (125ms)
[BG(1)] analyzing: c:\repos\private\now\script.py (347ms)
Background analysis message: getDiagnosticsForRange
Background analysis message: resumeAnalysis
[BG(1)] indexing: c:\repos\private\now\script.py [found 0] (0ms)
Indexing Done: c:\repos\private\now\script.py
Background analysis message: getSemanticTokens range
[BG(1)] getSemanticTokens range 0:0 - 2:2 at c:\repos\private\now\script.py (3ms)
Background analysis message: getSemanticTokens full
[BG(1)] getSemanticTokens full at c:\repos\private\now\script.py (1ms)
[IDX(2)] index libraries c:\repos\private\now ...
[IDX(2)]   read stdlib indices (199ms)
Created IntelliCode session.
Initialize deeplearning succeeded
[IDX(2)]   scan packages [found 39 modules over 1 exec env] (424ms)
[IDX(2)]   index execution environment c:\repos\private\now ...
[IDX(2)]     parsing: c:\Program Files\Python39\Lib\xml\__init__.py [fs read 0ms] (25ms)
[IDX(2)]     parsing: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\builtins.pyi [fs read 3ms] (76ms)
[IDX(2)]     binding: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\builtins.pyi (16ms)
[IDX(2)]     binding: c:\Program Files\Python39\Lib\xml\__init__.py (0ms)
[IDX(2)]     indexing: c:\Program Files\Python39\Lib\xml\__init__.py [found 0] (0ms)
[IDX(2)]     parsing: c:\repos\private\now\.venv\Lib\site-packages\bleach\__init__.py [fs read 2ms] (13ms)
[IDX(2)]     binding: c:\repos\private\now\.venv\Lib\site-packages\bleach\__init__.py (1ms)
[IDX(2)]     indexing: c:\repos\private\now\.venv\Lib\site-packages\bleach\__init__.py [found 2] (0ms)
[IDX(2)]     parsing: c:\repos\private\now\.venv\Lib\site-packages\bokeh\__init__.py [fs read 0ms] (12ms)
[IDX(2)]     binding: c:\repos\private\now\.venv\Lib\site-packages\bokeh\__init__.py (0ms)
[IDX(2)]     indexing: c:\repos\private\now\.venv\Lib\site-packages\bokeh\__init__.py ...
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\bokeh\util\version.py [fs read 1ms] (2ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\bokeh\util\version.py (0ms)
[IDX(2)]     indexing: c:\repos\private\now\.venv\Lib\site-packages\bokeh\__init__.py [found 2] (4ms)
[IDX(2)]     parsing: c:\repos\private\now\.venv\Lib\site-packages\charset_normalizer\__init__.py [fs read 0ms] (4ms)
[IDX(2)]     binding: c:\repos\private\now\.venv\Lib\site-packages\charset_normalizer\__init__.py (0ms)
[IDX(2)]     indexing: c:\repos\private\now\.venv\Lib\site-packages\charset_normalizer\__init__.py ...
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\charset_normalizer\api.py [fs read 0ms] (17ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\charset_normalizer\api.py (1ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\charset_normalizer\legacy.py [fs read 1ms] (2ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\charset_normalizer\legacy.py (0ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\charset_normalizer\models.py [fs read 1ms] (14ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\charset_normalizer\models.py (1ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\charset_normalizer\utils.py [fs read 1ms] (15ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\charset_normalizer\utils.py (1ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\charset_normalizer\version.py [fs read 0ms] (1ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\charset_normalizer\version.py (0ms)
[IDX(2)]     indexing: c:\repos\private\now\.venv\Lib\site-packages\charset_normalizer\__init__.py [found 21] (54ms)
[IDX(2)]     parsing: c:\repos\private\now\.venv\Lib\site-packages\idna\__init__.py [fs read 0ms] (1ms)
[IDX(2)]     binding: c:\repos\private\now\.venv\Lib\site-packages\idna\__init__.py (0ms)
[IDX(2)]     indexing: c:\repos\private\now\.venv\Lib\site-packages\idna\__init__.py ...
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\idna\package_data.py [fs read 1ms] (1ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\idna\package_data.py (0ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\idna\core.py [fs read 1ms] (7ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\idna\core.py (1ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\idna\intranges.py [fs read 0ms] (6ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\idna\intranges.py (0ms)
[IDX(2)]     indexing: c:\repos\private\now\.venv\Lib\site-packages\idna\__init__.py [found 24] (15ms)
[IDX(2)]     parsing: c:\repos\private\now\.venv\Lib\site-packages\importlib_metadata\__init__.py [fs read 0ms] (14ms)
[IDX(2)]     binding: c:\repos\private\now\.venv\Lib\site-packages\importlib_metadata\__init__.py (1ms)
[IDX(2)]     indexing: c:\repos\private\now\.venv\Lib\site-packages\importlib_metadata\__init__.py ...
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\importlib_metadata\_collections.py [fs read 0ms] (1ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\importlib_metadata\_collections.py (0ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\importlib_metadata\_compat.py [fs read 0ms] (1ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\importlib_metadata\_compat.py (0ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\importlib_metadata\_functools.py [fs read 1ms] (1ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\importlib_metadata\_functools.py (0ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\importlib_metadata\_itertools.py [fs read 1ms] (1ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\importlib_metadata\_itertools.py (1ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\importlib_metadata\_meta.py [fs read 0ms] (1ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\importlib_metadata\_meta.py (0ms)
[IDX(2)]       parsing: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\contextlib.pyi [fs read 1ms] (6ms)
[IDX(2)]       binding: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\contextlib.pyi (1ms)
[IDX(2)]       parsing: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\importlib\__init__.pyi [fs read 0ms] (1ms)
[IDX(2)]       binding: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\importlib\__init__.pyi (0ms)
[IDX(2)]       parsing: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\importlib\abc.pyi [fs read 0ms] (2ms)
[IDX(2)]       binding: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\importlib\abc.pyi (0ms)
[IDX(2)]       parsing: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\itertools.pyi [fs read 0ms] (2ms)
[IDX(2)]       binding: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\itertools.pyi (1ms)
[IDX(2)]       parsing: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\typing.pyi [fs read 0ms] (8ms)
[IDX(2)]       binding: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\typing.pyi (1ms)
[IDX(2)]     indexing: c:\repos\private\now\.venv\Lib\site-packages\importlib_metadata\__init__.py [found 66] (30ms)
[IDX(2)]     parsing: c:\repos\private\now\.venv\Lib\site-packages\jinja2\__init__.py [fs read 0ms] (2ms)
[IDX(2)]     binding: c:\repos\private\now\.venv\Lib\site-packages\jinja2\__init__.py (0ms)
[IDX(2)]     indexing: c:\repos\private\now\.venv\Lib\site-packages\jinja2\__init__.py ...
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\jinja2\bccache.py [fs read 0ms] (3ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\jinja2\bccache.py (1ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\jinja2\environment.py [fs read 1ms] (8ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\jinja2\environment.py (0ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\jinja2\exceptions.py [fs read 1ms] (1ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\jinja2\exceptions.py (1ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\jinja2\loaders.py [fs read 0ms] (2ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\jinja2\loaders.py (0ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\jinja2\runtime.py [fs read 1ms] (6ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\jinja2\runtime.py (1ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\jinja2\utils.py [fs read 1ms] (6ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\jinja2\utils.py (0ms)
[IDX(2)]     indexing: c:\repos\private\now\.venv\Lib\site-packages\jinja2\__init__.py [found 38] (34ms)
[IDX(2)]     parsing: c:\repos\private\now\.venv\Lib\site-packages\markdown\__init__.py [fs read 0ms] (2ms)
[IDX(2)]     binding: c:\repos\private\now\.venv\Lib\site-packages\markdown\__init__.py (0ms)
[IDX(2)]     indexing: c:\repos\private\now\.venv\Lib\site-packages\markdown\__init__.py ...
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\markdown\core.py [fs read 1ms] (8ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\markdown\core.py (0ms)
[IDX(2)]     indexing: c:\repos\private\now\.venv\Lib\site-packages\markdown\__init__.py [found 3] (8ms)
[IDX(2)]     parsing: c:\repos\private\now\.venv\Lib\site-packages\markupsafe\__init__.py [fs read 0ms] (7ms)
[IDX(2)]     binding: c:\repos\private\now\.venv\Lib\site-packages\markupsafe\__init__.py (1ms)
[IDX(2)]     indexing: c:\repos\private\now\.venv\Lib\site-packages\markupsafe\__init__.py ...
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\markupsafe\_speedups.pyi [fs read 0ms] (1ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\markupsafe\_speedups.pyi (0ms)
[IDX(2)]     indexing: c:\repos\private\now\.venv\Lib\site-packages\markupsafe\__init__.py [found 20] (1ms)
[IDX(2)]     parsing: c:\repos\private\now\.venv\Lib\site-packages\numbergen\__init__.py [fs read 0ms] (6ms)
[IDX(2)]     binding: c:\repos\private\now\.venv\Lib\site-packages\numbergen\__init__.py (2ms)
[IDX(2)]     indexing: c:\repos\private\now\.venv\Lib\site-packages\numbergen\__init__.py [found 0] (0ms)
[IDX(2)]     parsing: c:\repos\private\now\.venv\Lib\site-packages\numpy\__init__.pyi [fs read 0ms] (116ms)
[IDX(2)]     binding: c:\repos\private\now\.venv\Lib\site-packages\numpy\__init__.pyi (12ms)
[IDX(2)]     indexing: c:\repos\private\now\.venv\Lib\site-packages\numpy\__init__.pyi ...
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\numpy\typing\_extended_precision.py [fs read 0ms] (4ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\numpy\typing\_extended_precision.py (1ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\numpy\core\function_base.pyi [fs read 0ms] (1ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\numpy\core\function_base.pyi (1ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\numpy\core\fromnumeric.pyi [fs read 0ms] (6ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\numpy\core\fromnumeric.pyi (2ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\numpy\core\_asarray.pyi [fs read 1ms] (2ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\numpy\core\_asarray.pyi (0ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\numpy\core\_type_aliases.pyi [fs read 0ms] (0ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\numpy\core\_type_aliases.pyi (1ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\numpy\core\_ufunc_config.pyi [fs read 0ms] (0ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\numpy\core\_ufunc_config.pyi (1ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\numpy\core\arrayprint.pyi [fs read 0ms] (1ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\numpy\core\arrayprint.pyi (1ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\numpy\core\einsumfunc.pyi [fs read 0ms] (2ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\numpy\core\einsumfunc.pyi (1ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\numpy\core\multiarray.pyi [fs read 1ms] (12ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\numpy\core\multiarray.pyi (3ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\numpy\core\numeric.pyi [fs read 0ms] (8ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\numpy\core\numeric.pyi (5ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\numpy\core\numerictypes.pyi [fs read 0ms] (1ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\numpy\core\numerictypes.pyi (1ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\numpy\core\shape_base.pyi [fs read 0ms] (1ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\numpy\core\shape_base.pyi (0ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\numpy\lib\__init__.pyi [fs read 1ms] (4ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\numpy\lib\__init__.pyi (0ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\numpy\lib\arraypad.pyi [fs read 0ms] (1ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\numpy\lib\arraypad.pyi (0ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\numpy\lib\arraysetops.pyi [fs read 0ms] (5ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\numpy\lib\arraysetops.pyi (1ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\numpy\lib\arrayterator.pyi [fs read 0ms] (1ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\numpy\lib\arrayterator.pyi (0ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\numpy\lib\function_base.pyi [fs read 0ms] (5ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\numpy\lib\function_base.pyi (1ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\numpy\lib\histograms.pyi [fs read 1ms] (1ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\numpy\lib\histograms.pyi (0ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\numpy\lib\index_tricks.pyi [fs read 0ms] (1ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\numpy\lib\index_tricks.pyi (0ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\numpy\lib\nanfunctions.pyi [fs read 0ms] (1ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\numpy\lib\nanfunctions.pyi (0ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\numpy\lib\npyio.pyi [fs read 0ms] (4ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\numpy\lib\npyio.pyi (1ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\numpy\lib\polynomial.pyi [fs read 0ms] (2ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\numpy\lib\polynomial.pyi (1ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\numpy\lib\shape_base.pyi [fs read 1ms] (2ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\numpy\lib\shape_base.pyi (0ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\numpy\lib\stride_tricks.pyi [fs read 1ms] (1ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\numpy\lib\stride_tricks.pyi (2ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\numpy\lib\twodim_base.pyi [fs read 1ms] (4ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\numpy\lib\twodim_base.pyi (1ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\numpy\lib\type_check.pyi [fs read 0ms] (2ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\numpy\lib\type_check.pyi (0ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\numpy\lib\ufunclike.pyi [fs read 1ms] (1ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\numpy\lib\ufunclike.pyi (0ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\numpy\lib\utils.pyi [fs read 1ms] (1ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\numpy\lib\utils.pyi (1ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\numpy\matrixlib\__init__.pyi [fs read 0ms] (2ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\numpy\matrixlib\__init__.pyi (0ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\numpy\matrixlib\defmatrix.pyi [fs read 0ms] (1ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\numpy\matrixlib\defmatrix.pyi (0ms)
[IDX(2)]     indexing: c:\repos\private\now\.venv\Lib\site-packages\numpy\__init__.pyi [found 634] (108ms)
[IDX(2)]     parsing: c:\repos\private\now\.venv\Lib\site-packages\packaging\__init__.py [fs read 0ms] (1ms)
[IDX(2)]     binding: c:\repos\private\now\.venv\Lib\site-packages\packaging\__init__.py (0ms)
[IDX(2)]     indexing: c:\repos\private\now\.venv\Lib\site-packages\packaging\__init__.py ...
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\packaging\__about__.py [fs read 0ms] (1ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\packaging\__about__.py (0ms)
[IDX(2)]     indexing: c:\repos\private\now\.venv\Lib\site-packages\packaging\__init__.py [found 10] (1ms)
[IDX(2)]     parsing: c:\repos\private\now\.venv\Lib\site-packages\panel\__init__.py [fs read 0ms] (11ms)
[IDX(2)]     binding: c:\repos\private\now\.venv\Lib\site-packages\panel\__init__.py (0ms)
[IDX(2)]     indexing: c:\repos\private\now\.venv\Lib\site-packages\panel\__init__.py ...
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\panel\config.py [fs read 0ms] (4ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\panel\config.py (1ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\panel\depends.py [fs read 0ms] (1ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\panel\depends.py (1ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\panel\io\__init__.py [fs read 0ms] (1ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\panel\io\__init__.py (1ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\panel\io\notebook.py [fs read 0ms] (8ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\panel\io\notebook.py (2ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\panel\io\server.py [fs read 1ms] (17ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\panel\io\server.py (1ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\panel\io\state.py [fs read 1ms] (9ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\panel\io\state.py (1ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\panel\layout\__init__.py [fs read 0ms] (1ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\panel\layout\__init__.py (0ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\panel\layout\accordion.py [fs read 0ms] (6ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\panel\layout\accordion.py (0ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\panel\layout\card.py [fs read 1ms] (1ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\panel\layout\card.py (0ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\panel\layout\base.py [fs read 0ms] (2ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\panel\layout\base.py (0ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\panel\layout\grid.py [fs read 1ms] (4ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\panel\layout\grid.py (0ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\panel\layout\flex.py [fs read 0ms] (0ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\panel\layout\flex.py (1ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\panel\layout\tabs.py [fs read 0ms] (1ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\panel\layout\tabs.py (0ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\panel\layout\spacer.py [fs read 1ms] (1ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\panel\layout\spacer.py (0ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\panel\pane\__init__.py [fs read 1ms] (2ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\panel\pane\__init__.py (0ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\panel\pane\base.py [fs read 0ms] (2ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\panel\pane\base.py (0ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\panel\param.py [fs read 0ms] (3ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\panel\param.py (0ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\panel\template\__init__.py [fs read 0ms] (4ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\panel\template\__init__.py (0ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\panel\template\base.py [fs read 1ms] (4ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\panel\template\base.py (1ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\panel\widgets\__init__.py [fs read 0ms] (1ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\panel\widgets\__init__.py (1ms)
[IDX(2)]     indexing: c:\repos\private\now\.venv\Lib\site-packages\panel\__init__.py [found 27] (92ms)
[IDX(2)]     parsing: c:\repos\private\now\.venv\Lib\site-packages\pkg_resources\__init__.py [fs read 0ms] (17ms)
[IDX(2)]     binding: c:\repos\private\now\.venv\Lib\site-packages\pkg_resources\__init__.py (2ms)
[IDX(2)]     indexing: c:\repos\private\now\.venv\Lib\site-packages\pkg_resources\__init__.py ...
[IDX(2)]       parsing: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\pkgutil.pyi [fs read 0ms] (1ms)
[IDX(2)]       binding: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\pkgutil.pyi (0ms)
[IDX(2)]     indexing: c:\repos\private\now\.venv\Lib\site-packages\pkg_resources\__init__.py [found 71] (1ms)
[IDX(2)]     parsing: c:\repos\private\now\.venv\Lib\site-packages\pyparsing\__init__.py [fs read 0ms] (2ms)
[IDX(2)]     binding: c:\repos\private\now\.venv\Lib\site-packages\pyparsing\__init__.py ...
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\pyparsing\util.py [fs read 0ms] (1ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\pyparsing\util.py (0ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\pyparsing\exceptions.py [fs read 1ms] (1ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\pyparsing\exceptions.py (0ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\pyparsing\actions.py [fs read 0ms] (0ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\pyparsing\actions.py (0ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\pyparsing\results.py [fs read 0ms] (1ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\pyparsing\results.py (0ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\pyparsing\core.py [fs read 1ms] (10ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\pyparsing\core.py (3ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\pyparsing\helpers.py [fs read 1ms] (9ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\pyparsing\helpers.py (1ms)
[IDX(2)]     binding: c:\repos\private\now\.venv\Lib\site-packages\pyparsing\__init__.py (31ms)
[IDX(2)]     indexing: c:\repos\private\now\.venv\Lib\site-packages\pyparsing\__init__.py ...
[IDX(2)]       parsing: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\functools.pyi [fs read 1ms] (3ms)
[IDX(2)]       binding: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\functools.pyi (0ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\pyparsing\unicode.py [fs read 0ms] (55ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\pyparsing\unicode.py (0ms)
[IDX(2)]       parsing: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\collections\abc.pyi [fs read 1ms] (1ms)
[IDX(2)]       binding: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\collections\abc.pyi ...
[IDX(2)]         parsing: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\_collections_abc.pyi [fs read 1ms] (1ms)
[IDX(2)]         binding: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\_collections_abc.pyi (1ms)
[IDX(2)]       binding: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\collections\abc.pyi (2ms)
[IDX(2)]       parsing: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\weakref.pyi [fs read 1ms] (3ms)
[IDX(2)]       binding: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\weakref.pyi (0ms)
[IDX(2)]       parsing: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\_weakref.pyi [fs read 1ms] (1ms)
[IDX(2)]       binding: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\_weakref.pyi (1ms)
[IDX(2)]       parsing: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\abc.pyi [fs read 0ms] (1ms)
[IDX(2)]       binding: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\abc.pyi (0ms)
[IDX(2)]       parsing: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\enum.pyi [fs read 0ms] (5ms)
[IDX(2)]       binding: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\enum.pyi (1ms)
[IDX(2)]       parsing: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\operator.pyi [fs read 0ms] (3ms)
[IDX(2)]       binding: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\operator.pyi ...
[IDX(2)]         parsing: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\_operator.pyi [fs read 1ms] (6ms)
[IDX(2)]         binding: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\_operator.pyi (2ms)
[IDX(2)]       binding: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\operator.pyi (9ms)
[IDX(2)]       parsing: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\threading.pyi [fs read 0ms] (2ms)
[IDX(2)]       binding: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\threading.pyi (1ms)
[IDX(2)]       parsing: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\pathlib.pyi [fs read 1ms] (2ms)
[IDX(2)]       binding: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\pathlib.pyi (0ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\pyparsing\common.py [fs read 0ms] (1ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\pyparsing\common.py (1ms)
[IDX(2)]     indexing: c:\repos\private\now\.venv\Lib\site-packages\pyparsing\__init__.py [found 270] (96ms)
[IDX(2)]     parsing: c:\repos\private\now\.venv\Lib\site-packages\setuptools\__init__.py [fs read 0ms] (18ms)
[IDX(2)]     binding: c:\repos\private\now\.venv\Lib\site-packages\setuptools\__init__.py (1ms)
[IDX(2)]     indexing: c:\repos\private\now\.venv\Lib\site-packages\setuptools\__init__.py ...
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\setuptools\_deprecation_warning.py [fs read 0ms] (0ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\setuptools\_deprecation_warning.py (0ms)
[IDX(2)]       parsing: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stubs\setuptools\setuptools\extension.pyi [fs read 1ms] (1ms)
[IDX(2)]       binding: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stubs\setuptools\setuptools\extension.pyi (0ms)
[IDX(2)]       parsing: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stubs\setuptools\setuptools\dist.pyi [fs read 0ms] (1ms)
[IDX(2)]       binding: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stubs\setuptools\setuptools\dist.pyi (0ms)
[IDX(2)]       parsing: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stubs\setuptools\setuptools\depends.pyi [fs read 0ms] (0ms)
[IDX(2)]       binding: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stubs\setuptools\setuptools\depends.pyi (0ms)
[IDX(2)]     indexing: c:\repos\private\now\.venv\Lib\site-packages\setuptools\__init__.py [found 8] (3ms)
[IDX(2)]     parsing: c:\repos\private\now\.venv\Lib\site-packages\tornado\__init__.py [fs read 0ms] (2ms)
[IDX(2)]     binding: c:\repos\private\now\.venv\Lib\site-packages\tornado\__init__.py (0ms)
[IDX(2)]     indexing: c:\repos\private\now\.venv\Lib\site-packages\tornado\__init__.py [found 2] (0ms)
[IDX(2)]     parsing: c:\repos\private\now\.venv\Lib\site-packages\tqdm\__init__.py [fs read 0ms] (1ms)
[IDX(2)]     binding: c:\repos\private\now\.venv\Lib\site-packages\tqdm\__init__.py (0ms)
[IDX(2)]     indexing: c:\repos\private\now\.venv\Lib\site-packages\tqdm\__init__.py ...
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\tqdm\_monitor.py [fs read 1ms] (1ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\tqdm\_monitor.py (0ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\tqdm\_tqdm_pandas.py [fs read 1ms] (1ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\tqdm\_tqdm_pandas.py (0ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\tqdm\cli.py [fs read 1ms] (2ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\tqdm\cli.py (0ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\tqdm\gui.py [fs read 0ms] (1ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\tqdm\gui.py (0ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\tqdm\std.py [fs read 0ms] (4ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\tqdm\std.py (0ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\tqdm\version.py [fs read 1ms] (1ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\tqdm\version.py (0ms)
[IDX(2)]     indexing: c:\repos\private\now\.venv\Lib\site-packages\tqdm\__init__.py [found 17] (10ms)
[IDX(2)]     parsing: c:\repos\private\now\.venv\Lib\site-packages\urllib3\__init__.py [fs read 0ms] (2ms)
[IDX(2)]     binding: c:\repos\private\now\.venv\Lib\site-packages\urllib3\__init__.py (0ms)
[IDX(2)]     indexing: c:\repos\private\now\.venv\Lib\site-packages\urllib3\__init__.py ...
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\urllib3\connectionpool.py [fs read 1ms] (3ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\urllib3\connectionpool.py (0ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\urllib3\filepost.py [fs read 1ms] (1ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\urllib3\filepost.py (1ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\urllib3\poolmanager.py [fs read 0ms] (2ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\urllib3\poolmanager.py (1ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\urllib3\response.py [fs read 0ms] (3ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\urllib3\response.py (0ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\urllib3\util\request.py [fs read 1ms] (1ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\urllib3\util\request.py (1ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\urllib3\util\retry.py [fs read 0ms] (1ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\urllib3\util\retry.py (1ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\urllib3\util\timeout.py [fs read 0ms] (0ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\urllib3\util\timeout.py (1ms)
[IDX(2)]       parsing: c:\repos\private\now\.venv\Lib\site-packages\urllib3\util\url.py [fs read 0ms] (2ms)
[IDX(2)]       binding: c:\repos\private\now\.venv\Lib\site-packages\urllib3\util\url.py (1ms)
[IDX(2)]     indexing: c:\repos\private\now\.venv\Lib\site-packages\urllib3\__init__.py [found 14] (20ms)
[IDX(2)]   index execution environment c:\repos\private\now [found 10033 in 438 files] (906ms)
[IDX(2)] index libraries c:\repos\private\now [found 10033 in 1 exec envs] (1530ms)
[Info  - 05.42.16] Indexer done(2). indexed 438 files
Background analysis message: getDiagnosticsForRange
Background analysis message: getDiagnosticsForRange
Background analysis message: getDiagnosticsForRange
Background analysis message: getDiagnosticsForRange
[FG] parsing: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\typing_extensions.pyi [fs read 2ms] (16ms)
[FG] binding: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\typing_extensions.pyi (5ms)
[FG] parsing: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\typing.pyi [fs read 2ms] (44ms)
[FG] binding: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\typing.pyi (9ms)
[FG] parsing: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\_typeshed\__init__.pyi [fs read 1ms] (9ms)
[FG] binding: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\_typeshed\__init__.pyi (2ms)
[FG] parsing: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\abc.pyi [fs read 1ms] (1ms)
[FG] binding: c:\Users\masma\.vscode\extensions\ms-python.vscode-pylance-2022.1.3\dist\typeshed-fallback\stdlib\abc.pyi (0ms)
[FG] parsing: c:\repos\private\now\.venv\Lib\site-packages\panel\__init__.py [fs read 1ms] (9ms)
[FG] binding: c:\repos\private\now\.venv\Lib\site-packages\panel\__init__.py (1ms)
Background analysis message: setFileOpened
Background analysis message: markFilesDirty
[FG] completion at c:\repos\private\now\script.py:2:3 ...
[FG]   parsing: c:\repos\private\now\script.py (1ms)
[FG]   binding: c:\repos\private\now\script.py (0ms)
[FG] completion at c:\repos\private\now\script.py:2:3 [found 22 items] (8ms)

Lookback tokens:
 import,panel,as,pn,\n,panel,.

Recommendations: Panel, restore, config_file, manual_seed, add_argument, xavier_normal_, copyfileobj, setup, EVT_ERASE_BACKGROUND, seek
Time taken to get recommendations: 9 ms, Memory increase: 147 KB.
[FG] parsing: c:\repos\private\now\.venv\Lib\site-packages\panel\io\__init__.py [fs read 1ms] (3ms)
[FG] binding: c:\repos\private\now\.venv\Lib\site-packages\panel\io\__init__.py (1ms)
[FG] parsing: c:\repos\private\now\.venv\Lib\site-packages\panel\io\ipywidget.py [fs read 1ms] (21ms)
[FG] binding: c:\repos\private\now\.venv\Lib\site-packages\panel\io\ipywidget.py (3ms)
[FG] parsing: c:\repos\private\now\.venv\Lib\site-packages\panel\io\state.py [fs read 1ms] (45ms)
[FG] binding: c:\repos\private\now\.venv\Lib\site-packages\panel\io\state.py (8ms)
Background analysis message: getDiagnosticsForRange
Background analysis message: getDiagnosticsForRange
Background analysis message: getSemanticTokens delta
[BG(1)] getSemanticTokens delta previousResultId:1650080534900 at c:\repos\private\now\script.py ...
[BG(1)]   parsing: c:\repos\private\now\script.py (1ms)
[BG(1)]   binding: c:\repos\private\now\script.py (0ms)
[BG(1)] getSemanticTokens delta previousResultId:1650080534900 at c:\repos\private\now\script.py (6ms)
Background analysis message: analyze
[BG(1)] analyzing: c:\repos\private\now\script.py ...
[BG(1)]   checking: c:\repos\private\now\script.py (1ms)
[BG(1)] analyzing: c:\repos\private\now\script.py (1ms)
Background analysis message: resumeAnalysis
[BG(1)] indexing: c:\repos\private\now\script.py [found 0] (0ms)
Indexing Done: c:\repos\private\now\script.py
Background analysis message: getDiagnosticsForRange
Background analysis message: getDiagnosticsForRange
Background analysis message: setFileOpened
Background analysis message: markFilesDirty
[FG] completion at c:\repos\private\now\script.py:2:4 ...
[FG]   parsing: c:\repos\private\now\script.py (0ms)
[FG]   binding: c:\repos\private\now\script.py (0ms)
[FG] completion at c:\repos\private\now\script.py:2:4 [found 2 items] (10ms)

Lookback tokens:
 import,panel,as,pn,\n,panel,.

Recommendations: Panel, restore, config_file, manual_seed, add_argument, xavier_normal_, copyfileobj, setup, EVT_ERASE_BACKGROUND, seek
Time taken to get recommendations: 6 ms, Memory increase: 93 KB.
[FG] parsing: c:\repos\private\now\.venv\Lib\site-packages\panel\widgets\__init__.py [fs read 0ms] (1ms)
[FG] binding: c:\repos\private\now\.venv\Lib\site-packages\panel\widgets\__init__.py (0ms)
[FG] parsing: c:\repos\private\now\.venv\Lib\site-packages\panel\widgets\indicators.py [fs read 0ms] (58ms)
[FG] binding: c:\repos\private\now\.venv\Lib\site-packages\panel\widgets\indicators.py (13ms)
Background analysis message: setFileOpened
[FG] completion at c:\repos\private\now\script.py:2:5 ...
[FG]   parsing: c:\repos\private\now\script.py (1ms)
[FG]   binding: c:\repos\private\now\script.py (0ms)
[FG] completion at c:\repos\private\now\script.py:2:5 [found 1 items] (7ms)

Lookback tokens:
 import,panel,as,pn,\n,panel,.

Recommendations: Panel, restore, config_file, manual_seed, add_argument, xavier_normal_, copyfileobj, setup, EVT_ERASE_BACKGROUND, seek
Time taken to get recommendations: 6 ms, Memory increase: 89 KB.
Background analysis message: markFilesDirty
Background analysis message: setFileOpened
Background analysis message: markFilesDirty
Background analysis message: getSemanticTokens delta
[BG(1)] getSemanticTokens delta previousResultId:1650080829702 at c:\repos\private\now\script.py ...
[BG(1)]   parsing: c:\repos\private\now\script.py (0ms)
[BG(1)]   binding: c:\repos\private\now\script.py (0ms)
[BG(1)] getSemanticTokens delta previousResultId:1650080829702 at c:\repos\private\now\script.py (6ms)
[FG] parsing: c:\repos\private\now\script.py (1ms)
[FG] binding: c:\repos\private\now\script.py (0ms)
Background analysis message: getDiagnosticsForRange
Background analysis message: getDiagnosticsForRange
Background analysis message: setFileOpened
Background analysis message: markFilesDirty
[FG] parsing: c:\repos\private\now\script.py (0ms)
[FG] binding: c:\repos\private\now\script.py (1ms)
Background analysis message: analyze
[BG(1)] analyzing: c:\repos\private\now\script.py ...
[BG(1)]   parsing: c:\repos\private\now\script.py (0ms)
[BG(1)]   binding: c:\repos\private\now\script.py (0ms)
[BG(1)]   checking: c:\repos\private\now\script.py (6ms)
[BG(1)] analyzing: c:\repos\private\now\script.py (6ms)
Background analysis message: getDiagnosticsForRange
Background analysis message: resumeAnalysis
[BG(1)] indexing: c:\repos\private\now\script.py [found 0] (0ms)
Indexing Done: c:\repos\private\now\script.py
Background analysis message: getDiagnosticsForRange
Background analysis message: getSemanticTokens delta
[BG(1)] getSemanticTokens delta previousResultId:1650080834060 at c:\repos\private\now\script.py (0ms)
Background analysis message: setFileOpened
Background analysis message: markFilesDirty
Background analysis message: setFileOpened
Background analysis message: markFilesDirty
Background analysis message: setFileOpened
Background analysis message: markFilesDirty
Background analysis message: getSemanticTokens delta
[BG(1)] getSemanticTokens delta previousResultId:1650080834526 at c:\repos\private\now\script.py ...
[BG(1)]   parsing: c:\repos\private\now\script.py (0ms)
[BG(1)]   binding: c:\repos\private\now\script.py (0ms)
[BG(1)]   parsing: c:\repos\private\now\.venv\Lib\site-packages\panel\widgets\__init__.py [fs read 0ms] (4ms)
[BG(1)]   binding: c:\repos\private\now\.venv\Lib\site-packages\panel\widgets\__init__.py (1ms)
[BG(1)]   parsing: c:\repos\private\now\.venv\Lib\site-packages\panel\widgets\indicators.py [fs read 0ms] (81ms)
[BG(1)]   binding: c:\repos\private\now\.venv\Lib\site-packages\panel\widgets\indicators.py (12ms)
[BG(1)] getSemanticTokens delta previousResultId:1650080834526 at c:\repos\private\now\script.py (105ms)
[FG] parsing: c:\repos\private\now\script.py (0ms)
[FG] binding: c:\repos\private\now\script.py (0ms)
Background analysis message: analyze
[BG(1)] analyzing: c:\repos\private\now\script.py ...
[BG(1)]   checking: c:\repos\private\now\script.py (0ms)
[BG(1)] analyzing: c:\repos\private\now\script.py (0ms)
Background analysis message: resumeAnalysis
[BG(1)] indexing: c:\repos\private\now\script.py [found 0] (0ms)
Indexing Done: c:\repos\private\now\script.py
Background analysis message: getDiagnosticsForRange
Background analysis message: getDiagnosticsForRange
Background analysis message: setFileOpened
Background analysis message: markFilesDirty
[FG] completion at c:\repos\private\now\script.py:2:11 ...
[FG]   parsing: c:\repos\private\now\script.py (1ms)
[FG]   binding: c:\repos\private\now\script.py (0ms)
[FG] completion at c:\repos\private\now\script.py:2:11 [found 28 items] (7ms)

Lookback tokens:
 import,panel,as,pn,\n,pn,.,panel.widgets,.

Recommendations: histogram, strftime, _sign, handlers, get_style_context, asin, models, rcParams, isoformat, fft
Time taken to get recommendations: 6 ms, Memory increase: 96 KB.
[FG] parsing: c:\repos\private\now\.venv\Lib\site-packages\panel\widgets\ace.py [fs read 0ms] (3ms)
[FG] binding: c:\repos\private\now\.venv\Lib\site-packages\panel\widgets\ace.py (1ms)
Background analysis message: getDiagnosticsForRange
Background analysis message: getDiagnosticsForRange
Background analysis message: getSemanticTokens delta
[BG(1)] getSemanticTokens delta previousResultId:1650080835008 at c:\repos\private\now\script.py ...
[BG(1)]   parsing: c:\repos\private\now\script.py (1ms)
[BG(1)]   binding: c:\repos\private\now\script.py (0ms)
[BG(1)] getSemanticTokens delta previousResultId:1650080835008 at c:\repos\private\now\script.py (5ms)
Background analysis message: analyze
[BG(1)] analyzing: c:\repos\private\now\script.py ...
[BG(1)]   checking: c:\repos\private\now\script.py (0ms)
[BG(1)] analyzing: c:\repos\private\now\script.py (0ms)
Background analysis message: resumeAnalysis
[BG(1)] indexing: c:\repos\private\now\script.py [found 0] (0ms)
Indexing Done: c:\repos\private\now\script.py
Background analysis message: getDiagnosticsForRange
Background analysis message: getDiagnosticsForRange
@erictraut
Copy link
Contributor

erictraut commented Apr 16, 2022

Thanks for contacting us. We love hearing from library maintainers, and we appreciate the work you do for the Python community!

The panel library contains a "py.typed" marker as described in PEP 561, which means that it claims to contain type information. Pyright, the type checker that underlies the pylance language server, treats "py.typed" libraries according to the rules spelled out in this documentation.

If you want a symbol such as Accordion to be treated as a public symbol available through the top-level module's namespace, you need to do one of the following:

  1. Use a redundant form of import (a technique that was originally documented for type stub files in PEP 484). Here's what that would look like:
from .layout import Accordion as Accordion
  1. Include the symbols in an __all__ assignment.
__all__ = ["Accordion", "Card", ...]

It looks like very little of the panel library contains type annotations. When a library includes a "py.typed" marker, it is claiming that it contains correct and complete type information. The command-line version of pyright includes an option that reports on missing type information in a "py.typed" library. When I run pyright --verifytypes panel, here is the summary:

Symbols exported by "panel": 3458
  With known type: 338
  With ambiguous type: 155
  With unknown type: 2965

Type completeness score: 9.8%

That means panel is falling far short of being "typed". You might consider removing the "py.typed" marker until more type declarations are added to the library. Pyright makes different assumptions about libraries that are not marked "py.typed". I think you'll find that it works better if you omit the "py.typed", at least until you make further progress in adding type information.

Longer term, I encourage you to add more type information to the library, follow the guidance set forth in the documentation linked above, and add back the "py.typed" marker.

@MarcSkovMadsen
Copy link
Author

MarcSkovMadsen commented Apr 16, 2022

Hi @erictraut

Thanks. It makes sense and helps.

For context Panel and the HoloViz ecosystem is built on top of Param. Param provides parameters for your Python classes and plays a role similar to traitlets in Jupyter. Its been around since 2003. An example is

import param

class SomeClass(param.Parameterized):
    text = param.String(default="hello world", doc="A string attribute")
    author = param.String(default="Marc", doc="Name of author", constant=True)

It also works similarly to dataclasses, attrs and pydantic. So all the type information is implicitly there. But static type checkers just don't understand it. But ipython and jupyter understands it really, really well on the other hand and should continue to do so.

The challenge for us to understand which route to take. There seems to be many

  • The quick and dirty is to just add all the type info to the Panel code. But it would repeat/ duplicate all the info given to Param and needed for Ipython, jupyter, validation, docs, events and much more. For example we would need to add explicit __init__ methods to all the Parameterized classes even though these are autogenerated by Param.
  • Then we could autogenerate .pyi stub files. I can allready do that for all Parameterized classes. But from tests it seems more is needed.
  • Then we could create a Param plugin for mypy/ pyright I believe ???
  • Then we could adapt Param to the "unofficial typing standard" for models like dataclasses, attrs and pydantic. But its a bit like the python 2 to python 3 transition for users.
  • The we could try to influence the "unofficial typing standard" above such that a minimum of changes to Param would be required.

The problem is that finding out which route to take is not something I/ we have the skills to do.

Any advice here would be appriciated.

@MarcSkovMadsen
Copy link
Author

MarcSkovMadsen commented Apr 16, 2022

Regarding __all__. Should we only include variables, functions and classes? Or also modules?

I've started a PR to add __all__ to the most important __init__.py files. https://github.com/holoviz/panel/pull/3411/files. Feel free to provide a few helpful suggestions. Thanks.

@MarcSkovMadsen
Copy link
Author

MarcSkovMadsen commented Apr 16, 2022

Should I run pyright --verifytypes panel with panel installed as a package or from the root of the cloned panel repository @erictraut?

@erictraut
Copy link
Contributor

erictraut commented Apr 16, 2022

If you want to participate in static type checking, you'll need to add static type annotations in one form or another — either inline or in the form of type stubs.

I don't have any experience with Param. It looks like it was designed at a much earlier point in Python's evolution, and it hasn't really kept up with the mainstream Python features and trends. That could make it difficult to adapt to "modern Python". Skimming its docs, it looks like it is minimally maintained at this point.

Then we could create a Param plugin for mypy/ pyright I believe ???

Mypy supports custom plugins, but these plugins are specific to mypy and don't work with any other static type checkers or languages servers within the Python community. We have no plans to add support for plugins in pyright. They are expensive to maintain, difficult for users to discover and install, and represent a security risk. We encourage library authors to stick to the typing standards.

The Python static type standards continue to evolve to support more use cases. For example, we are in the process of ratifying PEP 681 to support attrs, pydantic and other libraries that use dataclass-like semantics. I wonder if that would would be applicable for Param and panel?

Regarding all. Should we only include variables, functions and classes? Or also modules?

The purpose of __all__ is to indicate which symbols are imported as part of a wildcard import (e.g. from panel import *). Many libraries already support wildcard imports, but it's generally considered an antipattern to use wildcard imports when importing from a library because updates to the library can add new symbols that pollute that importer's global namespace in unpredictable ways. PEP 8 recommends against using wildcard imports for this reason.

Since you don't currently use __all__ in panel, you might want to use the other techniques such as redundant forms of import statements.

Should I run pyright --verifytypes panel with panel installed as a package or from the root of the cloned panel repository?

You need to run it on the installed package.

@MarcSkovMadsen
Copy link
Author

MarcSkovMadsen commented Apr 16, 2022

Pep 681 is the "unofficial standard I mentioned". I have looked at it a bit. But the learning curve is steep for me. My impression was that Pep 681 was really not very general, but specific for dataclasses, attrs and pydantic. It's thought out in that context to fit those "models". Not really "models" in general?? But I might be wrong. The consequence would be that other models would become "legacy" python if they not already are :-) I've tried to convey that message to the Param maintainers. The same would probably be True for traits and traitlets.

@MarcSkovMadsen
Copy link
Author

MarcSkovMadsen commented Apr 16, 2022

Regarding __all__ vs redundant forms. Something called redundant does not sound attractive :-). Why would I use that over __all__. That seems just as easy to use? Thx.

@MarcSkovMadsen
Copy link
Author

MarcSkovMadsen commented Apr 16, 2022

The way to really understand PEP 681 and whether it would work with Param or an updated version of Param is probably to try to implement PEP 681 for Param starting here

@jbednar
Copy link

jbednar commented Apr 17, 2022

It looks like it was designed at a much earlier point in Python's evolution, and it hasn't really kept up with the mainstream Python features and trends. That could make it difficult to adapt to "modern Python". Skimming its docs, it looks like it is minimally maintained at this point.

Hello! I guess I'm the most official spokesperson for Param. Thanks for engaging with us!

I'm not sure what about the Param docs is indicating "minimal maintenance" to you (surely that's a question to ask of the git repo or release history instead?), but maybe it's true in the sense that Param is a very mature library that rarely needs changing. So there are occasional fixes and additions, and usually not much more is needed; it's fully suitable for production usage and has been for many years now. We do have a 2.0 release coming up, with some breaking changes that clean up the API, but those would be the first intentionally breaking changes in many years.

As for "modern Python", yes, eventually other mechanisms were added to the language and in other libraries that address some of the needs Param has been addressing since 2003. But there's still nothing else that provides the full set of functionality that Param provides, and unfortunately these partial alternatives used different syntax and sometimes different mechanisms. So now we have a situation where IDEs and other tooling has been built around static type hints that are almost entirely irrelevant in a Param-based approach, because such hints can only provide a tiny bit of what a Parameter supports.

It would be great for the editors to show the user what Param itself already knows, but doing so by adding adding redundant type hints all over user code would destroy a lot of the simplicity that Param provides. But hey, I'm an old Emacs user, so maybe it's just that I wouldn't get any benefit from that, which is why Marc is the one raising this issue rather than me. :-) In any case, if there is a way that we can publish what Param knows in a form that static analyzers can consume, then I'm all for it!

@judej judej added waiting for user response Requires more information from user reference labels Apr 18, 2022
@debonte
Copy link
Contributor

debonte commented May 21, 2022

@MarcSkovMadsen, it seems that between this issue and #2574 your questions have been answered. If I'm wrong, let us know.

the learning curve is steep for me

Sorry about that. We'll be providing documentation on docs.python.org in the next few months which hopefully will make it more approachable.

really not very general, but specific for dataclasses, attrs and pydantic

Attrs and pydantic compatibility was important because they are very popular libraries. However, dataclass_transform is intended to be a general case solution for libraries that implement behaviors like dataclass.

The way to really understand PEP 681 and whether it would work with Param or an updated version of Param is probably to try to implement PEP 681 for Param

PEP 681 is on track to be approved in Python 3.11. Please try it. If you run into problems or have questions about, please contact me.

@debonte debonte closed this as completed May 21, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
reference waiting for user response Requires more information from user
Projects
None yet
Development

No branches or pull requests

5 participants