FATAL ERROR: MarkCompactCollector: young object promotion failed Allocation failed - JavaScript heap out of memory

 Environment data

Language Server version: 2023.7.11
OS and version: darwin arm64
Python version (and distribution if applicable, e.g. Anaconda): Python 3.10.6 (pyenv virtualenv)
python.analysis.indexing: true
python.analysis.typeCheckingMode: basic
python.analysis.userFileIndexingLimit: 10000 (down from 40,000 then 20,000 while diagnosing)

 Code Snippet
Since the most recent update to the python extension I have had to reload vscode at least every 2 hours to maintain code navigation. I haven't had this problem since enabling pylance when it first released, but it was a common occurrence with jedi and the original python language server prior to pylance.

Note that the LSP server is not running any more as per the process explorer.
 Repro Steps

Leave the project open for an hour or two
There is a fatal crash
The language server says that it's restarting
Code navigation features stop working completely, requiring a reload/restart of vscode

Trace logs show that fsevents for add/change are getting triggered regularly, without editing any code, and it keeps trying to index celery and failing to find optional imports. The heap size grows continuously until Heap Out Of Memory.
 Expected behavior
Code navigation continues to work for longer than 2 hours.
 Actual behavior
Code navigation stops working completely. The loading indicator beneath the tab bar runs indefinitely until the action is cancelled by doing another task like editing.
 Logs

Note that these are Informational logs, I will gather Trace logs and wait for it to crash again, then update. Note that while the final log says background analysis has started, it's now 3 hours past that log event and nothing else has been logged.
2023-07-11 17:30:59.319 [info] [Info  - 17:30:59] (56596) Indexing finished(97).
2023-07-11 17:31:59.227 [info] [Info  - 17:31:59] (56596) Indexer background runner(98) root directory: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist (refresh)
2023-07-11 17:31:59.227 [info] [Info  - 17:31:59] (56596) Indexing(98) started
2023-07-11 17:31:59.694 [info] [Info  - 17:31:59] (56596) scanned(98) 434 files over 1 exec env
2023-07-11 17:31:59.797 [info] [Info  - 17:31:59] (56596) indexed(98) 276 files over 1 exec env
2023-07-11 17:31:59.812 [info] [Info  - 17:31:59] (56596) Indexing finished(98).
2023-07-11 17:32:59.739 [info]
<--- Last few GCs --->

[56596:0x11001f20000]      146 ms: Mark-Compact 15.7 (20.8) -> 14.0 (23.9) MB, 1.3 / 0.0 ms  (+ 0.0 ms in 3 steps since start of marking, biggest step 0.0 ms, walltime since start of marking 18 ms) (average mu = 1.000, current mu = 1.000) finalize increme[56596:0x11001f20000]      247 ms: Scavenge 20.4 (25.1) -> 18.0 (25.1) MB, 0.7 / 0.0 ms  (average mu = 1.000, current mu = 1.000) allocation failure;

<--- JS stacktrace --->

FATAL ERROR: MarkCompactCollector: young object promotion failed Allocation failed - JavaScript heap out of memory
 1: 0x10da5c198 node::FatalException(v8::Isolate*, v8::TryCatch const&) [/Applications/Visual Studio Code.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework]
 2: 0x10da5c2a8 node::OnFatalError(char const*, char const*) [/Applications/Visual Studio Code.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework]

2023-07-11 17:32:59.739 [info]  3: 0x108b4e444 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, v8::OOMDetails const&) [/Applications/Visual Studio Code.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework]
 4: 0x108b4e384 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, v8::OOMDetails const&) [/Applications/Visual Studio Code.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework]
 5: 0x108d0521c v8::internal::EmbedderStackStateScope::EmbedderStackStateScope(v8::internal::Heap*, v8::internal::EmbedderStackStateScope::Origin, cppgc::EmbedderStackState) [/Applications/Visual Studio Code.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework]
 6: 0x108d43834 v8::internal::MarkCompactCollector::IsMapOrForwarded(v8::internal::Map) [/Applications/Visual Studio Code.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework]
 7: 0x108d42f54 v8::internal::MarkCompactCollector::IsMapOrForwarded(v8::internal::Map) [/Applications/Visual Studio Code.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework]
 8: 0x108d42aa8 v8::internal::MarkCompactCollector::IsMapOrForwarded(v8::internal::Map) [/Applications/Visual Studio Code.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework]
 9: 0x108d651d8 v8::internal::MarkCompactCollector::IsMapOrForwarded(v8::internal::Map) [/Applications/Visual Studio Code.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework]
10: 0x10b6ee904 v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*) [/Applications/Visual Studio Code.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework]
11: 0x10dac3ad0 node::OnFatalError(char const*, char const*) [/Applications/Visual Studio Code.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework]
12: 0x18093bfa8 _pthread_start [/usr/lib/system/libsystem_pthread.dylib]
13: 0x180936da0 thread_start [/usr/lib/system/libsystem_pthread.dylib]

2023-07-11 17:32:59.968 [info] [Info  - 17:32:59] Connection to server got closed. Server will restart.
2023-07-11 17:32:59.968 [info] true
2023-07-11 17:33:00.237 [info] [Info  - 17:33:00] (62492) Pylance language server 2023.7.11 (pyright 74d8f3c4) starting
2023-07-11 17:33:00.237 [info] [Info  - 17:33:00] (62492) Server root directory: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist
2023-07-11 17:33:00.242 [info] [Info  - 17:33:00] (62492) Starting service instance "kraken"
2023-07-11 17:33:00.246 [info] [Info  - 17:33:00] (62492) Auto format for strings enabled
2023-07-11 17:33:00.457 [info] [Info  - 17:33:00] (62492) Background analysis(1) root directory: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist
2023-07-11 17:33:00.458 [info] [Info  - 17:33:00] (62492) Background analysis(1) started

After restarting with Trace logging:
2023-07-11 20:18:20.515 [info] [Warn  - 20:18:20] (69041) Workspace indexing has hit its upper limit: 10000 files
2023-07-11 20:18:20.536 [info] (69041) Background analysis message: getDiagnosticsForRange
2023-07-11 20:18:20.536 [info] (69041) Background analysis message: getDiagnosticsForRange
2023-07-11 20:18:42.992 [info] [Info  - 20:18:42] (69041) LibraryFile: Received fs event 'add' for path '/Users/josh/.pyenv/versions/3.10.6/envs/kraken/lib/python3.10/site-packages/.watchman-cookie-OCTO-MAC-QMGX653J3V.local-2424-14250'
2023-07-11 20:18:42.995 [info] [Info  - 20:18:42] (69041) LibraryFile: Received fs event 'change' for path '/Users/josh/.pyenv/versions/3.10.6/envs/kraken/lib/python3.10/site-packages/.watchman-cookie-OCTO-MAC-QMGX653J3V.local-2424-14250'
2023-07-11 20:18:48.129 [info] (69041) Background analysis message: invalidateAndForceReanalysis
2023-07-11 20:18:48.157 [info] (69041) Background analysis message: analyze

2023-07-11 20:26:53.834 [info] [Info  - 20:26:53] (69041) Heap stats: total_heap_size=843MB, used_heap_size=781MB, total_physical_size=842MB, total_available_size=3284MB, heap_size_limit=4096MB
2023-07-11 20:26:53.834 [info] (69041) [BG(1)] analyzing: /Users/josh/.pyenv/versions/3.10.6/envs/kraken/lib/python3.10/site-packages/celery/canvas.py (290ms)
2023-07-11 20:26:53.845 [info] (69041) Background analysis message: resumeAnalysis
2023-07-11 20:27:45.633 [info] [Info  - 20:27:45] (69041) LibraryFile: Received fs event 'add' for path '/Users/josh/.pyenv/versions/3.10.6/envs/kraken/lib/python3.10/site-packages/.watchman-cookie-OCTO-MAC-QMGX653J3V.local-2424-14259'
2023-07-11 20:27:45.633 [info] [Info  - 20:27:45] (69041) LibraryFile: Received fs event 'change' for path '/Users/josh/.pyenv/versions/3.10.6/envs/kraken/lib/python3.10/site-packages/.watchman-cookie-OCTO-MAC-QMGX653J3V.local-2424-14259'
2023-07-11 20:27:50.754 [info] (69041) Background analysis message: invalidateAndForceReanalysis
2023-07-11 20:27:50.778 [info] (69041) Background analysis message: analyze
...
2023-07-11 20:27:50.883 [info] (69041) [BG(1)]   parsing: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/typeshed-fallback/stdlib/builtins.pyi [fs read 1ms] (23ms)
2023-07-11 20:27:50.890 [info] (69041) [BG(1)]   binding: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/typeshed-fallback/stdlib/builtins.pyi (7ms)
2023-07-11 20:27:50.890 [info] (69041) [BG(1)]   binding:
...

