Skip to content

Conversation

@daquinteroflex
Copy link
Collaborator

@daquinteroflex daquinteroflex commented Dec 1, 2025

Greptile Overview

Greptile Summary

This PR introduces comprehensive tidy3d-extras integration testing and Docker-based development environment setup. The changes add a new CI workflow for testing the optional extras package across multiple platforms and Python versions, with two test modes: basic (4 configurations for fast smoke testing on PRs) and full (10 configurations covering all architectures for releases). The PR also includes a complete Docker development environment with detailed documentation.

Major Changes:

  • New tidy3d-extras-python-client-tests-integration.yml workflow with dual test modes (basic/full) covering Windows, Linux x86_64/aarch64, and macOS x86_64/arm64 on Python 3.10 and 3.13
  • Integration of extras tests into main test workflow with automatic enablement on merge queue events
  • Updated release workflow to run full extras integration tests by default
  • Daily workflow now runs a draft release (daily-0.0.0) instead of just submodule tests, providing broader CI validation
  • New dev.Dockerfile providing isolated development environment with Poetry, AWS CLI, and development tools
  • Comprehensive Docker development guide (docs/development/docker.rst) with setup instructions, troubleshooting, and AWS CodeArtifact authentication
  • New test file _test_tidy3d_extras_license.py to verify license validation and error handling
  • Main test workflows now properly exclude _test_tidy3d_extras_license.py to prevent redundant execution (this test is run separately in the extras integration workflow)
  • Poetry lockfile updated to 2.1.1 with minor dependency version bumps

Architecture:
The extras integration tests are invoked through the main test workflow, which determines the test type based on the event trigger. PRs and merge queue events use "basic" mode for fast feedback, while the release workflow uses "full" mode for comprehensive validation before deployment.

Confidence Score: 5/5

  • This PR is safe to merge with minimal risk - it adds well-structured CI infrastructure and development tooling without modifying core application logic.
  • The changes are primarily additive (new workflows, documentation, and development tools) with minimal modifications to existing code. The workflow integration follows established patterns in the repository, properly handles test exclusions to avoid redundancy, and includes comprehensive documentation. The Docker setup and extras integration tests improve developer experience and CI coverage without introducing breaking changes.
  • No files require special attention - all changes follow best practices and are well-documented.

Important Files Changed

File Analysis

Filename Score Overview
.github/workflows/tidy3d-extras-python-client-tests-integration.yml 4/5 New workflow for tidy3d-extras integration testing with basic (4 configs) and full (10 configs) test modes. Well-structured with proper authentication and environment setup.
.github/workflows/tidy3d-python-client-tests.yml 5/5 Added extras_integration_tests support and test_type parameter. Tests now properly exclude _test_tidy3d_extras_license.py to avoid redundant execution.
.github/workflows/tidy3d-python-client-release.yml 5/5 Integrated extras integration tests into release workflow with full test mode enabled by default. Follows established pattern for test orchestration.
tests/_test_tidy3d_extras_license.py 5/5 New test file verifying tidy3d-extras license validation and error handling with bad API keys. Well-structured with platform compatibility checks.
dev.Dockerfile 5/5 New Docker development environment with Python 3.11, uv, Poetry, AWS CLI, and neovim. Clean setup with proper user permissions.
docs/development/docker.rst 5/5 Comprehensive Docker development guide covering setup, daily workflow, troubleshooting, and AWS CodeArtifact authentication. Well-organized with clear examples.

Sequence Diagram

sequenceDiagram
    participant PR as Pull Request
    participant MQ as Merge Queue
    participant Tests as tidy3d-python-client-tests
    participant Extras as tidy3d-extras-integration-tests
    participant Release as tidy3d-python-client-release
    participant Daily as tidy3d-python-client-daily

    Note over PR,Daily: PR Flow (Basic Tests)
    PR->>Tests: Trigger on PR
    Tests->>Tests: Determine test scope<br/>(extras_integration_tests=true, test_type=basic)
    Tests->>Extras: Call with test_type=basic
    Extras->>Extras: Run 4 test configurations<br/>(Linux x64, macOS arm64, Windows x64 3.10/3.13)
    Extras-->>Tests: Return success status
    Tests-->>PR: Report results

    Note over PR,Daily: Merge Queue Flow (Basic Tests)
    MQ->>Tests: Trigger on merge_group
    Tests->>Tests: Determine test scope<br/>(extras_integration_tests=true, test_type=basic)
    Tests->>Extras: Call with test_type=basic
    Extras->>Extras: Run 4 test configurations
    Extras-->>Tests: Return success status
    Tests-->>MQ: Report results

    Note over PR,Daily: Release Flow (Full Tests)
    Release->>Release: Determine workflow scope<br/>(run_extras_integration_tests=true)
    Release->>Tests: Call with extras_integration_tests=true,<br/>test_type=full
    Tests->>Extras: Call with test_type=full
    Extras->>Extras: Run 10 test configurations<br/>(All platforms x Python 3.10/3.13)
    Extras-->>Tests: Return success status
    Tests-->>Release: Report results

    Note over PR,Daily: Daily Flow (Full Tests via Draft Release)
    Daily->>Release: Call with release_tag=daily-0.0.0,<br/>release_type=draft
    Release->>Tests: Call with extras_integration_tests=true,<br/>test_type=full
    Tests->>Extras: Call with test_type=full
    Extras->>Extras: Run 10 test configurations
    Extras-->>Tests: Return success status
    Tests-->>Release: Report results
    Release-->>Daily: Complete without publishing
Loading

Copy link

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1 file reviewed, no comments

Edit Code Review Agent Settings | Greptile

@daquinteroflex daquinteroflex changed the title docs: improve get-started docker docs: improve get-started docker (FXC-3911) Dec 1, 2025
@github-actions
Copy link
Contributor

github-actions bot commented Dec 1, 2025

Diff Coverage

Diff: origin/develop...HEAD, staged and unstaged changes

No lines with coverage information in this diff.

@daquinteroflex daquinteroflex changed the title docs: improve get-started docker (FXC-3911) ci: tidy3d-extras integration tests and docs/dev setup (FXC-3911) Dec 2, 2025
@daquinteroflex daquinteroflex force-pushed the dario/codeartifact_docs branch 8 times, most recently from 9921fa1 to a9e8197 Compare December 2, 2025 20:49
@daquinteroflex daquinteroflex force-pushed the dario/codeartifact_docs branch 2 times, most recently from 37fca68 to 351ef04 Compare December 4, 2025 19:46
@daquinteroflex daquinteroflex force-pushed the dario/codeartifact_docs branch from 351ef04 to 75a0f53 Compare December 4, 2025 20:20
Copy link
Contributor

@caseyflex caseyflex left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice! The docker documentation seems helpful and good to have integration tests. A few comments

@daquinteroflex
Copy link
Collaborator Author

@greptile re review

Copy link

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

4 files reviewed, no comments

Edit Code Review Agent Settings | Greptile

@daquinteroflex daquinteroflex force-pushed the dario/codeartifact_docs branch 5 times, most recently from 2645fdd to 74a2b41 Compare December 5, 2025 09:46
@daquinteroflex
Copy link
Collaborator Author

daquinteroflex commented Dec 5, 2025

