LUPINE is a GPU over IP bridge allowing GPUs on remote machines to be attached to CPU-only machines.
This report summarizes scanner evidence for lupinemachines/lupine, a C++ project with 2,456 GitHub stars. SynthScan examined 153,878 lines of code across 352 source files, recording 495 pattern matches distributed across 9 syntactic categories. The legacy adjusted pattern signal is 3.9 (Low pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 441 finding(s).
Are imports declared and package/API names verified? 44 finding(s).
Are wrappers, guards, and repeated structures necessary? 146 finding(s).
Which changes need focused human review? 495 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 495 distinct pattern matches across 9 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | rpc.cpp | 1 | #include "rpc.h" | COMMENT |
| LOW | ipc.cpp | 21 | extern "C" int lupine_ipc_broker_parent_handle(int) { return -1; } | COMMENT |
| LOW | dispatch_test.cpp | 1 | // Covers the single-port protocol dispatch: an HTTP/2 preface must reach the | COMMENT |
| LOW | cuda_client_memcpy.cpp | 1 | #include "lupine_platform.h" | COMMENT |
| LOW | cuda_client_memcpy.cpp | 21 | #include <sys/uio.h> | COMMENT |
| LOW | cuda_client_memcpy.cpp | 4101 | // buffer is free to reuse and that later CUDA work sees the bytes. It does not | COMMENT |
| LOW | nccl_client.cpp | 1 | // NCCL (libnccl) on the LUPINE client. | COMMENT |
| LOW | cuda_client.cpp | 1 | #include "device_stdout.h" | COMMENT |
| LOW | cuda_client.cpp | 21 | #include <sstream> | COMMENT |
| LOW | cuda_client.cpp | 41 | #include <strings.h> | COMMENT |
| LOW | cuda_client.cpp | 61 | #include "codegen/gen_cuda_client.h" | COMMENT |
| LOW | cuda_client.cpp | 5121 | // cuSPARSELt 0.6 offers 2494 fat binaries at init, of which 2220 and 149 MB | COMMENT |
| LOW | nvml_server.h | 1 | #ifndef LUPINE_NVML_SERVER_H | COMMENT |
| LOW | monitor_server.cpp | 1 | #include "monitoring.h" | COMMENT |
| LOW | monitor_server.cpp | 21 | #include <vector> | COMMENT |
| LOW | cuda_server_memcpy.h | 1 | #ifndef LUPINE_CUDA_SERVER_MEMCPY_H | COMMENT |
| LOW | transport.cpp | 1 | #include "transport.h" | COMMENT |
| LOW | lupine_platform.h | 81 | COMMENT | |
| LOW | lupine_platform.h | 101 | #include <algorithm> | COMMENT |
| LOW | lupine_platform.h | 241 | } | COMMENT |
| LOW | lupine_platform.h | 421 | COMMENT | |
| LOW | lupine_platform.h | 621 | } | COMMENT |
| LOW | lupine_platform.h | 701 | // blip then surfaces as a fatal RPC error. Keepalive probes are emitted | COMMENT |
| LOW | host_defines_stub.h | 21 | "This stub is for host-only builds; use the real toolkit headers with nvcc." | COMMENT |
| LOW | host_defines_stub.h | 41 | #if defined(_MSC_VER) | COMMENT |
| LOW | routing.cpp | 1 | #include <algorithm> | COMMENT |
| LOW | events.h | 1 | #pragma once | COMMENT |
| LOW | checkpoint_test.cpp | 1 | #include "checkpoint.h" | COMMENT |
| LOW | nvshmem_client.cpp | 1 | // nvSHMEM's host library (libnvshmem_host.so.3) on the LUPINE client. | COMMENT |
| LOW | nvshmem_client.cpp | 21 | // So this shim forwards nothing and has no server side. Every entry point | COMMENT |
| LOW | nvshmem_client.cpp | 81 | signature { return refuse_status(LUPINE_NVSHMEM_NAME(name)); } | COMMENT |
| LOW | lupine_log.h | 1 | #ifndef LUPINE_LOG_H | COMMENT |
| LOW | macos_library_profile.h | 1 | #ifndef LUPINE_MACOS_LIBRARY_PROFILE_H | COMMENT |
| LOW | macos_library_profile.h | 161 | #endif | COMMENT |
| LOW | visible_devices.h | 1 | #pragma once | COMMENT |
| LOW | client_routing.h | 1 | #pragma once | COMMENT |
| LOW | h2.cpp | 1 | #include "client_bundle.h" | COMMENT |
| LOW | h2.cpp | 21 | #include <openssl/ssl.h> | COMMENT |
| LOW | hip_server.cpp | 1 | #include <hip/hip_runtime_api.h> | COMMENT |
| LOW | device_ioctl_client.cpp | 1 | #include "client_routing.h" | COMMENT |
| LOW | nvml_server.cpp | 1 | #include "nvml_server.h" | COMMENT |
| LOW | server_checkpoint.cpp | 1 | #include "server_checkpoint.h" | COMMENT |
| LOW | server_checkpoint.h | 1 | #pragma once | COMMENT |
| LOW | h2_test.cpp | 1 | #include "client_bundle.h" | COMMENT |
| LOW | h2_test.cpp | 21 | #include <nghttp2/nghttp2.h> | COMMENT |
| LOW | cuda_profiler_compat.h | 1 | #ifndef LUPINE_CUDA_PROFILER_COMPAT_H | COMMENT |
| LOW | hip_client.cpp | 1 | #include <atomic> | COMMENT |
| LOW | device_ioctl_rpc_test.cpp | 1 | #include "client_routing.h" | COMMENT |
| LOW | device_ioctl_server.cpp | 1 | #include "device_ioctl.h" | COMMENT |
| LOW | nvml_client.cpp | 1 | #include "lupine_platform.h" | COMMENT |
| LOW | nvml_client.cpp | 361 | #endif | COMMENT |
| LOW | dispatch.h | 1 | #ifndef LUPINE_DISPATCH_H | COMMENT |
| LOW | rpc.h | 1 | #ifndef RPC_H | COMMENT |
| LOW | rpc.h | 81 | static constexpr intptr_t LUPINE_HOST_ALLOCATION_W_OFFSET = | COMMENT |
| LOW | rpc.h | 261 | // Owners use this before joining workers that may be blocked on the transport. | COMMENT |
| LOW | rpc.h | 321 | // into the session named by the token it handed out in its handshake response. | COMMENT |
| LOW | cuda_compat.h | 1 | #ifndef LUPINE_CUDA_COMPAT_H | COMMENT |
| LOW | cuda_compat.h | 281 | COMMENT | |
| LOW | cuda_compat.h | 301 | LUPINE_FORWARD_DRIVER(cuKernelGetLibrary, library, kernel); | COMMENT |
| LOW | test_platform.h | 1 | #ifndef LUPINE_TEST_PLATFORM_H | COMMENT |
| 205 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | test/test_rocm_runner.py | 28 | def test_native_environment_drops_client_settings(self): | CODE |
| LOW⚡ | test/test_rocm_runner.py | 36 | def test_empty_test_selection_is_not_a_pass(self): | CODE |
| LOW⚡ | test/test_rocm_runner.py | 40 | def test_timeout_reaps_child_processes(self): | CODE |
| LOW⚡ | test/test_rocm_runner.py | 47 | def test_existing_listener_is_not_accepted_as_our_server(self): | CODE |
| LOW | test/test_rocm_runner.py | 59 | def test_remote_shell_stops_its_server_process_group(self): | CODE |
| LOW | test/test_rocm_runner.py | 90 | def test_missing_hip_symbols_cannot_fall_back_to_native_runtime(self): | CODE |
| LOW | test/test_rocm_runner.py | 126 | def test_failed_rebuild_does_not_run_a_stale_executable(self): | CODE |
| LOW | python/auto/tests/test_auto.py | 9 | def test_activate_uses_explicit_gateway_for_existing_session(monkeypatch): | CODE |
| LOW | python/auto/tests/test_auto.py | 26 | def test_activate_requires_gateway_for_existing_session(monkeypatch): | CODE |
| LOW | python/auto/tests/test_auto.py | 35 | def test_activate_acquires_cloud_session_when_unbound(monkeypatch): | CODE |
| LOW | python/auto/tests/test_auto.py | 60 | def test_startup_shows_login_hint_without_aborting(monkeypatch): | CODE |
| LOW | python/auto/tests/test_auto.py | 75 | def test_install_defers_activation_until_cuda_import(monkeypatch): | CODE |
| LOW | python/auto/tests/test_auto.py | 90 | def test_activate_respects_explicit_server(monkeypatch): | CODE |
| LOW | python/auto/tests/test_auto.py | 104 | def test_activate_can_be_disabled(monkeypatch): | CODE |
| LOW | python/tests/test_bundles.py | 117 | def test_resolve_downloads_verifies_and_revalidates(monkeypatch, tmp_path): | CODE |
| LOW | python/tests/test_bundles.py | 141 | def test_resolve_repairs_a_corrupt_cache(monkeypatch, tmp_path): | CODE |
| LOW | python/tests/test_bundles.py | 153 | def test_resolve_follows_redirect_and_preserves_session(monkeypatch, tmp_path): | CODE |
| LOW | python/tests/test_bundles.py | 168 | def test_resolve_rejects_mixed_server_bundles(monkeypatch, tmp_path): | CODE |
| LOW | python/tests/test_bundles.py | 183 | def test_resolve_rejects_unsafe_archive_paths(monkeypatch, tmp_path): | CODE |
| LOW | python/tests/test_bundles.py | 193 | def test_resolve_rejects_a_bundle_missing_a_required_shim(monkeypatch, tmp_path): | CODE |
| LOW | python/tests/test_bundles.py | 204 | def test_resolve_rejects_a_file_the_manifest_does_not_declare(monkeypatch, tmp_path): | CODE |
| LOW | python/tests/test_bundles.py | 246 | def test_unix_platform_keys_follow_the_machine(monkeypatch): | CODE |
| LOW | python/tests/test_operator_preparation.py | 20 | def test_torch_wheel_hash_mismatch_prevents_extraction(tmp_path, monkeypatch): | CODE |
| LOW | python/tests/test_operator_preparation.py | 29 | def test_only_operator_libraries_and_headers_are_extracted(tmp_path, monkeypatch): | CODE |
| LOW | python/tests/test_operator_preparation.py | 49 | def test_sdk_provider_keeps_versions_and_only_bridges_adapted_exports(tmp_path): | CODE |
| LOW | python/tests/test_native_torch.py | 40 | def test_arange_and_scalar_arithmetic(backend): | CODE |
| LOW | python/tests/test_native_torch.py | 50 | def test_strided_broadcast_and_inplace(backend): | CODE |
| LOW | python/tests/test_native_torch.py | 91 | def test_reductions_over_strided_views(backend): | CODE |
| LOW | python/tests/test_native_torch.py | 102 | def test_unsupported_operator_is_explicit(backend): | CODE |
| LOW | python/tests/test_native_torch.py | 109 | def test_storage_lifetime_tracks_views(backend): | CODE |
| LOW | python/tests/test_native_torch.py | 126 | def test_overlapping_writes_are_rejected(backend): | CODE |
| LOW | python/tests/test_native_torch.py | 135 | def test_empty_and_nonfinite_fill(backend): | CODE |
| LOW | python/tests/test_native_torch.py | 148 | def test_unary_functions_and_activation_gradients(backend): | CODE |
| LOW | python/tests/test_native_torch.py | 164 | def test_seeded_random_values_are_generated_on_gpu(backend): | CODE |
| LOW | python/tests/test_native_torch.py | 183 | def test_softmax_forward_and_backward(backend, logarithmic, dim): | CODE |
| LOW | python/tests/test_native_torch.py | 204 | def test_linear_training_step_and_batched_matmul(backend): | CODE |
| LOW | python/tests/test_native_torch.py | 233 | def test_layer_norm_forward_and_backward(backend, shape): | CODE |
| LOW | python/tests/test_native_torch.py | 258 | def test_convolution_forward_and_backward(backend, groups, stride, dilation): | CODE |
| LOW | python/tests/test_native_torch.py | 301 | def test_convolution_selective_gradients(backend, gradient): | CODE |
| LOW | python/tests/test_native_torch.py | 318 | def test_convolution_empty_batch_gradients(backend): | CODE |
| LOW | python/tests/test_native_torch.py | 331 | def test_matmul_transposed_views_and_empty_inner_dimension(backend): | CODE |
| LOW | python/tests/test_native_torch.py | 340 | def test_math_attention_and_fully_masked_rows(backend): | CODE |
| LOW | python/tests/test_native_torch.py | 368 | def test_cpu_scalar_left_operand(backend): | CODE |
| LOW | python/tests/test_native_torch.py | 380 | def test_dtype_converting_transfers(backend): | CODE |
| LOW | python/tests/test_native_torch.py | 398 | def test_non_scalar_cpu_left_operand_is_rejected(backend): | CODE |
| LOW⚡ | python/tests/test_native_abi.py | 21 | def test_narrow_spills_use_linux_slots_after_eight_general_registers(): | CODE |
| LOW⚡ | python/tests/test_native_abi.py | 29 | def test_float_arguments_have_a_separate_register_bank(): | CODE |
| LOW⚡ | python/tests/test_native_abi.py | 35 | def test_promoted_parameters_accept_existing_ctypes_values(): | CODE |
| LOW⚡ | python/tests/test_native_abi.py | 42 | def test_spilled_floats_preserve_bits_in_eight_byte_slots(): | CODE |
| LOW | python/tests/test_native_abi.py | 56 | def test_spilled_bool_values_are_canonical(): | CODE |
| LOW | python/tests/test_native_abi.py | 64 | def test_native_driver_functions_keep_their_original_abi(): | CODE |
| LOW | python/tests/test_native_abi.py | 77 | def test_temporary_allocation_is_freed_when_body_fails(cached): | CODE |
| LOW | python/tests/test_native_abi.py | 97 | def test_failed_temporary_allocation_does_not_free_a_pointer(): | CODE |
| LOW | python/tests/test_native_abi.py | 120 | def test_converted_mixed_register_and_stack_arguments(converted_fixture): | CODE |
| LOW⚡ | python/tests/test_lupine_adapter.py | 35 | def test_normalize_server_urls(): | CODE |
| LOW⚡ | python/tests/test_lupine_adapter.py | 42 | def test_normalize_server_rejects_empty(): | CODE |
| LOW⚡ | python/tests/test_lupine_adapter.py | 48 | def test_normalize_hosts_sequence(): | CODE |
| LOW⚡ | python/tests/test_lupine_adapter.py | 53 | def test_servers_from_env_splits(): | CODE |
| LOW⚡ | python/tests/test_lupine_adapter.py | 63 | def test_session_requires_host_or_env(monkeypatch): | CODE |
| LOW⚡ | python/tests/test_lupine_adapter.py | 69 | def test_session_configures_env_and_restores(monkeypatch): | CODE |
| 76 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | test/rocm_runner.py | 328 | self.remote(f"kill -TERM -{remote_pid} 2>/dev/null || true; " | CODE |
| HIGH | test/rocm_runner.py | 329 | f"sleep 0.2; kill -KILL -{remote_pid} 2>/dev/null || true") | CODE |
| HIGH | codegen/ops.py | 96 | # A SEND_ONLY NULLABLE LENGTH array the caller may leave null; a presence | COMMENT |
| HIGH⚡ | codegen/ops.py | 274 | f" ({self.length} != 0 && rpc_read(conn, {self.parameter.name}, {self.length}) < 0) ||\n" | CODE |
| HIGH⚡ | codegen/ops.py | 278 | f" ({self.transfer_size_expr()} != 0 && rpc_read(conn, {self.parameter.name}, {self.transfer_size | CODE |
| HIGH | codegen/ops.py | 43 | f" ({name}_present && rpc_write(conn, {name}, sizeof({self.base_type})) < 0) ||\n" | CODE |
| HIGH | codegen/ops.py | 62 | f" ({name}_present && rpc_read(conn, &{name}, sizeof({self.base_type})) < 0) ||\n" | CODE |
| HIGH | codegen/ops.py | 73 | f" ({self.parameter.name}_present && rpc_write(conn, &{self.parameter.name}, sizeof({self.ptr.ptr_to. | CODE |
| HIGH | codegen/ops.py | 80 | f" ({self.parameter.name}_present && rpc_read(conn, {self.parameter.name}, sizeof({self.ptr.ptr_to.fo | CODE |
| HIGH | codegen/ops.py | 239 | " ({size} != 0 && rpc_read(conn, {param_name}, {size}) < 0) ||\n".format( | CODE |
| HIGH⚡ | codegen/ops.py | 288 | the requested capacity (0 when the anchor array is null, which is a | STRING |
| HIGH⚡ | codegen/ops.py | 911 | f" ({name}_width == 0 && rpc_write(conn, &{name}, sizeof({name})) < 0) ||\n" | STRING |
| HIGH⚡ | codegen/ops.py | 915 | f" ({name}_width != 0 && rpc_write(conn, {name}, {name}_width) < 0) ||\n" | STRING |
| HIGH⚡ | codegen/ops.py | 923 | f" ({name}_width != 0 && rpc_read(conn, {name}, {name}_width) < 0) ||\n" | STRING |
| HIGH | codegen/ops.py | 16 | A pointer to one value that may be null; a presence byte leads it on the | STRING |
| HIGH | codegen/ops.py | 710 | f" ({name}_len != 0 && rpc_write(conn, {name}, {name}_len) < 0) ||\n" | STRING |
| HIGH | codegen/ops.py | 951 | f" ({name}_width == 0 && rpc_read(conn, &{name}, sizeof({name})) < 0) ||\n" | STRING |
| HIGH | codegen/ops.py | 955 | f" ({name}_width != 0 && rpc_read(conn, {self.server_slot()}, {name}_width) < 0) ||\n" | STRING |
| HIGH | codegen/ops.py | 970 | f" ({name}_width != 0 && rpc_write(conn, {self.server_slot()}, {name}_width) < 0) ||\n" | STRING |
| HIGH | codegen/ops.py | 1026 | f" ({name}_size != 0 && rpc_write(conn, {name}, {name}_size) < 0) ||\n" | STRING |
| HIGH | codegen/ops.py | 1063 | f" {name}_size != 0 && rpc_read(conn, {name}_bytes.data(), {name}_size) < 0) ||\n" | STRING |
| HIGH | codegen/emit.py | 579 | " std::memcpy(bytes.data() + offset, &null, sizeof(void *));\n" | CODE |
| HIGH | third_party/machso/aot/lower.py | 70 | ' if (result<0 && result>=-4095) {*g___errno_location()=(int)-result;return -1;}\n' | CODE |
| HIGH | third_party/machso/aot/modules.py | 98 | if (version ? (!symbol->version || strcmp(version,symbol->version)) : symbol->hidden) continue; | CODE |
| HIGH | third_party/machso/aot/modules.py | 110 | if (symbol->is_tls && address && !error) { | CODE |
| HIGH | third_party/machso/aot/native_abi.py | 153 | ' if (aot_export_entries[i].target && address==aot_export_entries[i].target)\n' | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/benchmark_native_torch.py | 13 | CODE | |
| LOW | test/rocm_runner.py | 381 | CODE | |
| LOW | test/rocm_runner.py | 173 | CODE | |
| LOW | test/rocm_runner.py | 291 | CODE | |
| LOW | cmake/split_release_asset.py | 8 | CODE | |
| LOW | cmake/cuda_wheels.py | 41 | CODE | |
| LOW | python/verify_release.py | 40 | CODE | |
| LOW | python/verify_release.py | 139 | CODE | |
| LOW | python/tests/test_macos_cuda_host_memory.py | 18 | CODE | |
| LOW | python/lupine/_native.py | 148 | CODE | |
| LOW | python/lupine/_backend/native/__init__.py | 87 | CODE | |
| LOW | python/lupine/_backend/native/runtime.py | 48 | CODE | |
| LOW | codegen/annotationgen.py | 22 | CODE | |
| LOW | codegen/emit.py | 104 | CODE | |
| LOW | codegen/emit.py | 231 | CODE | |
| LOW | codegen/codegen.py | 362 | CODE | |
| LOW | codegen/codegen.py | 533 | CODE | |
| LOW | codegen/codegen.py | 1004 | CODE | |
| LOW | codegen/codegen.py | 1111 | CODE | |
| LOW | codegen/codegen.py | 1210 | CODE | |
| LOW | codegen/codegen.py | 1266 | CODE | |
| LOW | codegen/codegen.py | 1724 | CODE | |
| LOW | codegen/codegen.py | 2140 | CODE | |
| LOW | third_party/machso/link_bundle.py | 13 | CODE | |
| LOW | third_party/machso/machso.py | 193 | CODE | |
| LOW | third_party/machso/machso.py | 349 | CODE | |
| LOW | third_party/machso/aot/bundle.py | 83 | CODE | |
| LOW | third_party/machso/aot/macho.py | 122 | CODE | |
| LOW | third_party/machso/aot/ifunc.py | 32 | CODE | |
| LOW | third_party/machso/aot/tunables.py | 8 | CODE | |
| LOW | third_party/machso/aot/graph.py | 205 | CODE | |
| LOW | third_party/machso/aot/modules.py | 7 | CODE | |
| LOW | third_party/machso/aot/headers.py | 28 | CODE | |
| LOW | third_party/machso/aot/emit.py | 25 | CODE | |
| LOW | third_party/machso/aot/emit.py | 189 | CODE | |
| LOW | third_party/machso/aot/emit.py | 36 | CODE | |
| LOW | third_party/machso/aot/emit.py | 280 | CODE | |
| LOW | third_party/machso/aot/ubuntu.py | 23 | CODE | |
| LOW | third_party/machso/aot/ubuntu.py | 86 | CODE | |
| LOW | third_party/machso/aot/ubuntu.py | 103 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | test/rocm_runner.py | 254 | except subprocess.TimeoutExpired: | CODE |
| HIGH | test/rocm_runner.py | 295 | except OSError: | CODE |
| HIGH | python/lupine/_bundles.py | 139 | except FileNotFoundError: | CODE |
| HIGH | python/lupine/_credentials.py | 62 | except FileNotFoundError: | CODE |
| HIGH | python/lupine/_cloud.py | 245 | except LupineError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | python/verify_release.py | 4 | CODE | |
| LOW | python/auto/lupine_auto/__init__.py | 3 | CODE | |
| LOW | python/lupine/_bundles.py | 3 | CODE | |
| LOW | python/lupine/_credentials.py | 3 | CODE | |
| LOW | python/lupine/_cloud.py | 3 | CODE | |
| LOW | python/lupine/__init__.py | 25 | CODE | |
| LOW | python/lupine/_native.py | 37 | CODE | |
| LOW | python/lupine/_login.py | 3 | CODE | |
| LOW | python/lupine/__main__.py | 3 | CODE | |
| LOW | python/lupine/_backend/device.py | 3 | CODE | |
| LOW | python/lupine/_backend/__init__.py | 7 | CODE | |
| LOW | python/lupine/_backend/setup.py | 16 | CODE | |
| LOW | python/lupine/_backend/ext.py | 25 | CODE | |
| LOW | python/lupine/_backend/native/__init__.py | 9 | CODE | |
| LOW | python/lupine/_backend/native/runtime.py | 3 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | python/tests/test_login.py | 45 | "user": {"email": "user@example.com", "name": "Example User"}, | CODE |
| LOW | python/tests/test_login.py | 57 | assert result.email == "user@example.com" | CODE |
| LOW | python/tests/test_cli.py | 12 | or SimpleNamespace(email="user@example.com", name="Example User"), | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | python/lupine/_cloud.py | 190 | except Exception: | CODE |
| LOW | python/lupine/_native.py | 89 | except Exception as exc: | CODE |
| LOW | codegen/codegen.py | 1808 | except Exception as e: | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | python/auto/lupine_auto/__init__.py | 108 | __all__ = ["DEFAULT_SERVER", "activate", "enabled", "install", "startup"] | CODE |
| LOW | python/lupine/__init__.py | 294 | __all__ = [ | CODE |