2023-07-11 20:27:50.974 [info] [Info  - 20:27:50] (69041)   Attempting to resolve stub package using root path '/Users/josh/dev/kraken'
2023-07-11 20:27:50.974 [info] [Info  - 20:27:50] (69041)   Attempting to resolve using root path '/Users/josh/dev/kraken'
2023-07-11 20:27:50.974 [info] [Info  - 20:27:50] (69041)   Looking in extraPath '/Users/josh/dev/kraken/src'
2023-07-11 20:27:50.974 [info] [Info  - 20:27:50] (69041)   Attempting to resolve stub package using root path '/Users/josh/dev/kraken/src'
2023-07-11 20:27:50.974 [info] [Info  - 20:27:50] (69041)   Attempting to resolve using root path '/Users/josh/dev/kraken/src'
2023-07-11 20:27:50.974 [info] [Info  - 20:27:50] (69041)   Finding python search paths
2023-07-11 20:27:50.974 [info] [Info  - 20:27:50] (69041)   Executing interpreter: '/Users/josh/.pyenv/versions/3.10.6/envs/kraken/bin/python'
2023-07-11 20:27:50.974 [info] [Info  - 20:27:50] (69041)   Skipping '/Users/josh/.pyenv/versions/3.10.6/lib/python310.zip' because it is not a valid directory
2023-07-11 20:27:50.974 [info] [Info  - 20:27:50] (69041)   Received 4 paths from interpreter
2023-07-11 20:27:50.975 [info] [Info  - 20:27:50] (69041)     /Users/josh/.pyenv/versions/3.10.6/envs/kraken/lib/python3.10/site-packages/_pdbpp_path_hack
2023-07-11 20:27:50.975 [info] [Info  - 20:27:50] (69041)     /Users/josh/.pyenv/versions/3.10.6/lib/python3.10
2023-07-11 20:27:50.975 [info] [Info  - 20:27:50] (69041)     /Users/josh/.pyenv/versions/3.10.6/lib/python3.10/lib-dynload
2023-07-11 20:27:50.975 [info] [Info  - 20:27:50] (69041)     /Users/josh/.pyenv/versions/3.10.6/envs/kraken/lib/python3.10/site-packages
2023-07-11 20:27:50.975 [info] [Info  - 20:27:50] (69041)   Looking in python search path '/Users/josh/.pyenv/versions/3.10.6/envs/kraken/lib/python3.10/site-packages/_pdbpp_path_hack'
2023-07-11 20:27:50.975 [info] [Info  - 20:27:50] (69041)   Attempting to resolve stub package using root path '/Users/josh/.pyenv/versions/3.10.6/envs/kraken/lib/python3.10/site-packages/_pdbpp_path_hack'
2023-07-11 20:27:50.975 [info] [Info  - 20:27:50] (69041)   Attempting to resolve using root path '/Users/josh/.pyenv/versions/3.10.6/envs/kraken/lib/python3.10/site-packages/_pdbpp_path_hack'
2023-07-11 20:27:50.975 [info] [Info  - 20:27:50] (69041)   Looking in python search path '/Users/josh/.pyenv/versions/3.10.6/lib/python3.10'
2023-07-11 20:27:50.975 [info] [Info  - 20:27:50] (69041)   Attempting to resolve stub package using root path '/Users/josh/.pyenv/versions/3.10.6/lib/python3.10'
2023-07-11 20:27:50.975 [info] [Info  - 20:27:50] (69041)   Attempting to resolve using root path '/Users/josh/.pyenv/versions/3.10.6/lib/python3.10'
2023-07-11 20:27:50.975 [info] [Info  - 20:27:50] (69041)   Looking in python search path '/Users/josh/.pyenv/versions/3.10.6/lib/python3.10/lib-dynload'
2023-07-11 20:27:50.975 [info] [Info  - 20:27:50] (69041)   Attempting to resolve stub package using root path '/Users/josh/.pyenv/versions/3.10.6/lib/python3.10/lib-dynload'
2023-07-11 20:27:50.975 [info] [Info  - 20:27:50] (69041)   Attempting to resolve using root path '/Users/josh/.pyenv/versions/3.10.6/lib/python3.10/lib-dynload'
2023-07-11 20:27:50.975 [info] [Info  - 20:27:50] (69041)   Looking in python search path '/Users/josh/.pyenv/versions/3.10.6/envs/kraken/lib/python3.10/site-packages'
2023-07-11 20:27:50.976 [info] [Info  - 20:27:50] (69041)   Attempting to resolve stub package using root path '/Users/josh/.pyenv/versions/3.10.6/envs/kraken/lib/python3.10/site-packages'
2023-07-11 20:27:50.976 [info] [Info  - 20:27:50] (69041)   Attempting to resolve using root path '/Users/josh/.pyenv/versions/3.10.6/envs/kraken/lib/python3.10/site-packages'
2023-07-11 20:27:50.976 [info] [Info  - 20:27:50] (69041)   Looking in bundled stubs path '/Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs'
2023-07-11 20:27:50.976 [info] [Info  - 20:27:50] (69041)   Attempting to resolve stub package using root path '/Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs'
2023-07-11 20:27:50.976 [info] [Info  - 20:27:50] (69041)   Attempting to resolve using root path '/Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs'
2023-07-11 20:27:50.976 [info] [Info  - 20:27:50] (69041)   Looking for typeshed stdlib path
2023-07-11 20:27:50.976 [info] [Info  - 20:27:50] (69041)   Looking for typeshed stdlib path
2023-07-11 20:27:50.976 [info] [Info  - 20:27:50] (69041)   Attempting to resolve using root path '/Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/typeshed-fallback/stdlib'
2023-07-11 20:27:50.976 [info] [Info  - 20:27:50] (69041)   Typeshed path not found
2023-07-11 20:27:50.976 [info] [Info  - 20:27:50] (69041)   Looking for typeshed third-party path
2023-07-11 20:27:50.976 [info] [Info  - 20:27:50] (69041)   Looking for typeshed stubs path
2023-07-11 20:27:50.976 [info] [Info  - 20:27:50] (69041)   Typeshed path not found
2023-07-11 20:27:50.976 [info] (69041) [BG(1)]     binding: /Users/josh/.pyenv/versions/3.10.6/lib/python3.10/functools.py (8ms)
2023-07-11 20:27:50.976 [info] (69041) [BG(1)]     parsing: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs/django-stubs/conf/__init__.pyi [fs read 0ms] (2ms)
2023-07-11 20:27:50.976 [info] (69041) [BG(1)]     binding: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs/django-stubs/conf/__init__.pyi (0ms)
2023-07-11 20:27:50.976 [info] (69041) [BG(1)]     parsing: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs/django-stubs/utils/functional.pyi [fs read 0ms] (1ms)
2023-07-11 20:27:50.976 [info] (69041) [BG(1)]     binding: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs/django-stubs/utils/functional.pyi (0ms)
2023-07-11 20:27:50.976 [info] (69041) [BG(1)]     parsing: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs/django-stubs/db/__init__.pyi [fs read 1ms] (2ms)
2023-07-11 20:27:50.976 [info] (69041) [BG(1)]     binding: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs/django-stubs/db/__init__.pyi (0ms)
2023-07-11 20:27:50.976 [info] (69041) [BG(1)]     parsing: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs/django-stubs/db/transaction.pyi [fs read 0ms] (2ms)
2023-07-11 20:27:50.976 [info] (69041) [BG(1)]     binding: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs/django-stubs/db/transaction.pyi (0ms)

...