@caseyflex I've implemented your suggestions and moved the license_test_ci.py to this repo. I'm getting some weird multiplatform errors ( ubuntu and windows are fine, mac are not, maybe it's some issues on tidy3d extras we haven't caught yet? https://github.com/flexcompute/tidy3d/actions/runs/19959108730/job/57234958887

I'll have time to work on this later today but need to do some other stuff for now, just thought to let you know in case it's clearer to you what's going on

@daquinteroflex daquinteroflex force-pushed the dario/codeartifact_docs branch from 74a2b41 to ddeb514 Compare December 5, 2025 10:51
@caseyflex
Copy link
Contributor

@daquinteroflex is it still broken on those platforms?

@daquinteroflex
Copy link
Collaborator Author

daquinteroflex commented Dec 5, 2025

Yeah haven't been able to get back to it, find it weird it works for ubuntu but not mac if its the same action config? Looks like an issue with the extension?

@daquinteroflex daquinteroflex changed the title ci: tidy3d-extras integration tests and docs/dev setup (FXC-3911) ci: tidy3d-extras integration tests and docs/dev setup (FXC-4441) Dec 5, 2025
@daquinteroflex
Copy link
Collaborator Author

We should have integration tests for all supported architectures... That is, it should mirror our build scripts rather than our test scripts.

Yes this is a good point. So how about we do full integration tests once a day for all platforms as part of the daily python client tests? But then we have this minimal test suite as it is now for the PR integration tests. Just feeling if we did it per PR then it's probably too much CI/CD overhead to check everything.

in my opinion, that belongs here more than checking different python versions (which could happen in backend tests that run frontend tests with tidy3d-extras installed)

So this is an interesting testing question. In the backend we want to check that any changes to tidy3d-extras does not break with tidy3d_frontend. So in your view the tidy3d-extras standalone tests won't catch this? Isn't there an equivalent amount of risk of the python version breaking tidy3d/tidy3d-extras integration on both repos?

It sounds like maybe we need to split things into comprehensive daily tests on both repos, but then have a minimal set of smoke tests for integration

@daquinteroflex daquinteroflex force-pushed the dario/codeartifact_docs branch 5 times, most recently from fd623d4 to 37a49de Compare December 9, 2025 13:46
@caseyflex
Copy link
Contributor

We should have integration tests for all supported architectures... That is, it should mirror our build scripts rather than our test scripts.

Yes this is a good point. So how about we do full integration tests once a day for all platforms as part of the daily python client tests? But then we have this minimal test suite as it is now for the PR integration tests. Just feeling if we did it per PR then it's probably too much CI/CD overhead to check everything.

ok!

in my opinion, that belongs here more than checking different python versions (which could happen in backend tests that run frontend tests with tidy3d-extras installed)

So this is an interesting testing question. In the backend we want to check that any changes to tidy3d-extras does not break with tidy3d_frontend. So in your view the tidy3d-extras standalone tests won't catch this? Isn't there an equivalent amount of risk of the python version breaking tidy3d/tidy3d-extras integration on both repos?

It sounds like maybe we need to split things into comprehensive daily tests on both repos, but then have a minimal set of smoke tests for integration

There is a backend test than runs the frontend tests with extras installed. I had some issues with the frontend tests previously that this caught. But these weren’t related to python version. But we could still have that test run multiple python versions, or include that in the full integration tests here

Yeah agreed overall

@daquinteroflex daquinteroflex force-pushed the dario/codeartifact_docs branch 4 times, most recently from 5923426 to b793dc4 Compare December 9, 2025 21:01
@daquinteroflex
Copy link
Collaborator Author

@greptile review again

@caseyflex I've addressed your suggestions fyi, we now have full and basic integration tests. Full tests run part of the autorelease / daily tests

@daquinteroflex
Copy link
Collaborator Author

Copy link

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

9 files reviewed, 2 comments

Edit Code Review Agent Settings | Greptile

@daquinteroflex
Copy link
Collaborator Author

@caseyflex looks like having full native container compatibility is an endeavour of its own, I'm going to change the full tests to ones we know would pass and are more comprehensive for now. https://github.com/flexcompute/tidy3d/actions/runs/20078471065/job/57599207343

We can merge this for now and work out how to best test in the different systems in a separate PR

@daquinteroflex daquinteroflex force-pushed the dario/codeartifact_docs branch from dbd6e6d to 08ca7f9 Compare December 9, 2025 21:19
@daquinteroflex
Copy link
Collaborator Author

daquinteroflex commented Dec 9, 2025

Ok testing again removing the docker containers for a different PR:

@greptile review again

Copy link

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

9 files reviewed, no comments

Edit Code Review Agent Settings | Greptile

@daquinteroflex
Copy link
Collaborator Author

@caseyflex looks like there still may be some issues https://github.com/flexcompute/tidy3d/actions/runs/20107922131/job/57697019013 despite the fix introduced in the build

F                                                                        [100%]
=================================== FAILURES ===================================
______________________________ test_license_check ______________________________
[gw1] darwin -- Python 3.10.11 /Users/runner/work/tidy3d/tidy3d/.venv/bin/python

monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x10dce2890>
caplog = <_pytest.logging.LogCaptureFixture object at 0x10dce2230>

    def test_license_check(monkeypatch, caplog):
        monkeypatch.setenv("SIMCLOUD_APIKEY", "BADKEY")
    
        # package should still import successfully, just without .extension
        result = subprocess.run(
            [sys.executable, "-c", "import tidy3d_extras"],
            capture_output=True,
            text=True,
            check=True,
            cwd=os.path.dirname(__file__),
        )
        assert result.returncode == 0
        print(result.stdout)
    
        # calling local_subpixel should fail with a clear error message when the API key is bad
        with pytest.raises(subprocess.CalledProcessError) as excinfo:
            subprocess.run(
                [
                    sys.executable,
                    "-c",
                    "import _test_tidy3d_extras_license; _test_tidy3d_extras_license.subpixel()",
                ],
                capture_output=True,
                text=True,
                check=True,
                cwd=os.path.dirname(__file__),
            )
        print(result.stdout)
        print(excinfo.value.stdout)
        print(excinfo.value.stderr)
    
        # Check if the extension can actually load on this platform
        # On some platforms (e.g., macOS with certain Python versions), the extension
        # may fail to load due to ABI compatibility issues before license checks can run
        extension_loads = _extension_can_load()
    
        combined_output = excinfo.value.stdout + excinfo.value.stderr
    
        # Core license / auth failure - only check if extension loads properly
        if extension_loads:
>           assert "Incorrect API Key" in combined_output, (
                "Expected 'Incorrect API Key' error when extension loads but API key is invalid"
            )
E           AssertionError: Expected 'Incorrect API Key' error when extension loads but API key is invalid

_test_tidy3d_extras_license.py:87: AssertionError
----------------------------- Captured stdout call -----------------------------
dlopen(/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/tidy3d_extras/extension.cpython-310-darwin.so, 0x0002): symbol not found in flat namespace '___kmpc_dispatch_deinit'
17:44:49 UTC ERROR:                                                             
             dlopen(/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-p
             ackages/tidy3d_extras/extension.cpython-310-darwin.so, 0x0002):    
             symbol not found in flat namespace '___kmpc_dispatch_deinit'       

dlopen(/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/tidy3d_extras/extension.cpython-310-darwin.so, 0x0002): symbol not found in flat namespace '___kmpc_dispatch_deinit'
17:44:49 UTC ERROR:                                                             
             dlopen(/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-p
             ackages/tidy3d_extras/extension.cpython-310-darwin.so, 0x0002):    
             symbol not found in flat namespace '___kmpc_dispatch_deinit'       

dlopen(/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/tidy3d_extras/extension.cpython-310-darwin.so, 0x0002): symbol not found in flat namespace '___kmpc_dispatch_deinit'
17:44:53 UTC ERROR:                                                             
             dlopen(/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-p
             ackages/tidy3d_extras/extension.cpython-310-darwin.so, 0x0002):    
             symbol not found in flat namespace '___kmpc_dispatch_deinit'       
             ERROR: The package 'tidy3d-extras' did not initialize correctly,   
             likely due to an invalid API key.                                  
             ERROR: The package 'tidy3d-extras' is required for this feature    
             'local_subpixel'.                                                  
             ERROR: To suppress this error, you can set                         
             'config.simulation.use_local_subpixel=False'.                      

Traceback (most recent call last):
  File "/Users/runner/work/tidy3d/tidy3d/tidy3d/packaging.py", line 253, in check_tidy3d_extras_licensed_feature
    _check_tidy3d_extras_available()
  File "/Users/runner/work/tidy3d/tidy3d/tidy3d/packaging.py", line 223, in _check_tidy3d_extras_available
    raise Tidy3dImportError(
tidy3d.exceptions.Tidy3dImportError: The package 'tidy3d-extras' did not initialize correctly, likely due to an invalid API key.

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/Users/runner/work/tidy3d/tidy3d/tidy3d/packaging.py", line 280, in _fn
    check_tidy3d_extras_licensed_feature("local_subpixel")
  File "/Users/runner/work/tidy3d/tidy3d/tidy3d/packaging.py", line 255, in check_tidy3d_extras_licensed_feature
    raise Tidy3dImportError(
tidy3d.exceptions.Tidy3dImportError: The package 'tidy3d-extras' is required for this feature 'local_subpixel'.

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/Users/runner/work/tidy3d/tidy3d/tests/_test_tidy3d_extras_license.py", line 108, in subpixel
    _ = sim.epsilon_on_grid(
  File "/Users/runner/work/tidy3d/tidy3d/tidy3d/packaging.py", line 284, in _fn
    raise Tidy3dImportError(
tidy3d.exceptions.Tidy3dImportError: To suppress this error, you can set 'config.simulation.use_local_subpixel=False'.

dlopen(/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/tidy3d_extras/extension.cpython-310-darwin.so, 0x0002): symbol not found in flat namespace '___kmpc_dispatch_deinit'
17:44:53 UTC ERROR:                                                             
             dlopen(/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-p
             ackages/tidy3d_extras/extension.cpython-310-darwin.so, 0x0002):    
             symbol not found in flat namespace '___kmpc_dispatch_deinit'       
================================ tests coverage ================================

@daquinteroflex daquinteroflex force-pushed the dario/codeartifact_docs branch 2 times, most recently from 4d8266e to 6a2c04b Compare December 11, 2025 11:39
@daquinteroflex daquinteroflex force-pushed the dario/codeartifact_docs branch from 6a2c04b to dd0eae3 Compare December 11, 2025 11:44
@daquinteroflex
Copy link
Collaborator Author

@caseyflex alas it was a short lived hope. https://github.com/flexcompute/tidy3d/actions/runs/20131552128/job/57774016801 now it's building well, and license check is passing but it's crashing I think in a subpixel operation

Fatal Python error: Aborted

Thread 0x00000001708ef000 (most recent call first):
  File "/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/execnet/gateway_base.py", line 534 in read
  File "/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/execnet/gateway_base.py", line 567 in from_io
  File "/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/execnet/gateway_base.py", line 1160 in _thread_receiver
  File "/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/execnet/gateway_base.py", line 341 in run
  File "/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/execnet/gateway_base.py", line 411 in _perform_spawn

Current thread 0x00000001f5cfa200 (most recent call first):
  File "/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/tidy3d_extras/utils.py", line 142 in get_material_yee_cpp
  File "/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/tidy3d_extras/subpixel.py", line 72 in _get_epsilon
  File "/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/tidy3d_extras/subpixel.py", line 124 in get_eps
  File "/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/tidy3d_extras/subpixel.py", line 160 in make_eps_data
  File "/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/tidy3d_extras/subpixel.py", line 200 in epsilon_on_grid
  File "/Users/runner/work/tidy3d/tidy3d/tidy3d/components/simulation.py", line 1704 in epsilon_on_grid
  File "/Users/runner/work/tidy3d/tidy3d/tidy3d/packaging.py", line 293 in _fn
  File "/Users/runner/work/tidy3d/tidy3d/tidy3d/components/simulation.py", line 1655 in epsilon
  File "/Users/runner/work/tidy3d/tidy3d/tests/test_components/test_simulation.py", line 115 in test_sim_init
  File "/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/_pytest/python.py", line 166 in pytest_pyfunc_call
  File "/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/pluggy/_callers.py", line 121 in _multicall
  File "/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/pluggy/_manager.py", line 120 in _hookexec
  File "/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/pluggy/_hooks.py", line 512 in __call__
  File "/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/_pytest/python.py", line 1720 in runtest
  File "/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/_pytest/runner.py", line 179 in pytest_runtest_call
  File "/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/pluggy/_callers.py", line 121 in _multicall
  File "/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/pluggy/_manager.py", line 120 in _hookexec
  File "/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/pluggy/_hooks.py", line 512 in __call__
  File "/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/_pytest/runner.py", line 245 in <lambda>
  File "/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/_pytest/runner.py", line 353 in from_call
  File "/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/_pytest/runner.py", line 244 in call_and_report
  File "/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/_pytest/runner.py", line 137 in runtestprotocol
  File "/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/_pytest/runner.py", line 118 in pytest_runtest_protocol
  File "/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/pluggy/_callers.py", line 121 in _multicall
  File "/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/pluggy/_manager.py", line 120 in _hookexec
  File "/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/pluggy/_hooks.py", line 512 in __call__
  File "/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/xdist/remote.py", line 227 in run_one_test
  File "/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/xdist/remote.py", line 206 in pytest_runtestloop
  File "/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/pluggy/_callers.py", line 121 in _multicall
  File "/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/pluggy/_manager.py", line 120 in _hookexec
  File "/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/pluggy/_hooks.py", line 512 in __call__
  File "/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/_pytest/main.py", line 372 in _main
  File "/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/_pytest/main.py", line 318 in wrap_session
  File "/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/_pytest/main.py", line 365 in pytest_cmdline_main
  File "/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/pluggy/_callers.py", line 121 in _multicall
  File "/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/pluggy/_manager.py", line 120 in _hookexec
  File "/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/pluggy/_hooks.py", line 512 in __call__
  File "/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/xdist/remote.py", line 427 in <module>
  File "/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/execnet/gateway_base.py", line 1291 in executetask
  File "/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/execnet/gateway_base.py", line 341 in run
  File "/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/execnet/gateway_base.py", line 411 in _perform_spawn
  File "/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/execnet/gateway_base.py", line 389 in integrate_as_primary_thread
  File "/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/execnet/gateway_base.py", line 1273 in serve
  File "/Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/execnet/gateway_base.py", line 1806 in serve
  File "<string>", line 8 in <module>
  File "<string>", line 1 in <module>

Extension modules: numpy._core._multiarray_umath, numpy.linalg._umath_linalg, numpy.random._common, numpy.random.bit_generator, numpy.random._bounded_integers, numpy.random._mt19937, numpy.random.mtrand, numpy.random._philox, numpy.random._pcg64, numpy.random._sfc64, numpy.random._generator, PIL._imaging, kiwisolver._cext, psutil._psutil_osx, h5py._errors, h5py.defs, h5py._objects, h5py.h5, h5py.utils, h5py.h5t, h5py.h5s, h5py.h5ac, h5py.h5p, h5py.h5r, h5py._npystrings, h5py._proxy, h5py._conv, h5py.h5z, h5py.h5a, h5py.h5d, h5py.h5ds, h5py.h5g, h5py.h5i, h5py.h5o, h5py.h5f, h5py.h5fd, h5py.h5pl, h5py.h5l, h5py._selector, pandas._libs.tslibs.ccalendar, pandas._libs.tslibs.np_datetime, pandas._libs.tslibs.dtypes, pandas._libs.tslibs.base, pandas._libs.tslibs.nattype, pandas._libs.tslibs.timezones, pandas._libs.tslibs.fields, pandas._libs.tslibs.timedeltas, pandas._libs.tslibs.tzconversion, pandas._libs.tslibs.timestamps, pandas._libs.properties, pandas._libs.tslibs.offsets, pandas._libs.tslibs.strptime, pandas._libs.tslibs.parsing, pandas._libs.tslibs.conversion, pandas._libs.tslibs.period, pandas._libs.tslibs.vectorized, pandas._libs.ops_dispatch, pandas._libs.missing, pandas._libs.hashtable, pandas._libs.algos, pandas._libs.interval, pandas._libs.lib, pandas._libs.ops, pandas._libs.hashing, pandas._libs.arrays, pandas._libs.tslib, pandas._libs.sparse, pandas._libs.internals, pandas._libs.indexing, pandas._libs.index, pandas._libs.writers, pandas._libs.join, pandas._libs.window.aggregations, pandas._libs.window.indexers, pandas._libs.reshape, pandas._libs.groupby, pandas._libs.json, pandas._libs.parsers, pandas._libs.testing, yaml._yaml, shapely.lib, shapely._geos, shapely._geometry_helpers, scipy._lib._ccallback_c, charset_normalizer.md, scipy.sparse._sparsetools, _csparsetools, scipy.sparse._csparsetools, scipy.linalg._fblas, scipy.linalg._flapack, scipy.linalg.cython_lapack, scipy.linalg._cythonized_array_utils, scipy.linalg._solve_toeplitz, scipy.linalg._decomp_lu_cython, scipy.linalg._matfuncs_sqrtm_triu, scipy.linalg._matfuncs_expm, scipy.linalg._linalg_pythran, scipy.linalg.cython_blas, scipy.linalg._decomp_update, scipy.sparse.linalg._dsolve._superlu, scipy.sparse.linalg._eigen.arpack._arpack, scipy.sparse.linalg._propack._spropack, scipy.sparse.linalg._propack._dpropack, scipy.sparse.linalg._propack._cpropack, scipy.sparse.linalg._propack._zpropack, scipy.sparse.csgraph._tools, scipy.sparse.csgraph._shortest_path, scipy.sparse.csgraph._traversal, scipy.sparse.csgraph._min_spanning_tree, scipy.sparse.csgraph._flow, scipy.sparse.csgraph._matching, scipy.sparse.csgraph._reordering, scipy.spatial._ckdtree, scipy._lib.messagestream, scipy.spatial._qhull, scipy.spatial._voronoi, scipy.spatial._distance_wrap, scipy.spatial._hausdorff, scipy.special._ufuncs_cxx, scipy.special._ufuncs, scipy.special._specfun, scipy.special._comb, scipy.special._ellip_harm_2, scipy.spatial.transform._rotation, scipy.optimize._group_columns, scipy.optimize._trlib._trlib, scipy.optimize._lbfgsb, _moduleTNC, scipy.optimize._moduleTNC, scipy.optimize._cobyla, scipy.optimize._slsqp, scipy.optimize._minpack, scipy.optimize._lsq.givens_elimination, scipy.optimize._zeros, scipy.optimize._cython_nnls, scipy._lib._uarray._uarray, scipy.linalg._decomp_interpolative, scipy.optimize._bglu_dense, scipy.optimize._lsap, scipy.optimize._direct, PIL._imagingft, scipy.ndimage._nd_image, scipy.ndimage._rank_filter_1d, _ni_label, scipy.ndimage._ni_label, markupsafe._speedups, gdstk._gdstk, simplejson._speedups, scipy.signal._sigtools, scipy.signal._max_len_seq_inner, scipy.signal._upfirdn_apply, scipy.signal._spline, scipy.interpolate._fitpack, scipy.interpolate._dfitpack, scipy.interpolate._dierckx, scipy.interpolate._ppoly, scipy.interpolate._interpnd, scipy.interpolate._rbfinterp_pythran, scipy.interpolate._rgi_cython, scipy.interpolate._bspl, scipy.signal._sosfilt, scipy.integrate._odepack, scipy.integrate._quadpack, scipy.integrate._vode, scipy.integrate._dop, scipy.integrate._lsoda, scipy.special.cython_special, scipy.stats._stats, scipy.stats._sobol, scipy.stats._qmc_cy, scipy.stats._biasedurn, scipy.stats._stats_pythran, scipy.stats._levy_stable.levyst, scipy.stats._ansari_swilk_statistics, scipy.stats._mvn, scipy.stats._rcont.rcont, scipy.signal._peak_finding_utils, torch._C, torch._C._dynamo.autograd_compiler, torch._C._dynamo.eval_frame, torch._C._dynamo.guards, torch._C._dynamo.utils, torch._C._fft, torch._C._linalg, torch._C._nested, torch._C._nn, torch._C._sparse, torch._C._special, vtkmodules.vtkCommonCore, vtkmodules.vtkWebCore, vtkmodules.vtkCommonMath, vtkmodules.vtkCommonTransforms, vtkmodules.vtkParallelCore, vtkmodules.vtkCommonDataModel, vtkmodules.vtkCommonExecutionModel, vtkmodules.vtkIOCore, vtkmodules.vtkImagingCore, vtkmodules.vtkIOImage, vtkmodules.vtkIOXMLParser, vtkmodules.vtkIOXML, vtkmodules.vtkCommonMisc, vtkmodules.vtkFiltersCore, vtkmodules.vtkRenderingCore, vtkmodules.vtkRenderingContext2D, vtkmodules.vtkRenderingFreeType, vtkmodules.vtkRenderingSceneGraph, vtkmodules.vtkRenderingVtkJS, vtkmodules.vtkIOExport, vtkmodules.vtkWebGLExporter, vtkmodules.vtkInteractionStyle, vtkmodules.vtkFiltersGeneral, vtkmodules.vtkFiltersSources, vtkmodules.vtkInteractionWidgets, vtkmodules.vtkViewsCore, vtkmodules.vtkViewsInfovis, vtkmodules.vtkCommonComputationalGeometry, vtkmodules.vtkCommonSystem, vtkmodules.vtkFiltersCellGrid, vtkmodules.vtkIOCellGrid, vtkmodules.vtkIOLegacy, vtkmodules.vtkDomainsChemistry, vtkmodules.vtkRenderingHyperTreeGrid, vtkmodules.vtkRenderingUI, vtkmodules.vtkRenderingOpenGL2, vtkmodules.vtkRenderingContextOpenGL2, vtkmodules.vtkRenderingVolume, vtkmodules.vtkImagingMath, vtkmodules.vtkRenderingVolumeOpenGL2, vtkmodules.vtkViewsContext2D, vtkmodules.vtkSerializationManager, vtkmodules.vtkTestingSerialization, vtkmodules.vtkImagingColor, vtkmodules.vtkTestingRendering, vtkmodules.vtkRenderingVolumeAMR, vtkmodules.vtkPythonContext2D, vtkmodules.vtkRenderingParallel, vtkmodules.vtkRenderingVRModels, vtkmodules.vtkRenderingVR, vtkmodules.vtkRenderingMatplotlib, vtkmodules.vtkRenderingLabel, vtkmodules.vtkRenderingLOD, vtkmodules.vtkRenderingLICOpenGL2, vtkmodules.vtkRenderingImage, vtkmodules.vtkChartsCore, vtkmodules.vtkRenderingGridAxes, vtkmodules.vtkRenderingExternal, vtkmodules.vtkRenderingCellGrid, vtkmodules.vtkIOXdmf2, vtkmodules.vtkIOVeraOut, vtkmodules.vtkIOVPIC, vtkmodules.vtkIOTecplotTable, vtkmodules.vtkIOTRUCHAS, vtkmodules.vtkIOSegY, vtkmodules.vtkIOParallelXML, vtkmodules.vtkIOLSDyna, vtkmodules.vtkIOParallelLSDyna, vtkmodules.vtkIOExodus, vtkmodules.vtkIOParallelExodus, vtkmodules.vtkIOPLY, vtkmodules.vtkIOPIO, vtkmodules.vtkIOMovie, vtkmodules.vtkIOOggTheora, vtkmodules.vtkIOOMF, vtkmodules.vtkIONetCDF, vtkmodules.vtkIOMotionFX, vtkmodules.vtkIOGeometry, vtkmodules.vtkIOParallel, vtkmodules.vtkIOMINC, vtkmodules.vtkIOLANLX3D, vtkmodules.vtkIOImport, vtkmodules.vtkIOIOSS, vtkmodules.vtkIOHDF, vtkmodules.vtkIOH5part, vtkmodules.vtkIOH5Rage, vtkmodules.vtkIOGeoJSON, vtkmodules.vtkIOFLUENTCFF, vtkmodules.vtkIOVideo, vtkmodules.vtkIOFDS, vtkmodules.vtkIOInfovis, vtkmodules.vtkIOExportPDF, vtkmodules.vtkRenderingGL2PSOpenGL2, vtkmodules.vtkIOExportGL2PS, vtkmodules.vtkIOEngys, vtkmodules.vtkIOEnSight, vtkmodules.vtkIOERF, vtkmodules.vtkIOCityGML, vtkmodules.vtkIOChemistry, vtkmodules.vtkIOCesium3DTiles, vtkmodules.vtkIOCONVERGECFD, vtkmodules.vtkIOCGNSReader, vtkmodules.vtkIOAvmesh, vtkmodules.vtkIOAsynchronous, vtkmodules.vtkIOAMR, vtkmodules.vtkInteractionImage, vtkmodules.vtkInfovisLayout, vtkmodules.vtkImagingStencil, vtkmodules.vtkImagingStatistics, vtkmodules.vtkImagingGeneral, vtkmodules.vtkImagingOpenGL2, vtkmodules.vtkImagingMorphological, vtkmodules.vtkImagingFourier, vtkmodules.vtkIOSQL, vtkmodules.vtkRenderingAnnotation, vtkmodules.vtkImagingHybrid, vtkmodules.vtkGeovisCore, vtkmodules.vtkFiltersTopology, vtkmodules.vtkFiltersTensor, vtkmodules.vtkFiltersSelection, vtkmodules.vtkFiltersSMP, vtkmodules.vtkFiltersPython, vtkmodules.vtkFiltersProgrammable, vtkmodules.vtkFiltersModeling, vtkmodules.vtkFiltersPoints, vtkmodules.vtkFiltersStatistics, vtkmodules.vtkFiltersParallelStatistics, vtkmodules.vtkFiltersImaging, vtkmodules.vtkFiltersExtraction, vtkmodules.vtkFiltersGeometry, vtkmodules.vtkFiltersHybrid, vtkmodules.vtkFiltersHyperTree, vtkmodules.vtkFiltersTexture, vtkmodules.vtkFiltersParallel, vtkmodules.vtkFiltersParallelImaging, vtkmodules.vtkFiltersParallelDIY2, vtkmodules.vtkFiltersTemporal, vtkmodules.vtkFiltersGeometryPreview, vtkmodules.vtkFiltersGeneric, vtkmodules.vtkFiltersFlowPaths, vtkmodules.vtkFiltersAMR, vtkmodules.vtkDomainsChemistryOpenGL2, vtkmodules.vtkCommonPython, vtkmodules.vtkCommonColor, vtkmodules.vtkImagingSources, vtkmodules.vtkInfovisCore, vtkmodules.vtkAcceleratorsVTKmCore, vtkmodules.vtkAcceleratorsVTKmDataModel, vtkmodules.vtkAcceleratorsVTKmFilters, vtkmodules.vtkFiltersVerdict, vtkmodules.vtkFiltersReduction, tidy3d_extras.extension (total: 340)
...............................[gw0] node down: Not properly terminated
F
replacing crashed worker gw0
........................................................................ [ 99%]
.....................................................                    [100%]
=================================== FAILURES ===================================
___________________ tests/test_components/test_simulation.py ___________________
[gw0] darwin -- Python 3.10.11 /Users/runner/work/tidy3d/tidy3d/.venv/bin/python
worker 'gw0' crashed while running 'tests/test_components/test_simulation.py::test_sim_init'
=============================== warnings summary ===============================
tests/test_plugins/autograd/test_functions.py::TestLeastSquares::test_least_squares_gradient
  /Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/autograd/numpy/linalg.py:164: RuntimeWarning: invalid value encountered in scalar divide
    return contract(g * x) / ans

tests/test_plugins/autograd/test_functions.py::TestLeastSquares::test_least_squares_gradient
  /Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/autograd/tracer.py:54: RuntimeWarning: invalid value encountered in divide
    return f_raw(*args, **kwargs)

tests/test_plugins/autograd/test_functions.py::TestLeastSquares::test_least_squares_gradient
  /Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/autograd/tracer.py:54: RuntimeWarning: divide by zero encountered in divide
    return f_raw(*args, **kwargs)

tests/test_components/autograd/test_autograd.py::test_custom_sellmeier
tests/test_components/autograd/test_autograd_custom_dispersive_vjps.py::test_custom_sellmeier_vjp
  /Users/runner/work/tidy3d/tidy3d/.venv/lib/python3.10/site-packages/autograd/differential_operators.py:77: UserWarning: Input to holomorphic_grad is not complex
    warnings.warn("Input to holomorphic_grad is not complex")

tests/test_components/test_simulation.py::test_validate_normalize_index
  /Users/runner/work/tidy3d/tidy3d/tidy3d/components/source/time.py:249: RuntimeWarning: invalid value encountered in scalar divide
    return self.amp_freq(freq) / self._peak_freq_amp

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
================================ tests coverage ================================
______________ coverage: platform darwin, python 3.10.11-final-0 _______________

___________________________ coverage: failed workers ___________________________

The following workers failed to return coverage data, ensure that pytest-cov is installed on these workers.
gw0
Name                                                                Stmts   Miss  Cover
---------------------------------------------------------------------------------------
tidy3d/__init__.py                                                    104      0   100%
tidy3d/__main__.py                                                     52      1    98%
tidy3d/compat.py                                                       12      2    83%
tidy3d/components/__init__.py                                           0      0   100%
tidy3d/components/apodization.py                                       44     17    61%
tidy3d/components/autograd/__init__.py                                  6      0   100%
tidy3d/components/autograd/boxes.py                                    59     11    81%
tidy3d/components/autograd/derivative_utils.py                        305    101    67%
tidy3d/components/autograd/field_map.py                                33      5    85%
tidy3d/components/autograd/functions.py                                66      0   100%
tidy3d/components/autograd/types.py                                    27      0   100%
tidy3d/components/autograd/utils.py                                    26      3    88%
tidy3d/components/base.py                                             657     50    92%
tidy3d/components/base_sim/__init__.py                                  0      0   100%
tidy3d/components/base_sim/data/__init__.py                             0      0   100%
tidy3d/components/base_sim/data/monitor_data.py                        10      0   100%
tidy3d/components/base_sim/data/sim_data.py                            62      4    94%
tidy3d/components/base_sim/monitor.py                                  33      0   100%
tidy3d/components/base_sim/simulation.py                              162     20    88%
tidy3d/components/base_sim/source.py                                   11      0   100%
tidy3d/components/bc_placement.py                                      30      2    93%
tidy3d/components/beam.py                                             192    130    32%
tidy3d/components/boundary.py                                         314     58    82%
tidy3d/components/data/__init__.py                                      0      0   100%
tidy3d/components/data/data_array.py                                  520     34    93%
tidy3d/components/data/dataset.py                                     237      9    96%
tidy3d/components/data/index.py                                         8      0   100%
tidy3d/components/data/monitor_data.py                               1562    213    86%
tidy3d/components/data/sim_data.py                                    439     74    83%
tidy3d/components/data/unstructured/__init__.py                         0      0   100%
tidy3d/components/data/unstructured/base.py                           665     46    93%
tidy3d/components/data/unstructured/tetrahedral.py                    114      3    97%
tidy3d/components/data/unstructured/triangular.py                     199     14    93%
tidy3d/components/data/utils.py                                        46      4    91%
tidy3d/components/data/validators.py                                   43      1    98%
tidy3d/components/data/zbf.py                                          50      4    92%
tidy3d/components/dispersion_fitter.py                                430     31    93%
tidy3d/components/eme/__init__.py                                       0      0   100%
tidy3d/components/eme/data/__init__.py                                  0      0   100%
tidy3d/components/eme/data/dataset.py                                  27      0   100%
tidy3d/components/eme/data/monitor_data.py                             14      0   100%
tidy3d/components/eme/data/sim_data.py                                242    213    12%
tidy3d/components/eme/grid.py                                         307     95    69%
tidy3d/components/eme/monitor.py                                       42      0   100%
tidy3d/components/eme/simulation.py                                   496    194    61%
tidy3d/components/eme/sweep.py                                         40      9    78%
tidy3d/components/field_projection.py                                 354    298    16%
tidy3d/components/file_util.py                                         27      5    81%
tidy3d/components/frequencies.py                                      181    132    27%
tidy3d/components/frequency_extrapolation.py                           23      1    96%
tidy3d/components/geometry/__init__.py                                  0      0   100%
tidy3d/components/geometry/base.py                                   1129    283    75%
tidy3d/components/geometry/bound_ops.py                                29      0   100%
tidy3d/components/geometry/float_utils.py                              13      0   100%
tidy3d/components/geometry/mesh.py                                    255    123    52%
tidy3d/components/geometry/polyslab.py                               1079    479    56%
tidy3d/components/geometry/primitives.py                              366    190    48%
tidy3d/components/geometry/triangulation.py                            64     48    25%
tidy3d/components/geometry/utils.py                                   257     40    84%
tidy3d/components/geometry/utils_2d.py                                 99      0   100%
tidy3d/components/grid/__init__.py                                      0      0   100%
tidy3d/components/grid/corner_finder.py                                83      8    90%
tidy3d/components/grid/grid.py                                        215     20    91%
tidy3d/components/grid/grid_spec.py                                   850    139    84%
tidy3d/components/grid/mesher.py                                      505     27    95%
tidy3d/components/index.py                                             27      1    96%
tidy3d/components/lumped_element.py                                   436    171    61%
tidy3d/components/material/__init__.py                                  0      0   100%
tidy3d/components/material/multi_physics.py                            35      4    89%
tidy3d/components/material/solver_types.py                             10      0   100%
tidy3d/components/material/tcad/__init__.py                             0      0   100%
tidy3d/components/material/tcad/charge.py                              61      8    87%
tidy3d/components/material/tcad/heat.py                                47     10    79%
tidy3d/components/material/types.py                                     6      0   100%
tidy3d/components/medium.py                                          2505    899    64%
tidy3d/components/microwave/__init__.py                                 0      0   100%
tidy3d/components/microwave/base.py                                    20      0   100%
tidy3d/components/microwave/data/__init__.py                            0      0   100%
tidy3d/components/microwave/data/data_array.py                         18      0   100%
tidy3d/components/microwave/data/dataset.py                             8      0   100%
tidy3d/components/microwave/data/monitor_data.py                      157      8    95%
tidy3d/components/microwave/formulas/__init__.py                        0      0   100%
tidy3d/components/microwave/formulas/circuit_parameters.py             35     25    29%
tidy3d/components/microwave/impedance_calculator.py                    56      0   100%
tidy3d/components/microwave/mode_spec.py                               53      0   100%
tidy3d/components/microwave/monitor.py                                  9      0   100%
tidy3d/components/microwave/path_integrals/__init__.py                  0      0   100%
tidy3d/components/microwave/path_integrals/factory.py                  57      2    96%
tidy3d/components/microwave/path_integrals/integrals/__init__.py        0      0   100%
tidy3d/components/microwave/path_integrals/integrals/auto.py           26      0   100%
tidy3d/components/microwave/path_integrals/integrals/base.py           81      1    99%
tidy3d/components/microwave/path_integrals/integrals/current.py       121      1    99%
tidy3d/components/microwave/path_integrals/integrals/voltage.py        20      0   100%
tidy3d/components/microwave/path_integrals/mode_plane_analyzer.py     127     18    86%
tidy3d/components/microwave/path_integrals/specs/__init__.py            0      0   100%
tidy3d/components/microwave/path_integrals/specs/base.py              109     14    87%
tidy3d/components/microwave/path_integrals/specs/current.py           126     48    62%
tidy3d/components/microwave/path_integrals/specs/impedance.py          19      0   100%
tidy3d/components/microwave/path_integrals/specs/voltage.py            60     27    55%
tidy3d/components/microwave/path_integrals/types.py                     6      0   100%
tidy3d/components/microwave/path_integrals/viz.py                      12      0   100%
tidy3d/components/mode/__init__.py                                      0      0   100%
tidy3d/components/mode/data/__init__.py                                 0      0   100%
tidy3d/components/mode/data/sim_data.py                                24      0   100%
tidy3d/components/mode/derivatives.py                                 132      2    98%
tidy3d/components/mode/mode_solver.py                                1020    231    77%
tidy3d/components/mode/simulation.py                                  133      7    95%
tidy3d/components/mode/solver.py                                      421     53    87%
tidy3d/components/mode/transforms.py                                   32      0   100%
tidy3d/components/mode_spec.py                                        206      4    98%
tidy3d/components/monitor.py                                          371     24    94%
tidy3d/components/nonlinear.py                                         95     12    87%
tidy3d/components/parameter_perturbation.py                           436     28    94%
tidy3d/components/run_time_spec.py                                      6      0   100%
tidy3d/components/scene.py                                            688    140    80%
tidy3d/components/simulation.py                                      1999    167    92%
tidy3d/components/source/__init__.py                                    0      0   100%
tidy3d/components/source/base.py                                       53      6    89%
tidy3d/components/source/current.py                                    47      0   100%
tidy3d/components/source/field.py                                     178     17    90%
tidy3d/components/source/frame.py                                       7      0   100%
tidy3d/components/source/time.py                                      268     30    89%
tidy3d/components/source/utils.py                                       5      0   100%
tidy3d/components/spice/__init__.py                                     0      0   100%
tidy3d/components/spice/analysis/__init__.py                            0      0   100%
tidy3d/components/spice/analysis/ac.py                                 22      8    64%
tidy3d/components/spice/analysis/dc.py                                 15      0   100%
tidy3d/components/spice/sources/__init__.py                             0      0   100%
tidy3d/components/spice/sources/ac.py                                  22      7    68%
tidy3d/components/spice/sources/dc.py                                  22      1    95%
tidy3d/components/spice/sources/types.py                                6      0   100%
tidy3d/components/spice/types.py                                        5      0   100%
tidy3d/components/structure.py                                        237     26    89%
tidy3d/components/subpixel_spec.py                                     47      2    96%
tidy3d/components/tcad/__init__.py                                      0      0   100%
tidy3d/components/tcad/analysis/__init__.py                             0      0   100%
tidy3d/components/tcad/analysis/heat_simulation_type.py                10      0   100%
tidy3d/components/tcad/bandgap.py                                       9      0   100%
tidy3d/components/tcad/bandgap_energy.py                               10      0   100%
tidy3d/components/tcad/boundary/__init__.py                             0      0   100%
tidy3d/components/tcad/boundary/abstract.py                             4      0   100%
tidy3d/components/tcad/boundary/charge.py                              10      0   100%
tidy3d/components/tcad/boundary/heat.py                                22      3    86%
tidy3d/components/tcad/boundary/specification.py                       10      0   100%
tidy3d/components/tcad/data/__init__.py                                 0      0   100%
tidy3d/components/tcad/data/monitor_data/__init__.py                    0      0   100%
tidy3d/components/tcad/data/monitor_data/abstract.py                   70     44    37%
tidy3d/components/tcad/data/monitor_data/charge.py                    143     82    43%
tidy3d/components/tcad/data/monitor_data/heat.py                       17      1    94%
tidy3d/components/tcad/data/monitor_data/mesh.py                       15      2    87%
tidy3d/components/tcad/data/sim_data.py                               156    106    32%
tidy3d/components/tcad/data/types.py                                    5      0   100%
tidy3d/components/tcad/doping.py                                      107     14    87%
tidy3d/components/tcad/effective_DOS.py                                35      7    80%
tidy3d/components/tcad/generation_recombination.py                     51      8    84%
tidy3d/components/tcad/grid.py                                         60     14    77%
tidy3d/components/tcad/mesher.py                                       12      2    83%
tidy3d/components/tcad/mobility.py                                     15      0   100%
tidy3d/components/tcad/monitors/__init__.py                             0      0   100%
tidy3d/components/tcad/monitors/abstract.py                            12      2    83%
tidy3d/components/tcad/monitors/charge.py                              15      0   100%
tidy3d/components/tcad/monitors/heat.py                                 5      0   100%
tidy3d/components/tcad/monitors/mesh.py                                12      3    75%
tidy3d/components/tcad/simulation/__init__.py                           0      0   100%
tidy3d/components/tcad/simulation/heat.py                              21      6    71%
tidy3d/components/tcad/simulation/heat_charge.py                      764    333    56%
tidy3d/components/tcad/source/__init__.py                               0      0   100%
tidy3d/components/tcad/source/abstract.py                              20      2    90%
tidy3d/components/tcad/source/coupled.py                                3      0   100%
tidy3d/components/tcad/source/heat.py                                  14      2    86%
tidy3d/components/tcad/types.py                                        21      0   100%
tidy3d/components/tcad/viz.py                                          11      0   100%
tidy3d/components/time.py                                              75      2    97%
tidy3d/components/time_modulation.py                                   93      0   100%
tidy3d/components/transformation.py                                    83      5    94%
tidy3d/components/types/__init__.py                                     5      0   100%
tidy3d/components/types/base.py                                       164     13    92%
tidy3d/components/types/mode_spec.py                                    5      0   100%
tidy3d/components/types/monitor.py                                      5      0   100%
tidy3d/components/types/monitor_data.py                                 8      0   100%
tidy3d/components/types/simulation.py                                  17      0   100%
tidy3d/components/types/third_party.py                                  7      1    86%
tidy3d/components/types/utils.py                                        6      1    83%
tidy3d/components/types/workflow.py                                     9      0   100%
tidy3d/components/validators.py                                       225     17    92%
tidy3d/components/viz/__init__.py                                      10      0   100%
tidy3d/components/viz/axes_utils.py                                    89     43    52%
tidy3d/components/viz/descartes.py                                     46      6    87%
tidy3d/components/viz/flex_color_palettes.py                            4      4     0%
tidy3d/components/viz/flex_style.py                                    27     11    59%
tidy3d/components/viz/plot_params.py                                   47      0   100%
tidy3d/components/viz/plot_sim_3d.py                                   57     40    30%
tidy3d/components/viz/styles.py                                        18      2    89%
tidy3d/components/viz/visualization_spec.py                            29      3    90%
tidy3d/config/__init__.py                                              29      2    93%
tidy3d/config/legacy.py                                               332    109    67%
tidy3d/config/loader.py                                               226    121    46%
tidy3d/config/manager.py                                              424    227    46%
tidy3d/config/profiles.py                                               4      0   100%
tidy3d/config/registry.py                                              34      3    91%
tidy3d/config/sections.py                                             154     36    77%
tidy3d/config/serializer.py                                            86     71    17%
tidy3d/constants.py                                                   115      0   100%
tidy3d/exceptions.py                                                   18      0   100%
tidy3d/log.py                                                         209     20    90%
tidy3d/material_library/__init__.py                                     0      0   100%
tidy3d/material_library/material_library.py                           193      8    96%
tidy3d/material_library/material_reference.py                          10      0   100%
tidy3d/material_library/parametric_materials.py                       159      3    98%
tidy3d/material_library/util.py                                       133     53    60%
tidy3d/packaging.py                                                   115     13    89%
tidy3d/plugins/__init__.py                                              0      0   100%
tidy3d/plugins/autograd/__init__.py                                     7      0   100%
tidy3d/plugins/autograd/constants.py                                    3      0   100%
tidy3d/plugins/autograd/differential_operators.py                      27      0   100%
tidy3d/plugins/autograd/functions.py                                  254     13    95%
tidy3d/plugins/autograd/invdes/__init__.py                              8      0   100%
tidy3d/plugins/autograd/invdes/filters.py                              97      7    93%
tidy3d/plugins/autograd/invdes/misc.py                                  5      1    80%
tidy3d/plugins/autograd/invdes/parametrizations.py                     94      7    93%
tidy3d/plugins/autograd/invdes/penalties.py                            60     21    65%
tidy3d/plugins/autograd/invdes/projections.py                          40      5    88%
tidy3d/plugins/autograd/invdes/symmetries.py                           39      3    92%
tidy3d/plugins/autograd/primitives/__init__.py                          4      0   100%
tidy3d/plugins/autograd/primitives/interpolate.py                     263      4    98%
tidy3d/plugins/autograd/primitives/misc.py                             62     12    81%
tidy3d/plugins/autograd/types.py                                        4      0   100%
tidy3d/plugins/autograd/utilities.py                                   73      4    95%
tidy3d/plugins/design/__init__.py                                       6      0   100%
tidy3d/plugins/design/design.py                                       238      6    97%
tidy3d/plugins/design/method.py                                       315      1    99%
tidy3d/plugins/design/parameter.py                                     95      2    98%
tidy3d/plugins/design/result.py                                       151      7    95%
tidy3d/plugins/dispersion/__init__.py                                   5      0   100%
tidy3d/plugins/dispersion/fit.py                                      272     13    95%
tidy3d/plugins/dispersion/fit_fast.py                                  33      0   100%
tidy3d/plugins/dispersion/fit_web.py                                    3      3     0%
tidy3d/plugins/dispersion/web.py                                      112     25    78%
tidy3d/plugins/expressions/__init__.py                                 20      0   100%
tidy3d/plugins/expressions/base.py                                    116     45    61%
tidy3d/plugins/expressions/functions.py                                37      1    97%
tidy3d/plugins/expressions/metrics.py                                  46      2    96%
tidy3d/plugins/expressions/operators.py                                65      2    97%
tidy3d/plugins/expressions/types.py                                    10      0   100%
tidy3d/plugins/expressions/variables.py                                27      1    96%
tidy3d/plugins/invdes/__init__.py                                      10      0   100%
tidy3d/plugins/invdes/base.py                                           4      0   100%
tidy3d/plugins/invdes/design.py                                       168     23    86%
tidy3d/plugins/invdes/initialization.py                                57      7    88%
tidy3d/plugins/invdes/optimizer.py                                     97      4    96%
tidy3d/plugins/invdes/penalty.py                                       25      1    96%
tidy3d/plugins/invdes/region.py                                       173     14    92%
tidy3d/plugins/invdes/result.py                                        76      2    97%
tidy3d/plugins/invdes/transformation.py                                27      2    93%
tidy3d/plugins/invdes/utils.py                                         38      0   100%
tidy3d/plugins/invdes/validators.py                                    35      6    83%
tidy3d/plugins/klayout/__init__.py                                      4      0   100%
tidy3d/plugins/klayout/drc/__init__.py                                  4      0   100%
tidy3d/plugins/klayout/drc/defaults.py                                  5      0   100%
tidy3d/plugins/klayout/drc/drc.py                                      89      5    94%
tidy3d/plugins/klayout/drc/results.py                                 132     13    90%
tidy3d/plugins/klayout/util.py                                         50     23    54%
tidy3d/plugins/microwave/__init__.py                                   18      0   100%
tidy3d/plugins/microwave/array_factor.py                              388     20    95%
tidy3d/plugins/microwave/auto_path_integrals.py                         3      3     0%
tidy3d/plugins/microwave/custom_path_integrals.py                       6      6     0%
tidy3d/plugins/microwave/impedance_calculator.py                        3      3     0%
tidy3d/plugins/microwave/lobe_measurer.py                             152      0   100%
tidy3d/plugins/microwave/models/__init__.py                             3      0   100%
tidy3d/plugins/microwave/models/coupled_microstrip.py                  49      0   100%
tidy3d/plugins/microwave/models/microstrip.py                          64      0   100%
tidy3d/plugins/microwave/path_integrals.py                              5      5     0%
tidy3d/plugins/microwave/rf_material_library.py                        17      0   100%
tidy3d/plugins/microwave/rf_material_reference.py                       3      0   100%
tidy3d/plugins/microwave/viz.py                                        10      0   100%
tidy3d/plugins/mode/__init__.py                                         3      0   100%
tidy3d/plugins/mode/mode_solver.py                                      7      0   100%
tidy3d/plugins/mode/web.py                                              3      0   100%
tidy3d/plugins/polyslab/__init__.py                                     3      0   100%
tidy3d/plugins/polyslab/polyslab.py                                     7      0   100%
tidy3d/plugins/pytorch/__init__.py                                      3      0   100%
tidy3d/plugins/pytorch/wrapper.py                                      40      1    98%
tidy3d/plugins/resonance/__init__.py                                    3      0   100%
tidy3d/plugins/resonance/resonance.py                                 172     10    94%
tidy3d/plugins/smatrix/__init__.py                                     17      0   100%
tidy3d/plugins/smatrix/analysis/__init__.py                             0      0   100%
tidy3d/plugins/smatrix/analysis/antenna.py                             45      0   100%
tidy3d/plugins/smatrix/analysis/modal.py                               36      0   100%
tidy3d/plugins/smatrix/analysis/terminal.py                            86      1    99%
tidy3d/plugins/smatrix/component_modelers/__init__.py                   0      0   100%
tidy3d/plugins/smatrix/component_modelers/base.py                     137      1    99%
tidy3d/plugins/smatrix/component_modelers/modal.py                    109      4    96%
tidy3d/plugins/smatrix/component_modelers/terminal.py                 333      4    99%
tidy3d/plugins/smatrix/component_modelers/types.py                      5      0   100%
tidy3d/plugins/smatrix/data/__init__.py                                 0      0   100%
tidy3d/plugins/smatrix/data/base.py                                    30      1    97%
tidy3d/plugins/smatrix/data/data_array.py                              16      0   100%
tidy3d/plugins/smatrix/data/modal.py                                   11      0   100%
tidy3d/plugins/smatrix/data/terminal.py                               144      0   100%
tidy3d/plugins/smatrix/data/types.py                                    5      0   100%
tidy3d/plugins/smatrix/ports/__init__.py                                0      0   100%
tidy3d/plugins/smatrix/ports/base.py                                   12      0   100%
tidy3d/plugins/smatrix/ports/base_lumped.py                            44      0   100%
tidy3d/plugins/smatrix/ports/base_terminal.py                          29      2    93%
tidy3d/plugins/smatrix/ports/coaxial_lumped.py                        166      0   100%
tidy3d/plugins/smatrix/ports/modal.py                                  14      0   100%
tidy3d/plugins/smatrix/ports/rectangular_lumped.py                    205      9    96%
tidy3d/plugins/smatrix/ports/types.py                                  12      0   100%
tidy3d/plugins/smatrix/ports/wave.py                                  151      2    99%
tidy3d/plugins/smatrix/run.py                                          44      1    98%
tidy3d/plugins/smatrix/types.py                                         8      0   100%
tidy3d/plugins/smatrix/utils.py                                        72      0   100%
tidy3d/plugins/waveguide/__init__.py                                    3      0   100%
tidy3d/plugins/waveguide/rectangular_dielectric.py                    369     80    78%
tidy3d/rf.py                                                           39      0   100%
tidy3d/updater.py                                                     199    121    39%
tidy3d/version.py                                                       2      0   100%
tidy3d/web/__init__.py                                                 12      0   100%
tidy3d/web/api/__init__.py                                              0      0   100%
tidy3d/web/api/asynchronous.py                                         15      2    87%
tidy3d/web/api/autograd/__init__.py                                     0      0   100%
tidy3d/web/api/autograd/autograd.py                                   338     74    78%
tidy3d/web/api/autograd/backward.py                                   138     24    83%
tidy3d/web/api/autograd/constants.py                                    7      0   100%
tidy3d/web/api/autograd/engine.py                                      60     23    62%
tidy3d/web/api/autograd/forward.py                                     13      0   100%
tidy3d/web/api/autograd/io_utils.py                                    39     12    69%
tidy3d/web/api/autograd/utils.py                                       35      0   100%
tidy3d/web/api/connect_util.py                                         46     18    61%
tidy3d/web/api/container.py                                           521     75    86%
tidy3d/web/api/material_fitter.py                                      63     20    68%
tidy3d/web/api/material_libray.py                                      21      1    95%
tidy3d/web/api/mode.py                                                210     66    69%
tidy3d/web/api/run.py                                                  75      7    91%
tidy3d/web/api/states.py                                               39     14    64%
tidy3d/web/api/tidy3d_stub.py                                          76      2    97%
tidy3d/web/api/webapi.py                                              589    212    64%
tidy3d/web/cache.py                                                   541    113    79%
tidy3d/web/cli/__init__.py                                              3      0   100%
tidy3d/web/cli/app.py                                                 108     64    41%
tidy3d/web/cli/cache.py                                                60      2    97%
tidy3d/web/cli/constants.py                                             5      0   100%
tidy3d/web/cli/develop/__init__.py                                      8      0   100%
tidy3d/web/cli/develop/documentation.py                                78     54    31%
tidy3d/web/cli/develop/index.py                                         5      0   100%
tidy3d/web/cli/develop/install.py                                     157    129    18%
tidy3d/web/cli/develop/packaging.py                                    35     18    49%
tidy3d/web/cli/develop/tests.py                                        17      6    65%
tidy3d/web/cli/develop/utils.py                                        16      6    62%
tidy3d/web/common.py                                                    3      0   100%
tidy3d/web/core/__init__.py                                             3      0   100%
tidy3d/web/core/account.py                                             20      1    95%
tidy3d/web/core/cache.py                                                3      0   100%
tidy3d/web/core/constants.py                                           26      0   100%
tidy3d/web/core/core_config.py                                         15      0   100%
tidy3d/web/core/environment.py                                         16      4    75%
tidy3d/web/core/exceptions.py                                           9      0   100%
tidy3d/web/core/file_util.py                                           40     17    58%
tidy3d/web/core/http_util.py                                          144     28    81%
tidy3d/web/core/s3utils.py                                            140     69    51%
tidy3d/web/core/stub.py                                                15      0   100%
tidy3d/web/core/task_core.py                                          293     92    69%
tidy3d/web/core/task_info.py                                          142      0   100%
tidy3d/web/core/types.py                                               42      1    98%
tidy3d/web/environment.py                                               3      3     0%
---------------------------------------------------------------------------------------
TOTAL                                                               40022   8304    79%
=========================== short test summary info ============================
FAILED tests/test_components/test_simulation.py::test_sim_init - worker 'gw0' crashed while running 'tests/test_components/test_simulation.py::test_sim_init'
===== 1 failed, 10751 passed, 61 skipped, 6 warnings in 928.46s (0:15:28) ======

@daquinteroflex daquinteroflex added this pull request to the merge queue Dec 11, 2025
Merged via the queue into develop with commit 1b9ae41 Dec 11, 2025
88 of 119 checks passed
@daquinteroflex daquinteroflex deleted the dario/codeartifact_docs branch December 11, 2025 16:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants