nautechsystems/nautilus_trader · error · ImportError

plotly is required for visualization. Install it with: pip…

Error message

plotly is required for visualization. Install it with: pip install nautilus_trader[visualization]

What it means

Thrown when the proxy entry's `target_address` fails `Address::from_str`, i.e. it is not a valid 20-byte hex Ethereum address. This is the implementation contract address the proxy is expected to point at.

Solutions

  1. Correct `target_address` to the proxy's actual implementation address (0x + 40 hex chars).
  2. Read the live implementation via eth_getStorageAt on the proxy slot and use that address.
  3. Ensure you are not accidentally putting the proxy's own address in target_address.

Example fix

// before (manifest.json)
"target_address": "implementation_contract"
// after (manifest.json)
"target_address": "0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
Defensive patterns

Strategy: validation

Validate before calling

fn valid_eth_address(s: &str) -> bool { use alloy_primitives::Address; s.len() == 42 && Address::from_str(s).is_ok() } // apply to proxy.target_address

Type guard

fn parse_target(s: &str) -> Option<Address> { use alloy_primitives::Address; Address::from_str(s).ok() }

Try / catch

let target = Address::from_str(&proxy.target_address).map_err(|_| anyhow!("invalid proxy target_address"))?;

Prevention

When it happens

Trigger: Manifest validation (verification.rs:1296) parses a proxy whose `target_address` is malformed — wrong length, non-hex characters, empty string, or a non-address value pasted into the field.

Common situations: Truncated or mistyped implementation address; pasting an ENS name or checksummed-with-typo address; leaving the field as a placeholder when the proxy entry was added manually; confusing target_address with the proxy's own address.

Understand the failure class

Background: "Invalid ... format", "must be in format X", "does not look like a ..." — invalid argument format errors across CLI tools and libraries — this error's family across 17 libraries.

Related errors


AI-assisted analysis of nautechsystems/nautilus_trader@18893faf8b (2026-09-08). Data as JSON: /api/errors/03b9a29223f3c63a. Report an issue: GitHub.

Appendix: source

Thrown at python/nautilus_trader/analysis/tearsheet.py:424

        The run configuration ID. Defaults to ``engine.run_config_id``.

    Returns
    -------
    str or None
        HTML string if output_path is None, otherwise None.

    Raises
    ------
    ImportError
        If plotly is not installed.
    ValueError
        If ``bars_with_fills`` is configured without a node, a supplied node has no
        run configuration ID, or the matching run configuration sets
        ``dispose_on_completion=True``.

    """
    if not PLOTLY_AVAILABLE:
        raise ImportError(
            "plotly is required for visualization. "
            "Install it with: pip install nautilus_trader[visualization]",
        )

    _require_not_none(engine, "engine")

    if not hasattr(engine, "get_result"):
        return _create_tearsheet_from_result(
            result=engine,
            node=node,
            run_config_id=run_config_id,
            currency=currency,
            output_path=output_path,
            title=title,
            config=config,
            benchmark_returns=benchmark_returns,
            benchmark_name=benchmark_name,
        )

View on GitHub (pinned to 18893faf8b)