2023-07-11 20:27:51.196 [info] (69041) [BG(1)]     parsing: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs/django-stubs/db/models/__init__.pyi [fs read 0ms] (8ms)
2023-07-11 20:27:51.196 [info] (69041) [BG(1)]     binding: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs/django-stubs/db/models/__init__.pyi (1ms)
2023-07-11 20:27:51.196 [info] (69041) [BG(1)]     parsing: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs/django-stubs/db/models/base.pyi [fs read 0ms] (5ms)
2023-07-11 20:27:51.196 [info] (69041) [BG(1)]     binding: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs/django-stubs/db/models/base.pyi (1ms)
2023-07-11 20:27:51.197 [info] (69041) [BG(1)]     parsing: /Users/josh/dev/kraken/src/octoenergy/data/billing/__init__.py [fs read 0ms] (0ms)
2023-07-11 20:27:51.197 [info] (69041) [BG(1)]     binding: /Users/josh/dev/kraken/src/octoenergy/data/billing/__init__.py (0ms)
2023-07-11 20:27:51.197 [info] (69041) [BG(1)]     parsing: /Users/josh/dev/kraken/src/octoenergy/data/billing/constants.py [fs read 1ms] (2ms)
2023-07-11 20:27:51.197 [info] (69041) [BG(1)]     binding: /Users/josh/dev/kraken/src/octoenergy/data/billing/constants.py (0ms)
2023-07-11 20:27:51.197 [info] (69041) [BG(1)]     parsing: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs/django-stubs/db/models/enums.pyi [fs read 0ms] (0ms)
2023-07-11 20:27:51.197 [info] (69041) [BG(1)]     binding: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs/django-stubs/db/models/enums.pyi (16ms)
2023-07-11 20:27:51.204 [info] (69041) [BG(1)]     parsing: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/typeshed-fallback/stdlib/enum.pyi [fs read 0ms] (1ms)
2023-07-11 20:27:51.205 [info] (69041) [BG(1)]     binding: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/typeshed-fallback/stdlib/enum.pyi (1ms)
2023-07-11 20:27:51.206 [info] (69041) [BG(1)]     parsing: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/typeshed-fallback/stdlib/abc.pyi [fs read 0ms] (0ms)
2023-07-11 20:27:51.206 [info] (69041) [BG(1)]     binding: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/typeshed-fallback/stdlib/abc.pyi (0ms)
2023-07-11 20:27:51.233 [info] (69041) [BG(1)]     parsing: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs/django-stubs/contrib/auth/__init__.pyi [fs read 0ms] (7ms)
2023-07-11 20:27:51.233 [info] (69041) [BG(1)]     binding: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs/django-stubs/contrib/auth/__init__.pyi (1ms)
2023-07-11 20:27:51.233 [info] (69041) [BG(1)]     parsing: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs/django-stubs/contrib/auth/models.pyi [fs read 0ms] (2ms)
2023-07-11 20:27:51.233 [info] (69041) [BG(1)]     binding: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs/django-stubs/contrib/auth/models.pyi (0ms)
2023-07-11 20:27:51.233 [info] (69041) [BG(1)]     parsing: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs/django-stubs/contrib/postgres/__init__.pyi [fs read 0ms] (0ms)
2023-07-11 20:27:51.233 [info] (69041) [BG(1)]     binding: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs/django-stubs/contrib/postgres/__init__.pyi (0ms)
2023-07-11 20:27:51.233 [info] (69041) [BG(1)]     parsing: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs/django-stubs/contrib/postgres/fields/__init__.pyi [fs read 0ms] (1ms)
2023-07-11 20:27:51.233 [info] (69041) [BG(1)]     binding: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs/django-stubs/contrib/postgres/fields/__init__.pyi (0ms)
2023-07-11 20:27:51.233 [info] (69041) [BG(1)]     parsing: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs/django-stubs/db/models/fields/__init__.pyi [fs read 1ms] (9ms)
2023-07-11 20:27:51.233 [info] (69041) [BG(1)]     binding: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs/django-stubs/db/models/fields/__init__.pyi (1ms)
2023-07-11 20:27:51.245 [info] (69041) [BG(1)]     parsing: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs/django-stubs/db/models/query_utils.pyi [fs read 0ms] (6ms)
2023-07-11 20:27:51.245 [info] (69041) [BG(1)]     binding: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs/django-stubs/db/models/query_utils.pyi (0ms)
2023-07-11 20:27:51.246 [info] (69041) [BG(1)]     parsing: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs/django-stubs/db/models/expressions.pyi [fs read 0ms] (2ms)
2023-07-11 20:27:51.246 [info] (69041) [BG(1)]     binding: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs/django-stubs/db/models/expressions.pyi (1ms)
2023-07-11 20:27:51.246 [info] (69041) [BG(1)]     parsing: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs/django-stubs/db/models/fields/related.pyi [fs read 1ms] (3ms)
2023-07-11 20:27:51.246 [info] (69041) [BG(1)]     binding: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs/django-stubs/db/models/fields/related.pyi (1ms)
2023-07-11 20:27:51.246 [info] (69041) [BG(1)]     parsing: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs/django-stubs/db/models/fields/mixins.pyi [fs read 0ms] (1ms)
2023-07-11 20:27:51.246 [info] (69041) [BG(1)]     binding: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs/django-stubs/db/models/fields/mixins.pyi (0ms)
2023-07-11 20:27:51.246 [info] (69041) [BG(1)]     parsing: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs/django-stubs/db/models/manager.pyi [fs read 0ms] (1ms)
2023-07-11 20:27:51.246 [info] (69041) [BG(1)]     binding: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs/django-stubs/db/models/manager.pyi (0ms)
2023-07-11 20:27:51.248 [info] (69041) [BG(1)]     parsing: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs/django-stubs/db/models/query.pyi [fs read 1ms] (2ms)
2023-07-11 20:27:51.248 [info] (69041) [BG(1)]     binding: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs/django-stubs/db/models/query.pyi (0ms)
2023-07-11 20:27:51.250 [info] (69041) [BG(1)]     parsing: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs/django-stubs/core/__init__.pyi [fs read 0ms] (0ms)
2023-07-11 20:27:51.250 [info] (69041) [BG(1)]     binding: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs/django-stubs/core/__init__.pyi (0ms)
2023-07-11 20:27:51.251 [info] (69041) [BG(1)]     parsing: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs/django-stubs/core/validators.pyi [fs read 0ms] (1ms)
2023-07-11 20:27:51.251 [info] (69041) [BG(1)]     binding: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs/django-stubs/core/validators.pyi (0ms)
2023-07-11 20:27:51.252 [info] (69041) [BG(1)]     parsing: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs/django-stubs/contrib/postgres/fields/array.pyi [fs read 1ms] (1ms)
2023-07-11 20:27:51.252 [info] (69041) [BG(1)]     binding: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs/django-stubs/contrib/postgres/fields/array.pyi (0ms)
2023-07-11 20:27:51.253 [info] (69041) [BG(1)]     parsing: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs/django-stubs/contrib/postgres/fields/mixins.pyi [fs read 1ms] (1ms)
2023-07-11 20:27:51.253 [info] (69041) [BG(1)]     binding: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs/django-stubs/contrib/postgres/fields/mixins.pyi (0ms)
2023-07-11 20:27:51.254 [info] (69041) [BG(1)]     parsing: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs/django-stubs/contrib/auth/base_user.pyi [fs read 1ms] (1ms)
...
2023-07-11 20:27:51.515 [info] [Info  - 20:27:51] (69041)   Attempting to resolve using root path '/Users/josh/dev/kraken'
2023-07-11 20:27:51.516 [info] [Info  - 20:27:51] (69041)   Looking in extraPath '/Users/josh/dev/kraken/src'
2023-07-11 20:27:51.516 [info] [Info  - 20:27:51] (69041)   Attempting to resolve stub package using root path '/Users/josh/dev/kraken/src'
2023-07-11 20:27:51.516 [info] [Info  - 20:27:51] (69041)   Attempting to resolve using root path '/Users/josh/dev/kraken/src'
2023-07-11 20:27:51.516 [info] [Info  - 20:27:51] (69041)   Finding python search paths
2023-07-11 20:27:51.516 [info] [Info  - 20:27:51] (69041)   Executing interpreter: '/Users/josh/.pyenv/versions/3.10.6/envs/kraken/bin/python'
2023-07-11 20:27:51.516 [info] [Info  - 20:27:51] (69041)   Skipping '/Users/josh/.pyenv/versions/3.10.6/lib/python310.zip' because it is not a valid directory
2023-07-11 20:27:51.516 [info] [Info  - 20:27:51] (69041)   Received 4 paths from interpreter
2023-07-11 20:27:51.516 [info] [Info  - 20:27:51] (69041)     /Users/josh/.pyenv/versions/3.10.6/envs/kraken/lib/python3.10/site-packages/_pdbpp_path_hack
2023-07-11 20:27:51.516 [info] [Info  - 20:27:51] (69041)     /Users/josh/.pyenv/versions/3.10.6/lib/python3.10
2023-07-11 20:27:51.516 [info] [Info  - 20:27:51] (69041)     /Users/josh/.pyenv/versions/3.10.6/lib/python3.10/lib-dynload
2023-07-11 20:27:51.516 [info] [Info  - 20:27:51] (69041)     /Users/josh/.pyenv/versions/3.10.6/envs/kraken/lib/python3.10/site-packages
2023-07-11 20:27:51.516 [info] [Info  - 20:27:51] (69041)   Looking in python search path '/Users/josh/.pyenv/versions/3.10.6/envs/kraken/lib/python3.10/site-packages/_pdbpp_path_hack'
2023-07-11 20:27:51.516 [info] [Info  - 20:27:51] (69041)   Attempting to resolve stub package using root path '/Users/josh/.pyenv/versions/3.10.6/envs/kraken/lib/python3.10/site-packages/_pdbpp_path_hack'
2023-07-11 20:27:51.516 [info] [Info  - 20:27:51] (69041)   Attempting to resolve using root path '/Users/josh/.pyenv/versions/3.10.6/envs/kraken/lib/python3.10/site-packages/_pdbpp_path_hack'
2023-07-11 20:27:51.516 [info] [Info  - 20:27:51] (69041)   Looking in python search path '/Users/josh/.pyenv/versions/3.10.6/lib/python3.10'
2023-07-11 20:27:51.516 [info] [Info  - 20:27:51] (69041)   Attempting to resolve stub package using root path '/Users/josh/.pyenv/versions/3.10.6/lib/python3.10'
2023-07-11 20:27:51.516 [info] [Info  - 20:27:51] (69041)   Attempting to resolve using root path '/Users/josh/.pyenv/versions/3.10.6/lib/python3.10'
2023-07-11 20:27:51.516 [info] [Info  - 20:27:51] (69041)   Looking in python search path '/Users/josh/.pyenv/versions/3.10.6/lib/python3.10/lib-dynload'
2023-07-11 20:27:51.516 [info] [Info  - 20:27:51] (69041)   Attempting to resolve stub package using root path '/Users/josh/.pyenv/versions/3.10.6/lib/python3.10/lib-dynload'
2023-07-11 20:27:51.516 [info] [Info  - 20:27:51] (69041)   Attempting to resolve using root path '/Users/josh/.pyenv/versions/3.10.6/lib/python3.10/lib-dynload'
2023-07-11 20:27:51.516 [info] [Info  - 20:27:51] (69041)   Looking in python search path '/Users/josh/.pyenv/versions/3.10.6/envs/kraken/lib/python3.10/site-packages'
2023-07-11 20:27:51.516 [info] [Info  - 20:27:51] (69041)   Attempting to resolve stub package using root path '/Users/josh/.pyenv/versions/3.10.6/envs/kraken/lib/python3.10/site-packages'
2023-07-11 20:27:51.516 [info] [Info  - 20:27:51] (69041)   Attempting to resolve using root path '/Users/josh/.pyenv/versions/3.10.6/envs/kraken/lib/python3.10/site-packages'
2023-07-11 20:27:51.517 [info] [Info  - 20:27:51] (69041)   Looking in bundled stubs path '/Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs'
2023-07-11 20:27:51.517 [info] [Info  - 20:27:51] (69041)   Attempting to resolve stub package using root path '/Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs'
2023-07-11 20:27:51.517 [info] [Info  - 20:27:51] (69041)   Attempting to resolve using root path '/Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/bundled/stubs'
2023-07-11 20:27:51.517 [info] [Info  - 20:27:51] (69041)   Looking for typeshed stdlib path
2023-07-11 20:27:51.517 [info] [Info  - 20:27:51] (69041)   Looking for typeshed stdlib path
2023-07-11 20:27:51.517 [info] [Info  - 20:27:51] (69041)   Attempting to resolve using root path '/Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/typeshed-fallback/stdlib'
2023-07-11 20:27:51.517 [info] [Info  - 20:27:51] (69041)   Typeshed path not found
2023-07-11 20:27:51.517 [info] [Info  - 20:27:51] (69041)   Looking for typeshed third-party path
2023-07-11 20:27:51.517 [info] [Info  - 20:27:51] (69041)   Looking for typeshed stubs path
2023-07-11 20:27:51.517 [info] [Info  - 20:27:51] (69041)   Typeshed path not found
2023-07-11 20:27:51.517 [info] (69041) [BG(1)]     binding: /Users/josh/.pyenv/versions/3.10.6/lib/python3.10/re.py (1ms)
2023-07-11 20:27:51.517 [info] (69041) [BG(1)]     parsing: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/typeshed-fallback/stdlib/time.pyi [fs read 0ms] (0ms)
2023-07-11 20:27:51.517 [info] (69041) [BG(1)]     binding: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/typeshed-fallback/stdlib/time.pyi (1ms)
...
2023-07-11 20:27:51.692 [info] (69041) [IDX(12)] index packages /Users/josh/dev/kraken ...
2023-07-11 20:27:51.692 [info] (69041) [IDX(12)]   index execution environment /Users/josh/dev/kraken ...
...
2023-07-11 20:27:51.692 [info] (69041) [IDX(12)]     indexing: /Users/josh/dev/kraken/src/typechecking/__init__.py [skipped: no '__all__' defined] (0ms)
2023-07-11 20:27:51.692 [info] (69041) [IDX(12)]     indexing: /Users/josh/.pyenv/versions/3.10.6/lib/python3.10/concurrent/__init__.py [skipped: no '__all__' defined] (0ms)
2023-07-11 20:27:51.692 [info] (69041) [IDX(12)]     indexing: /Users/josh/.pyenv/versions/3.10.6/lib/python3.10/distutils/__init__.py [skipped: no '__all__' defined] (0ms)
...
2023-07-11 20:27:51.693 [info] (69041) [IDX(12)]     indexing: /Users/josh/.pyenv/versions/3.10.6/lib/python3.10/xmlrpc/__init__.py [skipped: no '__all__' defined] (0ms)
2023-07-11 20:27:51.693 [info] (69041) [IDX(12)]     indexing: /Users/josh/.pyenv/versions/3.10.6/envs/kraken/lib/python3.10/site-packages/MarkupPy/__init__.py [skipped: no '__all__' defined] (0ms)
2023-07-11 20:27:51.693 [info] (69041) [IDX(12)]     indexing: /Users/josh/.pyenv/versions/3.10.6/envs/kraken/lib/python3.10/site-packages/Pmw/__init__.py [skipped: no '__all__' defined] (0ms)
...
2023-07-11 20:27:51.722 [info] (69041) [IDX(12)]     indexing: /Users/josh/.pyenv/versions/3.10.6/envs/kraken/lib/python3.10/site-packages/tesoro_client/__init__.py [skipped: no '__all__' defined] (0ms)
...
2023-07-11 20:27:52.124 [info] (69041) [BG(1)]     parsing: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/typeshed-fallback/stdlib/sys.pyi [fs read 1ms] (2ms)
2023-07-11 20:27:52.124 [info] (69041) [BG(1)]     binding: /Users/josh/.vscode/extensions/ms-python.vscode-pylance-2023.7.11/dist/typeshed-fallback/stdlib/sys.pyi (1ms)
...

2023-07-11 20:27:52.392 [info] [Info  - 20:27:52] (69041) Heap stats: total_heap_size=926MB, used_heap_size=862MB, total_physical_size=925MB, total_available_size=3199MB, heap_size_limit=4096MB

2023-07-11 20:27:53.615 [info] [Info  - 20:27:53] (69041) Heap stats: total_heap_size=959MB, used_heap_size=848MB, total_physical_size=957MB, total_available_size=3150MB, heap_size_limit=4096MB

2023-07-11 20:30:54.088 [info] [Info  - 20:30:54] (69041) Heap stats: total_heap_size=1130MB, used_heap_size=1050MB, total_physical_size=1128MB, total_available_size=3005MB, heap_size_limit=4096MB
2023-07-11 20:30:54.088 [info] (69041) [BG(1)] analyzing: /Users/josh/.pyenv/versions/3.10.6/envs/kraken/lib/python3.10/site-packages/celery/canvas.py (234ms)
2023-07-11 20:30:54.099 [info] (69041) Background analysis message: resumeAnalysis
2023-07-11 20:31:46.914 [info] [Info  - 20:31:46] (69041) LibraryFile: Received fs event 'add' for path '/Users/josh/.pyenv/versions/3.10.6/envs/kraken/lib/python3.10/site-packages/.watchman-cookie-OCTO-MAC-QMGX653J3V.local-2424-14263'
2023-07-11 20:31:46.915 [info] [Info  - 20:31:46] (69041) LibraryFile: Received fs event 'change' for path '/Users/josh/.pyenv/versions/3.10.6/envs/kraken/lib/python3.10/site-packages/.watchman-cookie-OCTO-MAC-QMGX653J3V.local-2424-14263'
2023-07-11 20:31:52.024 [info] (69041) Background analysis message: invalidateAndForceReanalysis
2023-07-11 20:31:52.056 [info] (69041) Background analysis message: analyze
2023-07-11 20:31:52.161 [info] (69041) [BG(1)] analyzing:

2023-07-11 20:36:57.214 [info] [Info  - 20:36:57] (69041) Heap stats: total_heap_size=1553MB, used_heap_size=1447MB, total_physical_size=1552MB, total_available_size=2593MB, heap_size_limit=4096MB

2023-07-11 20:39:56.914 [info] [Info  - 20:39:56] (69041) Heap stats: total_heap_size=1912MB, used_heap_size=1778MB, total_physical_size=1910MB, total_available_size=2206MB, heap_size_limit=4096MB

Thanks for the issue. Could you provide a minimal, self-contained code sample that demonstrates the problem? It would help with diagnosing and understanding the issue if we could repro it.

I am facing the same problem

I see something is editing files in the background ".watchman-cookie-OCTO-MAC..." causing us to re-trigger analysis

For me this is caused when working with aws_cdk in python.

@ben-elsen Could you provide a minimal, self-contained code sample that demonstrates the problem? It would help with diagnosing and understanding the issue if we could repro it.

Sorry for some reason I didn't get notified about the responses here. Unfortunately I haven't got a minimal sample to provide. This is happening with a commercial product with 40,000 python files in it.
But even after I reverted back to the production release of pylance (from the pre-release) I'm still seeing this happen every hour.
I'm not aware of anything editing files in the background and I have no idea why the watchman process is re-triggering. The logs present in the bug report were from the editor sitting idle.
My virtualenv folder is not within the project folder so I'm not sure that'd be in scope?

Thanks. Can you share your settings.json? Do you have python.analysis.diagnosticMode set to "workspace", or is it "openFilesOnly"? It is "openFilesOnly" by default if it's not set.
You can also specify the directories that you want to type check with "python.analysis.exclude" or "python.analysis.include".

My slightly edited workspace settings:
{
    "folders": [
        {
            "path": "."
        }
    ],
    "settings": {
        "[python]": {
            "editor.formatOnPaste": false,
            "editor.formatOnSaveMode": "file",
            "editor.formatOnSave": true,
            "editor.codeActionsOnSave": {
                "source.organizeImports": true,
                "source.fixAll": false,
            },
        },
        "editor.codeActionsOnSave": {
            "source.fixAll": false,
        },
        "python.experiments.optOutFrom": [
            "pythonJediLSP"
        ],
        "python.analysis.logLevel": "Information",
        "python.terminal.activateEnvInCurrentTerminal": false,
        "python.terminal.activateEnvironment": false,
        "flake8.args": ["--config=src/setup.cfg"],
        "flake8.importStrategy": "fromEnvironment",
        "python.linting.enabled": true,
        "python.linting.lintOnSave": true,
        "python.linting.flake8Enabled": true,
        "python.analysis.useLibraryCodeForTypes": true,
        "python.analysis.completeFunctionParens": true,
        "python.analysis.autoFormatStrings": true,
        "python.analysis.gotoDefinitionInStringLiteral": true,
        "python.analysis.pylanceLspClientEnabled": true,
        "python.analysis.enablePytestSupport": true,
        "python.analysis.persistAllIndices": true,
        "python.analysis.typeCheckingMode": "basic",
        "python.analysis.userFileIndexingLimit": 10000,
        "python.analysis.stubPath": "src/typechecking",
        "python.analysis.include": [
            "src/packageA",
            "src/packageB",
            "src/packageC",
            "src/tests",
            "tasks",
        ],
        "python.analysis.exclude": [
            "**/node_modules",
            "**/__pycache__",
            ".git",
            "**/migrations",
            "src/packageA/exampleA",
        ],

        // we need mypy v1.0.0+ for this extension to work
        "mypy-type-checker.args": [
            "--config-file=src/setup.cfg"
        ],
        "mypy-type-checker.importStrategy": "fromEnvironment",
        "python.testing.autoTestDiscoverOnSaveEnabled": false,
        "python.linting.mypyEnabled": false,  // TODO: burns python threads
        "python.formatting.provider": "black",
        "python.testing.cwd": "src/",
        "python.testing.pytestArgs": [
            "tests/",
            "--tb=native"
        ],
        "python.testing.unittestEnabled": false,
        "python.testing.nosetestsEnabled": false,
        "python.testing.pytestEnabled": false,
        "editor.formatOnPaste": true,
        "editor.bracketPairColorization.enabled": true,
        "workbench.localHistory.enabled": true,
        "search.exclude": {
            "**/node_modules": true,
            "**/bower_components": false,
            "**/*.code-search": true,
        },
        "search.quickOpen.history.filterSortOrder": "recency",
    }
}

And relevant User settings:
"python.analysis.logLevel": "Trace",
 "python.analysis.indexing": true,

I tried installing a previous version of pylance and I'm no longer seeing crashes. It seems there must have been a regression after 2023.06.30, as that is the last version that doesn't lead to memory issues. I tried all versions inbetween latest and 2023.06.30 and it was the only version that ran without issue.

Thanks, without the code sample I wasn't really able to repro this. However, there was https://github.com/microsoft/pyright/issues/5540 fixed recently, not sure they're the same issue. That fix should ship in tomorrow's Pylance prerelease build. Could you try again once the new prerelease build is out and let us know if your issue still persists?

we should at least fix this part
2023-07-11 20:18:42.992 [info] [Info  - 20:18:42] (69041) LibraryFile: Received fs event 'add' for path '/Users/josh/.pyenv/versions/3.10.6/envs/kraken/lib/python3.10/site-packages/.watchman-cookie-OCTO-MAC-QMGX653J3V.local-2424-14250'
2023-07-11 20:18:42.995 [info] [Info  - 20:18:42] (69041) LibraryFile: Received fs event 'change' for path '/Users/josh/.pyenv/versions/3.10.6/envs/kraken/lib/python3.10/site-packages/.watchman-cookie-OCTO-MAC-QMGX653J3V.local-2424-14250'
2023-07-11 20:18:48.129 [info] (69041) Background analysis message: invalidateAndForceReanalysis

I guess we should add a heuristic that if a change is under ., we ignore such changes. we have similar one in user file changes but not in library file changes.

that said, I agree with @StellaHuang95 without live repro, it would be impossible to pinpoint root cause. all we can do is some speculation. the fix @StellaHuang95 mentioned is a generic perf improvement done in some parts in our system so, it could help this situation but no guarantee.
if there is some kind of memory leaks, we would still need repro to pin point that.

I've done a few things now which may have resolved the issue:

Installed the newest pylance released today, version: 2023.7.40
Stopped watchman in the virtualenv with: watchman watch-del /path/to/venv though it started right back up and continued to detect a change every minute or two
Deleted and re-created my virtualenv with a new python version, from 3.10.6 to 3.10.12 and reinstalled all of my packages

I'm no longer seeing watchman detecting changes in my virtualenv every 2 minutes, and therefore not seeing a constant re-scan and an increasing heap size. I should have been a bit more diligent in isolating the pylance version vs the virtualenv refresh, but the older version of pylance didn't have the same issue on the existing virtualenv.

Thanks, glad to hear that your problem has been resolved. We've also added heuristics to disregard certain library file changes. These enhancements will be included in the upcoming pre-release version.

This issue has been fixed in prerelease version 2023.8.21, which we've just released. You can find the changelog here: CHANGELOG.md

I opened related issue on pyrx to keep investigating root issue (possible memory leak). regardless of the consistent rescanning, we shouldn't OOM.


Cannot connect to the server

UPD: OpenVPN is connected but I can open only google.com

I have the same problem.
Server: CentOS 7
DNS: I chose Google DNS

If you can connect to Google like you claim, you should be able to browse any other website. Not a problem with the script.


Redo distribution section and modal for v2

What does this PR do and why?
The previous version of this is ProjectPayoutMods. It's a massive file containing 3 main components: the payout section itself, the payout cards and the modal that appears when you click 'Add a payout' or click to edit a card. Also, in this case there a single modal element being rendered, who's state (all its fields, add/edit mode) was being altered from the parent component.
I've separated these components out in the v2/shared/DistributionSplitsSection folder. I've moved as much logic (field setting, saving fields, etc.) into the modal component. To avoid setting the modal's state from the parent index file, I've just put an 'Add' version of the modal in the index and an 'Edit' version of it in each of the DistributionSplitCards
Screenshots or screen recordings
If applicable, provide screenshots or screen recordings to demonstrate the
changes.
Acceptance checklist

[ ] I have evaluated the Approval Guidelines for this PR.
[ ] I have tested this PR in all supported browsers.

@johnnyd-eth lfg on this one


Add basic auth to kubernetes provider

This will add the kubernetes provider for basic authentication. Thanks to @SantoDE for #1147.
Some constraints:

Basic authentication only
Realm not configurable; only traefikdefault
Secret is in same namespace as ingress rule
Secret must contain only single file (*)

(*) otherwise we can have some conventions here like key name (pattern)
Example
Based on https://docs.traefik.io/user-guide/kubernetes/

Encode credentials
htpasswd -c ./auth jane
Deploy a secret to k8s
kubectl --namespace=kube-system create secret generic mysecret --from-file auth
Deploy ingress

apiVersion: v1
kind: Service
metadata:
  name: traefik-web-ui
  namespace: kube-system
spec:
  selector:
    k8s-app: traefik-ingress-lb
  ports:
  - port: 80
    targetPort: 8080
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: traefik-web-ui
  namespace: kube-system
  annotations:
    ingress.kubernetes.io/auth-type: "basic"
    ingress.kubernetes.io/auth-secret: "mysecret"
spec:
  rules:
  - host: traefik-ui.local
    http:
      paths:
      - backend:
          serviceName: traefik-web-ui
          servicePort: 80

Note the two annotations to enable basic auth and link the secret

I have applied most of the review comments @timoreimann requested. Thanks for the feedback! The  test coverage and documentation can be better. I may be able to do a little bit more end of the week.

Thanks @alpe, looking pretty good now.
A bit of documentation (especially with regards to the limitations mentioned in the PR) and coverage of the important unhappy paths would be great to have. 👍

Ping @alpe

Documentation added

@alpe @timoreimann I know this is done but I was reviewing due to #1596 and saw this:
https://github.com/containous/traefik/blob/master/provider/kubernetes/client.go#L266
// fireEvent checks if all controllers have synced before firing
// Used after startup or a reconnect
func (c *clientImpl) fireEvent(event interface{}, eventCh chan interface{}) {
	if !c.ingController.HasSynced() || !c.svcController.HasSynced() || !c.epController.HasSynced() {
		return
	}
	eventHandlerFunc(eventCh, event)
}

Was excluding the new secController from this check for "all controllers" intentional?

Side question: What do we need the secController for exactly?
I'm really not too deep into that part of the code. What I know though is that we use various events as a trigger to poll the k8s APIs. Does the secController make sure we do that for Secrets events as well? If so, can such events ever indicate a state change relevant for Traefik?

@alpe These instuctions
Encode credentials
htpasswd -c ./auth jane
Deploy a secret to k8s
kubectl --namespace=kube-system create secret generic mysecret --from-file auth

are not on the traefik website and it was very hard to eventually track down this PR and find the example for creating the secret.

@shadycuz Apologies, this could have been better. I had very limited time to work on this when I contributed the code. I'm happy that you find it useful. I am very sure the community will appreciate it when you could help with some doc so that it is easier for others to setup the basic auth.

@alpe I can do that from what I know and what I see in this PR, but I have other questions, for example can we generate the secret according to instructions for generating the web dashboard auth?

Passwords can be encoded in MD5, SHA1 and BCrypt: you can use htpasswd to generate those ones.

as long as its USERNAME:ENCRYPTEDPASSWORD ?

https://docs.traefik.io/configuration/backends/kubernetes/#authentication

I think it is problematic to grant permission to get every secret in the kube-system namespace?  It seems like the RBAC constraints should be limited to a specific secret resource or pattern for the secret name, for example treafik-* ?

@erkolson Could ask your question on the Traefik community Slack channel or Stack Overflow using the "traefik" tag


Update PUDL Development Docs

I'm simplifying and updating the documentation related to PUDL development. This includes:

[x] Development Environment Setup
[x] Building the Documentation
[x] Running the Tests
[ ] Data Validation
[ ] Dependencies & Python Packaging
[ ] Project / Branch Mangement / GitHub Workflow

Ah sorry, none of the data_validation documentation was meant to be reviewed -- just the testing and dev_setup -- I've combined it with the testing file now and made it more concise.

I guess since we are removing anything about how to run the ETL from the user facing documentation (and putting it all in the developer documentation) we probably need to move anything about pudl_setup and pudl_etl and pudl_datastore over into the developer docs? Does that seem right @cmgosnell?

Yes I think that is exactly right.


Experimental: Attempt to include sha256 in release notes

This could be directly copied into the ansible playbook.
Untested. Based on

https://github.com/travis-ci/dpl/issues/155#issuecomment-313177958
https://github.com/travis-ci/travis-ci/issues/6423#issuecomment-400980292

Coming briefly back to this proposal, an alternative that is used by many open-source projects to workaround the absence of checksums in the Releases assets is to create a second asset containing the checksum e.g.${TRAVIS_REPO_SLUG#*/}.tar.gz.sha{1,256,512}.

Following the deployment of today's website, I came back to this proposal. I have tested the various implementation on my fork:

https://github.com/sbesson/www.openmicroscopy.org/releases/tag/2019.02.18-2 is the direct outcome of aeb5cac
https://github.com/sbesson/www.openmicroscopy.org/releases/tag/2019.02.18-3 is the output of https://github.com/openmicroscopy/www.openmicroscopy.org/pull/255#issuecomment-427867011
https://github.com/sbesson/www.openmicroscopy.org/releases/tag/2019.02.18-4 is a variant to aeb5cac using sha256sum --tag to try and improve the readability of the release notes

Propose to get one of these options (or a better suggestion) in so that we can test the cut-n-paste workflow in the upcoming deployments. Any preference @manics @joshmoore @jburel ?

My favorite is 2019.02.18-4 - at the least, good to mention which checksum algorithm is being applied!

Works for me as well. If we move this strategy to other repos, I could see extending this to include something along the lines of:
export BODY=$(cat CHANGELOG.md)

(from dpl-155)

Not 2019.02.18-3 because it forces you to download the checksum before you can open it

Agreed, my hope is that this would open in a browser but effectively it gets you to download the entire SHASUMS file. Objection to 2019.02.18-4 (as per the last commits added to this PR)?
Also all in favor of improving the content of the body as suggested in https://github.com/openmicroscopy/www.openmicroscopy.org/pull/255#issuecomment-465045559 wherever we make the effort of maintaining a changelog/news file.

One more factor to bear in mind: We'll eventually automate the full deployment workflow, so tagging this repo automatically updates the deployment playbook, runs tests, and deploys to production with minimal interaction. Can we do anything to make that easier?

Very preliminary thought would be to start setting up GitHub webhooks and consuming release events. As per this PR additions, the content of assets and body should contain all the necessary information to update the deployment playbook.
The complete workflow obviously need some more thorough scoping. Immediately, I do not see any reason not to start integrating this as an incremental step.

Maybe combine solutions 3 + 4? then downstream scripts can consume the sha artifact without parsing the text of the release.

See https://github.com/sbesson/www.openmicroscopy.org/releases/tag/2019.02.19 for the output of the last commit


Added basic algorithm

-Check for itself
-Check for walls

Hello Kristyn, please find the latest copy of snek.


ARO-4639 update the operator master deployment to support workload identity

Which issue this PR addresses:

Fixes ARO-4639
What this PR does / why we need it:

This causes the spec for the operator master deployment to mount the service account token as a volume, and maps the path to the environment variable expected by Azure to support workload identities
Test plan for issue:

Unit tests confirm that the generated yaml is valid and will be applied to a test cluster to confirm that it's a valid OpenShift resource as well
Is there any documentation that needs to be updated for this PR?

No, part of larger project of adding support for MIWI
How do you know this will function as expected in production?

As with all MIWI support work, it will be extremely challenging to test until we have a way to provision a MIWI cluster. Applying the updated generated resource to a test cluster will probably be the best we can do until then

/azp run ci, e2e

Putting a hold on this until #3761 is merged, as this was rebased onto that to pull in the token file location/mountpoint

#3761 is merged, removing my hold

/azp run ci, e2e

/azp run e2e


Use Dapr oAuth-Middleware in a .Net App with Keycloak

In what area(s)?
/area docs
Ask your question here
Hello,
I'm new to Dapr and we are starting to develop an .Net app. I was following the beginner guide provided here:
https://learn.microsoft.com/de-de/dotnet/architecture/dapr-for-net-developers/getting-started
We are starting with a frontend Blazor server app with Dapr sidecar and a Keycloak all defined in a docker-compose for development purpose.
I have added two Dapr configurations to my components folder:
Keycloak_Component.yaml
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: oauth2
  namespace: default
spec:
  type: middleware.http.oauth2
  version: v1
  metadata:
  - name: clientId
    value: "my_app_id"
  - name: clientSecret
    value: "my_secret"
  - name: scopes
    value: "openid profile roles"
  - name: authURL
    value: "https://localhost:30200/auth/realms/my_realm/protocol/openid-connect/auth"
  - name: tokenURL
    value: "https://localhost:30200/auth/realms/my_realm/protocol/openid-connect/token"
  - name: redirectURL
    value: "https://localhost:54956/"
  - name: authHeaderName
    value: "authorization"
  - name: forceHTTPS
    value: "true"

Keycloak_Pipeline.yaml
apiVersion: dapr.io/v1alpha1
kind: Configuration
metadata:
  name: pipeline
  namespace: default
spec:
  httpPipeline:
    handlers:
    - name: oauth2
      type: middleware.http.oauth2

Now I have two questions:

If I have my frontend application and I have a "login" button or something like that, how can I initiate the login flow to Keycloak via dapr. Do I really have to create a secured REST endpoint and make a Dapr call to it?
How does Dapr understand that a special endpoint is secured?

Thank you very much for your help!

@GeofoxCoding
Your button does not need to do anything with dapr. As soon as you try to access a secured endpoint of your application via dapr invokation, dapr will intercept the call and lead you to keycloaks login page. after successful login, dapr will use the token for authentication with your app.
But i think your idea of dapr and keycloak is not correct. The use of dapr with keycloak is not really for using it traditionally. Dapr authentication middleware is only used, when calling methods of your secured backend via dapr service invocation. If you call the endpoints directly from your ui, dapr is not involved in that. So either you need keycloak integration for your Blazor app too, or all your calls/links to backend endpoints have to be routed through dapr method invocation.


Remove support for Hadoop 2.6

This is in progress on master towards the 3.0.0 release for Spark
See https://issues.apache.org/jira/browse/SPARK-25016
Any reason not to do it sooner here (i.e. for the ADAM 0.24.1 release)?  Keeping support for Hadoop 2.6 in Spark makes a mess of #2072.

Done, in Jenkins configuration.


Support for importing/exporting semaphores

Vulkan enables applications to import external semaphores or export semaphores via VK_KHR_external_semaphore_fd. This enables low-cost synchronization with external entities (either other APIs or other devices). Supporting this would greatly improve the overall performance when IREE is integrated into a multi-device pipeline.

Thanks @kpet! Yes, this is certainly something on our roadmap. Being able to interact with the embedding application in a non-intrusive way is one of the key goals IREE tries to hit. Basically the application should be able to bring its own device/queue/whatever and IREE will use those when instructed. We have APIs like iree_hal_vulkan_driver_wrap_device right now and the rest needs to be built out, including using external semaphores.

Yep! Same with import/export of memory; these features will likely start to land early next year as we need to continue building out the compiler support for async behaviors and can co-design the cross-platform APIs with their usage in IREE-generated modules.

One bit of prework would be understanding how external semaphores work with timeline semaphores - that's still unclear to me. Would be worth prototyping something to ensure we can smoothly integrate things.

The concrete work here is now adding APIs that use iree_wait_handle_t to import/export fds/HANDLEs/etc.


SemanticTokens Edits not performant in large documents

In the Razor and Roslyn LSP we have struggled with writing performant SemanticTokens experiences. The problems seem to boil down as follows (doing my best to include things that only exist as a consequence of the shape of LSP as opposed to Roslyn and Razor decisions).

There is no mechanism other than workspace/semanticTokens/refresh by which the client may avoid "polling". workspace/semanticTokens/refresh is a "big hammer" in that it means all documents will (eventually) need to repaint. This means that a client must either poll every Xms (inefficient) or operate on TYPECHAR (either this will re-request for every visible editor (and possibly not-visible editors unless an "isDirty" system is implimented) or it will only send a request for the document that was edited, at which point something such as adding/removing a static modifier may not result in re-coloration of another window which was expected).
The algorithms to calculate the difference between the previous token array and the new token array are supra-linear with regards to document length and number of changes. This means that as document size increases we're either using an increasing amount of memory (possible Out-Of-Memory Exception), or CPU (just plain slower) depending on your implementation. We have tried strategies to a mitigate this ("chunking" to reduce the supra-linear growth), but we still found the requirement to calculate the diff caused us performance issues.
An edit request requires that the SyntaxTree for the entire document be walked. For particularly large documents and/or complicated SyntaxTrees this can be VERY expensive (10's of seconds have been seen in real-world Razor scenarios). This may be reduced by using the range request rather than the edit request (and only requesting the range that can be viewed), however then not only is the size of the reply in the "no change" scenario (very likely if we still have polling) much larger, but on each reply the client must "re-paint" (however sophisticated/expensive that may be). Combine that with the fact that some clients are "polling" and there's a lot of wasted network and CPU.

One idea is we could include a textDocument/semanticTokens/refresh API similar to the one for workspace which specifies the document(s) to invalidate, and possibly range(s) within that document. This helps clients avoid either polling or sending too many requests using the workspace API, but it does not alone improve the performance of the individual calls (either on the server side for calculation or the client side for re-paint).
I can go into greater depth about our scenario and its troubles if that's helpful.
CC @allisonchou and @gundermanc.

More relevant context
Background
Razor wants to provide both syntactic and semantic tokens colorization from the language server (related to #1063 ?). This means:

Latency must be as low as possible or there will be behavioral artifacts from stale colorization.
The Razor semantic tokens payload is likely larger than the 'additive' color properties case that this protocol is optimized for.
VS in particular has a larger and richer set of semantically classifiable tokens than many IDEs and editors.

Deltas protocol
We've found the deltas protocol is typically poorly suited for both client and server interactions due to high computation cost, response latency, and complexity. Related: #979

Response is expensive for the server to compute, though it is small in size and theoretically cheap for the client to update.
Typically must generate and diff serialized data for entire colorized span of text to send a single token change.
Frequent polling can be relatively cheap for both client and server because null can be interpreted as no change.
Anecdotally, this was very difficult to implement correctly in the VS LSP client:

Delta encoding is such that once it's "out of sync", the colors are permanently wrong for the rest of the session. There's no trivial way to detect such error conditions, unless it results in an out of bounds edit.
Mishandling by any involved party leads to persistent, undiagnosable, misapplied colors. These can include race conditions (version is implied by message order), incorrect data from the server, incorrect interpretation of the data by the client, or incorrect computation of invalidated region of the editor containing the tokens.
This complexity has been a factor in a lot of Developer Community feedback about colorization in LSP languages.

Complexity Example - 'Symmetric Edits'

Token positions are relative and edits are computed via off the shelf diff algorithms. What this means is that an edit to the end start of the file can cause a semantic token 'delta' that gets applied to the end of the file. Working backwards to the minimum set of lines that need repainted has proven to be non-trivial and error-prone. Particularly in VS where each colorized span of text is represented by an object that tracks and moves with the users edits (relevant slide).

Ranges protocol
The best perf tradeoff Razor has found so far is to use the range semantic tokens protocol, which is much cheaper for the server to compute. This comes with some caveats:

The range protocol is implied by the spec to only colorize the viewport, leaving the minimap uncolorized. VS behavior is consistent with this.
The spec does not indicate the expected state of the colorization data (accurate or partial) or the invalidation policy for this data:

VS Code appears to only request once, implying that the server is expected to only respond when it has 100% accurate data, but this is not specified in the spec.
If a server wishes to provide syntactic colorization via semantic tokens protocol, they don't want to wait for accurate data before responding, or the user won't have colorization until the full project analysis is complete, which may take minutes.
The only mechanism for server to indicate that data should be re-queried is 'workspace/semanticTokens/refresh', which queues a refresh for all open documents. There is no server capability indicating that a server will call this, so a defensive LSP client really has to poll at a fixed interval, or risk showing stale colors to the user until the user types. This polling is expensive for client and server.

Proposal - Range invalidation
I propose we make additive changes to the 'range' semantic tokens protocol to facilitate its use in more scenarios.

I suggest addition of 'textDocument/semanticTokens/range/refresh' server => client notification. This event can be raised with a versioned document URI and one or more ranges of text that changed. Clients or servers that don't support such granularity can optionally choose to refresh the entire viewport, if desired.
Client capability - indicates to the server that the client supports the notification.
Server capability - indicates to client that the server will always explicitly refresh ranges and should never be polled after the document is opened.

ITagger Analogue
In Visual Studio colorization is provided via a mechanism called an ITagger. This API has two primary members:

GetTags() -> Gets colors for one or more ranges of text.
TagsChanged -> Signals that colors changed in one or more ranges of text.

This mechanism is incredibly flexible in that it lets the client request colorization at any point and gives the server the ability to invalidate regions of colorization in a granular fashion, via any means, if it's able to.
Taggers, optimization, and the minimap
One argument for the 'delta's protocol is that it enables colorization of the full mini map and efficient update of the map as the colors change. In VS Windows this is accomplished entirely via something akin to 'range' protocol:

The viewport opens
The editor requests colorization for the visible range, plus a screenful above and below.
When the editor is colorized, colors are requested at fixed intervals for the minimap in batches of 100 lines, until it is fully up to date.
The cached minimap colors are reused as the user edits, and updated infrequently at a low priority when the user is idle.

The same behavior could be adopted by editors using the range protocol so long as the server raises refresh events outside the visible range.
The Future of Deltas Protocol
In closing, I recommend considering the deltas protocol for deprecation. Our experience that it brings an untenable amount of complexity, performance overhead, and latency which negate the benefits of its small payload size over the wire in JSON.

When switching from edits to range handling, Razor also noticed a huge improvement in memory allocation, especially in larger files. This is likely due to the costs of the diffing algorithm (point 2 in Ryan's original post):

I suggest addition of 'textDocument/semanticTokens/range/refresh' server => client notification. This event can be raised with a versioned document URI and one or more ranges of text that changed. Clients or servers that don't support such granularity can optionally choose to refresh the entire viewport, if desired.

@gundermanc
I'm not so sure the ability to pass specific spans will help Roslyn - in order to tell the client what ranges have changed, we need to know the viewport so that we do not have to recompute the semantic tokens for the entire file.
The way this works in VS today is that text changes, workspace changes, view port changes, etc all trigger a recalculation of semantic tokens for just the current viewport.  Then we do a diff of the actual tags against the previous and raise TagsChanged for just the changed spans.  Note that this uses tracking spans to map the previous classifications forward to diff against.
Passing no spans and telling the client to re-ask for the entire viewport seems more likely to work - but still has the problem that we'll be returning the entire viewport range and re-painting each time.  Perhaps the client needs to be able to diff the classification spans and repaint only the changes?

textDocument/semanticTokens/range/refresh

Using this API as it seems to be intended means that the Language Server will need to understand which change was made and how that change might or might not affect every document/range in the project. For example, let's imagine we make a C# method static. This affects not just the spot where we made the change, but also any location that calls that method (now that token requires the static modifier). To accomplish this without just replying that each "open" document now is out of date Razor must essentially run a Find all References against the entire document. Some Language Server's might find that level of control valuable, but I'm pretty sure that Razor would simply issue a refresh for every open file until we could prove that doing the more complicated thing was more performant (and maintainable). Such smarts would be VERY hard for us to calculate because we'd have to cross the C# barrier, and I would guess would be more expensive than just walking the relevant document for the existing edit api (since more than one document must be queried).


Aliased imports don't propagate well in the generated mocks (at least in source mode)

Generating a mock, in source mode, for an interface that references types from an imported package that is aliased will not generate the same alias in the generated output. This creates problems when you want to generate within the same package since other tools, mockgen included, can't deal with packages that import other package with different aliases.
Expected behavior A clear and concise description of what you expected to
happen.
The generated mock should use the same aliases as the source package.
To Reproduce Steps to reproduce the behavior

Try to generate a mock for a file like this:

package import_aliased

import (
	definition_alias "github.com/package/definition"
)

//go:generate mockgen -package import_aliased -destination source_mock.go -source=source.go -imports definition_alias=github.com/package/definition

type S interface {
	M(definition_alias.X)
}

The generated file preamble will look like

// Code generated by MockGen. DO NOT EDIT.
// Source: source.go
//
// Generated by this command:
//
//	mockgen -package import_aliased -destination source_mock.go -source=source.go -imports definition_alias=github.com/package/definition
//

// Package import_aliased is a generated GoMock package.
package import_aliased

import (
	reflect "reflect"

	definition "github.com/package/definition"
	gomock "go.uber.org/mock/gomock"
)

// MockS is a mock of S interface.
type MockS struct {
	ctrl     *gomock.Controller
	recorder *MockSMockRecorder
}
...

notice that now the import_aliased package imports the github.com/package/definition with two aliases: definition and definition_alias. This is not a real problem for the go compiler but mockgen itself can't handle it. The right thing here is for generated file to reference the import with the same alias.
Additional Information

gomock mode (reflect or source): source
gomock version or git ref: 986b50e1c8ae8331291c0e34ddd2060f8129cae5
golang version: 1.20 - 1.22

Triage Notes for the Maintainers

ping

Hey @mtoader thanks for the PR.
I understand it does create friction to have two different import aliases within the same package for the same import, but can you elaborate on what you mean by "mockgen itself can't handle it"?

Hey @mtoader thanks for the PR.
I understand it does create friction to have two different import aliases within the same package for the same import, but can you elaborate on what you mean by "mockgen itself can't handle it"?

I can definitely try,
Assume this:

a package p with two files a.go and b.go
an aliased import in a.go like import imp_alias_a "github.com/package/definition"
another aliased import in b.go with a different name. like import imp_alias_b "github.com/package/definition"
an interface defined in a.go
a client package client_p that has an interface definition like type Int interface { F(imp_alias_a.Definition) }

Then

if you try to generate a mock in client_p for Int, mockgen will fail.

This triggered for us because we do in-package mock generations for interfaces that reference proto definitions and we decided to have the proto generated packages aliases. One level of generation works but when you import a package that already has a generated mock with a different alias the generation fails.
Let me know if this is clear. If not i can try to make a repro case.

Also .. please advice on how to write those tests better.

@mtoader, would you be able to provide a repro example and an error message for the situation?

@mtoader, would you be able to provide a repro example and an error message for the situation?

let me try

@mtoader, would you be able to provide a repro example and an error message for the situation?

let me try

@r-hang see https://github.com/mtoader/sample-gomock. Checkout and do run.sh (assuming a working go setup) should show an error message similar to:
2024/03/19 13:30:35 Loading input failed: /Users/mihai/sample-gomock/pack/r.go:10:13: failed parsing arguments: /Users/mihai/sample-gomock/pack/r.go:10:17: unknown package "proto_pb"
client.go:8: running "mockgen": exit status 1

there are some comments in the run.sh explaining the relatively narrow edge case here :)

ping ?

Sorry for the delay and thank you for the repro. I'm starting to take a look now, i'll have an update by Monday.

Sorry for the delay and thank you for the repro. I'm starting to take a look now, i'll have an update by Monday.

Perfect, Hopefully you can get a proper solution. My PR is basically a hacky way to solve the issue but is fundamentally skirting the issue.

Sorry for the delay and thank you for the repro. I'm starting to take a look now, i'll have an update by Monday.

Perfect, hopefully you can get the right fix in place.

Hey @mtoader,
I think the cause of this issue has to do with mockgen's attempt to merge all the files of a package with ast.MergepackageFiles before parsing it for imports. Only one package name is recognized by gomock at the conclusion of this step. While parsing, if an imported package alias is not in this map produced by this process, mock generation will fail. As your repro case points out, the order of the merge matters.
This also seemed to happen when dealing when mocking embedded interfaces in a different package because mockgen initializes a new parser for that package that does not carry over state from the root file we're looking to mock.
From my understanding, when parsing a package embedded somewhere in a package we want to mock, any difference in package aliases for the a particular package could cause this issue. In your example, a generated mock does trigger this case but mock generated code is not required.
If I patch your proposed fix here https://github.com/uber-go/mock/pull/165/files, but modify your github repro case with the patch below -- i'll still get a similar error on run.
new file mode 100644
index 0000000..8b2c385
--- /dev/null
+++ b/pack/a.go
@@ -0,0 +1,7 @@
+package pack
+
+import (
+	proto_name "github.com/sample/sample-gomock/proto"
+)
+
+func x(p *proto_name.X) { return }
diff --git a/pack/r.go b/pack/r.go
index 5d2c2fd..cca477d 100644
--- a/pack/r.go
+++ b/pack/r.go
@@ -1,11 +1,11 @@
 package pack

 import (
-	proto_pb "github.com/sample/sample-gomock/proto"
+	"github.com/sample/sample-gomock/proto"
 )

 //go:generate mockgen -source r.go -destination mock_pack.gen.go -package pack

 type I interface {
-	DoSomething(x *proto_pb.X) (int, error)
+	DoSomething(x *proto.X) (int, error)
 }

Where the error is  src/github.com/mtoader/sample-gomock/pack/r.go:10:13: failed parsing arguments: /Users/rhang/gocode/src/github.com/mtoader/sample-gomock/pack/r.go:10:17: unknown package "proto"
As you alluded to in this issue, I think mockgen should be able to handle different aliases to the same package since the Go compiler is able to do so, i'm trying to see what changes that would require.

Yea .. my patch just attempts to manage the badness, the real solution is more complicated.

Yea .. my patch just attempts to manage the badness, the real solution is more complicated.

Thinking about what would be a good default behavior here, i think the following rules should hold;

when in source mode, any imports in the generated files should use the same aliases as the imports used in the corresponding input files. E.g. if source.go containing type X interface imports a package with some alias and that import is needed for the target mock_source.go the import within mock_source.go should use the same as the original file.
When parsing a package the import aliases should be tracked per input files
have the ability to force a particular alias for some import by hand (currently the -imports flag seems kind of broken for some reason but it should always work regardless of how the import package path looks like).

ping ?

I'm running into what I think is a similar problem with a different source... at least a similar problem that should have the same solution. I'm trying to use the AWS SDK, and it has a types package for each module:
imports (
	"github.com/aws/aws-sdk-go-v2/service/s3"
	s3types "github.com/aws/aws-sdk-go-v2/service/s3/types"
	"github.com/aws/aws-sdk-go-v2/service/sqs"
	sqstypes "github.com/aws/aws-sdk-go-v2/service/sqs/types"
)

I'm unable to generate mocks for this source. The generated code looks like
import (
	types "github.com/aws/aws-sdk-go-v2/service/sqs/types"
	gomock "go.uber.org/mock/gomock"
	sqs "github.com/aws/aws-sdk-go-v2/service/sqs"
	s3 "github.com/aws/aws-sdk-go-v2/service/s3"
)

The s3 types package in unknown presumably due to a conflict with the sqs types package, so the mock will not compile. Adding -imports sqstypes=github.com/aws/aws-sdk-go-v2/service/sqs/types,s3types=github.com/aws/aws-sdk-go-v2/service/s3/types has no perceptible impact on the generated mock source.

We are also facing this issue? Any update on the fix as this has not been updates since April?

Hey @mtoader sorry for the delay.
Let's merge https://github.com/uber-go/mock/pull/165/files because it fixes what looks like a mistake where definedImports is never indexed by the importpath it is actually populated with.
As for the long term fix with the rules you specified above, I agree with your points!

I need to rebase / merge things. Gimme some little to do this.


Unable to create ResourceQuota for SecurityProfilesOperatorDaemon

What happened:
Tried to create a ResourceQuota for instance of the SecurityProfilesOperatorDaemon CRD. Instead, the following error was returned:
The ResourceQuota "test-object-counts" is invalid: spec.hard[count/securityprofilesoperatordaemons.security-profiles-operator.x-k8s.io]: Invalid value: "count/securityprofilesoperatordaemons.security-profiles-operator.x-k8s.io": name part must be no more than 63 characters

What you expected to happen:
The ResourceQuota is created.
How to reproduce it (as minimally and precisely as possible):
kubectl create -f the following:
apiVersion: v1
kind: ResourceQuota
metadata:
  name: test-object-counts
spec:
  hard:
    count/securityprofilesoperatordaemons.security-profiles-operator.x-k8s.io: 100

Anything else we need to know?:
Could a shorter name be used for the CRD?
Environment:

Cloud provider or hardware configuration: EKS with a Kubernetes 1.20 control plane
OS (e.g: cat /etc/os-release): n/a
Kernel (e.g. uname -a): n/a
Others: kubectl version 1.23.5

I guess the short name spod can't be used here?

Correct. Both of these variants will allow a ResourceQuota to be created but it doesn't result in a quota that's enforced:
count/spod.security-profiles-operator.x-k8s.io: "100"
count/spods.security-profiles-operator.x-k8s.io: "100"

I think spod is fine, good catch @helenabutowatcisco!

/remove-lifecycle rotten

/remove-lifecycle stale

/remove-lifecycle stale

@helenabutowatcisco do you plan to spin-up a PR for this?

Sorry, no. I removed the stale label because I think that this is still an issue.


Track activations (new installs)

Describe the solution you'd like
I would like to get a report showing how many new installs happened daily, weekly, monthly
Describe alternatives you've considered
A way to download all data, to perform this in house
Additional context
N/A

Thank you for your request. At the moment we're showing installs per distribution group in the overview tab, can you help me understand how the data you are looking for is different?

Thanks for the reply !
In the overview tab, I see the following, not sure if that's what you were referring to.


MudDatePicker for month selection only

Feature request type
Enhance component
Component name
MudDatePicker
Is your feature request related to a problem?
No response
Describe the solution you'd like
Background: I have two fields from month and to month.
I does not matter which year its only to define an accounting year
Normally the accounting range from January to December but if
different i want to allow the user to define from which month to which month
the accounting years ranges to.
I used the Muddatepicker 2 times for the month from and the month to portion.
Here the only thing i would need is to hide the year part since its not related to a particular year.
Also i tried MudDateRangePicker, here is the same wish to hide the year.
But there are other issues to achieve a from to month pattern.
Can you check in this regard ?
Have you seen this feature anywhere else?
No response
Describe alternatives you've considered
No response
Pull Request

[ ] I would like to do a Pull Request

Code of Conduct

[X] I agree to follow this project's Code of Conduct

Do you mean like this?
https://try.mudblazor.com/snippet/cOcHaPlBxplQLYie
There are a lot of things u can configure for the MudDatePicker control, see the API documenation here:
https://mudblazor.com/api/datepicker#pages

Thats exactly what i did. But i want to hide the year since it is not applicable.

With MudDateRangePicker its not possible to custom tailor the view to have a from to month screen on a
xs (Mobile) device.
In addition how can i easily validate that from month should not exceed to month?

Okay you're right about the year notation. I know it's 'ugly' but u can use CSS for that:
https://try.mudblazor.com/snippet/mamROvvtSiaCbcxL
About the validation, I guess this component should be part of your form/input validation as all the others and do something like:
if (to <= from)
    //Handle errror here..

Its not ugly its just perfect for me!
Surely it would be nice if its implemented as a switch inside the muddatepicker component, though.
Thank you !
I have used the error= to indicate the error and prevent the user from saving
based on a method where i make the if (to <= from). Also clearing and setting the error flag.


items medium: wrongly assigned

Some medium are not correctly migrated:
ex: https://cds.cern.ch/record/2005253/holdings?ln=en (https://cds.cern.ch/record/2005253/export/hm?ln=en) ->
https://sandbox-cds-ils.web.cern.ch/literature/2dreh-ng957

@agentilb the medium is taken from field 340__a as discussed before, is that incorrect ?


Testing v9.5.2

confluent-kafka not installing on the control machine. Fixed by just installing this from the workstation (so it's the wrong binaries) then doing the rest of the install from the control machine
Was no dodal release so just checked out main?
GDA still doing xrc when robot load enabled
Panda config hadn't set seq1 prescale and prescale units, so pulses were being sent too quickly and signals were being dropped
Had to wire the Panda back up from the eyeball experiment - we plugged TTLOUT1 from the panda into TTLIN1 to the Zebra 1. We unplugged the connection from zebra 1's TTLIN1 to zebra 2 for this

Issue with PCAP writing in that we had to stage the panda after we run setup
Need to get the aperture positions for moving before snapshot from the aperture scatterguard itself - need to probably have an enum with the positions in that we use that as an external interface
Issue with gda not knowing the sample on restart and so sending an empty sample id to hyperion
 [31m[E 240808 14:33:41.263 __main__:254] ['Traceback (most recent call last):\n', '  File "/dls_sw/i03/software/bluesky/hyperion_v9.5.2/hyperion/src/hyperion/__main__.py", line 228, in compose_start_args\n    parameters = experiment_internal_param_type(**json.loads(request.data))\n                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n', '  File "pydantic/main.py", line 341, in pydantic.main.BaseModel.__init__\n', 'pydantic.error_wrappers.ValidationError: 1 validation error for PinTipCentreThenXrayCentre\nsample_id\n  none is not an allowed value (type=type_error.none.not_allowed)\n', '\nThe above exception was the direct cause of the following exception:\n\n', 'Traceback (most recent call last):\n', '  File "/dls_sw/i03/software/bluesky/hyperion_v9.5.2/hyperion/src/hyperion/__main__.py", line 246, in put\n    plan, params, plan_name, callback_type = compose_start_args(\n                                             ^^^^^^^^^^^^^^^^^^^\n', '  File "/dls_sw/i03/software/bluesky/hyperion_v9.5.2/hyperion/src/hyperion/__main__.py", line 230, in compose_start_args\n    raise ValueError(\n', "ValueError: Supplied parameters don't match the plan for this endpoint\n"]

https://ispyb.diamond.ac.uk/samples/sid/5682018 is the full hyperion doing everything
Pulse size on PCAP needs to be the same as the exposure time
Box size isn't just changed by changing BOX_WIDTH_UM because it isn't passed through to grid_detection_plan. Trying to add 10 in that call resulted in https://ispyb.diamond.ac.uk/dc/visit/cm37235-3/dcg/12681792 , which failed to kickoff the FGS


feat: Adding a Provider implementation on top of the standard dotnet FeatureManagement system.

This is currently dependent on a preview feature being added to the standard dotnet FeatureManagement library called Variants.
This new feature is required as with out it, features are either on or off. Variants allow feature flags to provide configuration based values.

@toddbaert @bacherfl could you please review this tomorrow?

Updated to address @bacherfl's suggestions.

thanks for the additional tests! LGTM

Seems like i did not see the failing dotnet-format check - can you please address that one? Other than that the implementation looks good to me


Convert more of tikv crate to engine traits

What problem does this PR solve?
This converts more of the tikv crate to use engine traits instead of rocks directly. This is pretty much all of the easy stuff in the tikv crate. Everything else is going to take careful thought.
Part of https://github.com/tikv/tikv/issues/6402
Problem Summary:
What is changed and how it works?
Related changes
Check List
Release note

No release note.

This Pr is updated and I've responded to the review question. cc @Little-Wallace @Connor1996 @hicqu

/test

I agree. I think we do not need to add more type parameter...

@Little-Wallace can you get https://github.com/tikv/tikv/pull/8983 ready to merge?
It seems like an improvement and a prerequisite for anything in this patch.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

Blocked on https://github.com/tikv/tikv/pull/8983

Blocked on https://github.com/tikv/tikv/pull/8983

This patch is hopelessly bitrotted. Closing.


Added forgotten npm service provider. Fixes #335

Coverage decreased (-0.01%) to 43.157% when pulling 6a65068fd405f0dfaf5b9279970128bf293fc01f on bankiru:added-forgotten-npm-service-provider into 55e6f896c857bddc58fcc9af48606d2b0b23b740 on Codegyre:master.

Coverage decreased (-0.02%) to 43.146% when pulling 4ea8ed8050cc8e86193fb1db823c3bdc7fe8e553 on bankiru:added-forgotten-npm-service-provider into 55e6f896c857bddc58fcc9af48606d2b0b23b740 on Codegyre:master.

Thanks.


Heart on your sleeve has been removed or no longer obtainable

❤

what of galaxy brain!

same, closed!


Button to send a message on CLIQ missing.

If i person is using CLIQ web, there is no chance he/she can send a message purely using mouse.
A keyboard is must to hit an enter.
A button to send a message should be there to ease the process.

Hi @ayush-021trade,  Kindly forward the details of the use case to<EMAIL_ADDRESS>


OPSEXP-2785 Add completely customizable probes for connector charts

Ref: OPSEXP-2785

@alxgomz I guess its safer to keep it major; when some user is defining different .internalPort it might be an issue.


Ability to change background colour

Store feedback:

"Great app and would be even better if you add more customisation like Ability to change background colour"

Perhaps we could have a setting to either follow system theme or user customisable

I don't understand this properly.
Do they want to set light/dark/system theme on their own for the flyout?
Or do they want to set a custom background color 🤔? (I didn't think of special case scenarios like this 😔)

i think they are thinking about custom background colours, never occurred to me either

But how would that work, we have light theme and dark theme. In which theme should they be able to change the colour. (Windows 10 allows accent to be shown in taskbar, action center, start menu only in "Dark mode and we can only set darker colours as the accent colour)
This will break the design (contrast issues, visibility of controls & etc). IMO the colour should be as it is

i agree, more trouble than its worth, for now not a priority


Add Mixtral support

Could Mixtral be implemented? Thanks for any help you can provide.

There's a PR open at #483 but it's on pause for right now.. It's a bit tricky to implement MoE efficiently on TPU.
We're definitely interested!

closing as dupe of #473 #483

Mb


link to IMG during auto-build

This dev. build seems to have built, but it doesn't include IMG (shown here):
https://github.com/pds-data-dictionaries/ldd-msss_cam_mh/blob/v1000/build/development/5fa0821755df0c1bf23f72b8718cae695c442389/<IP_ADDRESS>/PDS4_MSSS_CAM_MH_1E00_1000.xsd
Is there a method in the lddtool command used on GitHub to also list the IMG dependency? See lddtool command below.
shown here, IMG needs to be listed at top ar built with a local LDDtool install:
https://github.com/pds-data-dictionaries/ldd-msss_cam_mh/blob/v1000/build/release/1.E.0.0_<IP_ADDRESS>/PDS4_MSSS_CAM_MH_1E00_1000.xsd
Also my local LDDtool run set a IMG version to "1E00_1600" instead of "1E00_1800" (as shown in the above link, line 25, but commented out for temporary inclusion for the latest build on github).
local lddtool run (with IMG dictionary):
lddtool -lpsnJ PDS4_IMG_IngestLDD.xml PDS4_MSSS_CAM_MH_IngestLDD.xml

@thareUSGS is this still a problem? or can we close this out?

@thareUSGS closing this since i believe this has been fixed


fix the error of new nodes' vtep info not being added to local vxlan dev fdb

Pull Request Description
Describe what this PR does / why we need it

Update some docs.
Fix the error of new nodes' vtep info not being added to local vxlan dev fdb.
Avoid unneeded error output for bgp manager.

Does this pull request fix one issue?

Describe how you did it
Describe how to verify it
Special notes for reviews

Codecov Report

Merging #163 (6ddde2b) into main (1530d84) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main     #163   +/-   ##
=======================================
  Coverage   31.54%   31.54%
=======================================
  Files          22       22
  Lines        1452     1452
=======================================
  Hits          458      458
  Misses        942      942
  Partials       52       52

Flag
Coverage Δ

unittests
31.54% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 1530d84...6ddde2b. Read the comment docs.


how to use the same database as PHP-Login

I've wanted to use my own system along with PHP-Login, and do my own code inside the PHP-Login code. I see that in the database the users username etc. is encrypted. Is there a way to get the key, or run sql code to the database?

There's no encryption built into any of the database methods. I leave that up to each developer to handle on their own. The only thing that is hashed are passwords. You shouldn't have any trouble migrating the database with mysql

What about adminID and user ID?

No fields in the database are encrypted except for hashed passwords


AppKit & UIKit Support

Take a look at my implementation, maybe you'll find it useful 😎

Looks really interesting! Closing this issue as it's more of a discussion rather than an issue, but have bookmarked your code and will definitely add something inspired by it :)


Production Ready

Would you say brood is production ready?

That's a pretty big question, but I'll try to answer it as concisely as I can. Here goes:
brood is totally usable as an ECS library. It is more than just a "proof of concept"; brood was designed from the beginning with performance, scalability, and soundness in mind. The entire public API is documented and the crate is well tested. Benchmarks have shown brood to have on-par or better performance compared to other ECS libraries in the Rust ecosystem. Querying and scheduling are set up to take full advantage of parallel iteration (with both inner and outer joins) through interfacing with rayon, allowing you to iterate tens of thousands of entities very quickly (well within one frame, according to benchmarks I have run).
A few things I think brood has going for it over other ECS solutions in the Rust ecosystem:

Use of heterogeneous lists (often called HLists) allows for inserting and querying lists of components that are arbitrarily long. Other ECS solutions often limit you to at most 8, 16, or sometimes 24 component views at a time during querying, which can be frustrating as your project grows in scale. There is no limit to the number of components that can be viewed here (although you may need to bump up the type recursion_limit if you try to view more than 128 at once).
The query system is, in my opinion, very clear and expressive. It feels straightforward defining what views you want to have on your components.
As many things are pushed to compile-time as possible, including reordering of components before storage or viewing. Even construction of stages for a Schedule is done at compile time through some HList tricks. This means that the run-time overhead is minimal.

The two things that make me hesitant to outright say brood is "production ready", however, are the absence of certain features and the stability of the API.
As I said above, brood is a strong ECS that I believe is completely usable at this time. However, in my own use of it I've come across some small pain points. For example:

There is currently no way to look up entries for other entities during query iteration, making inter-entity relationships a bit more difficult. It doesn't make them impossible by any means, it just makes them a bit less convenient than they could be. See #185 for the progress being made on that.
There is also currently no way to add or remove entities, or add or remove their components, from within a System. As above, this doesn't actually limit what you can do with the ECS, it just means it's slightly less convenient; rather than modifying entities directly in the system, you'll need to store the modifications you want to make in the system's state, and after execution run the modifications on the World.

You may have also noticed that this crate is not past version 1.0.0. The versioning follows semver, and as such, the public API is not considered stable. The API can and will change as development continues. I won't purposefully make breaking changes, but I can't guarantee that, when I release version 0.7.0, it will be absolutely painless to upgrade. Note that this is not unique to brood; none of the ECS crates on arewegameyet are past version 1.0.0, and therefore none of them promise a stable API.
Hopefully that answers your question :)


Update selenium-webdriver to the latest version 4.5.0

Thanks, what about the other vscode-extensions packages?

What do you mean? I don't see any other selenium dependency.


Update Firefox to 43.0.1

see https://www.mozilla.org/en-US/firefox/43.0.1/releasenotes/

Thank you for the contribution. It was merged directly as 87ade06eef76e51bb2ddad9edc08de1b34333ac2 to keep commit history cleaner. Your contribution is still credited to you.


Print multi page PDF on Android and iOS

Hi @CodeMinion,
I'm back with a problem!
I need to print a pdf which has more than one page. like this one:
1d03fb0559d2ea414911ab699d15a4fb.pdf
The print printPdfFile function prototype permit to indicate a page number (int) to print.
When i check the Brother SDK documentation, i see that (for Android, i have not yet see for iOs) the printPDF function has 3 prototypes:

public PrintError printPDF(final String path, final PrintSettings printSettings);
public PrintError printPDF(final String[] paths, final PrintSettings printSettings);
public PrintError printPDF(final String path, final int[] pages, final PrintSettings printSettings);

The first prototype permit to print all the pages of a PDF file.
When i look at your implementation it seems that you don't implement it. Am i right ?
Do you think it is possible to implement it ? or Not ?
Best regards
Alain Deseine.

Hi @alaindeseine ,
Thanks for reaching out about this. You are right, I just looked at the implementation as well and that path is not implemented.
I'll set some time aside this weekend and add it and let you know once the new version is out.
Thanks again for reaching out about this and letting me know of the missing implementation,

Hi @CodeMinion
Thanks a lot!
Tell me if i can help.
Regards.

I add the following and it works:
  // Loop through each page and print it
  int totalPageCount = pageCount ?? 1;
  for (int pageNumber = 1; pageNumber <= totalPageCount; pageNumber++) {
    brother.PrinterStatus printResult = await printer.printPdfFile(filepath, pageNumber);
    await processPrinting(printResult, context);
  }

@SoCaliOS
You're right, but there is an API in Brother's SDK that handle printing of all PDF pages. Using it, in my case, will save me from opening the PDF to count the pages.
My application operates in production conditions in the food industry and any second saved is precious.

Hi @alaindeseine ,
Apologies for the delay. Unfortunately on a second pass I noticed that the APIs mentioned are part of version 4 of the Brother mobile SDK while another_brother was built on top of version 3. The two versions use very different ways of printing so currently until we do a major rewrite of the Android implementation the only way to accomplish the multi page print is by using the suggestion from @SoCaliOS.

Hi @CodeMinion
I understand.
Have you already planned to upgrade to V4 or not at all?
I had already practiced as @SoCaliOS  suggests to get around the problem earlier last June. But I preferred to wait for the modification before using this workaround.
So I'm going to implement it while waiting for the transition to V4.
Thank you again for your support.
Best regards,


Pre-Request scripts containing pm.sendRequest produce duplicate test names

When a request contains a pre-request script that makes a request using pm.sendRequest, the output of postman-helpers is that the test exists twice and is duplicated.
Pre-Request Script requests should be excluded from the test extraction. I'm not sure if this is possible however.

Closed by #cc19cfa2