From 123486ad755928696e23e4edd4c2c12773b9cbe3 Mon Sep 17 00:00:00 2001 From: Doug Addy Date: Tue, 29 Aug 2023 09:55:47 +0100 Subject: [PATCH 001/275] Remove codecov upload --- .github/workflows/local_checks.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.github/workflows/local_checks.yml b/.github/workflows/local_checks.yml index 746c902f..8e818624 100644 --- a/.github/workflows/local_checks.yml +++ b/.github/workflows/local_checks.yml @@ -60,12 +60,6 @@ jobs: - name: Test with tox (no integration tests) run: tox -- -m "not integration" - - name: Upload coverage report - uses: codecov/codecov-action@v3 - with: - fail_ci_if_error: true - token: ${{ secrets.CODECOV_TOKEN }} - package: name: Build package runs-on: ubuntu-latest From 7989bde32e4d632f2802fe6999df7feea323d1e9 Mon Sep 17 00:00:00 2001 From: Doug Addy Date: Tue, 29 Aug 2023 09:57:39 +0100 Subject: [PATCH 002/275] Switch pyansys to ansys --- .github/workflows/local_checks.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/local_checks.yml b/.github/workflows/local_checks.yml index 8e818624..26ed8197 100644 --- a/.github/workflows/local_checks.yml +++ b/.github/workflows/local_checks.yml @@ -32,7 +32,7 @@ jobs: runs-on: ubuntu-latest steps: - name: PyAnsys documentation style checks - uses: pyansys/actions/doc-style@v4 + uses: ansys/actions/doc-style@v4 with: token: ${{ secrets.GITHUB_TOKEN }} From b4067c824e8a812332cadf0df8d8d2410afeab0b Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Mon, 4 Sep 2023 14:15:48 +0200 Subject: [PATCH 003/275] Update CNAME --- .github/workflows/ci_cd.yml | 2 +- doc/source/conf.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci_cd.yml b/.github/workflows/ci_cd.yml index 85da24ee..c9e576a4 100644 --- a/.github/workflows/ci_cd.yml +++ b/.github/workflows/ci_cd.yml @@ -15,7 +15,7 @@ on: merge_group: env: - DOCUMENTATION_CNAME: 'bomanalytics.grantami.docs.pyansys.com' + DOCUMENTATION_CNAME: 'animated-broccoli-k6emqn7.pages.github.io' jobs: local_checks: diff --git a/doc/source/conf.py b/doc/source/conf.py index 0eb5b62a..d55ea791 100755 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -128,7 +128,7 @@ # -- Options for HTML output ------------------------------------------------- -cname = os.getenv("DOCUMENTATION_CNAME", "bomanalytics.grantami.docs.pyansys.com") +cname = os.getenv("DOCUMENTATION_CNAME", "animated-broccoli-k6emqn7.pages.github.io") """The canonical name of the webpage hosting the documentation.""" html_theme = "ansys_sphinx_theme" html_favicon = ansys_favicon From 00ff31678d0aed4fa7ca6a2034776827e012dab5 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Mon, 4 Sep 2023 15:19:09 +0200 Subject: [PATCH 004/275] Temporarily skip version switcher check --- doc/source/conf.py | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/source/conf.py b/doc/source/conf.py index 0eb5b62a..af398fd4 100755 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -143,6 +143,7 @@ "switcher": { "json_url": f"https://{cname}/versions.json", "version_match": get_version_match(__version__), + "check_switcher": False }, } From 2d07b2b3d9fcaafe4196dbccff2269386297d92d Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Mon, 4 Sep 2023 15:23:56 +0200 Subject: [PATCH 005/275] Fix config --- doc/source/conf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/source/conf.py b/doc/source/conf.py index af398fd4..042d6c3c 100755 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -143,8 +143,8 @@ "switcher": { "json_url": f"https://{cname}/versions.json", "version_match": get_version_match(__version__), - "check_switcher": False }, + "check_switcher": False } # -- Options for HTMLHelp output --------------------------------------------- From 6e35abc05b6e0cf741bab70d80dd98f0938fcaec Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Sep 2023 14:47:03 +0000 Subject: [PATCH 006/275] Bump nbsphinx from 0.9.2 to 0.9.3 Bumps [nbsphinx](https://github.com/spatialaudio/nbsphinx) from 0.9.2 to 0.9.3. - [Release notes](https://github.com/spatialaudio/nbsphinx/releases) - [Changelog](https://github.com/spatialaudio/nbsphinx/blob/master/NEWS.rst) - [Commits](https://github.com/spatialaudio/nbsphinx/compare/0.9.2...0.9.3) --- updated-dependencies: - dependency-name: nbsphinx dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- poetry.lock | 18 ++++++++++++++---- pyproject.toml | 2 +- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/poetry.lock b/poetry.lock index 7f88cf59..5c504204 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1818,13 +1818,13 @@ test = ["pep440", "pre-commit", "pytest", "testpath"] [[package]] name = "nbsphinx" -version = "0.9.2" +version = "0.9.3" description = "Jupyter Notebook Tools for Sphinx" optional = false python-versions = ">=3.6" files = [ - {file = "nbsphinx-0.9.2-py3-none-any.whl", hash = "sha256:2746680ece5ad3b0e980639d717a5041a1c1aafb416846b72dfaeecc306bc351"}, - {file = "nbsphinx-0.9.2.tar.gz", hash = "sha256:540db7f4066347f23d0650c4ae8e7d85334c69adf749e030af64c12e996ff88e"}, + {file = "nbsphinx-0.9.3-py3-none-any.whl", hash = "sha256:6e805e9627f4a358bd5720d5cbf8bf48853989c79af557afd91a5f22e163029f"}, + {file = "nbsphinx-0.9.3.tar.gz", hash = "sha256:ec339c8691b688f8676104a367a4b8cf3ea01fd089dc28d24dec22d563b11562"}, ] [package.dependencies] @@ -2455,6 +2455,7 @@ files = [ {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, + {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, @@ -2462,8 +2463,15 @@ files = [ {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, + {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, + {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, + {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, + {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, @@ -2480,6 +2488,7 @@ files = [ {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, + {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, @@ -2487,6 +2496,7 @@ files = [ {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, + {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, @@ -3439,4 +3449,4 @@ examples = ["jupyterlab", "lxml", "pandas", "tabulate"] [metadata] lock-version = "2.0" python-versions = "^3.8.0" -content-hash = "4cfbeb8445e9c69b540df69579fc14bf9087c07261f66ea3580569b1d77fe36e" +content-hash = "348db5bb0f7e650d27495b28dca8f7da19f846c47db11992b31106872c938ac8" diff --git a/pyproject.toml b/pyproject.toml index 1aa2c5f4..423836cd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -72,7 +72,7 @@ sphinx-copybutton = "0.5.2" enum_tools = "0.10.0" sphinx-toolbox = "3.5.0" jupytext = "1.15.0" -nbsphinx = "0.9.2" +nbsphinx = "0.9.3" [tool.poetry.extras] From 11867a4345a13180c6c3aa191835ac8745c5de78 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Sep 2023 15:47:55 +0000 Subject: [PATCH 007/275] Bump sphinx-notfound-page from 0.8.3 to 1.0.0 Bumps [sphinx-notfound-page](https://github.com/readthedocs/sphinx-notfound-page) from 0.8.3 to 1.0.0. - [Changelog](https://github.com/readthedocs/sphinx-notfound-page/blob/main/CHANGELOG.rst) - [Commits](https://github.com/readthedocs/sphinx-notfound-page/compare/0.8.3...1.0.0) --- updated-dependencies: - dependency-name: sphinx-notfound-page dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- poetry.lock | 14 +++++++------- pyproject.toml | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/poetry.lock b/poetry.lock index 5c504204..ab42f229 100644 --- a/poetry.lock +++ b/poetry.lock @@ -3021,20 +3021,20 @@ markupsafe = ">=1" [[package]] name = "sphinx-notfound-page" -version = "0.8.3" +version = "1.0.0" description = "Sphinx extension to build a 404 page with absolute URLs" optional = false -python-versions = "*" +python-versions = ">=3.8" files = [ - {file = "sphinx-notfound-page-0.8.3.tar.gz", hash = "sha256:f728403280026b84c234540bebbed7f710b9ea582e7348a35a5becefe4024332"}, - {file = "sphinx_notfound_page-0.8.3-py2.py3-none-any.whl", hash = "sha256:c4867b345afccef72de71fb410c412540dfbb5c2de0dc06bde70b331b8f30469"}, + {file = "sphinx_notfound_page-1.0.0-py3-none-any.whl", hash = "sha256:40a5741a6b07245a08fe55dbbd603ad6719e191b1419ab2e5337c706ebd16554"}, + {file = "sphinx_notfound_page-1.0.0.tar.gz", hash = "sha256:14cd388956de5cdf8710ab4ff31776ef8d85759c4f46014ee30f368e83bd3a3b"}, ] [package.dependencies] -sphinx = ">=1.8" +sphinx = ">=5" [package.extras] -doc = ["sphinx", "sphinx-autoapi", "sphinx-notfound-page", "sphinx-prompt", "sphinx-rtd-theme", "sphinx-tabs", "sphinxemoji"] +doc = ["sphinx-autoapi", "sphinx-rtd-theme", "sphinx-tabs", "sphinxemoji"] test = ["tox"] [[package]] @@ -3449,4 +3449,4 @@ examples = ["jupyterlab", "lxml", "pandas", "tabulate"] [metadata] lock-version = "2.0" python-versions = "^3.8.0" -content-hash = "348db5bb0f7e650d27495b28dca8f7da19f846c47db11992b31106872c938ac8" +content-hash = "83838032b343a782de036504a0c4f95734f3ad6720224bebdd4b9d9316e947ce" diff --git a/pyproject.toml b/pyproject.toml index 423836cd..967247f4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -67,7 +67,7 @@ optional = true ansys-sphinx-theme = "^0.10" numpydoc = "1.5.0" sphinx = "^7.1" -sphinx-notfound-page = "0.8.3" +sphinx-notfound-page = "1.0.0" sphinx-copybutton = "0.5.2" enum_tools = "0.10.0" sphinx-toolbox = "3.5.0" From a48cf94693a7bc0144943d42385620ce44f54d26 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Sep 2023 15:58:10 +0000 Subject: [PATCH 008/275] Bump jupytext from 1.15.0 to 1.15.1 Bumps [jupytext](https://github.com/mwouts/jupytext) from 1.15.0 to 1.15.1. - [Release notes](https://github.com/mwouts/jupytext/releases) - [Changelog](https://github.com/mwouts/jupytext/blob/main/docs/CHANGELOG.md) - [Commits](https://github.com/mwouts/jupytext/compare/v1.15.0...v1.15.1) --- updated-dependencies: - dependency-name: jupytext dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- poetry.lock | 8 ++++---- pyproject.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/poetry.lock b/poetry.lock index ab42f229..bba39121 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1383,13 +1383,13 @@ test = ["hatch", "ipykernel", "jupyterlab-server[openapi]", "openapi-spec-valida [[package]] name = "jupytext" -version = "1.15.0" +version = "1.15.1" description = "Jupyter notebooks as Markdown documents, Julia, Python or R scripts" optional = false python-versions = "~=3.6" files = [ - {file = "jupytext-1.15.0-py3-none-any.whl", hash = "sha256:7bb7cf4c0a91f5b1591f7558fa3a6494ac6ccf9810d1aa58565d4d9a2675a4a1"}, - {file = "jupytext-1.15.0.tar.gz", hash = "sha256:290c0a04b0a0a341d7ca87a2992cf407eb83898873baddf0bc48039a5e301ff8"}, + {file = "jupytext-1.15.1-py3-none-any.whl", hash = "sha256:1df0724f97e5c0db9bb5b71ff9ecf4225e2bccbfb49131834424b043edbe8af8"}, + {file = "jupytext-1.15.1.tar.gz", hash = "sha256:39c2112a1a007f2e9e2783695054205562466fd44f68acb371ebd52feac7ff58"}, ] [package.dependencies] @@ -3449,4 +3449,4 @@ examples = ["jupyterlab", "lxml", "pandas", "tabulate"] [metadata] lock-version = "2.0" python-versions = "^3.8.0" -content-hash = "83838032b343a782de036504a0c4f95734f3ad6720224bebdd4b9d9316e947ce" +content-hash = "5b91efe5c536999497fd693a7f53d2ea48298deeba5d349ffa8421b99de8d011" diff --git a/pyproject.toml b/pyproject.toml index 967247f4..d4abac37 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -71,7 +71,7 @@ sphinx-notfound-page = "1.0.0" sphinx-copybutton = "0.5.2" enum_tools = "0.10.0" sphinx-toolbox = "3.5.0" -jupytext = "1.15.0" +jupytext = "1.15.1" nbsphinx = "0.9.3" [tool.poetry.extras] From 24d242d97345ab4ce41f936be33611291c8f9e46 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Sep 2023 15:58:32 +0000 Subject: [PATCH 009/275] Bump ansys-sphinx-theme from 0.10.4 to 0.10.6 Bumps [ansys-sphinx-theme](https://github.com/ansys/ansys-sphinx-theme) from 0.10.4 to 0.10.6. - [Release notes](https://github.com/ansys/ansys-sphinx-theme/releases) - [Commits](https://github.com/ansys/ansys-sphinx-theme/compare/v0.10.4...v0.10.6) --- updated-dependencies: - dependency-name: ansys-sphinx-theme dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- poetry.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/poetry.lock b/poetry.lock index ab42f229..42486617 100644 --- a/poetry.lock +++ b/poetry.lock @@ -66,13 +66,13 @@ oidc = ["keyring (>=22,<24)", "requests_auth (>=6.0,<7.0)"] [[package]] name = "ansys-sphinx-theme" -version = "0.10.4" +version = "0.10.6" description = "A theme devised by ANSYS, Inc. for Sphinx documentation." optional = false python-versions = ">=3.8,<4" files = [ - {file = "ansys_sphinx_theme-0.10.4-py3-none-any.whl", hash = "sha256:fbf7e84b373fae06534f2b50b977354199aefa23a40c040ad5699cce2134728f"}, - {file = "ansys_sphinx_theme-0.10.4.tar.gz", hash = "sha256:e712d0df63d4d18b6e6927297d9bc0bf4d7a3cbaf11e60dfc4196568332dc123"}, + {file = "ansys_sphinx_theme-0.10.6-py3-none-any.whl", hash = "sha256:0ff077a35d0d950aa2d8ebe95ec5f2e8ed217c9721bea5380623c2781ffcc2ac"}, + {file = "ansys_sphinx_theme-0.10.6.tar.gz", hash = "sha256:b66082557fbab9fe192cc1b4be495e0a64c86ba107929775cd8866ff97d3fadc"}, ] [package.dependencies] From 8946144ed548c01cb1be8c5e9361fd3a1f209a63 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Tue, 5 Sep 2023 11:19:37 +0200 Subject: [PATCH 010/275] Comment out PyPI release (#17) --- .github/workflows/ci_cd.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci_cd.yml b/.github/workflows/ci_cd.yml index c9e576a4..552f009a 100644 --- a/.github/workflows/ci_cd.yml +++ b/.github/workflows/ci_cd.yml @@ -94,13 +94,13 @@ jobs: dest: dist/documentation-html.zip # note how we use the PyPI tokens - - name: Upload to PyPI - run: | - pip install twine - twine upload --non-interactive --skip-existing dist/*.whl - env: - TWINE_USERNAME: __token__ - TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }} +# - name: Upload to PyPI +# run: | +# pip install twine +# twine upload --non-interactive --skip-existing dist/*.whl +# env: +# TWINE_USERNAME: __token__ +# TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }} - name: Release uses: softprops/action-gh-release@v1 From 5eb631c00a8ac6e07fa452eabe8517bb99c0ec16 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Wed, 6 Sep 2023 11:57:00 +0200 Subject: [PATCH 011/275] Switch to git dependency (#19) * Switch to git dependency * CI * Use PAT * Configure all jobs * Target 1.1.0 release * Target 1.1 release branch * Update poetry.lock * Specify shell * Enable long paths * Update server_checks.yml --- .github/workflows/ci_cd.yml | 2 ++ .github/workflows/local_checks.yml | 28 ++++++++++++++++++++++++++++ .github/workflows/server_checks.yml | 23 +++++++++++++++++++++++ poetry.lock | 17 +++++++++++------ pyproject.toml | 2 +- 5 files changed, 65 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci_cd.yml b/.github/workflows/ci_cd.yml index 552f009a..b6e0dc11 100644 --- a/.github/workflows/ci_cd.yml +++ b/.github/workflows/ci_cd.yml @@ -23,6 +23,7 @@ jobs: uses: ./.github/workflows/local_checks.yml secrets: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + BOM_OPENAPI_TOKEN: ${{ secrets.BOM_OPENAPI_TOKEN }} integration_checks: name: Integration checks @@ -40,6 +41,7 @@ jobs: TEST_SERVER_READ_PASS: ${{ secrets.TEST_SERVER_READ_PASS }} TEST_SERVER_WRITE_USER: ${{ secrets.TEST_SERVER_WRITE_USER }} TEST_SERVER_WRITE_PASS: ${{ secrets.TEST_SERVER_WRITE_PASS }} + BOM_OPENAPI_TOKEN: ${{ secrets.BOM_OPENAPI_TOKEN }} doc-deploy-dev: name: "Deploy development documentation" diff --git a/.github/workflows/local_checks.yml b/.github/workflows/local_checks.yml index 26ed8197..db8abd4d 100644 --- a/.github/workflows/local_checks.yml +++ b/.github/workflows/local_checks.yml @@ -3,6 +3,8 @@ on: secrets: CODECOV_TOKEN: required: true + BOM_OPENAPI_TOKEN: + required: true env: MAIN_PYTHON_VERSION: '3.9' @@ -23,9 +25,17 @@ jobs: - name: Install style requirements run: pip install 'tox<4' poetry --disable-pip-version-check + - name: Configure git + run: | + echo "https://${{ secrets.BOM_OPENAPI_TOKEN }}:@github.com" > $HOME/.git-credentials + git config --global credential.helper store + - name: Spell, Lint and Type Check run: tox -e style + - name: Clean-up + if: always() + run: rm -f $HOME/.git-credentials docs-style: name: Documentation Style Check @@ -57,9 +67,18 @@ jobs: - name: Install dependencies run: pip install poetry 'tox<4' --disable-pip-version-check + - name: Configure git + run: | + echo "https://${{ secrets.BOM_OPENAPI_TOKEN }}:@github.com" > $HOME/.git-credentials + git config --global credential.helper store + - name: Test with tox (no integration tests) run: tox -- -m "not integration" + - name: Clean-up + if: always() + run: rm -f $HOME/.git-credentials + package: name: Build package runs-on: ubuntu-latest @@ -107,11 +126,20 @@ jobs: sudo apt install libkrb5-dev sudo apt install pandoc + - name: Configure git + run: | + echo "https://${{ secrets.BOM_OPENAPI_TOKEN }}:@github.com" > $HOME/.git-credentials + git config --global credential.helper store + - name: Install library run: | pip install poetry --disable-pip-version-check poetry install --with doc + - name: Clean-up + if: always() + run: rm -f $HOME/.git-credentials + - name: Build HTML Documentation run: make -C doc html SPHINXOPTS="-W" diff --git a/.github/workflows/server_checks.yml b/.github/workflows/server_checks.yml index b86f9375..be7b6e29 100644 --- a/.github/workflows/server_checks.yml +++ b/.github/workflows/server_checks.yml @@ -21,6 +21,8 @@ on: required: true TEST_SERVER_WRITE_PASS: required: true + BOM_OPENAPI_TOKEN: + required: true workflow_dispatch: concurrency: @@ -78,6 +80,13 @@ jobs: - name: Install dependencies run: pip install poetry 'tox<4' --disable-pip-version-check + - name: Configure git + shell: bash + run: | + echo "https://${{ secrets.BOM_OPENAPI_TOKEN }}:@github.com" > $HOME/.git-credentials + git config --global credential.helper store + git config --global core.longpaths true + - name: Test with tox (integration tests only) run: tox -- -m "integration" env: @@ -87,6 +96,11 @@ jobs: TEST_WRITE_USER: ${{secrets.TEST_SERVER_WRITE_USER}} TEST_WRITE_PASS: ${{secrets.TEST_SERVER_WRITE_PASS}} + - name: Clean-up + if: always() + shell: bash + run: rm -f $HOME/.git-credentials + docs: name: Build documentation runs-on: ubuntu-latest @@ -107,10 +121,19 @@ jobs: sudo apt install pandoc sudo apt install texlive-latex-extra latexmk texlive-xetex fonts-freefont-otf xindy + - name: Configure git + run: | + echo "https://${{ secrets.BOM_OPENAPI_TOKEN }}:@github.com" > $HOME/.git-credentials + git config --global credential.helper store + - name: Install library run: | pip install poetry --disable-pip-version-check poetry install --with doc + + - name: Clean-up + if: always() + run: rm -f $HOME/.git-credentials - name: Build HTML Documentation run: make -C doc html SPHINXOPTS="-W" diff --git a/poetry.lock b/poetry.lock index d9b1544f..7a355f0d 100644 --- a/poetry.lock +++ b/poetry.lock @@ -31,9 +31,8 @@ version = "1.1.0" description = "Autogenerated client library for the Granta MI BoM Analytics Services." optional = false python-versions = ">=3.7" -files = [ - {file = "ansys_grantami_bomanalytics_openapi-1.1.0-py3-none-any.whl", hash = "sha256:a463378926e02c8d6cd92d76097b92319babee6c10de470f70c1654e4cca344c"}, -] +files = [] +develop = false [package.dependencies] ansys-openapi-common = ">=1.2.1,<2.0.0" @@ -43,6 +42,13 @@ requests = ">=2.26.0" [package.extras] test = ["pytest (==7.4.0)", "requests-mock (==1.11.0)"] +[package.source] +type = "git" +url = "https://github.com/ansys/grantami-bomanalytics-openapi-private.git" +reference = "release/1.1" +resolved_reference = "e6de1a1f446de1744576f923cd47d0fe0e39b3c4" +subdirectory = "ansys-grantami-bomanalytics-openapi" + [[package]] name = "ansys-openapi-common" version = "1.2.2" @@ -2840,8 +2846,7 @@ files = [ {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-win32.whl", hash = "sha256:763d65baa3b952479c4e972669f679fe490eee058d5aa85da483ebae2009d231"}, {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-win_amd64.whl", hash = "sha256:d000f258cf42fec2b1bbf2863c61d7b8918d31ffee905da62dede869254d3b8a"}, {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:045e0626baf1c52e5527bd5db361bc83180faaba2ff586e763d3d5982a876a9e"}, - {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:1a6391a7cabb7641c32517539ca42cf84b87b667bad38b78d4d42dd23e957c81"}, - {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:9c7617df90c1365638916b98cdd9be833d31d337dbcd722485597b43c4a215bf"}, + {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-macosx_12_6_arm64.whl", hash = "sha256:721bc4ba4525f53f6a611ec0967bdcee61b31df5a56801281027a3a6d1c2daf5"}, {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:41d0f1fa4c6830176eef5b276af04c89320ea616655d01327d5ce65e50575c94"}, {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-win32.whl", hash = "sha256:f6d3d39611ac2e4f62c3128a9eed45f19a6608670c5a2f4f07f24e8de3441d38"}, {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-win_amd64.whl", hash = "sha256:da538167284de58a52109a9b89b8f6a53ff8437dd6dc26d33b57bf6699153122"}, @@ -3449,4 +3454,4 @@ examples = ["jupyterlab", "lxml", "pandas", "tabulate"] [metadata] lock-version = "2.0" python-versions = "^3.8.0" -content-hash = "5b91efe5c536999497fd693a7f53d2ea48298deeba5d349ffa8421b99de8d011" +content-hash = "a8dbc5445f266d64b679ea86854f3b6187d05e873440378d8dc22b70bde7bb10" diff --git a/pyproject.toml b/pyproject.toml index d4abac37..a323306d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,7 +40,7 @@ python = "^3.8.0" # Packages for core library ansys-openapi-common = "< 2.0.0" -ansys-grantami-bomanalytics-openapi = "1.1.0" +ansys-grantami-bomanalytics-openapi = { git = 'https://github.com/ansys/grantami-bomanalytics-openapi-private.git', subdirectory = 'ansys-grantami-bomanalytics-openapi', branch = "release/1.1"} # Packages for the examples extra jupyterlab = { version = ">=3,<5", optional = true } From 02211d3b272ae75d9b56f2fc27ab8b62e7b9cc2e Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 7 Sep 2023 10:51:24 +0200 Subject: [PATCH 012/275] Update application name (#22) --- src/ansys/grantami/bomanalytics/_connection.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ansys/grantami/bomanalytics/_connection.py b/src/ansys/grantami/bomanalytics/_connection.py index f00758a0..31e38917 100644 --- a/src/ansys/grantami/bomanalytics/_connection.py +++ b/src/ansys/grantami/bomanalytics/_connection.py @@ -42,7 +42,7 @@ DEFAULT_DBKEY = "MI_Restricted_Substances" SERVICE_PATH = "/BomAnalytics/v1.svc" MI_AUTH_PATH = "/Health/v2.svc" -GRANTA_APPLICATION_NAME_HEADER = "MI Scripting Toolkit" +GRANTA_APPLICATION_NAME_HEADER = "PyGranta BoM Analytics" if TYPE_CHECKING: From a390e520e8afccd39f602aff4849958495c91867 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Tue, 12 Sep 2023 09:38:01 +0200 Subject: [PATCH 013/275] 2024R1 API update (#23) * Target openapi main branch * Update examples to use Leg. Ids * Update indicator argument name and examples values * Update tests * Relax typing * Document arg change * Fix docstring * Update legislation_ids docs * Suggested changes --- .../examples/0_Test_module_import.py | 2 +- .../2-1_Substance_compliance.py | 4 +- .../2-2_Material_compliance.py | 4 +- .../2-3_Part_compliance.py | 4 +- .../3-1_Working_with_XML_BoMs.py | 2 +- .../3-2_Dealing_with_external_data_sources.py | 2 +- ...iting_compliance_results_to_a_dataframe.py | 2 +- poetry.lock | 12 ++--- pyproject.toml | 2 +- src/ansys/grantami/bomanalytics/indicators.py | 46 +++++++++++++------ src/ansys/grantami/bomanalytics/queries.py | 16 +++---- tests/common.py | 4 +- tests/test_bom_indicators.py | 10 ++-- tests/test_mocked_responses/common.py | 2 +- tests/test_mocked_responses/test_bom.py | 4 +- tests/test_mocked_responses/test_materials.py | 4 +- tests/test_mocked_responses/test_parts.py | 4 +- .../test_specifications.py | 4 +- .../test_mocked_responses/test_substances.py | 4 +- 19 files changed, 74 insertions(+), 58 deletions(-) diff --git a/examples-dummy/examples/0_Test_module_import.py b/examples-dummy/examples/0_Test_module_import.py index e0b198fa..fcc014e5 100644 --- a/examples-dummy/examples/0_Test_module_import.py +++ b/examples-dummy/examples/0_Test_module_import.py @@ -30,6 +30,6 @@ # + tags=[] from ansys.grantami.bomanalytics.indicators import RoHSIndicator -indicator = RoHSIndicator(name="Indicator", legislation_names=["Legislation"]) +indicator = RoHSIndicator(name="Indicator", legislation_ids=["Legislation"]) indicator # - diff --git a/examples/2_Compliance_Queries/2-1_Substance_compliance.py b/examples/2_Compliance_Queries/2-1_Substance_compliance.py index 7c823f97..a011e88d 100644 --- a/examples/2_Compliance_Queries/2-1_Substance_compliance.py +++ b/examples/2_Compliance_Queries/2-1_Substance_compliance.py @@ -51,12 +51,12 @@ svhc = indicators.WatchListIndicator( name="SVHC", - legislation_names=["EU REACH - The Candidate List"], + legislation_ids=["Candidate_AnnexXV"], default_threshold_percentage=0.1, ) sin = indicators.WatchListIndicator( name="SIN", - legislation_names=["The SIN List 2.1 (Substitute It Now!)"] + legislation_ids=["SINList"] ) # - diff --git a/examples/2_Compliance_Queries/2-2_Material_compliance.py b/examples/2_Compliance_Queries/2-2_Material_compliance.py index 8ef39aa5..cf009846 100644 --- a/examples/2_Compliance_Queries/2-2_Material_compliance.py +++ b/examples/2_Compliance_Queries/2-2_Material_compliance.py @@ -51,12 +51,12 @@ svhc = indicators.WatchListIndicator( name="SVHC", - legislation_names=["EU REACH - The Candidate List"], + legislation_ids=["Candidate_AnnexXV"], default_threshold_percentage=0.1, ) sin = indicators.WatchListIndicator( name="SIN", - legislation_names=["The SIN List 2.1 (Substitute It Now!)"] + legislation_ids=["SINList"] ) # - diff --git a/examples/2_Compliance_Queries/2-3_Part_compliance.py b/examples/2_Compliance_Queries/2-3_Part_compliance.py index cd60b23a..88732534 100644 --- a/examples/2_Compliance_Queries/2-3_Part_compliance.py +++ b/examples/2_Compliance_Queries/2-3_Part_compliance.py @@ -51,12 +51,12 @@ svhc = indicators.WatchListIndicator( name="SVHC", - legislation_names=["EU REACH - The Candidate List"], + legislation_ids=["Candidate_AnnexXV"], default_threshold_percentage=0.1, ) sin = indicators.WatchListIndicator( name="SIN", - legislation_names=["The SIN List 2.1 (Substitute It Now!)"] + legislation_ids=["SINList"] ) # - diff --git a/examples/3_Advanced_Topics/3-1_Working_with_XML_BoMs.py b/examples/3_Advanced_Topics/3-1_Working_with_XML_BoMs.py index d5aaf633..34ae6900 100644 --- a/examples/3_Advanced_Topics/3-1_Working_with_XML_BoMs.py +++ b/examples/3_Advanced_Topics/3-1_Working_with_XML_BoMs.py @@ -128,7 +128,7 @@ def xml_validator(xml: str, schema_file: str) -> bool: svhc = indicators.WatchListIndicator( name="SVHC", - legislation_names=["EU REACH - The Candidate List"], + legislation_ids=["Candidate_AnnexXV"], default_threshold_percentage=0.1, ) compliance_query = ( diff --git a/examples/3_Advanced_Topics/3-2_Dealing_with_external_data_sources.py b/examples/3_Advanced_Topics/3-2_Dealing_with_external_data_sources.py index 3cc39003..25387eb2 100644 --- a/examples/3_Advanced_Topics/3-2_Dealing_with_external_data_sources.py +++ b/examples/3_Advanced_Topics/3-2_Dealing_with_external_data_sources.py @@ -78,7 +78,7 @@ cxn = Connection(server_url).with_credentials("user_name", "password").connect() svhc = indicators.WatchListIndicator( name="SVHC", - legislation_names=["EU REACH - The Candidate List"], + legislation_ids=["Candidate_AnnexXV"], default_threshold_percentage=0.1, ) mat_query = ( diff --git a/examples/3_Advanced_Topics/3-4_Writing_compliance_results_to_a_dataframe.py b/examples/3_Advanced_Topics/3-4_Writing_compliance_results_to_a_dataframe.py index 0ac36d13..e35a503a 100644 --- a/examples/3_Advanced_Topics/3-4_Writing_compliance_results_to_a_dataframe.py +++ b/examples/3_Advanced_Topics/3-4_Writing_compliance_results_to_a_dataframe.py @@ -33,7 +33,7 @@ cxn = Connection(server_url).with_credentials("user_name", "password").connect() svhc = indicators.WatchListIndicator( name="SVHC", - legislation_names=["EU REACH - The Candidate List"], + legislation_ids=["Candidate_AnnexXV"], default_threshold_percentage=0.1, ) part_query = ( diff --git a/poetry.lock b/poetry.lock index 7a355f0d..47809b2c 100644 --- a/poetry.lock +++ b/poetry.lock @@ -27,10 +27,10 @@ files = [ [[package]] name = "ansys-grantami-bomanalytics-openapi" -version = "1.1.0" +version = "1.1.0.dev20" description = "Autogenerated client library for the Granta MI BoM Analytics Services." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [] develop = false @@ -40,13 +40,13 @@ python-dateutil = ">=2.8.2" requests = ">=2.26.0" [package.extras] -test = ["pytest (==7.4.0)", "requests-mock (==1.11.0)"] +test = ["pytest (==7.4.1)", "requests-mock (==1.11.0)"] [package.source] type = "git" url = "https://github.com/ansys/grantami-bomanalytics-openapi-private.git" -reference = "release/1.1" -resolved_reference = "e6de1a1f446de1744576f923cd47d0fe0e39b3c4" +reference = "HEAD" +resolved_reference = "79a7be69f5f8ce29e552481dbc421501b2100b57" subdirectory = "ansys-grantami-bomanalytics-openapi" [[package]] @@ -3454,4 +3454,4 @@ examples = ["jupyterlab", "lxml", "pandas", "tabulate"] [metadata] lock-version = "2.0" python-versions = "^3.8.0" -content-hash = "a8dbc5445f266d64b679ea86854f3b6187d05e873440378d8dc22b70bde7bb10" +content-hash = "9b9de963ae528aa9fd3ea802867d4dab9b28f9b17988da90d2b66e1a8d9b5f68" diff --git a/pyproject.toml b/pyproject.toml index a323306d..f74cacd5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,7 +40,7 @@ python = "^3.8.0" # Packages for core library ansys-openapi-common = "< 2.0.0" -ansys-grantami-bomanalytics-openapi = { git = 'https://github.com/ansys/grantami-bomanalytics-openapi-private.git', subdirectory = 'ansys-grantami-bomanalytics-openapi', branch = "release/1.1"} +ansys-grantami-bomanalytics-openapi = { git = 'https://github.com/ansys/grantami-bomanalytics-openapi-private.git', subdirectory = 'ansys-grantami-bomanalytics-openapi' } # Packages for the examples extra jupyterlab = { version = ">=3,<5", optional = true } diff --git a/src/ansys/grantami/bomanalytics/indicators.py b/src/ansys/grantami/bomanalytics/indicators.py index 2fec8a29..f73db88d 100644 --- a/src/ansys/grantami/bomanalytics/indicators.py +++ b/src/ansys/grantami/bomanalytics/indicators.py @@ -228,11 +228,11 @@ class _Indicator(ABC): def __init__( self, name: str, - legislation_names: List[str], + legislation_ids: List[str], default_threshold_percentage: Union[float, None] = None, ): self.name = name - self.legislation_names = legislation_names + self.legislation_ids = legislation_ids self.default_threshold_percentage = default_threshold_percentage self._indicator_type: Optional[str] = None self._flag: Optional[_Flag] = None @@ -370,9 +370,17 @@ class RoHSIndicator(_Indicator): ---------- name : str Name of the indicator that is to identify the indicator in the query result. - legislation_names : list[str] + legislation_ids : list[str] + .. versionadded:: 2.0 + Legislations against which compliance will be determined. Legislations are identified based - on their ``Short title`` attribute value. + on their ``Legislation ID`` attribute value. + + .. important:: + This argument replaces ``legislation_names``, which has been removed in version **2.0**. + + When updating scripts from version **1.x**, replace the ``legislation_names`` argument with the + ``legislation_ids`` argument and ensure the value provided is a list of ``Legislation ID`` attribute values. default_threshold_percentage : float, optional Concentration of substance that is to be determined to be non-compliant. The default is ``None``. This parameter is only used if the legislation doesn't define a specific threshold for the substance. @@ -403,7 +411,7 @@ class RoHSIndicator(_Indicator): Examples -------- >>> indicator = RoHSIndicator(name='RoHS substances', - ... legislation_names=["EU Directive 2011/65/EU (RoHS 2)"], + ... legislation_ids=["RoHS"], ... default_threshold_percentage=0.1, ... ignore_exemptions=True) >>> indicator @@ -424,11 +432,11 @@ class RoHSIndicator(_Indicator): def __init__( self, name: str, - legislation_names: List[str], + legislation_ids: List[str], default_threshold_percentage: Optional[float] = None, ignore_exemptions: bool = False, ) -> None: - super().__init__(name, legislation_names, default_threshold_percentage) + super().__init__(name, legislation_ids, default_threshold_percentage) self._ignore_exemptions: bool = ignore_exemptions self._indicator_type: str = "Rohs" self._flag: Optional[RoHSFlag] = None @@ -438,7 +446,7 @@ def _definition(self) -> models.CommonIndicatorDefinition: """Generate the low-level API indicator object.""" return models.CommonIndicatorDefinition( name=self.name, - legislation_names=self.legislation_names, + legislation_ids=self.legislation_ids, default_threshold_percentage=self.default_threshold_percentage, type=self._indicator_type, ignore_exemptions=self._ignore_exemptions, @@ -456,9 +464,17 @@ class WatchListIndicator(_Indicator): ---------- name : str Name of the indicator that is used to identify the indicator in the query result. - legislation_names : list[str] - Legislations against which compliance is to be determined. Legislations are identified based - on their ``Short title`` attribute value. + legislation_ids : list[str] + .. versionadded:: 2.0 + + Legislations against which compliance will be determined. Legislations are identified based + on their ``Legislation ID`` attribute value. + + .. important:: + This argument replaces ``legislation_names``, which has been removed in version **2.0**. + + When updating scripts from version **1.x**, replace the ``legislation_names`` argument with the + ``legislation_ids`` argument and ensure the value provided is a list of ``Legislation ID`` attribute values. default_threshold_percentage : float, optional Percentage of substance concentration that is to be determined to be non-compliant. The default is ``None``. This parameter is only used if the legislation doesn't define a specific threshold for the substance. @@ -489,7 +505,7 @@ class WatchListIndicator(_Indicator): Examples -------- >>> indicator = RoHSIndicator(name='Tracked substances', - ... legislation_names=["The SIN List 2.1 (Substitute It Now!)"], + ... legislation_ids=["SINList"], ... default_threshold_percentage=0.1, ... ignore_process_chemicals=True) >>> indicator @@ -511,11 +527,11 @@ class WatchListIndicator(_Indicator): def __init__( self, name: str, - legislation_names: List[str], + legislation_ids: List[str], default_threshold_percentage: Optional[float] = None, ignore_process_chemicals: bool = False, ) -> None: - super().__init__(name, legislation_names, default_threshold_percentage) + super().__init__(name, legislation_ids, default_threshold_percentage) self._ignore_process_chemicals: bool = ignore_process_chemicals self._indicator_type: str = "WatchList" self._flag: Optional[WatchListFlag] = None @@ -525,7 +541,7 @@ def _definition(self) -> models.CommonIndicatorDefinition: """Generate the low-level API indicator object.""" return models.CommonIndicatorDefinition( name=self.name, - legislation_names=self.legislation_names, + legislation_ids=self.legislation_ids, default_threshold_percentage=self.default_threshold_percentage, type=self._indicator_type, ignore_process_chemicals=self._ignore_process_chemicals, diff --git a/src/ansys/grantami/bomanalytics/queries.py b/src/ansys/grantami/bomanalytics/queries.py index f95fff20..56d31fde 100644 --- a/src/ansys/grantami/bomanalytics/queries.py +++ b/src/ansys/grantami/bomanalytics/queries.py @@ -509,7 +509,7 @@ def __init__(self) -> None: """Type of object to send to the Granta MI server. The actual value is set in the concrete class definition.""" - def _call_api(self, api_method: Callable[[models.ModelBase], models.ModelBase], arguments: Dict) -> None: + def _call_api(self, api_method: Callable[..., models.ModelBase], arguments: Dict) -> None: """Perform the actual call against the Granta MI database. This method finalizes the arguments by appending each batch of ``'item'`` arguments to the passed-in @@ -530,7 +530,7 @@ def _call_api(self, api_method: Callable[[models.ModelBase], models.ModelBase], for batch in self._data.batched_arguments: # type: ignore[attr-defined] args = {**arguments, **batch} request = self._request_type(**args) - response = api_method(request) + response = api_method(body=request) self._data.append_response(response) # type: ignore[attr-defined] @abstractmethod @@ -599,7 +599,7 @@ def with_indicators( -------- >>> indicator = WatchListIndicator( ... name="Prop 65", - ... legislation_names=["California Proposition 65 List"] + ... legislation_ids=["Prop65"] ... ) >>> MaterialComplianceQuery().with_indicators([indicator]) @@ -838,7 +838,7 @@ class MaterialComplianceQuery(_ComplianceMixin, _MaterialQueryBuilder): >>> cxn = Connection("http://my_mi_server/mi_servicelayer").with_autologon().connect() >>> indicator = WatchListIndicator( ... name="Prop 65", - ... legislation_names=["California Proposition 65 List"] + ... legislation_ids=["Prop65"] ... ) >>> query = ( ... MaterialComplianceQuery() @@ -943,7 +943,7 @@ class PartComplianceQuery(_ComplianceMixin, _PartQueryBuilder): >>> cxn = Connection("http://my_mi_server/mi_servicelayer").with_autologon().connect() >>> indicator = WatchListIndicator( ... name="Prop 65", - ... legislation_names=["California Proposition 65 List"] + ... legislation_ids=["Prop65"] ... ) >>> query = ( ... PartComplianceQuery() @@ -1053,7 +1053,7 @@ class SpecificationComplianceQuery(_ComplianceMixin, _SpecificationQueryBuilder) >>> cxn = Connection("http://my_mi_server/mi_servicelayer").with_autologon().connect() >>> indicator = WatchListIndicator( ... name="Prop 65", - ... legislation_names=["California Proposition 65 List"] + ... legislation_ids=["Prop65"] ... ) >>> query = ( ... SpecificationComplianceQuery() @@ -1461,7 +1461,7 @@ class SubstanceComplianceQuery(_ComplianceMixin, _SubstanceQueryBuilder): >>> cxn = Connection("http://my_mi_server/mi_servicelayer").with_autologon().connect() >>> indicator = WatchListIndicator( ... name="Prop 65", - ... legislation_names=["California Proposition 65 List"] + ... legislation_ids=["Prop65"] ... ) >>> query = ( ... SubstanceComplianceQuery() @@ -1606,7 +1606,7 @@ class BomComplianceQuery(_ComplianceMixin, _Bom1711QueryBuilder): >>> bom = ">> indicator = WatchListIndicator( ... name="Prop 65", - ... legislation_names=["California Proposition 65 List"] + ... legislation_ids=["Prop65"] ... ) >>> query = ( ... BomComplianceQuery() diff --git a/tests/common.py b/tests/common.py index fa635a0c..21286e3b 100644 --- a/tests/common.py +++ b/tests/common.py @@ -4,12 +4,12 @@ two_legislation_indicator = indicators.WatchListIndicator( name="Two legislations", - legislation_names=["GADSL", "California Proposition 65 List"], + legislation_ids=["GADSL", "Prop65"], default_threshold_percentage=2, ) one_legislation_indicator = indicators.RoHSIndicator( name="One legislation", - legislation_names=["EU Directive 2011/65/EU (RoHS 2)"], + legislation_ids=["RoHS"], default_threshold_percentage=0.01, ) diff --git a/tests/test_bom_indicators.py b/tests/test_bom_indicators.py index f5a17d53..bb0081ce 100644 --- a/tests/test_bom_indicators.py +++ b/tests/test_bom_indicators.py @@ -15,7 +15,7 @@ def create_watchlist_indicator(ignore_process_chemicals) -> indicators.WatchList def create_indicator(indicator, **kwargs) -> indicators._Indicator: return indicator( name="TestIndicator", - legislation_names=["Test legislation 1, Test legislation 2"], + legislation_ids=["Test legislation 1, Test legislation 2"], default_threshold_percentage=5, **kwargs, ) @@ -106,7 +106,7 @@ class TestRohsIndicator: def test_indicator_definition(self): assert self.test_indicator.name == "TestIndicator" - assert self.test_indicator.legislation_names == ["Test legislation 1, Test legislation 2"] + assert self.test_indicator.legislation_ids == ["Test legislation 1, Test legislation 2"] assert self.test_indicator.default_threshold_percentage == 5 assert self.test_indicator._indicator_type == "Rohs" assert self.test_indicator._ignore_exemptions is True @@ -118,7 +118,7 @@ def test_indicator_definition_property(self): assert isinstance(definition, CommonIndicatorDefinition) def_dict = definition.to_dict() assert def_dict["name"] == self.test_indicator.name - assert def_dict["legislation_names"] == self.test_indicator.legislation_names + assert def_dict["legislation_ids"] == self.test_indicator.legislation_ids assert def_dict["default_threshold_percentage"] == self.test_indicator.default_threshold_percentage assert def_dict["type"] == self.test_indicator._indicator_type assert def_dict["ignore_exemptions"] == self.test_indicator._ignore_exemptions @@ -130,7 +130,7 @@ class TestWatchListIndicator: def test_indicator_definition(self): assert self.test_indicator.name == "TestIndicator" - assert self.test_indicator.legislation_names == ["Test legislation 1, Test legislation 2"] + assert self.test_indicator.legislation_ids == ["Test legislation 1, Test legislation 2"] assert self.test_indicator.default_threshold_percentage == 5 assert self.test_indicator._indicator_type == "WatchList" assert self.test_indicator._ignore_process_chemicals is True @@ -142,7 +142,7 @@ def test_indicator_definition_property(self): assert isinstance(definition, CommonIndicatorDefinition) def_dict = definition.to_dict() assert def_dict["name"] == self.test_indicator.name - assert def_dict["legislation_names"] == self.test_indicator.legislation_names + assert def_dict["legislation_ids"] == self.test_indicator.legislation_ids assert def_dict["default_threshold_percentage"] == self.test_indicator.default_threshold_percentage assert def_dict["type"] == self.test_indicator._indicator_type assert def_dict["ignore_exemptions"] is None diff --git a/tests/test_mocked_responses/common.py b/tests/test_mocked_responses/common.py index 070b7c92..1314d267 100644 --- a/tests/test_mocked_responses/common.py +++ b/tests/test_mocked_responses/common.py @@ -56,7 +56,7 @@ def _check_indicator(name: str, indicator: indicators._Indicator, result: indica if name not in ["Indicator 1", "Indicator 2"]: return False - if indicator.legislation_names != ["Mock"]: + if indicator.legislation_ids != ["Mock"]: return False return indicator.flag == result diff --git a/tests/test_mocked_responses/test_bom.py b/tests/test_mocked_responses/test_bom.py index 3465be98..741314bb 100644 --- a/tests/test_mocked_responses/test_bom.py +++ b/tests/test_mocked_responses/test_bom.py @@ -54,8 +54,8 @@ class TestCompliance(BaseMockTester): query = queries.BomComplianceQuery().with_indicators( [ - indicators.WatchListIndicator(name="Indicator 1", legislation_names=["Mock"]), - indicators.RoHSIndicator(name="Indicator 2", legislation_names=["Mock"]), + indicators.WatchListIndicator(name="Indicator 1", legislation_ids=["Mock"]), + indicators.RoHSIndicator(name="Indicator 2", legislation_ids=["Mock"]), ] ) mock_key = GetComplianceForBom1711Response.__name__ diff --git a/tests/test_mocked_responses/test_materials.py b/tests/test_mocked_responses/test_materials.py index 778ea331..70943966 100644 --- a/tests/test_mocked_responses/test_materials.py +++ b/tests/test_mocked_responses/test_materials.py @@ -86,8 +86,8 @@ class TestCompliance(BaseMockTester): queries.MaterialComplianceQuery() .with_indicators( [ - indicators.WatchListIndicator(name="Indicator 1", legislation_names=["Mock"]), - indicators.RoHSIndicator(name="Indicator 2", legislation_names=["Mock"]), + indicators.WatchListIndicator(name="Indicator 1", legislation_ids=["Mock"]), + indicators.RoHSIndicator(name="Indicator 2", legislation_ids=["Mock"]), ] ) .with_material_ids(["Fake ID"]) diff --git a/tests/test_mocked_responses/test_parts.py b/tests/test_mocked_responses/test_parts.py index 586177bf..d710c19f 100644 --- a/tests/test_mocked_responses/test_parts.py +++ b/tests/test_mocked_responses/test_parts.py @@ -107,8 +107,8 @@ class TestCompliance(BaseMockTester): queries.PartComplianceQuery() .with_indicators( [ - indicators.WatchListIndicator(name="Indicator 1", legislation_names=["Mock"]), - indicators.RoHSIndicator(name="Indicator 2", legislation_names=["Mock"]), + indicators.WatchListIndicator(name="Indicator 1", legislation_ids=["Mock"]), + indicators.RoHSIndicator(name="Indicator 2", legislation_ids=["Mock"]), ] ) .with_part_numbers(["Fake part number"]) diff --git a/tests/test_mocked_responses/test_specifications.py b/tests/test_mocked_responses/test_specifications.py index 05829234..862f6d5e 100644 --- a/tests/test_mocked_responses/test_specifications.py +++ b/tests/test_mocked_responses/test_specifications.py @@ -110,8 +110,8 @@ class TestCompliance(BaseMockTester): queries.SpecificationComplianceQuery() .with_indicators( [ - indicators.WatchListIndicator(name="Indicator 1", legislation_names=["Mock"]), - indicators.RoHSIndicator(name="Indicator 2", legislation_names=["Mock"]), + indicators.WatchListIndicator(name="Indicator 1", legislation_ids=["Mock"]), + indicators.RoHSIndicator(name="Indicator 2", legislation_ids=["Mock"]), ] ) .with_specification_ids(["Fake ID"]) diff --git a/tests/test_mocked_responses/test_substances.py b/tests/test_mocked_responses/test_substances.py index 460241db..1417ec42 100644 --- a/tests/test_mocked_responses/test_substances.py +++ b/tests/test_mocked_responses/test_substances.py @@ -14,8 +14,8 @@ class TestCompliance(BaseMockTester): queries.SubstanceComplianceQuery() .with_indicators( [ - indicators.WatchListIndicator(name="Indicator 1", legislation_names=["Mock"]), - indicators.RoHSIndicator(name="Indicator 2", legislation_names=["Mock"]), + indicators.WatchListIndicator(name="Indicator 1", legislation_ids=["Mock"]), + indicators.RoHSIndicator(name="Indicator 2", legislation_ids=["Mock"]), ] ) .with_cas_numbers(["Fake ID"]) From e5bf83d1417b3714aaf97fea1b14fba5f733fa7c Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Mon, 11 Sep 2023 10:19:48 +0200 Subject: [PATCH 014/275] Add sustainability queries --- .../grantami/bomanalytics/_query_results.py | 25 ++++++ src/ansys/grantami/bomanalytics/queries.py | 80 +++++++++++++++++-- tests/inputs/__init__.py | 4 + tests/inputs/bom-2301.xml | 48 +++++++++++ tests/test_integration_tests.py | 14 +++- 5 files changed, 164 insertions(+), 7 deletions(-) create mode 100644 tests/inputs/bom-2301.xml diff --git a/src/ansys/grantami/bomanalytics/_query_results.py b/src/ansys/grantami/bomanalytics/_query_results.py index 05fa707a..6ebb61b2 100644 --- a/src/ansys/grantami/bomanalytics/_query_results.py +++ b/src/ansys/grantami/bomanalytics/_query_results.py @@ -19,6 +19,7 @@ SpecificationWithComplianceResult, SubstanceWithComplianceResult, ImpactedSubstance, + PartWithSustainabilityResult, ) from .indicators import WatchListIndicator, RoHSIndicator @@ -773,3 +774,27 @@ def compliance_by_part_and_indicator(self) -> List["PartWithComplianceResult"]: """ return self._results + + +@QueryResultFactory.register(models.GetSustainabilityForBom2301Response) +class BomSustainabilityQueryResult(ResultBaseClass): + def __init__( + self, + results: List[models.GetSustainabilityForBom2301Response], + messages: List[LogMessage], + ) -> None: + super().__init__(messages) + self._response = results[0] + self._parts = self._process_response(self._response) + + +@QueryResultFactory.register(models.GetSustainabilitySummaryForBom2301Response) +class BomSustainabilitySummaryQueryResult(ResultBaseClass): + def __init__( + self, + results: List[models.GetSustainabilitySummaryForBom2301Response], + messages: List[LogMessage], + ) -> None: + super().__init__(messages) + self._response = results[0] + # TODO diff --git a/src/ansys/grantami/bomanalytics/queries.py b/src/ansys/grantami/bomanalytics/queries.py index 56d31fde..2db84772 100644 --- a/src/ansys/grantami/bomanalytics/queries.py +++ b/src/ansys/grantami/bomanalytics/queries.py @@ -20,6 +20,7 @@ from typing import ( Union, List, + Literal, Dict, Tuple, TypeVar, @@ -536,7 +537,7 @@ def _call_api(self, api_method: Callable[..., models.ModelBase], arguments: Dict @abstractmethod def _run_query( self, - api_instance: Union[api.ComplianceApi, api.ImpactedSubstancesApi], + api_instance: Union[api.ComplianceApi, api.ImpactedSubstancesApi, api.SustainabilityApi], static_arguments: Dict, ) -> Query_Result: pass @@ -1486,9 +1487,9 @@ class _BomQueryDataManager(_BaseQueryDataManager): single string because only one BoM can be sent to the server in a single query. """ - def __init__(self) -> None: + def __init__(self, item_type_name: Union[Literal["bom_xml1711"], Literal["bom_xml2301"]]) -> None: super().__init__() - self.item_type_name = "bom_xml1711" + self.item_type_name = item_type_name self._item_definitions = [""] self._item_results = [] @@ -1522,7 +1523,7 @@ def batched_arguments(self) -> List[Dict[str, str]]: Examples -------- - >>> bom_item = _BomQueryDataManager(bom = ">> bom_item = _BomQueryDataManager(bom = ">> bom_item.batched_arguments {"bom_xml1711": " List[mod return [response] -class _Bom1711QueryBuilder(_BaseQueryBuilder, ABC): +class _BomQueryBuilder(_BaseQueryBuilder, ABC): """Sub-class for all queries where the items added to the query are Boms.""" + bom_version: Union[Literal["bom_xml1711"], Literal["bom_xml2301"]] + def __init__(self) -> None: - self._data = _BomQueryDataManager() + self._data = _BomQueryDataManager(self.bom_version) @validate_argument_type(str) def with_bom(self: Query_Builder, bom: str) -> Query_Builder: @@ -1586,6 +1589,14 @@ def with_bom(self: Query_Builder, bom: str) -> Query_Builder: return self +class _Bom1711QueryBuilder(_BomQueryBuilder): + bom_version = "bom_xml1711" + + +class _Bom2301QueryBuilder(_BomQueryBuilder, ): + bom_version = "bom_xml2301" + + class BomComplianceQuery(_ComplianceMixin, _Bom1711QueryBuilder): """Evaluates compliance for a BoM in the Ansys Granta 1711 XML BoM format against a number of indicators. @@ -1690,3 +1701,60 @@ def _run_query(api_instance: api.DocumentationApi, **kwargs: Dict) -> str: result: str = api_instance.get_yaml() return result + + +class _SustainabilityMixin(_ApiMixin): + api_class = api.SustainabilityApi + + def __init_subclass__(cls, api_method: str, request_type: Type, **kwargs): + cls._api_method: str = api_method + cls._request_type = request_type + super().__init_subclass__(**kwargs) + + def with_units(self, some_unit_object): + # TODO + pass + + def _run_query( + self, + api_instance: api.SustainabilityApi, + static_arguments: Dict + ) -> Query_Result: + """Something""" + api_method = getattr(api_instance, self._api_method) + arguments = { + **static_arguments, + } + + # indicators_text = ", ".join(self._indicators) + # logger.debug(f"Indicators: {indicators_text}") + + self._call_api(api_method, arguments) + result: Query_Result = QueryResultFactory.create_result( + results=self._data.item_results, # type: ignore[attr-defined] + messages=self._data.messages, # type: ignore[attr-defined] + # indicator_definitions=self._indicators, + ) + return result + + def _validate_parameters(self) -> None: + # TODO Check units? + pass + + +class BomSustainabilityQuery( + _SustainabilityMixin, + _Bom2301QueryBuilder, + api_method="post_sustainability_bom2301", + request_type=models.GetSustainabilityForBom2301Request, +): + pass + + +class BomSustainabilitySummaryQuery( + _SustainabilityMixin, + _Bom2301QueryBuilder, + api_method="post_sustainabilitysummary_bom2301", + request_type=models.GetSustainabilitySummaryForBom2301Request, +): + pass diff --git a/tests/inputs/__init__.py b/tests/inputs/__init__.py index 61833881..2d137ef4 100644 --- a/tests/inputs/__init__.py +++ b/tests/inputs/__init__.py @@ -10,3 +10,7 @@ sample_bom_complex = f.read() sample_bom_custom_db = sample_bom_complex.replace("MI_Restricted_Substances", "MI_Restricted_Substances_Custom_Tables") + +_bom_2301_path = pathlib.Path(__file__).parent / "bom-2301.xml" +with open(_bom_2301_path, "r") as f: + sample_bom_2301 = f.read() diff --git a/tests/inputs/bom-2301.xml b/tests/inputs/bom-2301.xml new file mode 100644 index 00000000..9f374578 --- /dev/null +++ b/tests/inputs/bom-2301.xml @@ -0,0 +1,48 @@ + + + + + 1 + PartOne + PartOne + 1686152405220|5 + + + 1 + 2 + PartTwo + PartTwo + 1686152405220|16 + + + 2 + + MI_Restricted_Substances + 8dc38bb5-eff9-4c60-9233-271a3c8f6270 + + steel-kovar-annealed + High alloy steel, Kovar, annealed + 1686152405220|14 + + + + MI_Restricted_Substances + d986c90a-2835-45f3-8b69-d6d662dcf53a + + Coarse Machining + Coarse Machining + 1977190729730|4 + MassRemoved + 0.05 + + + + + + + + + + Example + + \ No newline at end of file diff --git a/tests/test_integration_tests.py b/tests/test_integration_tests.py index 5dc08618..6a819aea 100644 --- a/tests/test_integration_tests.py +++ b/tests/test_integration_tests.py @@ -1,5 +1,5 @@ import pytest -from .inputs import sample_bom_complex, sample_bom_custom_db +from .inputs import sample_bom_complex, sample_bom_custom_db, sample_bom_2301 from ansys.grantami.bomanalytics import queries, GrantaMIException from .common import LEGISLATIONS, INDICATORS, CUSTOM_TABLES @@ -203,3 +203,15 @@ def test_legislation_is_not_affected_with_no_links(self, connection): ) response = connection.run(query) assert len(response.impacted_substances) == 0 + + +class TestSustainabilityBomQueries: + def test_sustainability_summary_query(self, default_connection): + query = queries.BomSustainabilitySummaryQuery() + query.with_bom(sample_bom_2301) + response = default_connection.run(query) + + def test_sustainability_query(self, default_connection): + query = queries.BomSustainabilityQuery() + query.with_bom(sample_bom_2301) + response = default_connection.run(query) From b0c28263f51d548f695fe4f98e9ecdfe9fe7c8d4 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Mon, 11 Sep 2023 14:58:30 +0200 Subject: [PATCH 015/275] Add support for BoM sustainability query --- .../bomanalytics/_item_definitions.py | 24 + .../grantami/bomanalytics/_item_results.py | 852 +++++++++++++++++- .../grantami/bomanalytics/_query_results.py | 18 +- 3 files changed, 890 insertions(+), 4 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/_item_definitions.py b/src/ansys/grantami/bomanalytics/_item_definitions.py index 9598ab86..ed8eea83 100644 --- a/src/ansys/grantami/bomanalytics/_item_definitions.py +++ b/src/ansys/grantami/bomanalytics/_item_definitions.py @@ -399,6 +399,30 @@ def __init__( ) +class ProcessReference(RecordReference, ABC): + def __init__( + self, + reference_type: ReferenceType, + reference_value: Union[int, str, None], + ): + super().__init__( + reference_type=reference_type, + reference_value=reference_value, + ) + + +class TransportReference(RecordReference, ABC): + def __init__( + self, + reference_type: ReferenceType, + reference_value: Union[int, str, None], + ): + super().__init__( + reference_type=reference_type, + reference_value=reference_value, + ) + + class BoM1711Definition: """Represents a BoM that is supplied as part of a BoM query. diff --git a/src/ansys/grantami/bomanalytics/_item_results.py b/src/ansys/grantami/bomanalytics/_item_results.py index e0bab39a..3f8a7828 100644 --- a/src/ansys/grantami/bomanalytics/_item_results.py +++ b/src/ansys/grantami/bomanalytics/_item_results.py @@ -24,6 +24,8 @@ BaseSubstanceReference, ReferenceType, CoatingReference, + ProcessReference, + TransportReference, ) from .indicators import WatchListIndicator, RoHSIndicator @@ -257,6 +259,216 @@ def create_compliance_result( ) return item_result + @classmethod + def create_part_with_sustainability( + cls, + result_with_sustainability: models.CommonSustainabilityPartWithSustainability, + ) -> "PartWithSustainabilityResult": + """Returns a Part with sustainability metrics and child items. + + Parameters + ---------- + result_with_sustainability: models.CommonSustainabilityPartWithSustainability + Result from the REST API describing the sustainability for this particular part. + + Returns + ------- + PartWithSustainabilityResult + """ + + reference_type = cls.parse_reference_type(result_with_sustainability.reference_type) + part_with_sustainability = PartWithSustainabilityResult( + reference_type=reference_type, + reference_value=result_with_sustainability.reference_value, + embodied_energy=cls.create_unitted_value(result_with_sustainability.embodied_energy), + climate_change=cls.create_unitted_value(result_with_sustainability.climate_change), + reported_mass=cls.create_unitted_value(result_with_sustainability.reported_mass), + ) + part_with_sustainability._add_child_parts(result_with_sustainability.parts) + part_with_sustainability._add_child_materials(result_with_sustainability.materials) + part_with_sustainability._add_child_processes(result_with_sustainability.processes) + part_with_sustainability._add_child_specifications(result_with_sustainability.specifications) + part_with_sustainability._add_child_substances(result_with_sustainability.substances) + return part_with_sustainability + + @classmethod + def create_process_with_sustainability( + cls, + result_with_sustainability: models.CommonSustainabilityProcessWithSustainability, + ) -> "ProcessWithSustainabilityResult": + """Returns a Process with sustainability metrics. + + Parameters + ---------- + result_with_sustainability: models.CommonSustainabilityProcessWithSustainability + Result from the REST API describing the sustainability for this particular process. + + Returns + ------- + ProcessWithSustainabilityResult + """ + + reference_type = cls.parse_reference_type(result_with_sustainability.reference_type) + process_with_sustainability = ProcessWithSustainabilityResult( + reference_type=reference_type, + reference_value=result_with_sustainability.reference_value, + embodied_energy=cls.create_unitted_value(result_with_sustainability.embodied_energy), + climate_change=cls.create_unitted_value(result_with_sustainability.climate_change), + ) + return process_with_sustainability + + @classmethod + def create_material_with_sustainability( + cls, + result_with_sustainability: models.CommonSustainabilityMaterialWithSustainability, + ) -> "MaterialWithSustainabilityResult": + """Returns a Material with sustainability metrics and child items. + + Parameters + ---------- + result_with_sustainability: models.CommonSustainabilityMaterialWithSustainability + Result from the REST API describing the sustainability for this particular material. + + Returns + ------- + MaterialWithSustainabilityResult + """ + + reference_type = cls.parse_reference_type(result_with_sustainability.reference_type) + material_with_sustainability = MaterialWithSustainabilityResult( + reference_type=reference_type, + reference_value=result_with_sustainability.reference_value, + embodied_energy=cls.create_unitted_value(result_with_sustainability.embodied_energy), + climate_change=cls.create_unitted_value(result_with_sustainability.climate_change), + reported_mass=cls.create_unitted_value(result_with_sustainability.reported_mass), + recyclable=result_with_sustainability.recyclable, + biodegradable=result_with_sustainability.biodegradable, + downcycle=result_with_sustainability.downcycle, + ) + material_with_sustainability._add_child_processes(result_with_sustainability.processes) + material_with_sustainability._add_child_substances(result_with_sustainability.substances) + return material_with_sustainability + + @classmethod + def create_specification_with_sustainability( + cls, + result_with_sustainability: models.CommonSustainabilitySpecificationWithSustainability, + ) -> "SpecificationWithSustainabilityResult": + """Returns a Specification with sustainability metrics and child items. + + Parameters + ---------- + result_with_sustainability: models.CommonSustainabilitySpecificationWithSustainability + Result from the REST API describing the sustainability for this particular specification. + + Returns + ------- + SpecificationWithSustainabilityResult + """ + + reference_type = cls.parse_reference_type(result_with_sustainability.reference_type) + specification_with_sustainability = SpecificationWithSustainabilityResult( + reference_type=reference_type, + reference_value=result_with_sustainability.reference_value, + embodied_energy=cls.create_unitted_value(result_with_sustainability.embodied_energy), + climate_change=cls.create_unitted_value(result_with_sustainability.climate_change), + reported_mass=cls.create_unitted_value(result_with_sustainability.reported_mass), + ) + specification_with_sustainability._add_child_specifications(result_with_sustainability.specifications) + specification_with_sustainability._add_child_materials(result_with_sustainability.materials) + specification_with_sustainability._add_child_substances(result_with_sustainability.substances) + specification_with_sustainability._add_child_coatings(result_with_sustainability.coatings) + return specification_with_sustainability + + @classmethod + def create_substance_result( + cls, + result: models.CommonSubstanceReference, + ) -> "SubstanceResult": + """Returns a Substance. + + Parameters + ---------- + result: models.CommonSubstanceReference + Result from the REST API describing this particular substance. + + Returns + ------- + SubstanceResult + """ + + reference_type = cls.parse_reference_type(result.reference_type) + substance = SubstanceResult( + reference_type=reference_type, + reference_value=result.reference_value, + ) + return substance + + @classmethod + def create_coating_result( + cls, + result: models.CommonCoatingReference, + ) -> "CoatingResult": + """Returns a Coating. + + Parameters + ---------- + result: models.CommonCoatingReference + Result from the REST API describing this particular coating. + + Returns + ------- + CoatingResult + """ + + reference_type = cls.parse_reference_type(result.reference_type) + coating = CoatingResult( + reference_type=reference_type, + reference_value=result.reference_value, + ) + return coating + + @classmethod + def create_transport_with_sustainability( + cls, + result_with_sustainability: models.CommonSustainabilityTransportWithSustainability, + ) -> "TransportWithSustainabilityResult": + """Returns a Transport with sustainability metrics. + + Parameters + ---------- + result_with_sustainability: models.CommonSustainabilityTransportWithSustainability + Result from the REST API describing the sustainability for this particular transport stage. + + Returns + ------- + TransportWithSustainabilityResult + """ + + reference_type = cls.parse_reference_type(result_with_sustainability.reference_type) + transport_with_sustainability = TransportWithSustainabilityResult( + reference_type=reference_type, + reference_value=result_with_sustainability.reference_value, + embodied_energy=cls.create_unitted_value(result_with_sustainability.embodied_energy), + climate_change=cls.create_unitted_value(result_with_sustainability.climate_change), + ) + return transport_with_sustainability + + @classmethod + def create_unitted_value(cls, result: models.GrantaBomAnalyticsServicesImplementationCommonValueWithUnit): + """Returns a value with unit. + + Parameters + ---------- + result: models.GrantaBomAnalyticsServicesImplementationCommonValueWithUnit + Result from the REST API describing the value and unit. + + Returns + ------- + UnittedValue + """ + return UnittedValue(value=result.value, unit=result.unit) + @staticmethod def parse_reference_type(reference_type: str) -> ReferenceType: """Parse the ``reference_type`` returned by the low-level API into a ``ReferenceType``. @@ -706,7 +918,7 @@ class ChildSubstanceWithComplianceMixin(child_base_class): Parameters ---------- child_substances - Materials returned by the low-level API that are children of this item. + Substances returned by the low-level API that are children of this item. **kwargs Contains other result objects depending on the parent item. It contains record references for ``RecordDefinition``-based objects. @@ -750,7 +962,7 @@ def _add_child_substances(self, child_substances: List[models.CommonSubstanceWit class ChildMaterialWithComplianceMixin(child_base_class): - """Adds a ``material`` attribute to an ``ItemWithComplianceResult`` class and populates it with child materials. + """Adds a ``materials`` attribute to an ``ItemWithComplianceResult`` class and populates it with child materials. See the ``ComplianceResultMixin`` notes for more background on compliance query results and BoM structures. @@ -1154,7 +1366,7 @@ class SpecificationWithComplianceResult( @ItemResultFactory.register("CoatingWithCompliance") class CoatingWithComplianceResult(ChildSubstanceWithComplianceMixin, ComplianceResultMixin, CoatingReference): - """Provides An individual coating included as part of a compliance query result. + """Provides an individual coating included as part of a compliance query result. This object includes three categories of attributes: @@ -1176,3 +1388,637 @@ class CoatingWithComplianceResult(ChildSubstanceWithComplianceMixin, ComplianceR Objects of this class are only returned as the result of a query. The class is not intended to be instantiated directly. """ + + +# TODO name +class UnittedValue: + def __init__( + self, + value: float, + unit: str, + ) -> None: + self.value = value + self.unit = unit + + +class SustainabilityResultMixin: + """Adds results from a sustainability query to a class. + + A Bom-sustainability query returns a BoM-like results, with additional sustainability information attached to each + level of the BoM. + This mixin implements only the sustainability metrics and applies to most items in the BoM. + + Parameters + ---------- + embodied_energy: + Represents the direct and indirect energy use. Based on cumulative energy demand method developed by ecoinvent. + climate_change: + Estimates global warming potential considering emissions of different gases reported as carbon dioxide + equivalents (CO2-eq.). Based on Intergovernmental Panel on Climate Change (IPCC) method. + **kwargs + Contains arguments handled by other mixins or base classes, e.g. ``reference_type`` and ``reference_value`` + for ``RecordDefinition``-based objects. + """ + def __init__( + self, + embodied_energy: UnittedValue, + climate_change: UnittedValue, + **kwargs: Any, + ) -> None: + super().__init__(**kwargs) + self.embodied_energy = embodied_energy + self.climate_change = climate_change + + +class MassResultMixin: + """Adds results from a sustainability query to a class. + + A Bom-sustainability query returns a BoM-like results, with additional sustainability information attached to each + level of the BoM. + This mixin implements only mass calculation results. + + Parameters + ---------- + reported_mass: + Indicates a mass value that is calculated by the analysis and displayed in the analyzed BoM and Product + Compliance report, that represents the total mass for the quantity of the item specified in the BoM, taking + into account the quantities of parent assemblies. For example, for a part in the BoM, the Reported mass is for + the number of parts specified in the Quantity column, multiplied by the Quantity of its parent assembly, and + similarly by the Quantity of each of its ancestors in the BoM hierarchy. + **kwargs + Contains arguments handled by other mixins or base classes, e.g. ``reference_type`` and ``reference_value`` + for ``RecordDefinition``-based objects. + """ + def __init__( + self, + reported_mass: UnittedValue, + **kwargs: Any, + ) -> None: + super().__init__(**kwargs) + self.reported_mass = reported_mass + + +class ReusabilityResultMixin: + """Adds results from a sustainability query to a class. + + A Bom-sustainability query returns a BoM-like results, with additional sustainability information attached to each + level of the BoM. + This mixin implements only re-usability results, and are only relevant for Materials. + + Parameters + ---------- + recyclable: + Indicates whether a material can be recycled, regardless of the recyclates quality. + biodegradable + Indicates whether a material is biodegradable. Includes any waste that is capable of undergoing anaerobic or + aerobic decomposition. + downcycle: + Indicates whether a material can be recycled into material of an equivalent quality, that can be used for the + same (or similar) applications. + **kwargs + Contains arguments handled by other mixins or base classes, e.g. ``reference_type`` and ``reference_value`` + for ``RecordDefinition``-based objects. + """ + def __init__( + self, + recyclable: bool, + biodegradable: bool, + downcycle: bool, # TODO will change, see CR-1341 -> "Functional recycle" + **kwargs: Any, + ) -> None: + super().__init__(**kwargs) + self.recyclable: bool = recyclable + self.biodegradable: bool = biodegradable + self.downcycle: bool = downcycle + + +class ChildMaterialWithSustainabilityMixin: + """Provides the implementation for managing children materials, by adding a ``materials`` property to the class. + + Parameters + ---------- + child_materials + Materials returned by the low-level API that are children of this item. + **kwargs + Contains arguments handled by other mixins or base classes. + """ + + def __init__(self, **kwargs: Any) -> None: + super().__init__(**kwargs) + self._materials: List[MaterialWithSustainabilityResult] = [] + + @property + def materials(self) -> List["MaterialWithSustainabilityResult"]: + """Material with sustainability result objects that are direct children of this item in the BoM. + """ + + return self._materials + + def _add_child_materials( + self, + child_materials: List[models.CommonSustainabilityMaterialWithSustainability], + ) -> None: + """Populates the ``materials`` attribute based on a list of low-level API materials with sustainability + results. + + Parameters + ---------- + child_materials + List of materials with sustainability returned from the low-level API. + """ + + for child_material in child_materials: + child_material_with_sustainability = ItemResultFactory.create_material_with_sustainability( + result_with_sustainability=child_material, + ) + self._materials.append(child_material_with_sustainability) + + +class ChildPartWithSustainabilityMixin: + """Provides the implementation for managing children parts, by adding a ``parts`` property to the class. + + Parameters + ---------- + child_parts + Parts returned by the low-level API that are children of this item. + **kwargs + Contains arguments handled by other mixins or base classes. + """ + + def __init__(self, **kwargs: Any) -> None: + super().__init__(**kwargs) + self._parts: List[PartWithSustainabilityResult] = [] + + @property + def parts(self) -> List["PartWithSustainabilityResult"]: + """Part with sustainability result objects that are direct children of this item in the BoM. + """ + + return self._parts + + def _add_child_parts( + self, + child_parts: List[models.CommonSustainabilityPartWithSustainability], + ) -> None: + """Populate the ``parts`` attribute based on a list of low-level API parts with sustainability + results. + + Parameters + ---------- + child_parts + List of parts with sustainability returned from the low-level API + """ + + for child_part in child_parts: + child_part_with_sustainability = ItemResultFactory.create_part_with_sustainability( + result_with_sustainability=child_part, + ) + self._parts.append(child_part_with_sustainability) + + +class ChildSpecificationWithSustainabilityMixin: + """Provides the implementation for managing children specifications, by adding a ``specifications`` property to the + class. + + Parameters + ---------- + child_specifications + Specifications returned by the low-level API that are children of this item. + **kwargs + Contains arguments handled by other mixins or base classes. + """ + + def __init__(self, **kwargs: Any) -> None: + super().__init__(**kwargs) + self._specifications: List[SpecificationWithSustainabilityResult] = [] + + @property + def specifications(self) -> List["SpecificationWithSustainabilityResult"]: + """Specification with sustainability result objects that are direct children of this item in the BoM. + """ + + return self._specifications + + def _add_child_specifications( + self, + child_specifications: List[models.CommonSustainabilitySpecificationWithSustainability], + ) -> None: + """Populate the ``specifications`` attribute based on a list of low-level API specifications with + compliance results. + + Parameters + ---------- + child_specifications + List of specifications with sustainability returned from the low-level API + """ + + for child_specification in child_specifications: + child_specification_with_sustainability = ItemResultFactory.create_specification_with_sustainability( + result_with_sustainability=child_specification, + ) + self._specifications.append(child_specification_with_sustainability) + + +class ChildSubstanceMixin: + """Provides the implementation for managing children substances, by adding a ``substances`` property to the + class. + + Parameters + ---------- + child_substances + Substances returned by the low-level API that are children of this item. + **kwargs + Contains arguments handled by other mixins or base classes. + """ + + def __init__(self, **kwargs: Any) -> None: + super().__init__(**kwargs) + self._substances: List[SubstanceResult] = [] + + @property + def substances(self) -> List["SubstanceResult"]: + """Substance objects that are direct children of this item in the BoM. + """ + + return self._substances + + def _add_child_substances(self, child_substances: List[models.CommonSubstanceReference]) -> None: + """Populate the ``substances`` attribute based on a list of low-level API substances results. + + Parameters + ---------- + child_substances + List of substances returned from the low-level API. + """ + + for child_substance in child_substances: + child_substance_result = ItemResultFactory.create_substance_result( + result=child_substance, + ) + self._substances.append(child_substance_result) + + +class ChildCoatingMixin: + """Provides the implementation for managing children coatings, by adding a ``coatings`` property to the class. + + Parameters + ---------- + child_coatings + Coatings returned by the low-level API that are children of this item. + **kwargs + Contains arguments handled by other mixins or base classes. + """ + + def __init__(self, **kwargs: Any) -> None: + super().__init__(**kwargs) + self._coatings: List[CoatingResult] = [] + + @property + def coatings(self) -> List["CoatingResult"]: + """Coating objects that are direct children of this item in the BoM.""" + + return self._coatings + + def _add_child_coatings(self, child_coatings: List[models.CommonCoatingReference]) -> None: + """Populate the ``coatings`` attribute based on a list of low-level API coatings results. + + Parameters + ---------- + child_coatings + List of coatings returned from the low-level API. + """ + + for child_coating in child_coatings: + child_coating_result = ItemResultFactory.create_coating_result( + result=child_coating, + ) + self._coatings.append(child_coating_result) + + +class ChildProcessWithSustainabilityMixin: + """Provides the implementation for managing children processes, by adding a ``processes`` property to the class. + + Parameters + ---------- + child_processes + Materials returned by the low-level API that are children of this item. + **kwargs + Contains arguments handled by other mixins or base classes. + """ + + def __init__(self, **kwargs: Any) -> None: + super().__init__(**kwargs) + self._processes: List[ProcessWithSustainabilityResult] = [] + + @property + def processes(self) -> List["ProcessWithSustainabilityResult"]: + """Process with sustainability result objects that are direct children of this item in the BoM.""" + + return self._processes + + def _add_child_processes(self, child_processes: List[models.CommonSustainabilityProcessWithSustainability]) -> None: + """Populate the ``processes`` attribute based on a list of low-level API processes with sustainability + results. + + Parameters + ---------- + child_processes + List of processes with sustainability returned from the low-level API. + """ + + for child_process in child_processes: + child_process_result = ItemResultFactory.create_process_with_sustainability( + result_with_sustainability=child_process, + ) + self._processes.append(child_process_result) + + +class MaterialWithSustainabilityResult( + ChildProcessWithSustainabilityMixin, + ChildSubstanceMixin, + SustainabilityResultMixin, + ReusabilityResultMixin, + MassResultMixin, + MaterialDefinition +): + """Describes an individual material included as part of a sustainability query result. + This object includes three categories of attributes: + + - The reference to the material in Granta MI + - The sustainability information for this material + - Any process or substance objects that are a child of this material object + + Attributes + ---------- + record_history_identity : int, optional + Record history identity. + material_id : str, optional + Material ID. + record_history_guid : str, optional + Record history GUID. + record_guid : str, optional + Record GUID. + + embodied_energy : :class:`~ansys.grantami.bomanalytics._item_results.UnittedValue` + Represents the direct and indirect energy use. Based on cumulative energy demand method developed by ecoinvent. + climate_change: :class:`~ansys.grantami.bomanalytics._item_results.UnittedValue` + Estimates global warming potential considering emissions of different gases reported as carbon dioxide + equivalents (CO2-eq.). Based on Intergovernmental Panel on Climate Change (IPCC) method. + recyclable : bool + Indicates whether a material can be recycled, regardless of the recyclates quality. + biodegradable : bool + Indicates whether a material is biodegradable. Includes any waste that is capable of undergoing anaerobic or + aerobic decomposition. + downcycle : bool + Indicates whether a material can be recycled into material of an equivalent quality, that can be used for the + same (or similar) applications. + reported_mass : :class:`~ansys.grantami.bomanalytics._item_results.UnittedValue` + Indicates a mass value that is calculated by the analysis and displayed in the analyzed BoM and Product + Compliance report, that represents the total mass for the quantity of the item specified in the BoM, taking + into account the quantities of parent assemblies. For example, for a part in the BoM, the Reported mass is for + the number of parts specified in the Quantity column, multiplied by the Quantity of its parent assembly, and + similarly by the Quantity of each of its ancestors in the BoM hierarchy. + + processes : list[:class:`~ansys.grantami.bomanalytics._item_results.ProcessWithSustainabilityResult`] + List of processes. + substances : list[:class:`~ansys.grantami.bomanalytics._item_results.SubstanceResult`] + List of substances. + + Notes + ----- + With the exception of the ``record_history_identity`` parameter, record reference parameters are only populated if + they are specified in the original query. As a result, if this object is included as the child of another result + object, only the ``record_history_identity`` parameter is populated. + + Objects of this class are only returned as the result of a query. The class is not intended to be instantiated + directly. + """ + + +class PartWithSustainabilityResult( + ChildPartWithSustainabilityMixin, + ChildMaterialWithSustainabilityMixin, + ChildProcessWithSustainabilityMixin, + ChildSubstanceMixin, + ChildSpecificationWithSustainabilityMixin, + SustainabilityResultMixin, + MassResultMixin, + PartDefinition, +): + """Describes an individual part included as part of a sustainability query result. + This object includes three categories of attributes: + + - The reference to the part in Granta MI (if the part references a record) + - The sustainability information for this part + - Any part, material, process, substance, or specification objects which are a child of this part object + + Attributes + ---------- + record_history_identity : int, optional + Record history identity. + part_number : str, optional + Part number. + record_history_guid : str, optional + Record history GUID. + record_guid : str, optional + Record GUID. + + embodied_energy : :class:`~ansys.grantami.bomanalytics._item_results.UnittedValue` + Represents the direct and indirect energy use. Based on cumulative energy demand method developed by ecoinvent. + climate_change : :class:`~ansys.grantami.bomanalytics._item_results.UnittedValue` + Estimates global warming potential considering emissions of different gases reported as carbon dioxide + equivalents (CO2-eq.). Based on Intergovernmental Panel on Climate Change (IPCC) method. + reported_mass : :class:`~ansys.grantami.bomanalytics._item_results.UnittedValue` + Indicates a mass value that is calculated by the analysis and displayed in the analyzed BoM and Product + Compliance report, that represents the total mass for the quantity of the item specified in the BoM, taking + into account the quantities of parent assemblies. For example, for a part in the BoM, the Reported mass is for + the number of parts specified in the Quantity column, multiplied by the Quantity of its parent assembly, and + similarly by the Quantity of each of its ancestors in the BoM hierarchy. + + parts : list[:class:`~ansys.grantami.bomanalytics._item_results.PartWithSustainabilityResult`] + List of parts. + materials : list[:class:`~ansys.grantami.bomanalytics._item_results.MaterialWithSustainabilityResult`] + List of materials. + processes : list[:class:`~ansys.grantami.bomanalytics._item_results.ProcessWithSustainabilityResult`] + List of processes. + substances : list[:class:`~ansys.grantami.bomanalytics._item_results.SubstanceResult`] + List of substances. + specifications : list[:class:`~ansys.grantami.bomanalytics._item_results.SpecificationWithSustainabilityResult`] + List of specifications. + + Notes + ----- + With the exception of the ``record_history_identity`` parameter, record reference attributes are only populated if + they are specified in the original query. As a result, if this object is included as the child of another result + object, only the ``record_history_identity`` parameter is populated. + + Objects of this class are only returned as the result of a query. The class is not intended to be instantiated + directly. + """ + + +class SpecificationWithSustainabilityResult( + ChildSpecificationWithSustainabilityMixin, + ChildMaterialWithSustainabilityMixin, + ChildSubstanceMixin, + ChildCoatingWithComplianceMixin, + SustainabilityResultMixin, + MassResultMixin, + SpecificationDefinition, +): + """Describes an individual specification included as part of a sustainability query result. + This object includes three categories of attributes: + + - The reference to the part in Granta MI (if the part references a record) + - The sustainability information for this specification + - Any specification, material, substance, or coating objects which are a child of this part object + + Attributes + ---------- + record_history_identity : int, optional + Record history identity. + specification_id : str, optional + Specification ID. + record_history_guid : str, optional + Record history GUID. + record_guid : str, optional + Record GUID. + + embodied_energy : :class:`~ansys.grantami.bomanalytics._item_results.UnittedValue` + Represents the direct and indirect energy use. Based on cumulative energy demand method developed by ecoinvent. + climate_change: :class:`~ansys.grantami.bomanalytics._item_results.UnittedValue` + Estimates global warming potential considering emissions of different gases reported as carbon dioxide + equivalents (CO2-eq.). Based on Intergovernmental Panel on Climate Change (IPCC) method. + reported_mass : :class:`~ansys.grantami.bomanalytics._item_results.UnittedValue` + Indicates a mass value that is calculated by the analysis and displayed in the analyzed BoM and Product + Compliance report, that represents the total mass for the quantity of the item specified in the BoM, taking + into account the quantities of parent assemblies. For example, for a part in the BoM, the Reported mass is for + the number of parts specified in the Quantity column, multiplied by the Quantity of its parent assembly, and + similarly by the Quantity of each of its ancestors in the BoM hierarchy. + + specifications : list[:class:`~ansys.grantami.bomanalytics._item_results.SpecificationWithSustainabilityResult`] + List of specifications. + materials : list[:class:`~ansys.grantami.bomanalytics._item_results.MaterialWithSustainabilityResult`] + List of materials. + substances : list[:class:`~ansys.grantami.bomanalytics._item_results.SubstanceResult`] + List of substances. + coatings : list[:class:`~ansys.grantami.bomanalytics._item_results.CoatingResult`] + List of coatings. + + Notes + ----- + With the exception of the ``record_history_identity`` parameter, record reference attributes are only populated if + they are specified in the original query. As a result, if this object is included as the child of another result + object, only the ``record_history_identity`` parameter is populated. + + Objects of this class are only returned as the result of a query. The class is not intended to be instantiated + directly. + """ + + +class SubstanceResult(BaseSubstanceReference): + """Describes an individual specification included as part of a sustainability query result. + This object includes only includes the reference to the part in Granta MI (if the substance references a record) + + Attributes + ---------- + record_history_identity : int, optional + Record history identify. + cas_number : str, optional + CAS number. + ec_number : str, optional + EC number. + chemical_name : str, optional + Chemical name. + record_history_guid : str, optional + Record history GUID. + record_guid : str, optional + Record GUID. + + Notes + ----- + Record reference parameters are only populated if they are specified in the original query. + + Objects of this class are only returned as the result of a query. The class is not intended to be instantiated + directly. + """ + + +class CoatingResult(CoatingReference): + """Provides an individual coating included as part of a sustainability query result. + + This object includes only includes the reference to the coating in Granta MI + + + Attributes + ---------- + record_history_identity : int, optional + Default reference type for items returned as children of the queried item. + + Notes + ----- + Objects of this class are only returned as the result of a query. The class is not intended to be instantiated + directly. + """ + + +class ProcessWithSustainabilityResult( + SustainabilityResultMixin, + ProcessReference, +): + """Describes a process included as part of a sustainability query result. + This object includes two categories of attributes: + + - The reference to the part in Granta MI (if the process references a record) + - The sustainability information for this process + + + Attributes + ---------- + record_history_identity : int, optional + Default reference type for items returned as children of the queried item. + + embodied_energy : :class:`~ansys.grantami.bomanalytics._item_results.UnittedValue` + Represents the direct and indirect energy use. Based on cumulative energy demand method developed by ecoinvent. + climate_change: :class:`~ansys.grantami.bomanalytics._item_results.UnittedValue` + Estimates global warming potential considering emissions of different gases reported as carbon dioxide + equivalents (CO2-eq.). Based on Intergovernmental Panel on Climate Change (IPCC) method. + + Notes + ----- + Record reference parameters are only populated if they are specified in the original query. + + Objects of this class are only returned as the result of a query. The class is not intended to be instantiated + directly. + """ + + +class TransportWithSustainabilityResult( + SustainabilityResultMixin, + TransportReference, +): + """Describes a transport stage included as part of a sustainability query result. + This object includes two categories of attributes: + + - The reference to the transport in Granta MI (if the part references a record) + - The sustainability information for this transport stage + + + Attributes + ---------- + record_history_identity : int, optional + Default reference type for items returned as children of the queried item. + + embodied_energy : :class:`~ansys.grantami.bomanalytics._item_results.UnittedValue` + Represents the direct and indirect energy use. Based on cumulative energy demand method developed by ecoinvent. + climate_change: :class:`~ansys.grantami.bomanalytics._item_results.UnittedValue` + Estimates global warming potential considering emissions of different gases reported as carbon dioxide + equivalents (CO2-eq.). Based on Intergovernmental Panel on Climate Change (IPCC) method. + + Notes + ----- + Record reference parameters are only populated if they are specified in the original query. + + Objects of this class are only returned as the result of a query. The class is not intended to be instantiated + directly. + """ diff --git a/src/ansys/grantami/bomanalytics/_query_results.py b/src/ansys/grantami/bomanalytics/_query_results.py index 6ebb61b2..d22b511e 100644 --- a/src/ansys/grantami/bomanalytics/_query_results.py +++ b/src/ansys/grantami/bomanalytics/_query_results.py @@ -20,6 +20,7 @@ SubstanceWithComplianceResult, ImpactedSubstance, PartWithSustainabilityResult, + TransportWithSustainabilityResult, ) from .indicators import WatchListIndicator, RoHSIndicator @@ -785,7 +786,22 @@ def __init__( ) -> None: super().__init__(messages) self._response = results[0] - self._parts = self._process_response(self._response) + self._parts: List[PartWithSustainabilityResult] = [ + ItemResultFactory.create_part_with_sustainability(result_with_sustainability=part) + for part in self._response.parts + ] + self._transports: List[TransportWithSustainabilityResult] = [ + ItemResultFactory.create_transport_with_sustainability(result_with_sustainability=transport) + for transport in self._response.transport_stages + ] + + @property + def parts(self) -> List[PartWithSustainabilityResult]: + return self._parts + + @property + def transport_stages(self) -> List[TransportWithSustainabilityResult]: + return self._transports @QueryResultFactory.register(models.GetSustainabilitySummaryForBom2301Response) From f4d15305b7318bef7ca6c520085b55906c679d13 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Mon, 11 Sep 2023 17:00:24 +0200 Subject: [PATCH 016/275] Documentation --- ...ialsEco.xsd => BillOfMaterialsEco1711.xsd} | 0 .../xml_schemas/BillOfMaterialsEco2301.xsd | 740 ++++++++++++++++++ doc/source/api/index.rst | 3 + doc/source/api/sustainability/bom.rst | 62 ++ doc/source/api/sustainability/bom_summary.rst | 20 + doc/source/api/sustainability/index.rst | 13 + .../grantami/bomanalytics/_connection.py | 6 + .../grantami/bomanalytics/_item_results.py | 94 ++- .../grantami/bomanalytics/_query_results.py | 33 + src/ansys/grantami/bomanalytics/queries.py | 90 ++- 10 files changed, 1008 insertions(+), 53 deletions(-) rename doc/source/_static/xml_schemas/{BillOfMaterialsEco.xsd => BillOfMaterialsEco1711.xsd} (100%) create mode 100644 doc/source/_static/xml_schemas/BillOfMaterialsEco2301.xsd create mode 100644 doc/source/api/sustainability/bom.rst create mode 100644 doc/source/api/sustainability/bom_summary.rst create mode 100644 doc/source/api/sustainability/index.rst diff --git a/doc/source/_static/xml_schemas/BillOfMaterialsEco.xsd b/doc/source/_static/xml_schemas/BillOfMaterialsEco1711.xsd similarity index 100% rename from doc/source/_static/xml_schemas/BillOfMaterialsEco.xsd rename to doc/source/_static/xml_schemas/BillOfMaterialsEco1711.xsd diff --git a/doc/source/_static/xml_schemas/BillOfMaterialsEco2301.xsd b/doc/source/_static/xml_schemas/BillOfMaterialsEco2301.xsd new file mode 100644 index 00000000..4c72bde2 --- /dev/null +++ b/doc/source/_static/xml_schemas/BillOfMaterialsEco2301.xsd @@ -0,0 +1,740 @@ + + + + + + + + + Root node of an Eco Bill of Materials (BoM). + + + + + + Type for the root node of an Eco Bill of Materials (BoM). + + + + + + + + + + + + + The Transports to which the contained Parts are subject. + + + + + + The Use to which the contained Parts are subject. + + + + + + The Location in which the BoM is manufactured. + + + + + + This defines optional notes about the BoM. + + + + + + Optional annotations to the BoM. + + + + + + + Information about the sources of annotations to the BoM. Only useful when there are + some annotations. Even when annotations are present, it is optional whether to provide information about their sources. + + + + + + + + + + A single part which may or may not be stored in the MI Database. + + + + + + + The quantity of part(s) used in the parent part. + + For discrete parts, this will be the part count - an integer with a blank unit (or "Each"). + + For continuous parts, it will be a mass, length, area or volume - a decimal value with an appropriate units. + + + + + + + + The mass of the part, after processing, relative to the unit that Quantity is given in. + + If MassPerUom is specified and VolumePerUom is not, then specifying materials within this part is interpreted to be + percentage by mass. + + + + + + + + The volume of the part, after processing, relative to the unit that Quantity is given in. + + If VolumePerUom is specified and MassPerUom is not, then specifying materials within this part is interpreted to be + percentage by volume. + + + + + + + + A reference to a part stored in MI. + + + + + + A reference to a part stored in another system, for informational purposes only. + + + + + + + + + + + + The Part Number associated with this part. External applications may treat this analogously to Identity from the CommonIdentifiers group. + + + + + + See CommonIdentifiers group. + + + + + + See CommonIdentifiers group. + + + + + + + + + + + + + + + + + + + + Specify the fate(s) of the part, at end-of-life of the product. + + + + + + + + + + + The list of materials within a part or semi-finished part. Materials can also be part of a specification. + + + + + + + + + + A Material within a part or semi-finished part. The material is stored in the Database. + + + + + + + + + + + + + + The recycle content of Parts. That is, Mc/(Mc + Mv), where Mc is the mass of recycled material in Parts, and Mv is the mass of virgin material in Parts. If omitted then 0% is assumed. + + + + + + Indicates that the recycle content is to be obtained from the materials datasheet. + + + + + The actual content, as a percentage. + + + + + + + + Specify processes that are applied to the material. + + + + + Specify the fate(s) of the material, at end-of-life of the product. + + + + + + + + + + All the processes that are applied to a subassembly, part, semi-finished part or material. A process chain may also be part of a specification. + + + + + + + + + + A process that is applied to a subassembly, part, semi-finished part or material. The process is stored in the Database. + + + + + + + + + + + + + If the process affects the bulk of the material or part (e.g. it is a shaping process) then the amount of material affected by the process should be specifed. The amount may be specified as a percentage by weight or an absolute value. + + + + + Specifying the mass in this way allows one to specify processes that may have removed material (e.g. milling or turning). + + + + + + Some joining processes can have an associated area. + + + + + If the process is an edge joining process (e.g. welding) then the BOM must specify the length of material affected by the process. + + + + + Certain fastening processes are quantified by the number of fasteners (e.g. the number of hot rivets holding two plates together). + + + + + + + + + + + + The percentage of the material mass in this part affected by the process. Specifying a percentage may be useful in scenarios where we do not know the actual material mass + but we know that the process affects all the material. + + Percentage is only supported for dimension types "Mass" and "Mass removed". + + + + + + A quantification of the process according to its dimension type. + + + + + + + + + + + + + + + + + A substance within a part, semi-finished part, material or specification. The substance is stored in the Database. + + + + + + + + + + + + + + + + + + + + + + + + + + + + A quantification of the specification, if applicable. + + + + + + + + + + + + + + + + + + + + + Defines the transportation applied to a BoM node, in terms of the generic transportation type (stored in the Database) and the amount of that transport used in this instance. + + + + + + + + + + + + + + + + + + + All the the transportation applied to a BoM node. + + + + + + + + + + Explanatory information about a BoM. + + + + + + Add any notes about the bill of materials here. These notes will be included in the report. + + + + + The URL of an image to include at the top of the report. This URL must be accessible from the reporting services server. + + + + + The product name + + + + + + + + Defines the usage of Parts in the BoM. + + + + + + + + + + + + + + + The product lifetime in years. Must be strictly positive. + + + + + The number of functional units delivered, in the lifespan of the product described herein. If provided, must be strictly positive. + + + + + A very short (ideally one-word) description of a single functional unit. E.g. "trips", "cups", "cuts", "metres". + + + + + Indicates how much use can be obtained from the product described herein, compared to an industry-average example. If this element is absent, utility is assume to be unity. + + + + + + + + + + The average lifespan of all examples, throughout the industry, of the kind of product described herein. + + + + + The average number of functional units delivered, in their lifespan, by all examples, throughout the industry, of the kind of product described herein. Must be strictly positive. + + + + + Directly specifies the utility. + + + + + + + + + + This record specifies the primary energy conversion that occurs during the product's use. + + + + + + + + + + + + + + + + + If the product is transported as part of its use then this type contains details about the way in which it is transported. + + + + + We can specify the mode of transport here + + + + The mode of transport. + + + + + + + + + + If the product consumes electrical power, then the amount of CO2 produced to generate depends upon the mix of fossil fuel burning power stations in the region of use. This type lets you specify the electrical generation mix by either specifying the region or country of use or by specifying the percentage of power that comes from fossil fuel sources. + + + + + + This record reference will point to a record in some electricity mix table. + + + + + If a specific country is not specified, then the proportion of electricity generated by fossil fuels can be given instead. + + + + + + + + Defines the manufacturing location for the BoM for use in process calculations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A unique identity for this XML element in a document of this schema. This identity is + ONLY for internal use within the document, allowing other elements to reference this element. Consumers + of this document should not assume any other semantics for this identity. + + + + + + + + + A value corresponding to some InternalIdentification ID within this XML document, used + only to indicate a one-way link between XML elements. + + + + + + + + + + + + + + + + + + Base type for all BoM annotations, which are pieces of information that + can be indirectly attached, via XML attributes of ID and IDREF types, to specific XML elements within + the main body of the BoM. The understood annotation types must be agreed between the producer and consumer(s) + of the BoM. The producer and consumer(s) must also agree whether a particular type of annotation is allowed + to have multiple instances assigned to a single element, or whether only a single annotation + of that type per element is allowed. When a tool consumes and re-produces BoMs, it should generally retain + any annotations that it does not understand (of course, it can also decide whether to keep, modify or discard + those annotations that it does understand). + + + + + + The XML element identity of the exactly one element, in this BoM document, to which this annotation applies. No + further meaning should be applied to this identity. + + + + + + + If specified, this is the XML element identity of the exactly one element, in this BoM document, that + describes the source of this annotation. If no value is specified, it means that there is no information about the source + of this annotation. No further meaning should be applied to this identity, or to its absence. + + + + + + + A textual value that identifies the type of this annotation. It is suggested that types + should comprise camel-cased English strings, with optional use of period (.) as a separator. + + + + + + + + An annotation that is purely textual data. + + + + + + + + + + + + + + An annotation that gives the value of an indicator for the target. The understood indicators + need to be agreed between the producer and consumer(s) of the BoM, but examples might include embodied energy + of production or cost of raw materials. + + + + + + + + + + + + + + + + + + + + + An element indicating the source of annotations in the BoM. Each source may be + referenced by zero or more annotations. The producer and consumer(s) of the BoM must agree the + understood annotation source semantics, particularly regarding the untyped data therein. When a tool consumes and + re-produces BoMs, it should generally retain any annotation sources that it does not understand (of course, it + can also decide whether to keep, modify or discard those annotation sources that it does understand). + + + + + + + Producer and consumer(s) must agree the semantics of this element, but it is + suggested that it should identify the software package that generated the annotation. + + + + + + + Producer and consumer(s) must agree the semantics of this optional element, but it is + suggested that it should identify the calculation method used, for numeric annotations. + + + + + + Optional untyped data that some consumer(s) of the BoM will find useful in understanding the annotation. + + + + + + + + + + + + + + A set of identifiers used by external applications to reference and display parts of the BoM. + + + + + + A display identity for the item. + + + + + + A display name for the item. + + + + + + A temporary reference populated and used by applications to refer to the item within the BoM. + + + + + + diff --git a/doc/source/api/index.rst b/doc/source/api/index.rst index 7dfa0359..1a264235 100644 --- a/doc/source/api/index.rst +++ b/doc/source/api/index.rst @@ -16,6 +16,8 @@ The API for PyGranta BoM Analytics is split into these key sections: substances and interpret results. - :ref:`ref_grantami_bomanalytics_api_compliance_index` explains how to build specific queries for compliance and how to interpret results. +- :ref:`ref_grantami_bomanalytics_api_sustainability_index` explains how to build specific queries for sustainability + and how to interpret results. .. note:: While some examples use a different class than the one being documented, both classes are always @@ -28,3 +30,4 @@ The API for PyGranta BoM Analytics is split into these key sections: batching impacted_substances/index compliance/index + sustainability/index diff --git a/doc/source/api/sustainability/bom.rst b/doc/source/api/sustainability/bom.rst new file mode 100644 index 00000000..f49bf362 --- /dev/null +++ b/doc/source/api/sustainability/bom.rst @@ -0,0 +1,62 @@ +.. _ref_grantami_bomanalytics_api_sustainability_bom: + +BoM sustainability +================== + + +Query definition +~~~~~~~~~~~~~~~~ + +.. autoclass:: ansys.grantami.bomanalytics.queries.BomSustainabilityQuery + :members: + + .. automethod:: with_bom + +Query result +~~~~~~~~~~~~ + +.. autoclass:: ansys.grantami.bomanalytics._query_results.BomSustainabilityQueryResult + :members: + + +Part +~~~~ +.. autoclass:: ansys.grantami.bomanalytics._item_results.PartWithSustainabilityResult + +Transport +~~~~~~~~~ + +.. autoclass:: ansys.grantami.bomanalytics._item_results.TransportWithSustainabilityResult + +Material +~~~~~~~~ + +.. autoclass:: ansys.grantami.bomanalytics._item_results.MaterialWithSustainabilityResult + +Process +~~~~~~~ + +.. autoclass:: ansys.grantami.bomanalytics._item_results.ProcessWithSustainabilityResult + +Specification +~~~~~~~~~~~~~ + +.. autoclass:: ansys.grantami.bomanalytics._item_results.SpecificationWithSustainabilityResult + +Coating +~~~~~~~ + +.. autoclass:: ansys.grantami.bomanalytics._item_results.CoatingResult + +Substance +~~~~~~~~~ + +.. autoclass:: ansys.grantami.bomanalytics._item_results.SubstanceResult + + +Value with unit +~~~~~~~~~~~~~~~ + +.. autoclass:: ansys.grantami.bomanalytics._item_results.ValueWithUnit + :members: + diff --git a/doc/source/api/sustainability/bom_summary.rst b/doc/source/api/sustainability/bom_summary.rst new file mode 100644 index 00000000..214bdf42 --- /dev/null +++ b/doc/source/api/sustainability/bom_summary.rst @@ -0,0 +1,20 @@ +.. _ref_grantami_bomanalytics_api_sustainability_summary_bom: + +BoM sustainability summary +========================== + +Query definition +~~~~~~~~~~~~~~~~ + +.. autoclass:: ansys.grantami.bomanalytics.queries.BomSustainabilitySummaryQuery + :members: + + .. automethod:: with_bom + +Query result +~~~~~~~~~~~~ + +.. autoclass:: ansys.grantami.bomanalytics._query_results.BomSustainabilitySummaryQueryResult + :members: + + .. automethod:: with_bom diff --git a/doc/source/api/sustainability/index.rst b/doc/source/api/sustainability/index.rst new file mode 100644 index 00000000..42f16427 --- /dev/null +++ b/doc/source/api/sustainability/index.rst @@ -0,0 +1,13 @@ +.. _ref_grantami_bomanalytics_api_sustainability_index: + +Sustainability API +================== + + + +.. toctree:: + :maxdepth: 3 + + bom + bom_summary + diff --git a/src/ansys/grantami/bomanalytics/_connection.py b/src/ansys/grantami/bomanalytics/_connection.py index 31e38917..8b6debb3 100644 --- a/src/ansys/grantami/bomanalytics/_connection.py +++ b/src/ansys/grantami/bomanalytics/_connection.py @@ -56,6 +56,7 @@ SubstanceComplianceQuery, BomImpactedSubstancesQuery, BomComplianceQuery, + BomSustainabilityQuery, ) from ._query_results import ( MaterialImpactedSubstancesQueryResult, @@ -67,6 +68,7 @@ SubstanceComplianceQueryResult, BomImpactedSubstancesQueryResult, BomComplianceQueryResult, + BomSustainabilityQueryResult, ) @@ -376,6 +378,10 @@ def run(self, query: "Yaml") -> str: def run(self, query: Type["Yaml"]) -> str: ... + @overload + def run(self, query: "BomSustainabilityQuery") -> "BomSustainabilityQueryResult": + ... + def run(self, query): # type: ignore[no-untyped-def] """Run a query against the Granta MI database. diff --git a/src/ansys/grantami/bomanalytics/_item_results.py b/src/ansys/grantami/bomanalytics/_item_results.py index 3f8a7828..21124245 100644 --- a/src/ansys/grantami/bomanalytics/_item_results.py +++ b/src/ansys/grantami/bomanalytics/_item_results.py @@ -465,9 +465,9 @@ def create_unitted_value(cls, result: models.GrantaBomAnalyticsServicesImplement Returns ------- - UnittedValue + ValueWithUnit """ - return UnittedValue(value=result.value, unit=result.unit) + return ValueWithUnit(value=result.value, unit=result.unit) @staticmethod def parse_reference_type(reference_type: str) -> ReferenceType: @@ -1390,15 +1390,29 @@ class CoatingWithComplianceResult(ChildSubstanceWithComplianceMixin, ComplianceR """ -# TODO name -class UnittedValue: +class ValueWithUnit: + """Describes a value obtained from the API """ def __init__( self, value: float, unit: str, ) -> None: - self.value = value - self.unit = unit + self._value = value + self._unit = unit + + @property + def value(self) -> float: + """ + Real number. + """ + return self._value + + @property + def unit(self) -> str: + """ + Unit of the value. + """ + return self._unit class SustainabilityResultMixin: @@ -1421,8 +1435,8 @@ class SustainabilityResultMixin: """ def __init__( self, - embodied_energy: UnittedValue, - climate_change: UnittedValue, + embodied_energy: ValueWithUnit, + climate_change: ValueWithUnit, **kwargs: Any, ) -> None: super().__init__(**kwargs) @@ -1440,18 +1454,17 @@ class MassResultMixin: Parameters ---------- reported_mass: - Indicates a mass value that is calculated by the analysis and displayed in the analyzed BoM and Product - Compliance report, that represents the total mass for the quantity of the item specified in the BoM, taking - into account the quantities of parent assemblies. For example, for a part in the BoM, the Reported mass is for - the number of parts specified in the Quantity column, multiplied by the Quantity of its parent assembly, and - similarly by the Quantity of each of its ancestors in the BoM hierarchy. + Indicates a mass value that is calculated by the analysis, that represents the total mass for the quantity of + the item specified in the BoM, taking into account the quantities of parent assemblies. For example, for a part + in the BoM, the Reported mass is for the number of parts specified in the Quantity column, multiplied by the + Quantity of its parent assembly, and similarly by the Quantity of each of its ancestors in the BoM hierarchy. **kwargs Contains arguments handled by other mixins or base classes, e.g. ``reference_type`` and ``reference_value`` for ``RecordDefinition``-based objects. """ def __init__( self, - reported_mass: UnittedValue, + reported_mass: ValueWithUnit, **kwargs: Any, ) -> None: super().__init__(**kwargs) @@ -1759,9 +1772,9 @@ class MaterialWithSustainabilityResult( record_guid : str, optional Record GUID. - embodied_energy : :class:`~ansys.grantami.bomanalytics._item_results.UnittedValue` + embodied_energy : :class:`~ansys.grantami.bomanalytics._item_results.ValueWithUnit` Represents the direct and indirect energy use. Based on cumulative energy demand method developed by ecoinvent. - climate_change: :class:`~ansys.grantami.bomanalytics._item_results.UnittedValue` + climate_change: :class:`~ansys.grantami.bomanalytics._item_results.ValueWithUnit` Estimates global warming potential considering emissions of different gases reported as carbon dioxide equivalents (CO2-eq.). Based on Intergovernmental Panel on Climate Change (IPCC) method. recyclable : bool @@ -1772,12 +1785,11 @@ class MaterialWithSustainabilityResult( downcycle : bool Indicates whether a material can be recycled into material of an equivalent quality, that can be used for the same (or similar) applications. - reported_mass : :class:`~ansys.grantami.bomanalytics._item_results.UnittedValue` - Indicates a mass value that is calculated by the analysis and displayed in the analyzed BoM and Product - Compliance report, that represents the total mass for the quantity of the item specified in the BoM, taking - into account the quantities of parent assemblies. For example, for a part in the BoM, the Reported mass is for - the number of parts specified in the Quantity column, multiplied by the Quantity of its parent assembly, and - similarly by the Quantity of each of its ancestors in the BoM hierarchy. + reported_mass : :class:`~ansys.grantami.bomanalytics._item_results.ValueWithUnit` + Indicates a mass value that is calculated by the analysis, that represents the total mass for the quantity of + the item specified in the BoM, taking into account the quantities of parent assemblies. For example, for a part + in the BoM, the Reported mass is for the number of parts specified in the Quantity column, multiplied by the + Quantity of its parent assembly, and similarly by the Quantity of each of its ancestors in the BoM hierarchy. processes : list[:class:`~ansys.grantami.bomanalytics._item_results.ProcessWithSustainabilityResult`] List of processes. @@ -1823,17 +1835,16 @@ class PartWithSustainabilityResult( record_guid : str, optional Record GUID. - embodied_energy : :class:`~ansys.grantami.bomanalytics._item_results.UnittedValue` + embodied_energy : :class:`~ansys.grantami.bomanalytics._item_results.ValueWithUnit` Represents the direct and indirect energy use. Based on cumulative energy demand method developed by ecoinvent. - climate_change : :class:`~ansys.grantami.bomanalytics._item_results.UnittedValue` + climate_change : :class:`~ansys.grantami.bomanalytics._item_results.ValueWithUnit` Estimates global warming potential considering emissions of different gases reported as carbon dioxide equivalents (CO2-eq.). Based on Intergovernmental Panel on Climate Change (IPCC) method. - reported_mass : :class:`~ansys.grantami.bomanalytics._item_results.UnittedValue` - Indicates a mass value that is calculated by the analysis and displayed in the analyzed BoM and Product - Compliance report, that represents the total mass for the quantity of the item specified in the BoM, taking - into account the quantities of parent assemblies. For example, for a part in the BoM, the Reported mass is for - the number of parts specified in the Quantity column, multiplied by the Quantity of its parent assembly, and - similarly by the Quantity of each of its ancestors in the BoM hierarchy. + reported_mass : :class:`~ansys.grantami.bomanalytics._item_results.ValueWithUnit` + Indicates a mass value that is calculated by the analysis, that represents the total mass for the quantity of + the item specified in the BoM, taking into account the quantities of parent assemblies. For example, for a part + in the BoM, the Reported mass is for the number of parts specified in the Quantity column, multiplied by the + Quantity of its parent assembly, and similarly by the Quantity of each of its ancestors in the BoM hierarchy. parts : list[:class:`~ansys.grantami.bomanalytics._item_results.PartWithSustainabilityResult`] List of parts. @@ -1884,17 +1895,16 @@ class SpecificationWithSustainabilityResult( record_guid : str, optional Record GUID. - embodied_energy : :class:`~ansys.grantami.bomanalytics._item_results.UnittedValue` + embodied_energy : :class:`~ansys.grantami.bomanalytics._item_results.ValueWithUnit` Represents the direct and indirect energy use. Based on cumulative energy demand method developed by ecoinvent. - climate_change: :class:`~ansys.grantami.bomanalytics._item_results.UnittedValue` + climate_change : :class:`~ansys.grantami.bomanalytics._item_results.ValueWithUnit` Estimates global warming potential considering emissions of different gases reported as carbon dioxide equivalents (CO2-eq.). Based on Intergovernmental Panel on Climate Change (IPCC) method. - reported_mass : :class:`~ansys.grantami.bomanalytics._item_results.UnittedValue` - Indicates a mass value that is calculated by the analysis and displayed in the analyzed BoM and Product - Compliance report, that represents the total mass for the quantity of the item specified in the BoM, taking - into account the quantities of parent assemblies. For example, for a part in the BoM, the Reported mass is for - the number of parts specified in the Quantity column, multiplied by the Quantity of its parent assembly, and - similarly by the Quantity of each of its ancestors in the BoM hierarchy. + reported_mass : :class:`~ansys.grantami.bomanalytics._item_results.ValueWithUnit` + Indicates a mass value that is calculated by the analysis, that represents the total mass for the quantity of + the item specified in the BoM, taking into account the quantities of parent assemblies. For example, for a part + in the BoM, the Reported mass is for the number of parts specified in the Quantity column, multiplied by the + Quantity of its parent assembly, and similarly by the Quantity of each of its ancestors in the BoM hierarchy. specifications : list[:class:`~ansys.grantami.bomanalytics._item_results.SpecificationWithSustainabilityResult`] List of specifications. @@ -1978,9 +1988,9 @@ class ProcessWithSustainabilityResult( record_history_identity : int, optional Default reference type for items returned as children of the queried item. - embodied_energy : :class:`~ansys.grantami.bomanalytics._item_results.UnittedValue` + embodied_energy : :class:`~ansys.grantami.bomanalytics._item_results.ValueWithUnit` Represents the direct and indirect energy use. Based on cumulative energy demand method developed by ecoinvent. - climate_change: :class:`~ansys.grantami.bomanalytics._item_results.UnittedValue` + climate_change : :class:`~ansys.grantami.bomanalytics._item_results.ValueWithUnit` Estimates global warming potential considering emissions of different gases reported as carbon dioxide equivalents (CO2-eq.). Based on Intergovernmental Panel on Climate Change (IPCC) method. @@ -2009,9 +2019,9 @@ class TransportWithSustainabilityResult( record_history_identity : int, optional Default reference type for items returned as children of the queried item. - embodied_energy : :class:`~ansys.grantami.bomanalytics._item_results.UnittedValue` + embodied_energy : :class:`~ansys.grantami.bomanalytics._item_results.ValueWithUnit` Represents the direct and indirect energy use. Based on cumulative energy demand method developed by ecoinvent. - climate_change: :class:`~ansys.grantami.bomanalytics._item_results.UnittedValue` + climate_change : :class:`~ansys.grantami.bomanalytics._item_results.ValueWithUnit` Estimates global warming potential considering emissions of different gases reported as carbon dioxide equivalents (CO2-eq.). Based on Intergovernmental Panel on Climate Change (IPCC) method. diff --git a/src/ansys/grantami/bomanalytics/_query_results.py b/src/ansys/grantami/bomanalytics/_query_results.py index d22b511e..6bd400eb 100644 --- a/src/ansys/grantami/bomanalytics/_query_results.py +++ b/src/ansys/grantami/bomanalytics/_query_results.py @@ -779,6 +779,13 @@ def compliance_by_part_and_indicator(self) -> List["PartWithComplianceResult"]: @QueryResultFactory.register(models.GetSustainabilityForBom2301Response) class BomSustainabilityQueryResult(ResultBaseClass): + """Describes the result of running a :class:`~ansys.grantami.bomanalytics.queries.BomSustainabilityQuery`. + + Notes + ----- + Objects of this class are only returned as the result of a query. The class is not intended to be instantiated + directly. + """ def __init__( self, results: List[models.GetSustainabilityForBom2301Response], @@ -797,10 +804,36 @@ def __init__( @property def parts(self) -> List[PartWithSustainabilityResult]: + """Sustainability information for each root part included in the BoM specified in the original + query. + + Returns + ------- + list[:class:`~ansys.grantami.bomanalytics._item_results.PartWithSustainabilityResult`] + + Examples + -------- + >>> result: BomSustainabilityQueryResult + >>> result.parts + [] + """ return self._parts @property def transport_stages(self) -> List[TransportWithSustainabilityResult]: + """Sustainability information for each transport stage included in the BoM specified in the original + query. + + Returns + ------- + list[:class:`~ansys.grantami.bomanalytics._item_results.TransportWithSustainabilityResult`] + + Examples + -------- + >>> result: BomSustainabilityQueryResult + >>> result.transport_stages + [] + """ return self._transports diff --git a/src/ansys/grantami/bomanalytics/queries.py b/src/ansys/grantami/bomanalytics/queries.py index 2db84772..bf8894f8 100644 --- a/src/ansys/grantami/bomanalytics/queries.py +++ b/src/ansys/grantami/bomanalytics/queries.py @@ -1551,6 +1551,29 @@ class _BomQueryBuilder(_BaseQueryBuilder, ABC): def __init__(self) -> None: self._data = _BomQueryDataManager(self.bom_version) + @abstractmethod + def with_bom(self: Query_Builder, bom: str) -> Query_Builder: + """Set the BoM to use for the query. + + Abstract method must be implemented in sub-classes. + + Parameters + ---------- + bom : str + BoM to use for the query. + + Returns + ------- + Query + Current query object. + """ + + raise NotImplementedError + + +class _Bom1711QueryBuilder(_BomQueryBuilder): + bom_version = "bom_xml1711" + @validate_argument_type(str) def with_bom(self: Query_Builder, bom: str) -> Query_Builder: """Set the BoM to use for the query. @@ -1575,27 +1598,50 @@ def with_bom(self: Query_Builder, bom: str) -> Query_Builder: Notes ----- The XML schema is defined by the schema document - :download:`BillOfMaterialsEco.xsd `, which in turn references + :download:`BillOfMaterialsEco1711.xsd `, which in turn references :download:`grantarecord1205.xsd`. Together, these XSD files can be used to validate that the BoM is both valid XML and adheres to the Ansys Granta 1711 XML BoM schema. - - Examples - -------- - >>> my_bom = ">> query = BomComplianceQuery().with_bom(my_bom) """ self._data.bom = bom return self -class _Bom1711QueryBuilder(_BomQueryBuilder): - bom_version = "bom_xml1711" - - class _Bom2301QueryBuilder(_BomQueryBuilder, ): bom_version = "bom_xml2301" + @validate_argument_type(str) + def with_bom(self: Query_Builder, bom: str) -> Query_Builder: + """Set the BoM to use for the query. + + The BoM must be in the Ansys Granta 2301 XML BoM format. + + Parameters + ---------- + bom : str + BoM to use for the query. + + Returns + ------- + Query + Current query object. + + Raises + ------ + TypeError + Error to raise if the method is called with values that do not match the types described earlier. + + Notes + ----- + The XML schema is defined by the schema document + :download:`BillOfMaterialsEco2301.xsd `, which in turn references + :download:`grantarecord1205.xsd`. Together, these XSD files can be + used to validate that the BoM is both valid XML and adheres to the Ansys Granta 2301 XML BoM schema. + """ + + self._data.bom = bom + return self + class BomComplianceQuery(_ComplianceMixin, _Bom1711QueryBuilder): """Evaluates compliance for a BoM in the Ansys Granta 1711 XML BoM format against a number of @@ -1748,7 +1794,29 @@ class BomSustainabilityQuery( api_method="post_sustainability_bom2301", request_type=models.GetSustainabilityForBom2301Request, ): - pass + """Evaluates sustainability impact for a BoM in the Ansys Granta 2301 XML BoM format. + + All BoM-based queries only operate on a single BoM. As a result, the ``.with_batch_size()`` method is not + implemented for BoM-based queries. + + The methods used to configure units and add the BoM to this query return the query itself so that they can be + chained together as required. + + Once the query is fully constructed, use the `cxn.` + :meth:`~ansys.grantami.bomanalytics._connection.BomAnalyticsClient.run` method to return a result of type + :class:`~ansys.grantami.bomanalytics._query_results.BomSustainabilityQueryResult`. + + Examples + -------- + >>> cxn = Connection("http://my_mi_server/mi_servicelayer").with_autologon().connect() + >>> bom = ">> query = ( + ... BomSustainabilityQuery() + ... .with_bom(bom) + ... ) + >>> cxn.run(query) + + """ class BomSustainabilitySummaryQuery( From 0c48085443195bcacd1cf88f5700f1e2a0688b3b Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Mon, 11 Sep 2023 17:23:55 +0200 Subject: [PATCH 017/275] Add units parameter [skip ci] --- doc/source/api/sustainability/bom.rst | 1 + doc/source/api/sustainability/bom_summary.rst | 2 +- src/ansys/grantami/bomanalytics/queries.py | 33 ++++++++++++++----- tests/test_integration_tests.py | 1 + 4 files changed, 28 insertions(+), 9 deletions(-) diff --git a/doc/source/api/sustainability/bom.rst b/doc/source/api/sustainability/bom.rst index f49bf362..c7a2d93d 100644 --- a/doc/source/api/sustainability/bom.rst +++ b/doc/source/api/sustainability/bom.rst @@ -11,6 +11,7 @@ Query definition :members: .. automethod:: with_bom + .. automethod:: with_units Query result ~~~~~~~~~~~~ diff --git a/doc/source/api/sustainability/bom_summary.rst b/doc/source/api/sustainability/bom_summary.rst index 214bdf42..cca6519f 100644 --- a/doc/source/api/sustainability/bom_summary.rst +++ b/doc/source/api/sustainability/bom_summary.rst @@ -10,6 +10,7 @@ Query definition :members: .. automethod:: with_bom + .. automethod:: with_units Query result ~~~~~~~~~~~~ @@ -17,4 +18,3 @@ Query result .. autoclass:: ansys.grantami.bomanalytics._query_results.BomSustainabilitySummaryQueryResult :members: - .. automethod:: with_bom diff --git a/src/ansys/grantami/bomanalytics/queries.py b/src/ansys/grantami/bomanalytics/queries.py index bf8894f8..7fb8007f 100644 --- a/src/ansys/grantami/bomanalytics/queries.py +++ b/src/ansys/grantami/bomanalytics/queries.py @@ -1757,9 +1757,30 @@ def __init_subclass__(cls, api_method: str, request_type: Type, **kwargs): cls._request_type = request_type super().__init_subclass__(**kwargs) - def with_units(self, some_unit_object): - # TODO - pass + def __init__(self): + super().__init__() + self._preferred_units = models.CommonPreferredUnits() + + def with_units(self, distance: str = None, energy: str = None, mass: str = None): + """ + Specifies units to use in the response. + + Provided unit symbols must exist in the target database. + + Parameters + ---------- + distance : str + Unit symbol for distance. + energy : str + Unit symbol for energy. + mass : str + Unit symbol for mass. + + """ + self._preferred_units.distance_unit = distance + self._preferred_units.energy_unit = energy + self._preferred_units.mass_unit = mass + return self def _run_query( self, @@ -1770,21 +1791,17 @@ def _run_query( api_method = getattr(api_instance, self._api_method) arguments = { **static_arguments, + "preferred_units": self._preferred_units, } - # indicators_text = ", ".join(self._indicators) - # logger.debug(f"Indicators: {indicators_text}") - self._call_api(api_method, arguments) result: Query_Result = QueryResultFactory.create_result( results=self._data.item_results, # type: ignore[attr-defined] messages=self._data.messages, # type: ignore[attr-defined] - # indicator_definitions=self._indicators, ) return result def _validate_parameters(self) -> None: - # TODO Check units? pass diff --git a/tests/test_integration_tests.py b/tests/test_integration_tests.py index 6a819aea..bf3c2906 100644 --- a/tests/test_integration_tests.py +++ b/tests/test_integration_tests.py @@ -214,4 +214,5 @@ def test_sustainability_summary_query(self, default_connection): def test_sustainability_query(self, default_connection): query = queries.BomSustainabilityQuery() query.with_bom(sample_bom_2301) + query.with_units(mass="lb") response = default_connection.run(query) From f1547f63c0a81ac894c69ca5760484ab4ebf38b6 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Tue, 12 Sep 2023 10:07:04 +0200 Subject: [PATCH 018/275] Docstrings changes --- .../grantami/bomanalytics/_item_results.py | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/_item_results.py b/src/ansys/grantami/bomanalytics/_item_results.py index 21124245..5505438f 100644 --- a/src/ansys/grantami/bomanalytics/_item_results.py +++ b/src/ansys/grantami/bomanalytics/_item_results.py @@ -264,7 +264,7 @@ def create_part_with_sustainability( cls, result_with_sustainability: models.CommonSustainabilityPartWithSustainability, ) -> "PartWithSustainabilityResult": - """Returns a Part with sustainability metrics and child items. + """Returns a Part object with sustainability metrics and child items. Parameters ---------- @@ -296,7 +296,7 @@ def create_process_with_sustainability( cls, result_with_sustainability: models.CommonSustainabilityProcessWithSustainability, ) -> "ProcessWithSustainabilityResult": - """Returns a Process with sustainability metrics. + """Returns a Process object with sustainability metrics. Parameters ---------- @@ -322,7 +322,7 @@ def create_material_with_sustainability( cls, result_with_sustainability: models.CommonSustainabilityMaterialWithSustainability, ) -> "MaterialWithSustainabilityResult": - """Returns a Material with sustainability metrics and child items. + """Returns a Material object with sustainability metrics and child items. Parameters ---------- @@ -354,7 +354,7 @@ def create_specification_with_sustainability( cls, result_with_sustainability: models.CommonSustainabilitySpecificationWithSustainability, ) -> "SpecificationWithSustainabilityResult": - """Returns a Specification with sustainability metrics and child items. + """Returns a Specification object with sustainability metrics and child items. Parameters ---------- @@ -385,7 +385,7 @@ def create_substance_result( cls, result: models.CommonSubstanceReference, ) -> "SubstanceResult": - """Returns a Substance. + """Returns a Substance object. Parameters ---------- @@ -409,7 +409,7 @@ def create_coating_result( cls, result: models.CommonCoatingReference, ) -> "CoatingResult": - """Returns a Coating. + """Returns a Coating object. Parameters ---------- @@ -433,7 +433,7 @@ def create_transport_with_sustainability( cls, result_with_sustainability: models.CommonSustainabilityTransportWithSustainability, ) -> "TransportWithSustainabilityResult": - """Returns a Transport with sustainability metrics. + """Returns a Transport object with sustainability metrics. Parameters ---------- @@ -1418,8 +1418,8 @@ def unit(self) -> str: class SustainabilityResultMixin: """Adds results from a sustainability query to a class. - A Bom-sustainability query returns a BoM-like results, with additional sustainability information attached to each - level of the BoM. + A Bom-sustainability query returns a BoM-like results object, with additional sustainability information attached + to each level of the BoM. This mixin implements only the sustainability metrics and applies to most items in the BoM. Parameters @@ -1447,8 +1447,8 @@ def __init__( class MassResultMixin: """Adds results from a sustainability query to a class. - A Bom-sustainability query returns a BoM-like results, with additional sustainability information attached to each - level of the BoM. + A Bom-sustainability query returns a BoM-like results object, with additional sustainability information attached + to each level of the BoM. This mixin implements only mass calculation results. Parameters @@ -1474,8 +1474,8 @@ def __init__( class ReusabilityResultMixin: """Adds results from a sustainability query to a class. - A Bom-sustainability query returns a BoM-like results, with additional sustainability information attached to each - level of the BoM. + A Bom-sustainability query returns a BoM-like results object, with additional sustainability information attached + to each level of the BoM. This mixin implements only re-usability results, and are only relevant for Materials. Parameters From b1cc38c779c96b18e9d8a713a6226db2c44123da Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Tue, 12 Sep 2023 10:23:59 +0200 Subject: [PATCH 019/275] Fix BoM query manager tests --- tests/test_argument_managers.py | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/tests/test_argument_managers.py b/tests/test_argument_managers.py index dcfe42e7..a2650e26 100644 --- a/tests/test_argument_managers.py +++ b/tests/test_argument_managers.py @@ -1,7 +1,7 @@ import pytest from dataclasses import dataclass from ansys.grantami.bomanalytics import queries -from .inputs import sample_bom +from .inputs import sample_bom, sample_bom_2301 class MockRecordDefinition: @@ -83,16 +83,25 @@ def test_repr(self): class TestBomArgManager: - def test_uninitialized_configuration(self): - am = queries._BomQueryDataManager() + + @pytest.mark.parametrize("bom_version", ["bom_xml1711", "bom_xml2301"]) + def test_uninitialized_configuration(self, bom_version): + am = queries._BomQueryDataManager(bom_version) assert isinstance(am._item_definitions[0], str) assert am._item_definitions[0] == "" assert am.__repr__() == '<_BomQueryDataManager {bom: ""}>' - @pytest.mark.parametrize("bom", ["Test bom less than 100 chars", sample_bom]) - def test_add_bom(self, bom): - am = queries._BomQueryDataManager() + @pytest.mark.parametrize( + ["bom", "bom_version"], + [ + ("Test bom less than 100 chars", "bom_xml1711"), + (sample_bom, "bom_xml1711"), + (sample_bom_2301, "bom_xml2301") + ] + ) + def test_add_bom(self, bom, bom_version): + am = queries._BomQueryDataManager(bom_version) am._item_definitions = [bom] assert am._item_definitions[0] == bom - assert am.batched_arguments == [{"bom_xml1711": bom}] + assert am.batched_arguments == [{bom_version: bom}] assert am.__repr__() == f'<_BomQueryDataManager {{bom: "{bom[:100]}"}}>' From c9d9537f405d3d92885750db0d4959289d78bd5a Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Tue, 12 Sep 2023 15:36:26 +0200 Subject: [PATCH 020/275] Update mocked tests --- tests/inputs/examples.py | 50 +++++++++++++++---- tests/test_mocked_responses/test_parts.py | 2 +- .../test_specifications.py | 4 +- 3 files changed, 42 insertions(+), 14 deletions(-) diff --git a/tests/inputs/examples.py b/tests/inputs/examples.py index cd3825a1..de9a5670 100644 --- a/tests/inputs/examples.py +++ b/tests/inputs/examples.py @@ -4,6 +4,7 @@ # TODO: Modify the codegen script to generate this as a package _example_dict_raw = { + "CommonCoatingReference": r"""""", # noqa: E501 "CommonCoatingWithCompliance": r"""""", # noqa: E501 "CommonImpactedSubstance": r"""""", # noqa: E501 "CommonIndicatorDefinition": r"""""", # noqa: E501 @@ -14,32 +15,59 @@ "CommonMaterialWithCompliance": r"""""", # noqa: E501 "CommonPartReference": r"""""", # noqa: E501 "CommonPartWithCompliance": r"""""", # noqa: E501 + "CommonPreferredUnits": r"""""", # noqa: E501 + "CommonProcessReference": r"""""", # noqa: E501 "CommonRequestConfig": r"""""", # noqa: E501 "CommonSpecificationReference": r"""""", # noqa: E501 "CommonSpecificationWithCompliance": r"""""", # noqa: E501 + "CommonSubstanceReference": r"""""", # noqa: E501 "CommonSubstanceWithCompliance": r"""""", # noqa: E501 - "GetComplianceForBom1711Request": r"""{"BomXml1711":"<PartsEco xmlns=\"http://www.grantadesign.com/17/11/BillOfMaterialsEco\" id=\"B0\"><Components><Part id=\"A0\"><Quantity Unit=\"Each\">2</Quantity><PartNumber>123456789</PartNumber><Name>Part One</Name><Components><Part><Quantity Unit=\"Each\">1</Quantity><MassPerUom Unit=\"kg/Part\">2</MassPerUom><PartNumber>987654321</PartNumber><Name>New Part One</Name><Substances><Substance><Percentage>66</Percentage><MISubstanceReference><dbKey xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey><recordGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">41656452-1b2c-4ded-ad1b-1df8b3cf6e7e</recordGUID><recordHistoryGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">af1cb650-6db5-49d6-b4a2-0eee9a090207</recordHistoryGUID></MISubstanceReference><Name>Lead oxide</Name></Substance></Substances></Part><Part><Quantity Unit=\"Each\">1</Quantity><MassPerUom Unit=\"kg/Part\">2</MassPerUom><PartNumber>3333</PartNumber><Name>Part Two</Name><Materials><Material><Percentage>80</Percentage><MIMaterialReference><dbKey xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey><recordGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">15069d02-9475-4f05-8810-57de68a2e9cc</recordGUID><recordHistoryGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">12ef41e5-0417-409e-b94b-bc79e7787db9</recordHistoryGUID></MIMaterialReference></Material></Materials></Part></Components></Part></Components><Notes><Notes>Part with substance</Notes><ProductName>Part with substance</ProductName></Notes></PartsEco>","Indicators":[{"Name":"Indicator 1","LegislationNames":["The SIN List 2.1 (Substitute It Now!)"],"DefaultThresholdPercentage":0.1,"IgnoreExemptions":false,"IgnoreProcessChemicals":false,"Type":"WatchList"},{"Name":"Indicator 2","LegislationNames":["EU Directive 2000/53/EC (ELV)"],"DefaultThresholdPercentage":0.1,"IgnoreExemptions":false,"IgnoreProcessChemicals":false,"Type":"Rohs"}],"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 + "CommonSustainabilityMaterialContributingComponent": r"""""", # noqa: E501 + "CommonSustainabilityMaterialSummary": r"""""", # noqa: E501 + "CommonSustainabilityMaterialSummaryEntry": r"""""", # noqa: E501 + "CommonSustainabilityMaterialWithSustainability": r"""""", # noqa: E501 + "CommonSustainabilityPartWithSustainability": r"""""", # noqa: E501 + "CommonSustainabilityPhaseSummary": r"""""", # noqa: E501 + "CommonSustainabilityProcessSummary": r"""""", # noqa: E501 + "CommonSustainabilityProcessSummaryEntry": r"""""", # noqa: E501 + "CommonSustainabilityProcessWithSustainability": r"""""", # noqa: E501 + "CommonSustainabilitySpecificationWithSustainability": r"""""", # noqa: E501 + "CommonSustainabilityTransportSummary": r"""""", # noqa: E501 + "CommonSustainabilityTransportSummaryEntry": r"""""", # noqa: E501 + "CommonSustainabilityTransportWithSustainability": r"""""", # noqa: E501 + "CommonTransportReference": r"""""", # noqa: E501 + "GetAvailableLicensesResponse": r"""{"RestrictedSubstances":true,"Sustainability":false,"LogMessages":[]}""", # noqa: E501 + "GetComplianceForBom1711Request": r"""{"BomXml1711":"<PartsEco xmlns=\"http://www.grantadesign.com/17/11/BillOfMaterialsEco\" id=\"B0\"><Components><Part id=\"A0\"><Quantity Unit=\"Each\">2</Quantity><PartNumber>123456789</PartNumber><Name>Part One</Name><Components><Part><Quantity Unit=\"Each\">1</Quantity><MassPerUom Unit=\"kg/Part\">2</MassPerUom><PartNumber>987654321</PartNumber><Name>New Part One</Name><Substances><Substance><Percentage>66</Percentage><MISubstanceReference><dbKey xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey><recordGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">de44a721-14e7-4bd1-b0d1-5e1179d1f5e2</recordGUID><recordHistoryGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">af1cb650-6db5-49d6-b4a2-0eee9a090207</recordHistoryGUID></MISubstanceReference><Name>Lead oxide</Name></Substance></Substances></Part><Part><Quantity Unit=\"Each\">1</Quantity><MassPerUom Unit=\"kg/Part\">2</MassPerUom><PartNumber>3333</PartNumber><Name>Part Two</Name><Materials><Material><Percentage>80</Percentage><MIMaterialReference><dbKey xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey><recordGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">3df206df-9fc8-4859-90d4-3519764f8b55</recordGUID><recordHistoryGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">b8e22139-81c5-4097-b2ec-718aa05dca04</recordHistoryGUID></MIMaterialReference></Material></Materials></Part></Components></Part></Components><Notes><Notes>Part with substance</Notes><ProductName>Part with substance</ProductName></Notes></PartsEco>","Indicators":[{"Name":"Indicator 1","LegislationIds":["SINList"],"DefaultThresholdPercentage":0.1,"IgnoreExemptions":false,"IgnoreProcessChemicals":false,"Type":"WatchList"},{"Name":"Indicator 2","LegislationIds":["ELV"],"DefaultThresholdPercentage":0.1,"IgnoreExemptions":false,"IgnoreProcessChemicals":false,"Type":"Rohs"}],"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 "GetComplianceForBom1711Response": r"""{"Parts":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Parts":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Parts":[],"Specifications":[],"Materials":[],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListNotImpacted"},{"Name":"Indicator 2","Flag":"RohsNotImpacted"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":62345}],"ReferenceType":"PartNumber","ReferenceValue":null}],"Specifications":[],"Materials":[],"Substances":[],"ReferenceType":"PartNumber","ReferenceValue":null},{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListHasSubstanceAboveThreshold"},{"Name":"Indicator 2","Flag":"RohsNonCompliant"}],"Parts":[],"Specifications":[],"Materials":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsBelowThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":12345}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":111111}],"Substances":[],"ReferenceType":"PartNumber","ReferenceValue":null}],"LogMessages":[]}""", # noqa: E501 - "GetComplianceForMaterialsRequest": r"""{"Materials":[{"ReferenceType":"MaterialId","ReferenceValue":"S200"},{"ReferenceType":"MiRecordGuid","ReferenceValue":"3df206df-9fc8-4859-90d4-3519764f8b55"}],"Indicators":[{"Name":"Indicator 1","LegislationNames":["The SIN List 2.1 (Substitute It Now!)"],"DefaultThresholdPercentage":0.1,"IgnoreExemptions":false,"IgnoreProcessChemicals":false,"Type":"WatchList"},{"Name":"Indicator 2","LegislationNames":["EU Directive 2000/53/EC (ELV)"],"DefaultThresholdPercentage":0.1,"IgnoreExemptions":false,"IgnoreProcessChemicals":false,"Type":"Rohs"}],"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 + "GetComplianceForBom2301Request": r"""{"BomXml2301":"<PartsEco xmlns=\"http://www.grantadesign.com/23/01/BillOfMaterialsEco\" id=\"B0\"><Components><Part id=\"A0\"><Quantity Unit=\"Each\">2</Quantity><PartNumber>123456789</PartNumber><Name>Part One</Name><Components><Part><Quantity Unit=\"Each\">1</Quantity><MassPerUom Unit=\"kg/Part\">2</MassPerUom><PartNumber>987654321</PartNumber><Name>New Part One</Name><Substances><Substance><Percentage>66</Percentage><MISubstanceReference><dbKey xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey><recordGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">de44a721-14e7-4bd1-b0d1-5e1179d1f5e2</recordGUID><recordHistoryGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">af1cb650-6db5-49d6-b4a2-0eee9a090207</recordHistoryGUID></MISubstanceReference><Name>Lead oxide</Name></Substance></Substances></Part><Part><Quantity Unit=\"Each\">1</Quantity><MassPerUom Unit=\"kg/Part\">2</MassPerUom><PartNumber>3333</PartNumber><Name>Part Two</Name><Materials><Material><Percentage>80</Percentage><MIMaterialReference><dbKey xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey><recordGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">3df206df-9fc8-4859-90d4-3519764f8b55</recordGUID><recordHistoryGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">b8e22139-81c5-4097-b2ec-718aa05dca04</recordHistoryGUID></MIMaterialReference></Material></Materials></Part></Components></Part></Components><Notes><Notes>Part with substance</Notes><ProductName>Part with substance</ProductName></Notes></PartsEco>","Indicators":[{"Name":"Indicator 1","LegislationIds":["SINList"],"DefaultThresholdPercentage":0.1,"IgnoreExemptions":false,"IgnoreProcessChemicals":false,"Type":"WatchList"},{"Name":"Indicator 2","LegislationIds":["ELV"],"DefaultThresholdPercentage":0.1,"IgnoreExemptions":false,"IgnoreProcessChemicals":false,"Type":"Rohs"}],"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 + "GetComplianceForBom2301Response": r"""{"Parts":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Parts":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Parts":[],"Specifications":[],"Materials":[],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListNotImpacted"},{"Name":"Indicator 2","Flag":"RohsNotImpacted"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":62345}],"ReferenceType":"PartNumber","ReferenceValue":null}],"Specifications":[],"Materials":[],"Substances":[],"ReferenceType":"PartNumber","ReferenceValue":null},{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListHasSubstanceAboveThreshold"},{"Name":"Indicator 2","Flag":"RohsNonCompliant"}],"Parts":[],"Specifications":[],"Materials":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsBelowThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":12345}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":111111}],"Substances":[],"ReferenceType":"PartNumber","ReferenceValue":null}],"LogMessages":[]}""", # noqa: E501 + "GetComplianceForMaterialsRequest": r"""{"Materials":[{"ReferenceType":"MaterialId","ReferenceValue":"S200"},{"ReferenceType":"MiRecordGuid","ReferenceValue":"3df206df-9fc8-4859-90d4-3519764f8b55"}],"Indicators":[{"Name":"Indicator 1","LegislationIds":["SINList"],"DefaultThresholdPercentage":0.1,"IgnoreExemptions":false,"IgnoreProcessChemicals":false,"Type":"WatchList"},{"Name":"Indicator 2","LegislationIds":["ELV"],"DefaultThresholdPercentage":0.1,"IgnoreExemptions":false,"IgnoreProcessChemicals":false,"Type":"Rohs"}],"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 "GetComplianceForMaterialsResponse": r"""{"Materials":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsBelowThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":12345}],"ReferenceType":"MaterialId","ReferenceValue":"S200"},{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListHasSubstanceAboveThreshold"},{"Name":"Indicator 2","Flag":"RohsNonCompliant"}],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsBelowThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":12345},{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAboveThreshold"},{"Name":"Indicator 2","Flag":"RohsAboveThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":34567}],"ReferenceType":"MiRecordGuid","ReferenceValue":"3df206df-9fc8-4859-90d4-3519764f8b55"}],"LogMessages":[]}""", # noqa: E501 - "GetComplianceForPartsRequest": r"""{"Parts":[{"ReferenceType":"PartNumber","ReferenceValue":"FLRY33"},{"ReferenceType":"MiRecordGuid","ReferenceValue":"3df206df-9fc8-4859-90d4-3519764f8b55"}],"Indicators":[{"Name":"Indicator 1","LegislationNames":["The SIN List 2.1 (Substitute It Now!)"],"DefaultThresholdPercentage":0.1,"IgnoreExemptions":false,"IgnoreProcessChemicals":false,"Type":"WatchList"},{"Name":"Indicator 2","LegislationNames":["EU Directive 2000/53/EC (ELV)"],"DefaultThresholdPercentage":0.1,"IgnoreExemptions":false,"IgnoreProcessChemicals":false,"Type":"Rohs"}],"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 - "GetComplianceForPartsResponse": r"""{"Parts":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Parts":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Parts":[],"Specifications":[],"Materials":[],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListNotImpacted"},{"Name":"Indicator 2","Flag":"RohsNotImpacted"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":62345}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":987654}],"Specifications":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Specifications":[],"Coatings":[],"Materials":[],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsBelowThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":12345}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":987654}],"Materials":[],"Substances":[],"ReferenceType":"PartNumber","ReferenceValue":"FLRY33"},{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListHasSubstanceAboveThreshold"},{"Name":"Indicator 2","Flag":"RohsNonCompliant"}],"Parts":[],"Specifications":[],"Materials":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsBelowThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":12345}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":111111},{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListHasSubstanceAboveThreshold"},{"Name":"Indicator 2","Flag":"RohsNonCompliant"}],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsBelowThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":12345},{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAboveThreshold"},{"Name":"Indicator 2","Flag":"RohsAboveThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":34567}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":222222}],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsBelowThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":12345},{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAboveThreshold"},{"Name":"Indicator 2","Flag":"RohsAboveThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":34567}],"ReferenceType":"MiRecordGuid","ReferenceValue":"3df206df-9fc8-4859-90d4-3519764f8b55"}],"LogMessages":[]}""", # noqa: E501 - "GetComplianceForSpecificationsRequest": r"""{"Specifications":[{"ReferenceType":"SpecificationId","ReferenceValue":"MSP89,TypeI"},{"ReferenceType":"MiRecordGuid","ReferenceValue":"3df206df-9fc8-4859-90d4-3519764f8b55"}],"Indicators":[{"Name":"Indicator 1","LegislationNames":["The SIN List 2.1 (Substitute It Now!)"],"DefaultThresholdPercentage":0.1,"IgnoreExemptions":false,"IgnoreProcessChemicals":false,"Type":"WatchList"},{"Name":"Indicator 2","LegislationNames":["EU Directive 2000/53/EC (ELV)"],"DefaultThresholdPercentage":0.1,"IgnoreExemptions":false,"IgnoreProcessChemicals":false,"Type":"Rohs"}],"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 + "GetComplianceForPartsRequest": r"""{"Parts":[{"ReferenceType":"PartNumber","ReferenceValue":"FLRY33"},{"ReferenceType":"MiRecordGuid","ReferenceValue":"f622cc99-158d-43eb-881e-209a08af1108"}],"Indicators":[{"Name":"Indicator 1","LegislationIds":["SINList"],"DefaultThresholdPercentage":0.1,"IgnoreExemptions":false,"IgnoreProcessChemicals":false,"Type":"WatchList"},{"Name":"Indicator 2","LegislationIds":["ELV"],"DefaultThresholdPercentage":0.1,"IgnoreExemptions":false,"IgnoreProcessChemicals":false,"Type":"Rohs"}],"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 + "GetComplianceForPartsResponse": r"""{"Parts":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Parts":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Parts":[],"Specifications":[],"Materials":[],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListNotImpacted"},{"Name":"Indicator 2","Flag":"RohsNotImpacted"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":62345}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":987654}],"Specifications":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Specifications":[],"Coatings":[],"Materials":[],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsBelowThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":12345}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":987654}],"Materials":[],"Substances":[],"ReferenceType":"PartNumber","ReferenceValue":"FLRY33"},{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListHasSubstanceAboveThreshold"},{"Name":"Indicator 2","Flag":"RohsNonCompliant"}],"Parts":[],"Specifications":[],"Materials":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsBelowThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":12345}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":111111},{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListHasSubstanceAboveThreshold"},{"Name":"Indicator 2","Flag":"RohsNonCompliant"}],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsBelowThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":12345},{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAboveThreshold"},{"Name":"Indicator 2","Flag":"RohsAboveThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":34567}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":222222}],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsBelowThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":12345},{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAboveThreshold"},{"Name":"Indicator 2","Flag":"RohsAboveThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":34567}],"ReferenceType":"MiRecordGuid","ReferenceValue":"f622cc99-158d-43eb-881e-209a08af1108"}],"LogMessages":[]}""", # noqa: E501 + "GetComplianceForSpecificationsRequest": r"""{"Specifications":[{"ReferenceType":"SpecificationId","ReferenceValue":"MSP89,TypeI"},{"ReferenceType":"MiRecordGuid","ReferenceValue":"e0f41223-4b6b-40be-8982-39999c68f471"}],"Indicators":[{"Name":"Indicator 1","LegislationIds":["SINList"],"DefaultThresholdPercentage":0.1,"IgnoreExemptions":false,"IgnoreProcessChemicals":false,"Type":"WatchList"},{"Name":"Indicator 2","LegislationIds":["ELV"],"DefaultThresholdPercentage":0.1,"IgnoreExemptions":false,"IgnoreProcessChemicals":false,"Type":"Rohs"}],"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 "GetComplianceForSpecificationsResponse": r"""{"Specifications":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Specifications":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Specifications":[],"Coatings":[],"Materials":[],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsBelowThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":12345}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":987654}],"Coatings":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListNotImpacted"},{"Name":"Indicator 2","Flag":"RohsNotImpacted"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":62345}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":987654}],"Materials":[],"Substances":[],"ReferenceType":"SpecificationId","ReferenceValue":"MSP89,TypeI"},{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListHasSubstanceAboveThreshold"},{"Name":"Indicator 2","Flag":"RohsNonCompliant"}],"Specifications":[],"Coatings":[],"Materials":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsBelowThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":12345}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":111111},{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListHasSubstanceAboveThreshold"},{"Name":"Indicator 2","Flag":"RohsNonCompliant"}],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsBelowThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":12345},{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAboveThreshold"},{"Name":"Indicator 2","Flag":"RohsAboveThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":34567}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":222222}],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsBelowThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":12345},{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAboveThreshold"},{"Name":"Indicator 2","Flag":"RohsAboveThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":34567}],"ReferenceType":"MiRecordGuid","ReferenceValue":"3df206df-9fc8-4859-90d4-3519764f8b55"}],"LogMessages":[{"Severity":"warning","Message":"Could not determine declaration type for record 'MSP89,TypeI - Vapor Degrease' from table 'Specifications'."},{"Severity":"warning","Message":"Could not determine declaration type for record 'ASTM D4080' from table 'Specifications'."},{"Severity":"warning","Message":"Specification \"ASTM D4080\" with record 'ASTM D4080' from table 'Specifications' has a material row with a missing material link."}]}""", # noqa: E501 - "GetComplianceForSubstancesRequest": r"""{"Substances":[{"PercentageAmount":0.05,"ReferenceType":"CasNumber","ReferenceValue":"50-00-0"},{"PercentageAmount":20,"ReferenceType":"ChemicalName","ReferenceValue":"1,3-Butadiene"}],"Indicators":[{"Name":"Indicator 1","LegislationNames":["The SIN List 2.1 (Substitute It Now!)"],"DefaultThresholdPercentage":0.1,"IgnoreExemptions":false,"IgnoreProcessChemicals":false,"Type":"WatchList"},{"Name":"Indicator 2","LegislationNames":["EU Directive 2000/53/EC (ELV)"],"DefaultThresholdPercentage":0.1,"IgnoreExemptions":false,"IgnoreProcessChemicals":false,"Type":"Rohs"}],"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 + "GetComplianceForSubstancesRequest": r"""{"Substances":[{"PercentageAmount":0.05,"ReferenceType":"CasNumber","ReferenceValue":"50-00-0"},{"PercentageAmount":20,"ReferenceType":"ChemicalName","ReferenceValue":"1,3-Butadiene"}],"Indicators":[{"Name":"Indicator 1","LegislationIds":["SINList"],"DefaultThresholdPercentage":0.1,"IgnoreExemptions":false,"IgnoreProcessChemicals":false,"Type":"WatchList"},{"Name":"Indicator 2","LegislationIds":["ELV"],"DefaultThresholdPercentage":0.1,"IgnoreExemptions":false,"IgnoreProcessChemicals":false,"Type":"Rohs"}],"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 "GetComplianceForSubstancesResponse": r"""{"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsBelowThreshold"}],"ReferenceType":"CasNumber","ReferenceValue":"50-00-0"},{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAboveThreshold"},{"Name":"Indicator 2","Flag":"RohsAboveThreshold"}],"ReferenceType":"ChemicalName","ReferenceValue":"1,3-Butadiene"}],"LogMessages":[]}""", # noqa: E501 "GetComplianceForSubstancesSubstanceWithAmount": r"""""", # noqa: E501 - "GetImpactedSubstancesForBom1711Request": r"""{"BomXml1711":"<PartsEco xmlns=\"http://www.grantadesign.com/17/11/BillOfMaterialsEco\" id=\"B0\"><Components><Part id=\"A0\"><Quantity Unit=\"Each\">2</Quantity><PartNumber>123456789</PartNumber><Name>Part One</Name><Components><Part><Quantity Unit=\"Each\">1</Quantity><MassPerUom Unit=\"kg/Part\">2</MassPerUom><PartNumber>987654321</PartNumber><Name>New Part One</Name><Substances><Substance><Percentage>66</Percentage><MISubstanceReference><dbKey xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey><recordGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">41656452-1b2c-4ded-ad1b-1df8b3cf6e7e</recordGUID><recordHistoryGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">af1cb650-6db5-49d6-b4a2-0eee9a090207</recordHistoryGUID></MISubstanceReference><Name>Lead oxide</Name></Substance></Substances></Part><Part><Quantity Unit=\"Each\">1</Quantity><MassPerUom Unit=\"kg/Part\">2</MassPerUom><PartNumber>3333</PartNumber><Name>Part Two</Name><Materials><Material><Percentage>80</Percentage><MIMaterialReference><dbKey xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey><recordGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">15069d02-9475-4f05-8810-57de68a2e9cc</recordGUID><recordHistoryGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">12ef41e5-0417-409e-b94b-bc79e7787db9</recordHistoryGUID></MIMaterialReference></Material></Materials></Part></Components></Part></Components><Notes><Notes>Part with substance</Notes><ProductName>Part with substance</ProductName></Notes></PartsEco>","LegislationNames":["The SIN List 2.1 (Substitute It Now!)"],"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 + "GetImpactedSubstancesForBom1711Request": r"""{"BomXml1711":"<PartsEco xmlns=\"http://www.grantadesign.com/17/11/BillOfMaterialsEco\" id=\"B0\"><Components><Part id=\"A0\"><Quantity Unit=\"Each\">2</Quantity><PartNumber>123456789</PartNumber><Name>Part One</Name><Components><Part><Quantity Unit=\"Each\">1</Quantity><MassPerUom Unit=\"kg/Part\">2</MassPerUom><PartNumber>987654321</PartNumber><Name>New Part One</Name><Substances><Substance><Percentage>66</Percentage><MISubstanceReference><dbKey xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey><recordGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">de44a721-14e7-4bd1-b0d1-5e1179d1f5e2</recordGUID><recordHistoryGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">af1cb650-6db5-49d6-b4a2-0eee9a090207</recordHistoryGUID></MISubstanceReference><Name>Lead oxide</Name></Substance></Substances></Part><Part><Quantity Unit=\"Each\">1</Quantity><MassPerUom Unit=\"kg/Part\">2</MassPerUom><PartNumber>3333</PartNumber><Name>Part Two</Name><Materials><Material><Percentage>80</Percentage><MIMaterialReference><dbKey xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey><recordGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">3df206df-9fc8-4859-90d4-3519764f8b55</recordGUID><recordHistoryGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">b8e22139-81c5-4097-b2ec-718aa05dca04</recordHistoryGUID></MIMaterialReference></Material></Materials></Part></Components></Part></Components><Notes><Notes>Part with substance</Notes><ProductName>Part with substance</ProductName></Notes></PartsEco>","LegislationNames":["The SIN List 2.1 (Substitute It Now!)"],"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 "GetImpactedSubstancesForBom1711Response": r"""{"Legislations":[{"LegislationName":"The SIN List 2.1 (Substitute It Now!)","ImpactedSubstances":[{"SubstanceName":"1,3-Butadiene","CasNumber":"106-99-0","EcNumber":"203-450-8","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1},{"SubstanceName":"Butylated hydroxytoluene [BAN:NF]","CasNumber":"128-37-0","EcNumber":"204-881-4","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1}]}],"LogMessages":[]}""", # noqa: E501 + "GetImpactedSubstancesForBom2301Request": r"""{"BomXml2301":"<PartsEco xmlns=\"http://www.grantadesign.com/23/01/BillOfMaterialsEco\" id=\"B0\"><Components><Part id=\"A0\"><Quantity Unit=\"Each\">2</Quantity><PartNumber>123456789</PartNumber><Name>Part One</Name><Components><Part><Quantity Unit=\"Each\">1</Quantity><MassPerUom Unit=\"kg/Part\">2</MassPerUom><PartNumber>987654321</PartNumber><Name>New Part One</Name><Substances><Substance><Percentage>66</Percentage><MISubstanceReference><dbKey xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey><recordGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">de44a721-14e7-4bd1-b0d1-5e1179d1f5e2</recordGUID><recordHistoryGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">af1cb650-6db5-49d6-b4a2-0eee9a090207</recordHistoryGUID></MISubstanceReference><Name>Lead oxide</Name></Substance></Substances></Part><Part><Quantity Unit=\"Each\">1</Quantity><MassPerUom Unit=\"kg/Part\">2</MassPerUom><PartNumber>3333</PartNumber><Name>Part Two</Name><Materials><Material><Percentage>80</Percentage><MIMaterialReference><dbKey xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey><recordGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">3df206df-9fc8-4859-90d4-3519764f8b55</recordGUID><recordHistoryGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">b8e22139-81c5-4097-b2ec-718aa05dca04</recordHistoryGUID></MIMaterialReference></Material></Materials></Part></Components></Part></Components><Notes><Notes>Part with substance</Notes><ProductName>Part with substance</ProductName></Notes></PartsEco>","LegislationNames":["The SIN List 2.1 (Substitute It Now!)"],"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 + "GetImpactedSubstancesForBom2301Response": r"""{"Legislations":[{"LegislationName":"The SIN List 2.1 (Substitute It Now!)","ImpactedSubstances":[{"SubstanceName":"1,3-Butadiene","CasNumber":"106-99-0","EcNumber":"203-450-8","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1},{"SubstanceName":"Butylated hydroxytoluene [BAN:NF]","CasNumber":"128-37-0","EcNumber":"204-881-4","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1}]}],"LogMessages":[]}""", # noqa: E501 "GetImpactedSubstancesForMaterialsMaterial": r"""""", # noqa: E501 "GetImpactedSubstancesForMaterialsRequest": r"""{"Materials":[{"ReferenceType":"MaterialId","ReferenceValue":"elastomer-butadienerubber"}],"LegislationNames":["The SIN List 2.1 (Substitute It Now!)"],"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 "GetImpactedSubstancesForMaterialsResponse": r"""{"Materials":[{"Legislations":[{"LegislationName":"The SIN List 2.1 (Substitute It Now!)","ImpactedSubstances":[{"SubstanceName":"1,3-Butadiene","CasNumber":"106-99-0","EcNumber":"203-450-8","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1},{"SubstanceName":"Butylated hydroxytoluene [BAN:NF]","CasNumber":"128-37-0","EcNumber":"204-881-4","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1}]}],"ReferenceType":"MaterialId","ReferenceValue":"elastomer-butadienerubber"}],"LogMessages":[]}""", # noqa: E501 "GetImpactedSubstancesForPartsPart": r"""""", # noqa: E501 - "GetImpactedSubstancesForPartsRequest": r"""{"Parts":[{"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":14321},{"ReferenceType":"PartNumber","ReferenceValue":"FLRY33"}],"LegislationNames":["The SIN List 2.1 (Substitute It Now!)"],"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 - "GetImpactedSubstancesForPartsResponse": r"""{"Parts":[{"Legislations":[{"LegislationName":"The SIN List 2.1 (Substitute It Now!)","ImpactedSubstances":[{"SubstanceName":"1,3-Butadiene","CasNumber":"106-99-0","EcNumber":"203-450-8","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1},{"SubstanceName":"Butylated hydroxytoluene [BAN:NF]","CasNumber":"128-37-0","EcNumber":"204-881-4","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1}]}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":14321},{"Legislations":[{"LegislationName":"The SIN List 2.1 (Substitute It Now!)","ImpactedSubstances":[{"SubstanceName":"Benzophenone","CasNumber":"119-61-9","EcNumber":"204-337-6","MaxPercentageAmountInMaterial":1,"LegislationThreshold":0.1},{"SubstanceName":"2,4-Dihydroxybenzophenon","CasNumber":"131-56-6","EcNumber":"205-029-4","MaxPercentageAmountInMaterial":1,"LegislationThreshold":0.1}]}],"ReferenceType":"PartNumber","ReferenceValue":"FLRY33"}],"LogMessages":[]}""", # noqa: E501 - "GetImpactedSubstancesForSpecificationsRequest": r"""{"Specifications":[{"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":14321},{"ReferenceType":"SpecificationId","ReferenceValue":"MSP89,TypeI"}],"LegislationNames":["The SIN List 2.1 (Substitute It Now!)"],"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 - "GetImpactedSubstancesForSpecificationsResponse": r"""{"Specifications":[{"Legislations":[{"LegislationName":"The SIN List 2.1 (Substitute It Now!)","ImpactedSubstances":[{"SubstanceName":"1,3-Butadiene","CasNumber":"106-99-0","EcNumber":"203-450-8","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1},{"SubstanceName":"Butylated hydroxytoluene [BAN:NF]","CasNumber":"128-37-0","EcNumber":"204-881-4","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1}]}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":14321},{"Legislations":[{"LegislationName":"The SIN List 2.1 (Substitute It Now!)","ImpactedSubstances":[{"SubstanceName":"Benzophenone","CasNumber":"119-61-9","EcNumber":"204-337-6","MaxPercentageAmountInMaterial":1,"LegislationThreshold":0.1},{"SubstanceName":"2,4-Dihydroxybenzophenon","CasNumber":"131-56-6","EcNumber":"205-029-4","MaxPercentageAmountInMaterial":1,"LegislationThreshold":0.1}]}],"ReferenceType":"SpecificationId","ReferenceValue":"MSP89,TypeI"}],"LogMessages":[]}""", # noqa: E501 + "GetImpactedSubstancesForPartsRequest": r"""{"Parts":[{"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":565024},{"ReferenceType":"PartNumber","ReferenceValue":"FLRY33"}],"LegislationNames":["The SIN List 2.1 (Substitute It Now!)"],"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 + "GetImpactedSubstancesForPartsResponse": r"""{"Parts":[{"Legislations":[{"LegislationName":"The SIN List 2.1 (Substitute It Now!)","ImpactedSubstances":[{"SubstanceName":"1,3-Butadiene","CasNumber":"106-99-0","EcNumber":"203-450-8","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1},{"SubstanceName":"Butylated hydroxytoluene [BAN:NF]","CasNumber":"128-37-0","EcNumber":"204-881-4","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1}]}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":565024},{"Legislations":[{"LegislationName":"The SIN List 2.1 (Substitute It Now!)","ImpactedSubstances":[{"SubstanceName":"Benzophenone","CasNumber":"119-61-9","EcNumber":"204-337-6","MaxPercentageAmountInMaterial":1,"LegislationThreshold":0.1},{"SubstanceName":"2,4-Dihydroxybenzophenon","CasNumber":"131-56-6","EcNumber":"205-029-4","MaxPercentageAmountInMaterial":1,"LegislationThreshold":0.1}]}],"ReferenceType":"PartNumber","ReferenceValue":"FLRY33"}],"LogMessages":[]}""", # noqa: E501 + "GetImpactedSubstancesForSpecificationsRequest": r"""{"Specifications":[{"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":545019},{"ReferenceType":"SpecificationId","ReferenceValue":"AMS03-27"}],"LegislationNames":["The SIN List 2.1 (Substitute It Now!)"],"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 + "GetImpactedSubstancesForSpecificationsResponse": r"""{"Specifications":[{"Legislations":[{"LegislationName":"The SIN List 2.1 (Substitute It Now!)","ImpactedSubstances":[{"SubstanceName":"1,3-Butadiene","CasNumber":"106-99-0","EcNumber":"203-450-8","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1},{"SubstanceName":"Butylated hydroxytoluene [BAN:NF]","CasNumber":"128-37-0","EcNumber":"204-881-4","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1}]}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":545019},{"Legislations":[{"LegislationName":"The SIN List 2.1 (Substitute It Now!)","ImpactedSubstances":[{"SubstanceName":"Benzophenone","CasNumber":"119-61-9","EcNumber":"204-337-6","MaxPercentageAmountInMaterial":1,"LegislationThreshold":0.1},{"SubstanceName":"2,4-Dihydroxybenzophenon","CasNumber":"131-56-6","EcNumber":"205-029-4","MaxPercentageAmountInMaterial":1,"LegislationThreshold":0.1}]}],"ReferenceType":"SpecificationId","ReferenceValue":"AMS03-27"}],"LogMessages":[]}""", # noqa: E501 "GetImpactedSubstancesForSpecificationsSpecification": r"""""", # noqa: E501 + "GetSustainabilityForBom2301Request": r"""{"BomXml2301":"<?xml version= \"1.0\"?><PartsEco xmlns:xsd= \"http://www.w3.org/2001/XMLSchema\" xmlns:xsi= \"http://www.w3.org/2001/XMLSchema-instance\" xmlns= \"http://www.grantadesign.com/23/01/BillOfMaterialsEco\"><Components><Part><Quantity Unit= \"Each\">1</Quantity><PartNumber>PartOne</PartNumber><Name>PartOne</Name><ExternalIdentity>1686152405220|5</ExternalIdentity><Components><Part><Quantity Unit= \"Each\">1</Quantity><MassPerUom Unit= \"kg/Part\">2</MassPerUom><PartNumber>PartTwo</PartNumber><Name>PartTwo</Name><ExternalIdentity>1686152405220|16</ExternalIdentity><Materials><Material><Mass Unit= \"kg\">2</Mass><MIMaterialReference><dbKey xmlns= \"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey><recordGUID xmlns= \"http://www.grantadesign.com/12/05/GrantaBaseTypes\">8dc38bb5-eff9-4c60-9233-271a3c8f6270</recordGUID></MIMaterialReference><Identity>steel-kovar-annealed</Identity><Name>High alloy steel, Kovar, annealed</Name><ExternalIdentity>1686152405220|14</ExternalIdentity><Processes><Process><MIProcessReference><dbKey xmlns= \"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey><recordHistoryGUID xmlns= \"http://www.grantadesign.com/12/05/GrantaBaseTypes\">d986c90a-2835-45f3-8b69-d6d662dcf53a</recordHistoryGUID></MIProcessReference><Identity>Coarse Machining</Identity><Name>Coarse Machining</Name><ExternalIdentity>1977190729730|4</ExternalIdentity><DimensionType>MassRemoved</DimensionType><Quantity Unit= \"kg\">0.05</Quantity></Process></Processes></Material></Materials></Part></Components></Part></Components><Notes><ProductName>Example</ProductName></Notes></PartsEco>","PreferredUnits":null,"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 + "GetSustainabilityForBom2301Response": r"""{"Parts":[{"Parts":[{"Parts":[],"Materials":[{"Processes":[{"EmbodiedEnergy":{"Value":0.09,"Unit":"MJ"},"ClimateChange":{"Value":0,"Unit":"kg"},"ReferenceType":"MiRecordHistoryGuid","ReferenceValue":"d986c90a-2835-45f3-8b69-d6d662dcf53a"}],"Substances":[],"EmbodiedEnergy":{"Value":441.1,"Unit":"MJ"},"ClimateChange":{"Value":14.9,"Unit":"kg"},"Recyclable":true,"Biodegradable":false,"Downcycle":true,"ReportedMass":{"Value":2,"Unit":"kg"},"ReferenceType":"MiRecordGuid","ReferenceValue":"8dc38bb5-eff9-4c60-9233-271a3c8f6270"}],"Processes":[],"Substances":[],"Specifications":[],"EmbodiedEnergy":{"Value":441.2,"Unit":"MJ"},"ClimateChange":{"Value":14.2,"Unit":"kg"},"ReportedMass":{"Value":2,"Unit":"kg"},"ReferenceType":"PartNumber","ReferenceValue":null}],"Materials":[],"Processes":[],"Substances":[],"Specifications":[],"EmbodiedEnergy":{"Value":441.2,"Unit":"MJ"},"ClimateChange":{"Value":14.2,"Unit":"kg"},"ReportedMass":{"Value":2,"Unit":"kg"},"ReferenceType":"PartNumber","ReferenceValue":null}],"TransportStages":[],"LogMessages":[]}""", # noqa: E501 + "GetSustainabilitySummaryForBom2301Request": r"""{"BomXml2301":"<?xml version=\"1.0\"?><PartsEco xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://www.grantadesign.com/23/01/BillOfMaterialsEco\"> <Components> <Part> <Quantity Unit=\"Each\">1</Quantity> <PartNumber>PartOne</PartNumber> <ExternalIdentity>47</ExternalIdentity> <Components> <Part> <Quantity Unit=\"Each\">1</Quantity> <PartNumber>PartTwo</PartNumber> <Name /> <ExternalIdentity>50</ExternalIdentity> <Materials> <Material> <Mass Unit=\"kg\">0.5</Mass> <MIMaterialReference> <dbKey xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey> <recordGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">8dc38bb5-eff9-4c60-9233-271a3c8f6270</recordGUID> </MIMaterialReference> <Identity>steel-kovar-annealed</Identity> <Name>High alloy steel, Kovar, annealed</Name> <ExternalIdentity>5777</ExternalIdentity> <Processes> <Process> <MIProcessReference> <dbKey xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey> <recordGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">baa6c95b-ff0e-4811-9120-92717ee15bda</recordGUID> </MIProcessReference> <Identity /> <Name>Metal casting</Name> <ExternalIdentity>5821</ExternalIdentity> <DimensionType>Mass</DimensionType> <Percentage>100</Percentage> </Process> <Process> <MIProcessReference> <dbKey xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey> <recordGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">907bda29-e800-44f6-b7ea-4eb8e7cff375</recordGUID> </MIProcessReference> <Identity /> <Name>Machining, coarse</Name> <ExternalIdentity>5801</ExternalIdentity> <DimensionType>MassRemoved</DimensionType> <Percentage>20</Percentage> </Process> </Processes> </Material> </Materials> </Part> </Components> </Part> </Components> <Notes> <ProductName>Example</ProductName> </Notes></PartsEco>","PreferredUnits":null,"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 + "GetSustainabilitySummaryForBom2301Response": r"""{"MaterialSummary":{"Summary":[{"Name":"steel-kovar-annealed","RecordReference":{"ReferenceType":"MiRecordGuid","ReferenceValue":"8dc38bb5-eff9-4c60-9233-271a3c8f6270"},"EmbodiedEnergy":{"Value":134.482549067761,"Unit":"MJ"},"EmbodiedEnergyPercentage":100,"ClimateChange":{"Value":4.3276934674222,"Unit":"kg"},"ClimateChangePercentage":100,"MassBeforeProcessing":{"Value":0.625,"Unit":"kg"},"MassAfterProcessing":{"Value":0.5,"Unit":"kg"},"LargestContributors":[{"ComponentName":"","RecordReference":{"ReferenceType":"PartNumber","ReferenceValue":null},"MaterialMassBeforeProcessing":{"Value":0.625,"Unit":"kg"}}]}],"PhaseSummary":{"Phase":"Material","EmbodiedEnergy":{"Value":134.482549067761,"Unit":"MJ"},"EmbodiedEnergyPercentage":95.1957177924867,"ClimateChange":{"Value":4.3276934674222,"Unit":"kg"},"ClimateChangePercentage":93.623465310322}},"ProcessSummary":{"PrimaryProcesses":[{"ProcessName":"Metal casting","ProcessRecordReference":{"ReferenceType":"MiRecordGuid","ReferenceValue":"baa6c95b-ff0e-4811-9120-92717ee15bda"},"MaterialRecordReference":{"ReferenceType":"MiRecordGuid","ReferenceValue":"8dc38bb5-eff9-4c60-9233-271a3c8f6270"},"MaterialName":"High alloy steel, Kovar, annealed","EmbodiedEnergy":{"Value":6.55438765769984,"Unit":"MJ"},"EmbodiedEnergyPercentage":100,"ClimateChange":{"Value":0.283705040845716,"Unit":"kg"},"ClimateChangePercentage":100}],"SecondaryProcesses":[{"ProcessName":"Machining, coarse","ProcessRecordReference":{"ReferenceType":"MiRecordGuid","ReferenceValue":"907bda29-e800-44f6-b7ea-4eb8e7cff375"},"MaterialRecordReference":{"ReferenceType":"MiRecordGuid","ReferenceValue":"8dc38bb5-eff9-4c60-9233-271a3c8f6270"},"MaterialName":"High alloy steel, Kovar, annealed","EmbodiedEnergy":{"Value":0.232599537624153,"Unit":"MJ"},"EmbodiedEnergyPercentage":100,"ClimateChange":{"Value":0.0110467869128737,"Unit":"kg"},"ClimateChangePercentage":100}],"JoiningAndFinishingProcesses":[],"PhaseSummary":{"Phase":"Processes","EmbodiedEnergy":{"Value":6.78698719532399,"Unit":"MJ"},"EmbodiedEnergyPercentage":4.80428220751333,"ClimateChange":{"Value":0.29475182775859,"Unit":"kg"},"ClimateChangePercentage":6.37653468967796}},"TransportSummary":{"Summary":[],"PhaseSummary":{"Phase":"Transport","EmbodiedEnergy":{"Value":0,"Unit":"MJ"},"EmbodiedEnergyPercentage":0,"ClimateChange":{"Value":0,"Unit":"kg"},"ClimateChangePercentage":0}},"LogMessages":[]}""", # noqa: E501 + "GrantaBomAnalyticsServicesImplementationCommonValueWithUnit": r"""""", # noqa: E501 } examples_as_strings = {k: html.unescape(v) for k, v in _example_dict_raw.items() if v} diff --git a/tests/test_mocked_responses/test_parts.py b/tests/test_mocked_responses/test_parts.py index d710c19f..6416548b 100644 --- a/tests/test_mocked_responses/test_parts.py +++ b/tests/test_mocked_responses/test_parts.py @@ -146,7 +146,7 @@ def test_compliance_by_part_and_indicator(self, mock_connection): # Part 1 part_1 = response.compliance_by_part_and_indicator[1] pv_1 = PartValidator(part_1) - assert pv_1.check_reference(record_guid="3df206df-9fc8-4859-90d4-3519764f8b55") + assert pv_1.check_reference(record_guid="f622cc99-158d-43eb-881e-209a08af1108") part_1_result = [ indicators.WatchListFlag.WatchListHasSubstanceAboveThreshold, indicators.RoHSFlag.RohsNonCompliant, diff --git a/tests/test_mocked_responses/test_specifications.py b/tests/test_mocked_responses/test_specifications.py index 862f6d5e..1f8d6697 100644 --- a/tests/test_mocked_responses/test_specifications.py +++ b/tests/test_mocked_responses/test_specifications.py @@ -26,7 +26,7 @@ def test_impacted_substances_by_specification(self, mock_connection): spec_result_0 = response.impacted_substances_by_specification[0] specv_0 = SpecificationValidator(spec_result_0) - assert specv_0.check_reference(record_history_identity="14321") + assert specv_0.check_reference(record_history_identity="545019") # Test flattened list of substances assert len(spec_result_0.substances) == 2 @@ -44,7 +44,7 @@ def test_impacted_substances_by_specification(self, mock_connection): spec_result_1 = response.impacted_substances_by_specification[1] specv_1 = SpecificationValidator(spec_result_1) - assert specv_1.check_reference(specification_id="MSP89,TypeI") + assert specv_1.check_reference(specification_id="AMS03-27") # Test flattened list of substances assert len(spec_result_1.substances) == 2 From af934888a82ca25c1ed2c815e4aa47b2d3073b99 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Tue, 12 Sep 2023 16:05:13 +0200 Subject: [PATCH 021/275] Add mocked test for sustainability [skip ci] --- .../test_sustainability.py | 81 +++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 tests/test_mocked_responses/test_sustainability.py diff --git a/tests/test_mocked_responses/test_sustainability.py b/tests/test_mocked_responses/test_sustainability.py new file mode 100644 index 00000000..25b66e71 --- /dev/null +++ b/tests/test_mocked_responses/test_sustainability.py @@ -0,0 +1,81 @@ +from ansys.grantami.bomanalytics import queries, indicators +from ansys.grantami.bomanalytics._query_results import BomSustainabilityQueryResult +from ansys.grantami.bomanalytics_openapi.models import ( + GetSustainabilityForBom2301Response +) +from .common import ( + BaseMockTester, +) + + +class TestBomSustainability(BaseMockTester): + query = queries.BomSustainabilityQuery() + mock_key = GetSustainabilityForBom2301Response.__name__ + + def test_response_processing(self, mock_connection): + response = self.get_mocked_response(mock_connection) + + # TODO Example isn't complete enough + + assert isinstance(response, BomSustainabilityQueryResult) + + assert len(response.transport_stages) == 0 + assert len(response.messages) == 0 + + # Top-level + assert len(response.parts) == 1 + part_0 = response.parts[0] + assert len(part_0.materials) == 0 + assert len(part_0.processes) == 0 + assert len(part_0.substances) == 0 + assert len(part_0.specifications) == 0 + + assert part_0.embodied_energy.unit == "MJ" + assert part_0.embodied_energy.value == 441.2 + assert part_0.climate_change.unit == "kg" + assert part_0.climate_change.value == 14.2 + assert part_0.reported_mass.unit == "kg" + assert part_0.reported_mass.value == 2 + + assert part_0.part_number is None + assert part_0.record_history_identity is None + + # Level 1 + assert len(part_0.parts) == 1 + part_0_0 = part_0.parts[0] + + assert len(part_0_0.parts) == 0 + assert len(part_0_0.processes) == 0 + assert len(part_0_0.substances) == 0 + assert len(part_0_0.specifications) == 0 + + assert part_0_0.embodied_energy.unit == "MJ" + assert part_0_0.embodied_energy.value == 441.2 + assert part_0_0.climate_change.unit == "kg" + assert part_0_0.climate_change.value == 14.2 + assert part_0_0.reported_mass.unit == "kg" + assert part_0_0.reported_mass.value == 2 + + assert len(part_0_0.materials) == 1 + part_0_0_material_0 = part_0_0.materials[0] + # TODO something does not add-up in Climate change + assert part_0_0_material_0.embodied_energy.unit == "MJ" + assert part_0_0_material_0.embodied_energy.value == 441.1 + assert part_0_0_material_0.climate_change.unit == "kg" + assert part_0_0_material_0.climate_change.value == 14.9 + assert part_0_0_material_0.reported_mass.unit == "kg" + assert part_0_0_material_0.reported_mass.value == 2 + assert part_0_0_material_0.recyclable is True + assert part_0_0_material_0.biodegradable is False + assert part_0_0_material_0.downcycle is True + assert part_0_0_material_0.record_guid == "8dc38bb5-eff9-4c60-9233-271a3c8f6270" + + assert len(part_0_0_material_0.processes) == 1 + assert len(part_0_0_material_0.substances) == 0 + + process = part_0_0_material_0.processes[0] + assert process.embodied_energy.unit == "MJ" + assert process.embodied_energy.value == 0.09 + assert process.climate_change.unit == "kg" + assert process.climate_change.value == 0 + assert process.record_history_guid == "d986c90a-2835-45f3-8b69-d6d662dcf53a" \ No newline at end of file From b3ece11833ec6e8519b24fd32d345286d3d8c049 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Wed, 13 Sep 2023 17:53:38 +0200 Subject: [PATCH 022/275] Add sustainability summary query --- doc/source/api/sustainability/bom.rst | 10 +- doc/source/api/sustainability/bom_summary.rst | 39 + doc/source/api/sustainability/common.rst | 10 + doc/source/api/sustainability/index.rst | 1 + .../grantami/bomanalytics/_connection.py | 6 + .../grantami/bomanalytics/_item_results.py | 403 +- .../grantami/bomanalytics/_query_results.py | 157 +- src/ansys/grantami/bomanalytics/queries.py | 25 +- tests/inputs/__init__.py | 5 + tests/inputs/bom-2301-complex.xml | 25544 ++++++++++++++++ tests/test_integration_tests.py | 15 +- 11 files changed, 26173 insertions(+), 42 deletions(-) create mode 100644 doc/source/api/sustainability/common.rst create mode 100644 tests/inputs/bom-2301-complex.xml diff --git a/doc/source/api/sustainability/bom.rst b/doc/source/api/sustainability/bom.rst index c7a2d93d..c8b750b4 100644 --- a/doc/source/api/sustainability/bom.rst +++ b/doc/source/api/sustainability/bom.rst @@ -18,7 +18,7 @@ Query result .. autoclass:: ansys.grantami.bomanalytics._query_results.BomSustainabilityQueryResult :members: - + :inherited-members: Part ~~~~ @@ -53,11 +53,3 @@ Substance ~~~~~~~~~ .. autoclass:: ansys.grantami.bomanalytics._item_results.SubstanceResult - - -Value with unit -~~~~~~~~~~~~~~~ - -.. autoclass:: ansys.grantami.bomanalytics._item_results.ValueWithUnit - :members: - diff --git a/doc/source/api/sustainability/bom_summary.rst b/doc/source/api/sustainability/bom_summary.rst index cca6519f..3f141b8f 100644 --- a/doc/source/api/sustainability/bom_summary.rst +++ b/doc/source/api/sustainability/bom_summary.rst @@ -17,4 +17,43 @@ Query result .. autoclass:: ansys.grantami.bomanalytics._query_results.BomSustainabilitySummaryQueryResult :members: + :inherited-members: + + +Phase summary +~~~~~~~~~~~~~ + +.. autoclass:: ansys.grantami.bomanalytics._item_results.SustainabilityPhaseSummaryResult + :members: + :inherited-members: + + +Transport +~~~~~~~~~ + +.. autoclass:: ansys.grantami.bomanalytics._item_results.TransportSummaryResult + :members: + :inherited-members: + :exclude-members: record_reference + +Material +~~~~~~~~ + +.. autoclass:: ansys.grantami.bomanalytics._item_results.MaterialSummaryResult + :members: + :inherited-members: + :exclude-members: record_reference + +.. autoclass:: ansys.grantami.bomanalytics._item_results.ContributingComponentResult + :members: + :inherited-members: + :exclude-members: record_reference + +Process +~~~~~~~ + +.. autoclass:: ansys.grantami.bomanalytics._item_results.ProcessSummaryResult + :members: + :inherited-members: + :exclude-members: record_reference diff --git a/doc/source/api/sustainability/common.rst b/doc/source/api/sustainability/common.rst new file mode 100644 index 00000000..79db52d6 --- /dev/null +++ b/doc/source/api/sustainability/common.rst @@ -0,0 +1,10 @@ +.. _ref_grantami_bomanalytics_api_sustainability_common: + +Common +====== + +Value with unit +~~~~~~~~~~~~~~~ + +.. autoclass:: ansys.grantami.bomanalytics._item_results.ValueWithUnit + :members: diff --git a/doc/source/api/sustainability/index.rst b/doc/source/api/sustainability/index.rst index 42f16427..36633f3b 100644 --- a/doc/source/api/sustainability/index.rst +++ b/doc/source/api/sustainability/index.rst @@ -10,4 +10,5 @@ Sustainability API bom bom_summary + common diff --git a/src/ansys/grantami/bomanalytics/_connection.py b/src/ansys/grantami/bomanalytics/_connection.py index 8b6debb3..fd4c17c5 100644 --- a/src/ansys/grantami/bomanalytics/_connection.py +++ b/src/ansys/grantami/bomanalytics/_connection.py @@ -57,6 +57,7 @@ BomImpactedSubstancesQuery, BomComplianceQuery, BomSustainabilityQuery, + BomSustainabilitySummaryQuery, ) from ._query_results import ( MaterialImpactedSubstancesQueryResult, @@ -69,6 +70,7 @@ BomImpactedSubstancesQueryResult, BomComplianceQueryResult, BomSustainabilityQueryResult, + BomSustainabilitySummaryQueryResult, ) @@ -382,6 +384,10 @@ def run(self, query: Type["Yaml"]) -> str: def run(self, query: "BomSustainabilityQuery") -> "BomSustainabilityQueryResult": ... + @overload + def run(self, query: "BomSustainabilitySummaryQuery") -> "BomSustainabilitySummaryQueryResult": + ... + def run(self, query): # type: ignore[no-untyped-def] """Run a query against the Granta MI database. diff --git a/src/ansys/grantami/bomanalytics/_item_results.py b/src/ansys/grantami/bomanalytics/_item_results.py index 5505438f..d4e5b368 100644 --- a/src/ansys/grantami/bomanalytics/_item_results.py +++ b/src/ansys/grantami/bomanalytics/_item_results.py @@ -26,6 +26,7 @@ CoatingReference, ProcessReference, TransportReference, + RecordReference, ) from .indicators import WatchListIndicator, RoHSIndicator @@ -261,8 +262,8 @@ def create_compliance_result( @classmethod def create_part_with_sustainability( - cls, - result_with_sustainability: models.CommonSustainabilityPartWithSustainability, + cls, + result_with_sustainability: models.CommonSustainabilityPartWithSustainability, ) -> "PartWithSustainabilityResult": """Returns a Part object with sustainability metrics and child items. @@ -293,8 +294,8 @@ def create_part_with_sustainability( @classmethod def create_process_with_sustainability( - cls, - result_with_sustainability: models.CommonSustainabilityProcessWithSustainability, + cls, + result_with_sustainability: models.CommonSustainabilityProcessWithSustainability, ) -> "ProcessWithSustainabilityResult": """Returns a Process object with sustainability metrics. @@ -319,8 +320,8 @@ def create_process_with_sustainability( @classmethod def create_material_with_sustainability( - cls, - result_with_sustainability: models.CommonSustainabilityMaterialWithSustainability, + cls, + result_with_sustainability: models.CommonSustainabilityMaterialWithSustainability, ) -> "MaterialWithSustainabilityResult": """Returns a Material object with sustainability metrics and child items. @@ -351,8 +352,8 @@ def create_material_with_sustainability( @classmethod def create_specification_with_sustainability( - cls, - result_with_sustainability: models.CommonSustainabilitySpecificationWithSustainability, + cls, + result_with_sustainability: models.CommonSustainabilitySpecificationWithSustainability, ) -> "SpecificationWithSustainabilityResult": """Returns a Specification object with sustainability metrics and child items. @@ -382,8 +383,8 @@ def create_specification_with_sustainability( @classmethod def create_substance_result( - cls, - result: models.CommonSubstanceReference, + cls, + result: models.CommonSubstanceReference, ) -> "SubstanceResult": """Returns a Substance object. @@ -406,8 +407,8 @@ def create_substance_result( @classmethod def create_coating_result( - cls, - result: models.CommonCoatingReference, + cls, + result: models.CommonCoatingReference, ) -> "CoatingResult": """Returns a Coating object. @@ -430,8 +431,8 @@ def create_coating_result( @classmethod def create_transport_with_sustainability( - cls, - result_with_sustainability: models.CommonSustainabilityTransportWithSustainability, + cls, + result_with_sustainability: models.CommonSustainabilityTransportWithSustainability, ) -> "TransportWithSustainabilityResult": """Returns a Transport object with sustainability metrics. @@ -455,7 +456,10 @@ def create_transport_with_sustainability( return transport_with_sustainability @classmethod - def create_unitted_value(cls, result: models.GrantaBomAnalyticsServicesImplementationCommonValueWithUnit): + def create_unitted_value( + cls, + result: models.GrantaBomAnalyticsServicesImplementationCommonValueWithUnit + ) -> "ValueWithUnit": """Returns a value with unit. Parameters @@ -469,6 +473,92 @@ def create_unitted_value(cls, result: models.GrantaBomAnalyticsServicesImplement """ return ValueWithUnit(value=result.value, unit=result.unit) + @classmethod + def create_phase_summary(cls, result: models.CommonSustainabilityPhaseSummary) -> "SustainabilityPhaseSummaryResult": + return SustainabilityPhaseSummaryResult( + name=result.phase, + embodied_energy=cls.create_unitted_value(result.embodied_energy), + embodied_energy_percentage=result.embodied_energy_percentage, + climate_change=cls.create_unitted_value(result.climate_change), + climate_change_percentage=result.climate_change_percentage, + ) + + @classmethod + def create_transport_summary( + cls, + result: models.CommonSustainabilityTransportSummaryEntry + ) -> "TransportSummaryResult": + reference_type = cls.parse_reference_type(result.record_reference.reference_type) + return TransportSummaryResult( + reference_type=reference_type, + reference_value=result.record_reference.reference_value, + name=result.stage_name, + distance=cls.create_unitted_value(result.distance), + embodied_energy=cls.create_unitted_value(result.embodied_energy), + embodied_energy_percentage=result.embodied_energy_percentage, + climate_change=cls.create_unitted_value(result.climate_change), + climate_change_percentage=result.climate_change_percentage, + ) + + @classmethod + def create_material_summary( + cls, + result: models.CommonSustainabilityMaterialSummaryEntry + ) -> "MaterialSummaryResult": + reference_type = cls.parse_reference_type(result.record_reference.reference_type) + """#TODO docs""" + # TODO one of these is a bucket for all other materials that do not contribute >2% EE. Worth separating it? + # It does not have a valid record reference or contributors. + return MaterialSummaryResult( + reference_type=reference_type, + reference_value=result.record_reference.reference_value, + name=result.name, + embodied_energy=cls.create_unitted_value(result.embodied_energy), + embodied_energy_percentage=result.embodied_energy_percentage, + climate_change=cls.create_unitted_value(result.climate_change), + climate_change_percentage=result.climate_change_percentage, + mass_after_processing=cls.create_unitted_value(result.mass_after_processing), + mass_before_processing=cls.create_unitted_value(result.mass_before_processing), + contributors=[ + cls.create_contributing_component(component) + for component in result.largest_contributors + ] if result.largest_contributors else [] + ) + + @classmethod + def create_contributing_component( + cls, + result: models.CommonSustainabilityMaterialContributingComponent + ) -> "ContributingComponentResult": + """#TODO docs""" + reference_type = cls.parse_reference_type(result.record_reference.reference_type) + return ContributingComponentResult( + reference_type=reference_type, + reference_value=result.record_reference.reference_value, + material_mass_before_processing=cls.create_unitted_value(result.material_mass_before_processing), + name=result.component_name, + ) + + @classmethod + def create_process_summary(cls, result: models.CommonSustainabilityProcessSummaryEntry) -> "ProcessSummaryResult": + """#TODO docs""" + return ProcessSummaryResult( + material_name=result.material_name, + material_reference=MaterialDefinition( + reference_type=cls.parse_reference_type(result.material_record_reference.reference_type), + reference_value=result.material_record_reference.reference_value, + ), + process_name=result.process_name, + process_reference=ProcessReference( + reference_type=cls.parse_reference_type(result.process_record_reference.reference_type), + reference_value=result.process_record_reference.reference_value, + ), + embodied_energy=cls.create_unitted_value(result.embodied_energy), + embodied_energy_percentage=result.embodied_energy_percentage, + climate_change=cls.create_unitted_value(result.climate_change), + climate_change_percentage=result.climate_change_percentage, + ) + @staticmethod def parse_reference_type(reference_type: str) -> ReferenceType: """Parse the ``reference_type`` returned by the low-level API into a ``ReferenceType``. @@ -2003,17 +2093,18 @@ class ProcessWithSustainabilityResult( """ +# TODO: Response will include transport stage name (TransportReference -> TransportDefinition) class TransportWithSustainabilityResult( SustainabilityResultMixin, TransportReference, ): + # TODO Check Reference documentation. Should probably include guids """Describes a transport stage included as part of a sustainability query result. This object includes two categories of attributes: - The reference to the transport in Granta MI (if the part references a record) - The sustainability information for this transport stage - Attributes ---------- record_history_identity : int, optional @@ -2032,3 +2123,283 @@ class TransportWithSustainabilityResult( Objects of this class are only returned as the result of a query. The class is not intended to be instantiated directly. """ + + +class SustainabilitySummaryMixin: + # TODO reuse existing SusResultMixin? + """Adds sustainability summary results to a class. + + Parameters + ---------- + embodied_energy : :class:`~ansys.grantami.bomanalytics._item_results.ValueWithUnit` + Represents the direct and indirect energy use. Based on cumulative energy demand method developed by ecoinvent. + embodied_energy_percentage : float + Represents the percentage contribution of the item to total embodied energy of the parent collection. + climate_change : :class:`~ansys.grantami.bomanalytics._item_results.ValueWithUnit` + Estimates global warming potential considering emissions of different gases reported as carbon dioxide + equivalents (CO2-eq.). Based on Intergovernmental Panel on Climate Change (IPCC) method. + climate_change_percentage : float + Represents the percentage contribution of the item to total climate change of the parent collection. + **kwargs + Contains arguments handled by other mixins or base classes, e.g. ``reference_type`` and ``reference_value`` + for ``RecordDefinition``-based objects. + """ + def __init__( + self, + embodied_energy: ValueWithUnit, + embodied_energy_percentage: float, + climate_change: ValueWithUnit, + climate_change_percentage: float, + **kwargs: Any, + ) -> None: + super().__init__(**kwargs) + self._embodied_energy = embodied_energy + self._embodied_energy_percentage = embodied_energy_percentage + self._climate_change = climate_change + self._climate_change_percentage = climate_change_percentage + + @property + def embodied_energy(self) -> ValueWithUnit: + """ + Represents the direct and indirect energy use. Based on cumulative energy demand method developed by ecoinvent. + """ + return self._embodied_energy + + @property + def embodied_energy_percentage(self) -> float: + """ + Represents the percentage contribution of the item to total embodied energy of the parent collection. + """ + return self._embodied_energy_percentage + + @property + def climate_change(self) -> ValueWithUnit: + """ + Estimates global warming potential considering emissions of different gases reported as carbon dioxide + equivalents (CO2-eq.). Based on Intergovernmental Panel on Climate Change (IPCC) method. + """ + return self._climate_change + + @property + def climate_change_percentage(self) -> float: + """ + Represents the percentage contribution of the item to total climate change of the parent collection. + """ + return self._climate_change_percentage + + +# TODO: Consider alternatives for name. Ideally we'd prefer the docs for the property to be specific to the parent, e.g. +# "The name of the part." +class NamedItemMixin: + """Adds a name to a class. + + Parameters + ---------- + name : str + Name of the item. + **kwargs + Contains arguments handled by other mixins or base classes, e.g. ``reference_type`` and ``reference_value`` + for ``RecordDefinition``-based objects. + """ + def __init__( + self, + name: str, + **kwargs, + ): + super().__init__(**kwargs) + self._name = name + + @property + def name(self) -> str: + """ + Item name. + """ + return self._name + + +class SustainabilityPhaseSummaryResult(NamedItemMixin, SustainabilitySummaryMixin): + """ + High-level sustainability summary for a phase. + + Phases currently include: + + - ``Material`` + - ``Processes`` + - ``Transport`` + + """ + + +class TransportDefinition(TransportReference): + def __init__( + self, + reference_type: ReferenceType, + reference_value: Union[int, str, None], + name: str, + distance: ValueWithUnit + ): + super().__init__( + reference_type=reference_type, + reference_value=reference_value, + ) + self._name = name + self._distance = distance + + @property + def name(self) -> str: + """Name of the transport stage.""" + return self._name + + @property + def distance(self) -> ValueWithUnit: + """Distance travelled in the transport stage.""" + return self._distance + + +# TODO: Standardize documentation approach. For PR, used inherited properties to avoid reviewing the same string N times. +# Still documenting guids/identities as attributes, but they could also be defined as inherited properties +class TransportSummaryResult(SustainabilitySummaryMixin, TransportDefinition): + """ + Sustainability summary for a transport stage. + + Attributes + ---------- + record_history_identity : int, optional + Record history identity. + record_history_guid : str, optional + Record history GUID. + record_guid : str, optional + Record GUID. + """ + + +class ContributingComponentResult(NamedItemMixin, PartDefinition): + """ + Identifies a Part as one the largest contributors to the environmental footprint of a material. + + Attributes + ---------- + record_history_identity : int, optional + Record history identity. + part_number : str, optional + Part number. + record_history_guid : str, optional + Record history GUID. + record_guid : str, optional + Record GUID. + """ + def __init__( + self, + material_mass_before_processing: ValueWithUnit, + **kwargs, + ): + super().__init__(**kwargs) + self._material_mass_before_processing = material_mass_before_processing + + @property + def material_mass_before_processing(self) -> ValueWithUnit: + """ + Original mass of parent material prior to any subtractive processing (i.e. removal of material). + """ + return self._material_mass_before_processing + + +class MaterialSummaryResult(SustainabilitySummaryMixin, NamedItemMixin, RecordReference): + """ + Aggregated sustainability summary for a material. + + Describes the environmental footprint of a unique material, accounting for all occurrences of the material in BoM. + + Attributes + ---------- + record_history_identity : int, optional + Record history identity. + record_history_guid : str, optional + Record history GUID. + record_guid : str, optional + Record GUID. + """ + # TODO what makes a part be listed as a contributor? mass percentage threshold? + def __init__( + self, + mass_before_processing: ValueWithUnit, + mass_after_processing: ValueWithUnit, + contributors: List[ContributingComponentResult], + **kwargs, + ): + super().__init__(**kwargs) + self._mass_before_processing = mass_before_processing + self._mass_after_processing = mass_after_processing + self._contributors = contributors + + @property + def mass_before_processing(self) -> ValueWithUnit: + """ + Original mass of material prior to any subtractive processing (i.e. removal of material). Environmental + footprint for primary production of material and/or primary processing is calculated based on this mass. + """ + return self._mass_before_processing + + @property + def mass_after_processing(self) -> ValueWithUnit: + """Mass of material after any subtractive processing.""" + return self._mass_after_processing + + @property + def contributors(self) -> List[ContributingComponentResult]: + """Components containing the most of this material.""" + # TODO document aggregation method? + # TODO translate docstring to actual English + return self._contributors + + +# TODO has two names: breaks the NamedItemMixin approach +# TODO has two refs (process + material): breaks the Mixin approach for refs +class ProcessSummaryResult(SustainabilitySummaryMixin): + """ + Aggregated sustainability summary for a process, applied to a unique material. + + Describes the environmental footprint of a process, accounting for all occurrences of the process-material pair + found in the BoM. + """ + def __init__( + self, + material_name: str, + material_reference: MaterialDefinition, + process_name: str, + process_reference: ProcessReference, + **kwargs, + ): + super().__init__(**kwargs) + self._material_name = material_name + self._material_reference = material_reference + self._process_name = process_name + self._process_reference = process_reference + + @property + def material_name(self) -> str: + """ + Material name. + """ + return self._material_name + + @property + def material_reference(self) -> MaterialDefinition: + """ + Material record reference. + """ + return self._material_reference + + @property + def process_name(self) -> str: + """ + Process name. + """ + return self._process_name + + @property + def process_reference(self) -> ProcessReference: + """ + Process record reference. + """ + return self._process_reference diff --git a/src/ansys/grantami/bomanalytics/_query_results.py b/src/ansys/grantami/bomanalytics/_query_results.py index 6bd400eb..5ad0d630 100644 --- a/src/ansys/grantami/bomanalytics/_query_results.py +++ b/src/ansys/grantami/bomanalytics/_query_results.py @@ -21,6 +21,10 @@ ImpactedSubstance, PartWithSustainabilityResult, TransportWithSustainabilityResult, + SustainabilityPhaseSummaryResult, + TransportSummaryResult, + MaterialSummaryResult, + ProcessSummaryResult, ) from .indicators import WatchListIndicator, RoHSIndicator @@ -807,10 +811,6 @@ def parts(self) -> List[PartWithSustainabilityResult]: """Sustainability information for each root part included in the BoM specified in the original query. - Returns - ------- - list[:class:`~ansys.grantami.bomanalytics._item_results.PartWithSustainabilityResult`] - Examples -------- >>> result: BomSustainabilityQueryResult @@ -824,10 +824,6 @@ def transport_stages(self) -> List[TransportWithSustainabilityResult]: """Sustainability information for each transport stage included in the BoM specified in the original query. - Returns - ------- - list[:class:`~ansys.grantami.bomanalytics._item_results.TransportWithSustainabilityResult`] - Examples -------- >>> result: BomSustainabilityQueryResult @@ -839,6 +835,13 @@ def transport_stages(self) -> List[TransportWithSustainabilityResult]: @QueryResultFactory.register(models.GetSustainabilitySummaryForBom2301Response) class BomSustainabilitySummaryQueryResult(ResultBaseClass): + """Describes the result of running a :class:`~ansys.grantami.bomanalytics.queries.BomSustainabilitySummaryQuery`. + + Notes + ----- + Objects of this class are only returned as the result of a query. The class is not intended to be instantiated + directly. + """ def __init__( self, results: List[models.GetSustainabilitySummaryForBom2301Response], @@ -846,4 +849,140 @@ def __init__( ) -> None: super().__init__(messages) self._response = results[0] - # TODO + + self._transport_summary = ItemResultFactory.create_phase_summary(self._response.transport_summary.phase_summary) + self._material_summary = ItemResultFactory.create_phase_summary(self._response.material_summary.phase_summary) + self._process_summary = ItemResultFactory.create_phase_summary(self._response.process_summary.phase_summary) + + self._transport_details: List[TransportSummaryResult] = [ + ItemResultFactory.create_transport_summary(transport) + for transport in self._response.transport_summary.summary + ] + self._material_details: List[MaterialSummaryResult] = [ + ItemResultFactory.create_material_summary(material) + for material in self._response.material_summary.summary + ] + + self._primary_processes_details: List[ProcessSummaryResult] = [ + ItemResultFactory.create_process_summary(process) + for process in self._response.process_summary.primary_processes + ] + self._secondary_processes_details: List[ProcessSummaryResult] = [ + ItemResultFactory.create_process_summary(process) + for process in self._response.process_summary.secondary_processes + ] + self._joining_and_finishing_processes_details: List[ProcessSummaryResult] = [ + ItemResultFactory.create_process_summary(process) + for process in self._response.process_summary.joining_and_finishing_processes + ] + # High level summaries: + # - provide list of all phases -> allow generic plotting/reporting of all phases indistinctively + # - provide individual phase summaries -> allow direct access without iterating through all phases + + @property + def phases_summary(self) -> List[SustainabilityPhaseSummaryResult]: + """ + Sustainability summary for all phases. + """ + return [self._material_summary, self._process_summary, self._transport_summary] + + @property + def transport(self) -> SustainabilityPhaseSummaryResult: + """ + Sustainability summary for the transport phase. + + Values in percentages express the contribution of this phase, relative to contributions of all phases. + """ + return self._transport_summary + + @property + def material(self) -> SustainabilityPhaseSummaryResult: + """ + Sustainability summary for the material phase. + + Values in percentages express the contribution of this phase, relative to contributions of all phases. + """ + return self._material_summary + + @property + def process(self) -> SustainabilityPhaseSummaryResult: + """ + Sustainability summary for the process phase. + + Values in percentages express the contribution of this phase, relative to contributions of all phases. + """ + return self._process_summary + + @property + def transport_details(self) -> List[TransportSummaryResult]: + # TODO confirm it is ALL and not some above threshold + Aggregated Other + """ + Summary information for all transport stages. + + Values in percentages express the contribution of the specific transport stage, relative to contributions of all + transport stages. + """ + return self._transport_details + + @property + def material_details(self) -> List[MaterialSummaryResult]: + """ + Summary information for aggregated materials. + + Relative and absolute contributions for materials whose relative contributions exceed 2% of the total energy + for materials. + All materials found in the BoM, which do not exceed the threshold, are aggregated under a virtual + :class:`~ansys.grantami.bomanalytics._item_results.MaterialSummaryResult`, whose ``name`` property is equal to + ``Other``. + + Values in percentages express the contribution of the specific material, relative to contributions of all + materials. + """ + # TODO: Feature request: it would be nice if threshold could be a request arg + return self._material_details + + @property + def primary_processes_details(self) -> List[ProcessSummaryResult]: + """ + Summary information for primary processes, aggregated by process and the material it is applied to. + + The returned list includes all primary processes whose relative contributions exceed 5% of the total energy of + all primary processes. Processes not exceeding the threshold are aggregated under a virtual + :class:`~ansys.grantami.bomanalytics._item_results.ProcessSummaryResult`, whose + :attr:`~ansys.grantami.bomanalytics._item_results.ProcessSummaryResult.process_name` is equal to ``Other``. + + Values in percentages express the contribution of the specific process, relative to contributions of all + primary processes. + """ + return self._primary_processes_details + + @property + def secondary_processes_details(self) -> List[ProcessSummaryResult]: + """ + Summary information for secondary processes, aggregated by process and the material it is applied to. + + The returned list includes all secondary processes whose relative contributions exceed 5% of the total energy of + all secondary processes. Processes not exceeding the threshold are aggregated under a virtual + :class:`~ansys.grantami.bomanalytics._item_results.ProcessSummaryResult`, whose + :attr:`~ansys.grantami.bomanalytics._item_results.ProcessSummaryResult.process_name` is equal to ``Other``. + + Values in percentages express the contribution of the specific process, relative to contributions of all + secondary processes. + """ + return self._secondary_processes_details + + @property + def joining_and_finishing_processes_details(self) -> List[ProcessSummaryResult]: + """ + Summary information for joining and finishing processes, aggregated by process and the material it is applied + to. + + The returned list includes all joining and finishing processes whose relative contributions exceed 5% of the + total energy of all joining and finishing processes. Processes not exceeding the threshold are aggregated under + a virtual :class:`~ansys.grantami.bomanalytics._item_results.ProcessSummaryResult`, whose + :attr:`~ansys.grantami.bomanalytics._item_results.ProcessSummaryResult.process_name` is equal to ``Other``. + + Values in percentages express the contribution of the specific process, relative to contributions of all + joining and finishing processes. + """ + return self._joining_and_finishing_processes_details diff --git a/src/ansys/grantami/bomanalytics/queries.py b/src/ansys/grantami/bomanalytics/queries.py index 7fb8007f..8d288fe9 100644 --- a/src/ansys/grantami/bomanalytics/queries.py +++ b/src/ansys/grantami/bomanalytics/queries.py @@ -1813,9 +1813,6 @@ class BomSustainabilityQuery( ): """Evaluates sustainability impact for a BoM in the Ansys Granta 2301 XML BoM format. - All BoM-based queries only operate on a single BoM. As a result, the ``.with_batch_size()`` method is not - implemented for BoM-based queries. - The methods used to configure units and add the BoM to this query return the query itself so that they can be chained together as required. @@ -1842,4 +1839,24 @@ class BomSustainabilitySummaryQuery( api_method="post_sustainabilitysummary_bom2301", request_type=models.GetSustainabilitySummaryForBom2301Request, ): - pass + """ + Evaluates sustainability impact for a BoM in the Ansys Granta 2301 XML BoM format and returns aggregated metrics. + + The methods used to configure units and add the BoM to this query return the query itself so that they can be + chained together as required. + + Once the query is fully constructed, use the `cxn.` + :meth:`~ansys.grantami.bomanalytics._connection.BomAnalyticsClient.run` method to return a result of type + :class:`~ansys.grantami.bomanalytics._query_results.BomSustainabilitySummaryQueryResult`. + + Examples + -------- + >>> cxn = Connection("http://my_mi_server/mi_servicelayer").with_autologon().connect() + >>> bom = ">> query = ( + ... BomSustainabilitySummaryQuery() + ... .with_bom(bom) + ... ) + >>> cxn.run(query) + + """ diff --git a/tests/inputs/__init__.py b/tests/inputs/__init__.py index 2d137ef4..cbd4f085 100644 --- a/tests/inputs/__init__.py +++ b/tests/inputs/__init__.py @@ -14,3 +14,8 @@ _bom_2301_path = pathlib.Path(__file__).parent / "bom-2301.xml" with open(_bom_2301_path, "r") as f: sample_bom_2301 = f.read() + +_complex_bom_2301_path = pathlib.Path(__file__).parent / "bom-2301-complex.xml" +with open(_complex_bom_2301_path, "r") as f: + sample_bom_2301_complex = f.read() + diff --git a/tests/inputs/bom-2301-complex.xml b/tests/inputs/bom-2301-complex.xml new file mode 100644 index 00000000..349c881a --- /dev/null +++ b/tests/inputs/bom-2301-complex.xml @@ -0,0 +1,25544 @@ + + + + + 1 + 69.514788766165637 + 2edd8862 + part_2edd8862-ace1-4911-87c8-70c3c78b52d4 + 2edd8862-ace1-4911-87c8-70c3c78b52d4 + + + 9 + 99.9752668198083 + 767e11c2 + part_767e11c2-8ed5-4348-b3a2-3595f3a20fae + 767e11c2-8ed5-4348-b3a2-3595f3a20fae + + + 1 + 54.003711349332576 + a0f7f357 + part_a0f7f357-2e54-4f03-9187-b15cc3836f14 + a0f7f357-2e54-4f03-9187-b15cc3836f14 + + + 8 + 5.1849543606792361 + 16b848a3 + part_16b848a3-e1f1-4b92-9532-ba54b8ac2457 + 16b848a3-e1f1-4b92-9532-ba54b8ac2457 + + + 20.920569738801834 + + MI_Restricted_Substances + 71a3cd24-5128-46e5-8ef8-9ca8b5ed9892 + + 50% glass and mineral filled + PA46 (50% glass and mineral filled) + 064e366e-d6a5-46c9-879f-c9a410ede6dc + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 10263c71-b6d0-4cbf-b766-87587f080397 + MassRemoved + 10.937888925400511 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + ffb05405-d056-41b4-a383-b9cce86f751e + Mass + 100 + + + + + 9.8849287826497712 + + MI_Restricted_Substances + 1a9ca626-1709-4d7b-954c-65aa69bf6536 + + YS300, cold rolled + High strength low alloy steel, YS300, cold rolled + d0024420-607f-4df3-bc95-a54d8d229458 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + e2cddf27-4ea2-463e-b282-13eaeca17fbb + Mass + 100 + + + + + 9.8849287826497712 + + MI_Restricted_Substances + dce2dc34-54db-4d0a-bab0-85d4e6e08d8e + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 6150, oil quenched & tempered at 650°C + 0765cf01-c96b-45ed-9122-69a5a248d1c2 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + e97413f5-f82c-4427-ba8a-b8b5e88b9ff4 + MassRemoved + 44.451249039010726 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 9b96d8f5-da0d-4177-9266-1eb3a6d7e3f7 + Mass + 100 + + + + + 9.8849287826497712 + + MI_Restricted_Substances + 2b606408-37c3-4801-a307-dda7384ff7cc + + Glass/phenolic honeycomb, 0°/90° fabric (0.072) + Glass/phenolic honeycomb, 0°/90° fabric (0.072), W Direction + ff90d60e-13d4-4c5a-919f-ab1031be0717 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + d78d10a0-f89a-4089-84e9-d64e97e93e5c + Mass + 100 + + + + + 9.8849287826497712 + + MI_Restricted_Substances + e721d8b7-256a-4b7b-af09-6b40d8309979 + + water quenched & tempered at 425°C + Carbon steel, AISI 1040, water quenched & tempered at 425°C + 8d73a9ca-bb77-43e4-8fa4-8946507c3096 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + a341e1db-07ff-416c-a5c6-d24c5a231984 + Mass + 100 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + 9c61bce8-ca3e-4abf-9c83-a3f216749256 + Mass + 100 + + + + + 9.8849287826497712 + + MI_Restricted_Substances + 5303364c-b06b-40d9-bca9-e0e2cd1d682c + + Normalized + Low alloy steel, AISI 8740, normalized + 6cf0a04f-e4ae-4fca-8562-dc1371963383 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 105fe4b9-ad2a-4d32-ab6f-bfa023a68b63 + Mass + 100 + + + + + 9.8849287826497712 + + MI_Restricted_Substances + 817b973c-3e12-4b5f-96b3-89b05d14d76c + + ASTM A500 Grade C + Structural steel, ASTM A500 Grade C + f7778c27-d8c0-4a32-b08f-454c5183182a + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 6933fd5a-02a4-4af0-a422-d49aff160f77 + Mass + 100 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + c08d5b0f-ccac-498b-b52f-396787c0a6c5 + Mass + 100 + + + + + 9.8849287826497712 + + MI_Restricted_Substances + 3f3508d4-1ff6-40ea-a45f-04de1cb740f7 + + 300M (low carbon), quenched & tempered + Low alloy steel, 300M (low carbon), quenched & tempered + a749da65-2c9c-422c-90b7-22ee8412334e + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 04911b2a-f9e3-494a-bbe0-60c75b8b2d24 + Mass + 100 + + + + + 9.8849287826497712 + + MI_Restricted_Substances + a403e867-5052-44f9-b24b-5b11a3860cf4 + + Glass/polyimide honeycomb, ±45° fabric (0.051) + Glass/polyimide honeycomb, ±45° fabric (0.051), W Direction + 91962407-dccf-4f25-a1cd-f0ae3a85a62e + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 54c1f697-44bb-4b4a-a2b2-02864c24a2fe + Mass + 100 + + + + + + + 3 + 96.109122408604776 + 72362b93 + part_72362b93-bb7a-40f6-a225-4c78654ccc16 + 72362b93-bb7a-40f6-a225-4c78654ccc16 + + + 74.637706798798263 + + MI_Restricted_Substances + 93e14fb3-4376-4df5-9d31-299bee56ea49 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 4340, oil quenched & tempered at 540°C + 3cc47072-1ea4-4d94-94a0-59687596368f + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 2008c572-5a8f-42f2-8aa1-7fe8164b9264 + Area + 75.70770502821901 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + b5c8e19d-9b00-4a92-a45a-2a64e07f2ebc + Mass + 100 + + + + + 6.3405733003004343 + + MI_Restricted_Substances + b872537b-c0a0-4c3e-8388-e5544183cdd3 + + water quenched & tempered at 425°C + Carbon steel, AISI 1030, water quenched & tempered at 425°C + 81a776a8-6893-44b3-9a12-42398e147b6e + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 0588f4d7-f328-45b6-bd55-912e0f26452c + Length + 74.041760467943632 + + + + + 6.3405733003004343 + + MI_Restricted_Substances + a6b1ab49-1d3b-4551-9345-3bf24da33ec1 + + As rolled + Carbon steel, AISI 1144, as rolled + 0559b5da-6817-4676-8058-8375c6a6be10 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + a2b0bdd8-dd12-4b7f-b778-4e0649297d12 + Mass + 100 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 16b6404c-7eec-40ae-b4f9-3d3c9cd6f5e9 + Mass + 100 + + + + + 6.3405733003004343 + + MI_Restricted_Substances + 09469002-6519-4b02-bdd9-f385d0a44d2f + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 9260, oil quenched & tempered at 540°C + 77d49906-e661-4a85-8156-d8f3d73a92dc + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 46f5cd87-7e01-45cf-b6f5-860967d7589d + MassRemoved + 16.564626766631672 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 1f8d1845-5df3-44bf-9c93-6537b540b155 + Mass + 100 + + + + + 6.3405733003004343 + + MI_Restricted_Substances + e62ec0fe-66ca-4b17-88d1-609c5568e318 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 4340, oil quenched & tempered at 650°C + 9d559c57-5793-4793-bd28-ed84fb779ea0 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 1bd74c29-bc15-4b36-a47d-8fdb63b109e2 + Mass + 100 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 317bf483-7b41-4304-9448-09649ebf64f2 + Mass + 100 + + + + + + + 5 + 81.58610923289605 + 08d30467 + part_08d30467-d47a-48ad-8369-2ae0fd4a610a + 08d30467-d47a-48ad-8369-2ae0fd4a610a + + + 7 + 58.340847286554443 + 5afcdec3 + part_5afcdec3-66ab-4879-be37-65cdd51b3869 + 5afcdec3-66ab-4879-be37-65cdd51b3869 + + + 6 + 77.608761087809114 + 5df40cce + part_5df40cce-ebd8-405e-87b9-bc32fb7bcb9f + 5df40cce-ebd8-405e-87b9-bc32fb7bcb9f + + + 86.334570211514162 + + MI_Restricted_Substances + 2017a3b5-88e7-473f-b7c9-1ab8afe722fe + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 5160, oil quenched & tempered at 540°C + 3b23bf68-8640-40ed-a435-afdff06555ec + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + 37108ceb-3daa-40b1-a5b6-569d95423517 + Mass + 100 + + + + + 1.9522042554979768 + + MI_Restricted_Substances + 33160988-8422-40e2-93d1-e3e7467eafe9 + + Normalized + Carbon steel, AISI 1030, normalized + f28cde90-f4f6-447e-a172-155b0de30e10 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 91fa5230-7620-4fa4-baab-2f5d1c016d8f + Mass + 100 + + + + + 1.9522042554979768 + + MI_Restricted_Substances + 5ed89a0b-5f7a-43b7-b9cb-3db4035f942f + + Glass/phenolic honeycomb, 0°/90° fabric (0.072) + Glass/phenolic honeycomb, 0°/90° fabric (0.072), L Direction + 4bde2a84-4758-4c2b-b06d-2c0688011310 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 0fa2b71b-f530-4884-a8de-b25713b85054 + MassRemoved + 64.461322484752785 + + + + + 1.9522042554979768 + + MI_Restricted_Substances + a01be0be-96e7-4123-b061-dfdbba1f1748 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 4037, oil quenched & tempered at 315°C + 1f200c4e-66c9-41a9-94cc-67a0fac88829 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 8f8d0342-3ef2-4965-8f76-a154e1a45705 + Mass + 100 + + + + + 1.9522042554979768 + + MI_Restricted_Substances + 496cca2a-43ad-4943-9e9b-23076f2e3a5c + + Glass/polyimide honeycomb, ±45° fabric (0.128) + Glass/polyimide honeycomb, ±45° fabric (0.128), L Direction + a386b2fd-bc60-4cdf-a33f-e69c5a75539e + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + e69b87a3-49c0-42e5-81e8-73bc9a5ba208 + Mass + 100 + + + + + 1.9522042554979768 + + MI_Restricted_Substances + 3b122722-399e-43ad-bc30-86f556db96e7 + + Stainless steel, terne coated + Coated steel, stainless steel, terne coated + 07d04467-4714-4163-834b-1a149cde2fef + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 5704161a-a022-4303-b808-ab16fba90bdb + Mass + 100 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + b2cda790-0c8a-4dd2-ab76-f0d2540c8cfa + Mass + 72.577107871220036 + + + + + 1.9522042554979768 + + MI_Restricted_Substances + 2017a3b5-88e7-473f-b7c9-1ab8afe722fe + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 5160, oil quenched & tempered at 540°C + c3a81cf6-3677-4edf-8d88-2da112b80d69 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 99b9a1db-9782-4890-a5b9-bad13fbf8714 + Mass + 100 + + + + + 1.9522042554979768 + + MI_Restricted_Substances + b01d2f15-7182-442c-ac97-e7c259e8169d + + Annealed + Low alloy steel, AISI 9310, annealed + bbfa5ab2-b25b-4911-a0be-e0d8e01f1e8e + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + def28e40-fc5e-4ecb-830b-b79d3207a90a + Mass + 100 + + + + + + + 2 + 74.089762882371318 + b9eb4836 + part_b9eb4836-f811-41e9-ad40-7f8fcc7c64e1 + b9eb4836-f811-41e9-ad40-7f8fcc7c64e1 + + + 86.285464179835031 + + MI_Restricted_Substances + 9cae15c6-b5b6-4ab9-9008-d962bee0e662 + + Glass/phenolic honeycomb, 0°/90° fabric (0.128) + Glass/phenolic honeycomb, 0°/90° fabric (0.128), L Direction + 966a9201-5491-4807-9abf-b884b78c31c9 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 96d371e7-648d-4ded-9ba8-ab2ffd4b9f9d + Area + 66.4792038809877 + + + + + 4.5715119400549895 + + MI_Restricted_Substances + dc5a66d7-3ba8-4879-b455-ac29d54cbf17 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 5150, oil quenched & tempered at 315°C + 20436c9f-d0c6-47b0-987f-cd98e65dfb36 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 2d1baf08-df85-4e41-b6e6-11becfd02d68 + Mass + 91.226553493750544 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 19cb429e-34eb-4a9a-b08a-b4dd94736fab + Mass + 100 + + + + + 4.5715119400549895 + + MI_Restricted_Substances + 88943d73-219a-4090-93e9-c0454a8b5ad5 + + FR-4.0 (Df < 0.015 at 10GHz), Epoxy/Glass fiber, PCB laminate + FR-4.0 (Df < 0.015 at 10GHz), Epoxy/Glass fiber, PCB laminate + d8fe04e2-9546-49c9-a7a7-363a17eb7c9f + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 45ca39ef-f00c-4e3c-8624-eb50a185f9f4 + Mass + 100 + + + + + 4.5715119400549895 + + MI_Restricted_Substances + b85ebb9e-b198-4497-ae8e-b9b61ecde102 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 5160, oil quenched & tempered at 315°C + 73bd3313-2941-4b17-a1ea-4f3f91438e52 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 893e1329-2a02-4d98-bc21-9b74ce683a30 + Length + 66.154401593913519 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 9fa58166-cf72-41d9-9a2c-caa998091110 + MassRemoved + 35.587200073333086 + + + + + + + 3 + 29.269366026515776 + 862f58e7 + part_862f58e7-67aa-42a2-87c3-516640f3d8f3 + 862f58e7-67aa-42a2-87c3-516640f3d8f3 + + + 31.686386993008846 + + MI_Restricted_Substances + 034898f1-834f-4079-a0d3-65fffc17cb4d + + Silica (quartz fused) + Silica (quartz fused) + a3e3a1db-cb4e-438b-940e-faa5eedb5dda + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 8af392e4-7d44-4f7d-8842-b4bbafcf94d5 + MassRemoved + 49.642271944155112 + + + + + 11.385602167831857 + + MI_Restricted_Substances + 2befe0b1-24d6-401d-9a98-97e6fe8668bb + + Annealed + Low alloy steel, AISI 9255, annealed + 5fb97d30-7560-4200-891e-c5ec639bc300 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 2963e8a2-6456-4d71-bb03-9bca208dcdd9 + Mass + 14.288251527719318 + + + + + 11.385602167831857 + + MI_Restricted_Substances + 6d658600-d198-46ed-bcca-cd0e3e2f5f4d + + Oil quenched & tempered at 425°C + Carbon steel, AISI 1060, oil quenched & tempered at 425°C + fdd7f75c-224f-49fd-ae6c-99c47d60353a + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + afc22575-39ad-439f-bd40-0e3f938417fe + Area + 93.197569946384789 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + 4b0ec717-4d41-4cc1-a951-c1a8c8f7c068 + Area + 63.146052492384818 + + + + + 11.385602167831857 + + MI_Restricted_Substances + 6e6b280b-c24a-40b9-a181-4586c4b341c2 + + SAE 4335M, cast, quenched & tempered + Low alloy steel, SAE 4335M, cast, quenched & tempered + af2d314f-1fb4-41c4-aea0-7d2cf06fc241 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 77617534-de47-403a-80e1-676aff0839f6 + Mass + 100 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + b56d23f0-f522-47e7-83af-7d376b81216a + Mass + 100 + + + + + 11.385602167831857 + + MI_Restricted_Substances + 2096ca77-9981-4fd5-9bc6-afe56b3bbbd4 + + Glass/phenolic honeycomb, 0°/90° fabric (0.096) + Glass/phenolic honeycomb, 0°/90° fabric (0.096), W Direction + 1077ef3b-714e-45d4-a5d7-85269fab040b + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 86ca949d-a134-4ef1-abd8-e2704ae62c38 + Mass + 100 + + + + + 11.385602167831857 + + MI_Restricted_Substances + af0c74e2-f44f-4698-a194-c3f6496a73fa + + Quenched & tempered + Low alloy steel, AISI 4135, air melted, quenched & tempered + 135bdc9a-42cb-4cbb-8904-6663153b3a1d + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + a7e5e15b-2672-4d54-b6a8-e37d01edd6b8 + Length + 92.914500363596957 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 0934bebd-6784-4368-a792-3d6cf632bd1e + MassRemoved + 96.551685964945548 + + + + + 11.385602167831857 + + MI_Restricted_Substances + 90514ab4-75b3-48a9-9a07-98eb8f83ef81 + + As rolled + Carbon steel, AISI 1015, as rolled + fef0eedb-3e60-4db6-b002-21aa58a8daf7 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 87322eda-6234-471b-8bb6-ad0b0223439b + Mass + 100 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + e56d3e3a-cbb1-4fe9-8bc8-db7afc99adc6 + Mass + 100 + + + + + + + 5 + 62.366695032625785 + fd8d642b + part_fd8d642b-af21-46e6-afc1-f2f8b0e21b43 + fd8d642b-af21-46e6-afc1-f2f8b0e21b43 + + + 45.501643580152489 + + MI_Restricted_Substances + b3d89bcf-5e9a-4fe8-a953-98ceb384b8a3 + + water quenched & tempered at 650°C + Carbon steel, AISI 1030, water quenched & tempered at 650°C + 9b8384ef-1579-4b88-b189-215e3d38d262 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 8e326262-e605-41e3-87f6-5a0f717e2347 + Mass + 100 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + eb1f17a9-42d9-47d6-a277-6d478a4dd7e2 + Length + 18.679241472240186 + + + + + 18.166118806615838 + + MI_Restricted_Substances + 55c8dd10-b62f-4136-b1c8-6260fcec05cc + + Annealed + Carbon steel, AISI 1040, annealed + 411ce775-02cf-481d-b199-97032ed29d4f + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 6f9878f7-4b1e-483e-a855-e06ac6b01914 + Area + 70.615824763949874 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 14c8e637-d272-4179-bcba-5b835682e9d7 + Mass + 100 + + + + + 18.166118806615838 + + MI_Restricted_Substances + 924b3986-e315-4b28-9daa-56a075aa18e9 + + Annealed + Low alloy steel, AISI 52100, annealed + 431c8143-a497-47c1-85e0-ffffa2053e8b + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + f447c5c2-b1d4-49a9-b6b8-09ad043dfc9e + Area + 37.985985371277657 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 7e7ae2be-fcf4-4959-b548-d0086e941ca1 + Mass + 100 + + + + + 18.166118806615838 + + MI_Restricted_Substances + 7bb749f5-f155-4528-bd9b-59c2c0796b40 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 4140, oil quenched & tempered at 650°C + f5eb794e-27b9-4ddc-b870-db994c597db4 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 60aaea04-97ed-404a-8fbc-38943d3d5474 + Length + 54.648982432973092 + + + + + + + 7 + 2.4350128147914134 + 7975cf31 + part_7975cf31-1767-4df5-9f29-aa34a15f7cce + 7975cf31-1767-4df5-9f29-aa34a15f7cce + + + 55.304021088082358 + + MI_Restricted_Substances + 190cf17e-dbc1-40c7-a3d1-cc776977cb47 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 50B46, oil quenched & tempered at 650°C + ba83beb2-043a-40b2-8d3f-d0ae0fec847a + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 9b19dea1-9ffb-40e5-bba1-982ad7a4bc39 + MassRemoved + 63.368757983375687 + + + + + 11.173994727979411 + + MI_Restricted_Substances + daa4f620-4e8c-4670-b517-9cbca2154c44 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 5130, oil quenched & tempered at 315°C + be7599d8-421d-4054-b5dc-fe7be813aca1 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + c4c67b2f-7b8f-4989-bcd4-ccc2166fd211 + Area + 40.5453653263605 + + + + + 11.173994727979411 + + MI_Restricted_Substances + 8ef69f01-44dd-4b96-ac5c-731bff7ceb6c + + Glass ceramic - 9606 + Glass ceramic - 9606 + 966349fa-ddb8-4eea-bae6-e85f731ce179 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + c20a9763-e8a7-46a7-ba02-d7e92f319231 + Mass + 100 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 0ced7fbc-5ef4-409f-822b-08ce98d0dc83 + MassRemoved + 66.840701441672024 + + + + + 11.173994727979411 + + MI_Restricted_Substances + 6ee51b17-7fe0-46fd-8e32-a71585a34000 + + 40-45% glass and mineral + PBT (40-45% glass and mineral) + eef55f76-06b8-4345-baaa-b63d6726e571 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + a7848db7-c57e-4c94-9aa6-3a2916b19738 + Mass + 100 + + + + + 11.173994727979411 + + MI_Restricted_Substances + 0a203f13-4112-4c7b-8d17-bd9ce600f647 + + YS350, cold rolled + Dual phase steel, YS350, cold rolled + f0898add-5dbb-4f37-b205-3d06ebbc5d0b + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 60a689e4-7b96-4f29-be3e-4a47c344b98b + Mass + 100 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 5db7413f-3be8-49db-a34e-5a3270934554 + Mass + 24.111555248550864 + + + + + + + 2 + 0.11838702490478149 + 5bcd7ed0 + part_5bcd7ed0-2e39-42ff-a746-c455faca941d + 5bcd7ed0-2e39-42ff-a746-c455faca941d + + + 31.809815034181728 + + MI_Restricted_Substances + 9a48479a-292f-4bdd-aab5-0ad0835d7480 + + Oil quenched & tempered at 205°C + Carbon steel, AISI 1095, oil quenched & tempered at 205°C + 9a15c711-a161-42a2-a9b1-b26fe16575a0 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 8a3a5758-48b7-40d6-818f-703ec1cd289f + MassRemoved + 6.9798740590828814 + + + + + 9.7414549951168965 + + MI_Restricted_Substances + 0a203f13-4112-4c7b-8d17-bd9ce600f647 + + YS350, cold rolled + Dual phase steel, YS350, cold rolled + b35d0c2b-2dc1-44f8-8a66-8dc93bc65bac + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + 900e5516-afde-47e5-a410-07ea20aab158 + Mass + 100 + + + + + 9.7414549951168965 + + MI_Restricted_Substances + 2ab1643a-3aff-46c7-a249-21c58b33f214 + + Annealed + Carbon steel, AISI 1144, annealed + 6858c273-5411-40f7-99d5-1fa003402096 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 5611fa6a-e4f6-4072-81b1-78c3440a1324 + Mass + 100 + + + + + 9.7414549951168965 + + MI_Restricted_Substances + 29d2e9de-9de0-4ea9-9bff-3a1cee0c26e3 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 4037, oil quenched & tempered at 205°C + 911ed045-63a1-4f2e-a700-554eadbcc264 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 00fe288c-fad6-4303-a1e5-4f3d065f2d2b + Length + 35.872498031646245 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + a563c236-fd40-472d-a6d3-81debb12cb46 + Mass + 100 + + + + + 9.7414549951168965 + + MI_Restricted_Substances + 80d691ec-471b-4ef6-9060-a0e5cc0c1a91 + + Annealed + Carbon steel, AISI 1340, annealed + 9250893c-69f0-40bb-8668-efba7d2bfe6f + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + b10e57a9-906d-45e7-ad95-31cb30e993a3 + Length + 48.371697100052472 + + + + + 9.7414549951168965 + + MI_Restricted_Substances + 3e7feb56-09b4-498c-9966-c13b33dedccd + + water quenched & tempered at 205°C + Carbon steel, AISI 1137, water quenched & tempered at 205°C + 064ed8a8-2f06-4180-896d-8d850d1ca883 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + cadc9afd-fe49-4df7-8098-a4ddc0f4be4f + Mass + 100 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + f79dd6d1-4b2c-4708-9b6e-7dd40097d339 + MassRemoved + 42.443724462037778 + + + + + 9.7414549951168965 + + MI_Restricted_Substances + 9e11a8f7-0b35-4610-aee9-557a236bbe5c + + Soda borosilicate + Soda borosilicate + 40d9f571-bb28-47ec-a850-08b3ecb865ef + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 9ab5e351-8a29-4780-9b16-8c27d5c6fa07 + Mass + 100 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + 345503aa-c7f0-4221-9ce8-0eafddd4e4c2 + Length + 97.597338304667431 + + + + + 9.7414549951168965 + + MI_Restricted_Substances + 9d224642-fb07-41ce-8191-c9b152122364 + + Quenched & tempered + Intermediate alloy, Fe-9Ni-4Co-0.30C steel, quenched & tempered + cb3739a0-3d30-46d6-92f5-084983867378 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 50e8ccbc-6981-4512-a86c-56ac38788a3d + Mass + 100 + + + + + + + 9 + 49.6768989365906 + ebb8ffdf + part_ebb8ffdf-686d-41d7-9d9e-e9005283b434 + ebb8ffdf-686d-41d7-9d9e-e9005283b434 + + + 8.75198645924776 + + MI_Restricted_Substances + 45a257d5-da48-4520-9174-ffe7bbadcd1c + + Glass/phenolic honeycomb, ±45° fabric (0.088) + Glass/phenolic honeycomb, ±45° fabric (0.088), L Direction + f01c60bb-f680-45c1-85cd-acbd6e7c0e95 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + ab126da3-5938-4d75-bd59-964cdca979c8 + Mass + 100 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 4cea0757-a34b-4b3c-aa34-5b0686e2814b + Mass + 100 + + + + + 91.24801354075224 + + MI_Restricted_Substances + 827c892c-b90a-4b05-a8c4-ef1c047d8859 + + Glass/polyimide honeycomb, ±45° fabric (0.112) + Glass/polyimide honeycomb, ±45° fabric (0.112), W Direction + 70910778-cb6b-4d23-baba-c89dbff3ba59 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 5aac6bef-0c6b-4d84-bb59-584f21b02395 + Mass + 44.036692075448428 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 79f9f625-1e57-4d90-b886-ccc120129152 + Mass + 100 + + + + + + + 9 + 32.165753390717207 + 1d1de73b + part_1d1de73b-1743-4079-9578-1cf97e7becd8 + 1d1de73b-1743-4079-9578-1cf97e7becd8 + + + 79.606629293228792 + + MI_Restricted_Substances + b228f0f2-a947-4ee3-bdb9-00fdb153caff + + Glass ceramic (FC) + Glass ceramic (FC) + 8abd286f-4a84-4f43-b1be-46822033789e + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + 5dcdd898-398d-489a-b0a1-c783342ddb2f + Mass + 100 + + + + + 2.913338672395887 + + MI_Restricted_Substances + f8d1136f-3c1a-41e2-8b78-cf5f3965cba2 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 6150, oil quenched & tempered at 205°C + 3c55eb1b-5950-40e0-bb06-5647255227dc + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 0a89705d-324f-471c-9755-d476521034ab + Mass + 100 + + + + + 2.913338672395887 + + MI_Restricted_Substances + 827c892c-b90a-4b05-a8c4-ef1c047d8859 + + Glass/polyimide honeycomb, ±45° fabric (0.112) + Glass/polyimide honeycomb, ±45° fabric (0.112), W Direction + 6d01f042-4095-4b85-8eaf-8c8dbfcf8153 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 283d3bd7-bf80-470a-bf3a-cbcff32f7d28 + Area + 43.6113331204333 + + + + + 2.913338672395887 + + MI_Restricted_Substances + b879bb01-8648-4b5b-8159-d591cb251ca8 + + Normalized + Carbon steel, AISI 1080, normalized + 1d048369-92f6-44e8-84f2-30278212856b + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + 731a4ba2-d31e-4db1-8793-9324b3e237b7 + Length + 15.022519796631542 + + + + + 2.913338672395887 + + MI_Restricted_Substances + ccc92e6a-14f4-4ec6-9c3a-35ef3d6c9d8e + + Annealed + Carbon steel, AISI 1025, annealed + 2b009d89-e163-4adf-9bf9-8afb678c2a48 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + 62c79bd0-ae11-422c-90f1-fa594571e903 + Mass + 100 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + a2fcb803-add8-49a0-900b-3703f84244d9 + Length + 53.292736063381994 + + + + + 2.913338672395887 + + MI_Restricted_Substances + 034898f1-834f-4079-a0d3-65fffc17cb4d + + Silica (quartz fused) + Silica (quartz fused) + 835299c6-a6b5-43a8-aa88-f284052171cc + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 855bee01-9184-47d2-8581-76e01886ea0b + Mass + 100 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 12eabb99-224c-43ea-a98d-bb596ecee29f + Length + 16.264227552462476 + + + + + 2.913338672395887 + + MI_Restricted_Substances + 4a35d8d1-5fb1-47e9-a669-37204ae732dc + + ASTM A500 Grade A + Structural steel, ASTM A500 Grade A + 638823b6-f9d3-46bb-8a05-0db107889b22 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 0c0f61c2-70c2-4f98-ac5a-7f9df5ecc483 + Mass + 100 + + + + + 2.913338672395887 + + MI_Restricted_Substances + 55a81649-3016-4213-a621-af408fcdc777 + + Annealed + Carbon steel, AISI 1080, annealed + 1a6d6276-4d4a-427a-a4b4-6f2e620db768 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 97cbf528-7960-4df3-9374-18f69b658e42 + Mass + 100 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 1bc461bc-ed33-486d-a70d-de4a056b9240 + Length + 80.371818589219728 + + + + + + + 2 + 36.111349117062687 + 8c7e1228 + part_8c7e1228-bf08-4749-97f1-a110415528b4 + 8c7e1228-bf08-4749-97f1-a110415528b4 + + + 84.0241880547368 + + MI_Restricted_Substances + 92565d61-24fc-4880-9be5-0faeb9a8a3e8 + + Titanium silicate + Titanium silicate + e7ec98ac-e273-46ab-9474-ea04a3890a5e + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 9762f77c-d28f-4826-9540-79879aa0b386 + Mass + 100 + + + + + 3.1951623890526406 + + MI_Restricted_Substances + 109eaa8c-e01c-4663-8802-f7dd1f10d61b + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 8630, oil quenched & tempered at 205°C + 9f70bd1c-4fd9-4e12-b6cd-b24ec8e36b3a + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + b3367ef8-54f4-4af1-ae6f-0471c59b1e3f + Mass + 100 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 1892cc1f-2ea4-4542-84fa-734a1738d47d + Mass + 32.105234513108257 + + + + + 3.1951623890526406 + + MI_Restricted_Substances + 9cde0ddf-b39b-4eba-9ca0-333508cee034 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 86B45, oil quenched & tempered at 540°C + e9a533e7-8687-4edb-8b8c-b598338050b2 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 69388365-f692-4ca3-be8f-c29f6a11512d + Mass + 100 + + + + + 3.1951623890526406 + + MI_Restricted_Substances + ae5812e1-18fd-4a4d-aaa2-a04ca5e84b7a + + YS400, hot rolled + Dual phase steel, YS400, hot rolled + 3faedb49-7a6d-4c00-9c9e-39a7ef664e21 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + f210d48f-623d-4898-aa23-ebacd6a343c0 + Mass + 100 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + d6908901-bc8f-4702-ba84-a02927d44d92 + Length + 75.519944948852043 + + + + + 3.1951623890526406 + + MI_Restricted_Substances + e8c6d73a-bd7a-4ef3-ae11-48e45d4a5515 + + Glass, E grade (0.4-12 micron monofilament, f) + Glass, E grade (0.4-12 micron monofilament, f) + ac819a8f-9291-46bd-9a24-39b6ae982568 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 31211b96-96bc-4c45-a8a1-5b02eb5b9885 + Mass + 100 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + bbc5fe2a-94ea-40ef-86a7-942a40cc05b2 + MassRemoved + 34.487242034863328 + + + + + 3.1951623890526406 + + MI_Restricted_Substances + 1d24ecfa-ec45-4a74-9ad7-ceac6eef8ad3 + + Annealed + Low alloy steel, AISI 41L40, annealed + 8ea00983-914a-498b-94fa-1c042eac5ea4 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 2b02ebe7-5e6e-491c-a82b-5a11d3505560 + Mass + 100 + + + + + + + 9 + 9.4491260635895316 + bfd7768c + part_bfd7768c-8123-46d9-ac11-f0c6afcabb52 + bfd7768c-8123-46d9-ac11-f0c6afcabb52 + + + 65.3019523086501 + + MI_Restricted_Substances + 01f21cc5-bbad-4a5d-875d-c626eabc11c8 + + water quenched & tempered at 425°C + Carbon steel, AISI 1137, water quenched & tempered at 425°C + c320bf61-1e2b-4df3-b206-058e077ab81e + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 20f242e5-4016-4a57-adc9-37f1bf901366 + Mass + 100 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + d34384d5-e48e-43bf-8930-94889569b199 + Length + 95.754908535515384 + + + + + 11.566015897116634 + + MI_Restricted_Substances + 88943d73-219a-4090-93e9-c0454a8b5ad5 + + FR-4.0 (Df < 0.015 at 10GHz), Epoxy/Glass fiber, PCB laminate + FR-4.0 (Df < 0.015 at 10GHz), Epoxy/Glass fiber, PCB laminate + bf27755b-7cec-4ae3-b621-6d307b6bbf64 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 68a06571-548b-4a4a-a436-d8dd70d4df06 + Mass + 100 + + + + + 11.566015897116634 + + MI_Restricted_Substances + ab895171-8c16-4056-9062-78f7516be1b0 + + Borosilicate - 7050 + Borosilicate - 7050 + a08c1674-4940-40a7-94fc-c3d9d183a7f0 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 7d76a166-c302-4db8-abb1-f8be6336b506 + Area + 75.846491277146384 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 4a1655e1-c1f6-4b1a-96f7-58405a76625b + MassRemoved + 92.3417270613563 + + + + + 11.566015897116634 + + MI_Restricted_Substances + a1a73282-61fc-4ecd-9e82-a15e366f99bc + + Low-e glass + Low-e glass + c1bd4e16-ddfd-4e33-9ea0-9f71d3f3fac8 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 27d68193-6372-43ef-85c5-2a05dea773bf + Mass + 100 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 9185ca4f-d644-478a-b1d3-accea6fd78f8 + Mass + 100 + + + + + + + 2 + 96.541203882797248 + d4ad1b0c + part_d4ad1b0c-b83c-4a72-8d37-353582787606 + d4ad1b0c-b83c-4a72-8d37-353582787606 + + + 86.579154425570351 + + MI_Restricted_Substances + a6078356-e79c-4ddd-86ef-a3f01680dd35 + + As rolled + Carbon steel, AISI 1020, as rolled + 8f185b5c-7663-4004-babc-399eafd054fc + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + a1312113-8da3-4855-9e62-082d236a73e8 + Mass + 3.2787477612862119 + + + + + 6.7104227872148243 + + MI_Restricted_Substances + 52906b79-1e89-49de-b2cf-c09d53f34f92 + + Borosilicate - N16B + Borosilicate - N16B + e9f58e88-6551-4b55-826e-7a6719f7d8c1 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 3b3e32a9-86ca-4102-910a-96fb55997319 + Mass + 100 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + b15c2027-79ed-47aa-b2e3-c4c7c63d4fcb + Mass + 100 + + + + + 6.7104227872148243 + + MI_Restricted_Substances + 00268f25-08c7-4add-91f3-3cc4ed1d7e34 + + Oil quenched & tempered at 425°C + Carbon steel, AISI 1141, oil quenched & tempered at 425°C + 9309dcdb-9e9a-476b-af68-bf11e4429595 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + a514f8bf-7700-46fa-b19a-e2847e4bbe19 + Mass + 100 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + be8949b8-400f-46e3-ad5b-c128b25d09ae + Mass + 100 + + + + + + + 5 + 46.461982394783753 + bec3a206 + part_bec3a206-acc2-47e0-9d06-bef2d678f4b1 + bec3a206-acc2-47e0-9d06-bef2d678f4b1 + + + 66.9778992268154 + + MI_Restricted_Substances + 8dbb57f2-b225-4f57-9a5a-c25a03292d6e + + Annealed + Low alloy steel, AISI 6150, annealed + 3377d345-91c4-4b3c-aaa0-d63d7218b1ac + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 3688e835-1b68-4603-b5b9-a819a57502a7 + Mass + 100 + + + + + 5.5036834621974338 + + MI_Restricted_Substances + a583e694-02c0-408e-9af4-6fbee856b58f + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 9260, oil quenched & tempered at 650°C + 1abd8f9a-0b92-427e-9717-6c09ce13dc00 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 2c5d44c6-e3bd-4ec6-ad22-b11d3649ed17 + Mass + 100 + + + + + 5.5036834621974338 + + MI_Restricted_Substances + 1d55049a-3c25-4c8c-9125-70fd014c2a1e + + Normalized + Low alloy steel, AISI 8735, normalized + 66c4fad4-af15-4672-9943-9425e4c0e0a8 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 826a9d5a-36ba-4609-b926-7000913958f2 + Mass + 100 + + + + + 5.5036834621974338 + + MI_Restricted_Substances + aa4540cb-3277-459f-a69a-ca324ddd0125 + + Glass ceramic (N0) + Glass ceramic (N0) + 06b90bd7-bfac-4f73-824f-f416b61e79b4 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 10cc87fa-8688-4a93-be50-8cb08c6545cf + Mass + 30.995388017499536 + + + + + 5.5036834621974338 + + MI_Restricted_Substances + 6f7c4754-84f7-46f0-873a-ec2e9f29e345 + + Glass/phenolic honeycomb, ±45° fabric (0.088) + Glass/phenolic honeycomb, ±45° fabric (0.088), W Direction + 5cdefe18-ca24-4c8e-87dd-e422cbafad17 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 3d241091-1a8c-472a-988b-46aff0cc1c3d + Length + 27.586282942251433 + + + + + 5.5036834621974338 + + MI_Restricted_Substances + ca72e2f5-a1d0-4bb0-b612-ed5bc26a4f70 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 9255, oil quenched & tempered at 205°C + c32929c3-9ade-4355-892f-28ddb0c5e1f8 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + f1960bc6-4caf-450d-bb34-5f45dbb2034c + Length + 15.925735009799588 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 9224038e-b0d7-42bd-9b97-6478c055cc71 + Mass + 100 + + + + + 5.5036834621974338 + + MI_Restricted_Substances + 3427457c-2b3d-4a7e-adbc-40fddd4c1f0e + + Normalized + Carbon steel, AISI 1020, normalized + e4212f84-23c9-4e24-86a9-2c480a88575c + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 6ab49720-c919-4711-9306-ebc18eea494b + Mass + 100 + + + + + + + 7 + 6.3656798127878833 + + MI_Restricted_Substances + 2fcb534e-37c5-4b25-add8-ff02d2541953 + + 19e9d742 + part_19e9d742-08ce-4539-bce0-4d8df1627884 + 19e9d742-08ce-4539-bce0-4d8df1627884 + + + 4 + 14.785726468444674 + 8274b460 + part_8274b460-c082-4717-ab9e-9920ef0ff3d2 + 8274b460-c082-4717-ab9e-9920ef0ff3d2 + + + 29.591850298266785 + + MI_Restricted_Substances + 8be87fd7-f406-4a50-9150-2a29e4a26bfa + + Aluminoborosilicate - N51a + Aluminoborosilicate - N51a + 38f43e87-1708-47f1-a30c-59a2cbb7cf94 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 4b410e14-b7b7-4433-857e-8db7dea9b5aa + Mass + 100 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 4488c58c-5812-4e2c-beca-734bdb61837f + Length + 51.941912086653488 + + + + + 35.204074850866604 + + MI_Restricted_Substances + cfb19c31-b156-4a8d-854c-f264975539e1 + + water quenched & tempered at 205°C + Carbon steel, AISI 1095, water quenched & tempered at 205°C + 3e49ad92-4885-477d-8acf-bfbc5c7e2611 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 5ec6e628-d313-42c1-a5cd-138d782e3063 + Mass + 100 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 877d894a-0761-45cd-b67a-f0a004becbd1 + Mass + 100 + + + + + 35.204074850866604 + + MI_Restricted_Substances + d50d4fb1-e03a-43e7-b96d-6e8947848f36 + + Borosilicate - 7760 + Borosilicate - 7760 + 18d13a6a-8fff-4cd4-9df8-9fcfd052e5f7 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 5538fe15-9297-4520-9024-6283734a17df + Mass + 100 + + + + + + + 8 + 3.4627909322561656 + 41fcfe96 + part_41fcfe96-0cb7-459b-990e-0a9cf466b84e + 41fcfe96-0cb7-459b-990e-0a9cf466b84e + + + 46.123585592081575 + + MI_Restricted_Substances + bbe3f98a-e574-482b-99cc-74e13b224dd3 + + Normalized + Low alloy steel, AISI 5160, normalized + 0d3845c5-34d7-400a-bee3-80981f3a9c22 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 155c8b69-3aec-488c-9e84-81ec2a967947 + Mass + 100 + + + + + 7.6966306297026321 + + MI_Restricted_Substances + d42eaa02-9811-4935-b9cd-652adc845e8c + + Oil quenched & tempered at 650°C + Carbon steel, AISI 1050, oil quenched & tempered at 650°C + 4f4d69c6-1bbc-4f09-ab53-60a95498a714 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + 1cc110c5-64f2-4880-b63a-3312b46119e4 + Mass + 100 + + + + + 7.6966306297026321 + + MI_Restricted_Substances + 90b2285b-4295-429d-beb8-90d9f5df0101 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 5046, oil quenched & tempered at 315°C + 475c1813-eff4-4d7f-aa34-21a625870575 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 5c3292e1-9cf2-405f-9958-bbbb7740198e + Mass + 100 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + b2a90408-ff4a-4255-a4da-7c2f1daa045c + Mass + 100 + + + + + 7.6966306297026321 + + MI_Restricted_Substances + 0ff273b3-9539-465b-9d91-21fc52f8e16c + + Lithium aluminosilicate + Lithium aluminosilicate + 46737ede-6178-4dee-a3a4-e68cffa11485 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + cc4b5ba7-e4ba-4408-a75a-4e70b9a2b97c + Mass + 100 + + + + + 7.6966306297026321 + + MI_Restricted_Substances + 9b08ec7e-e481-47fa-a36b-849db7ef2432 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 8640, oil quenched & tempered at 425°C + a7ae4f2b-6b9a-4a32-a9a5-55fb9d080317 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + e05cb907-5ab8-4186-b865-5206ef069385 + Area + 96.172547990536572 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 89f28aa9-fc07-4ac9-8788-58ac8ea3c3bc + Length + 70.023122695285423 + + + + + 7.6966306297026321 + + MI_Restricted_Substances + 2839a622-af73-4a9f-90fa-0f3498243808 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 4042, oil quenched & tempered at 425°C + aeb72541-06c9-445d-a583-d17e4b217af3 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 2e21bc42-8482-4b45-8cdf-9cc033838ded + Mass + 100 + + + + + 7.6966306297026321 + + MI_Restricted_Substances + 7a62318a-eff2-4f36-9925-ee919c5b4369 + + S235J + Structural steel, S235J + 51fa18b8-ed5b-4e70-9a85-926d20aff4d3 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 599dc39e-fbe9-4918-903c-201f8fafd517 + Mass + 100 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 444c53a5-922f-42ca-8e27-4250419a6c82 + MassRemoved + 76.338229131111049 + + + + + 7.6966306297026321 + + MI_Restricted_Substances + 8b442749-964a-49d6-be5c-9a55c81d85f8 + + Annealed + Carbon steel, AISI 1137, annealed + c71f0b62-bad3-4169-b642-97466bac096c + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 5c175ac7-6633-426d-b196-43311b19d2d6 + Mass + 100 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 80d9c995-9272-4b42-bcdb-da53a364eb1e + MassRemoved + 79.855570327423308 + + + + + + + 5 + 42.080670568198272 + b577fb1d + part_b577fb1d-285b-409e-9c73-c4c67aef072f + b577fb1d-285b-409e-9c73-c4c67aef072f + + + 24.3390832209676 + + MI_Restricted_Substances + aa963e30-fca0-439d-bee2-ff48daa946f3 + + As rolled + Carbon steel, AISI 1095, as rolled + 18de39e1-efa3-416c-8305-820c511d7755 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + fdc3ff67-af49-4e3f-ab5a-5ae7dbc8aea3 + Length + 34.568402978856305 + + + + + 18.9152291947581 + + MI_Restricted_Substances + 33160988-8422-40e2-93d1-e3e7467eafe9 + + Normalized + Carbon steel, AISI 1030, normalized + e6b8c0f4-9881-4c32-b3c1-f2c03707a676 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + b74da865-8a31-4d41-b8a8-8883acb68bf3 + Length + 50.007607950832508 + + + + + 18.9152291947581 + + MI_Restricted_Substances + 9966da3f-c3f0-414e-9bce-4211a9eca2c3 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 8650, oil quenched & tempered at 425°C + 51209b86-7420-495a-9ae3-2917c45bb6d5 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 376fbb2f-af03-4c94-bbdd-fb020dd33243 + Mass + 100 + + + + + 18.9152291947581 + + MI_Restricted_Substances + 0840d007-df07-4e12-bda5-bfc060fb15e6 + + Annealed + Low alloy steel, AISI 4320, annealed + d026b0f7-b323-4658-b701-dd5b9ef0642b + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + b90ce3a2-6d75-4559-9ea6-6d7d03afe3d8 + Mass + 100 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + e59147df-ab41-4304-beda-98aa64536cf5 + Mass + 100 + + + + + 18.9152291947581 + + MI_Restricted_Substances + db238d75-fcb8-41f5-9289-83a352fa83a6 + + Annealed + Carbon steel, AISI 1015, annealed + 10de9487-5e02-4fd3-9e50-cf813f9100e3 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 4d3e67b7-82de-46e0-9939-d476f85856d6 + Mass + 100 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + 4f80d53e-42d7-4017-a30c-e81cb7c4723f + Length + 56.079032065383636 + + + + + + + 7 + 25.021038448913508 + 98aa21d0 + part_98aa21d0-06fc-44b1-8fe5-2e59b4c5bb01 + 98aa21d0-06fc-44b1-8fe5-2e59b4c5bb01 + + + 82.307474120663244 + + MI_Restricted_Substances + bbe3f98a-e574-482b-99cc-74e13b224dd3 + + Normalized + Low alloy steel, AISI 5160, normalized + 66055c02-c174-48cf-a93b-b2a1caa95b51 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + d269bdba-90f7-4b96-9e75-6df612bf51a3 + Length + 50.763146835734673 + + + + + 5.8975086264455854 + + MI_Restricted_Substances + 9ce914d8-75c1-4c5f-8c57-11c0e62b2cfa + + ASTM A299 Grade A + Structural steel, ASTM A299 Grade A + 5f3b5299-698b-4670-9ff2-02b9eb219537 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + 90dd5b2e-8f4d-46f0-add5-99ff1689d833 + Area + 67.009077857718367 + + + + + 5.8975086264455854 + + MI_Restricted_Substances + c15a44c3-d8be-4ae8-9a58-281f13b731cd + + YS420, cold rolled + High strength low alloy steel, YS420, cold rolled + a0ee3dee-d81a-48de-b448-54d0cfebab12 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + 0e1f1be9-bef9-43ba-9414-e54b8d4b254f + Mass + 100 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 289c98e6-f616-4f8e-9ef9-324927836d0d + Mass + 100 + + + + + 5.8975086264455854 + + MI_Restricted_Substances + 55eaa961-cbe2-4f0a-9531-ec40dc32555a + + YS260, cold rolled + Interstitial free steel, YS260, cold rolled + c5ed30f9-03dd-4053-8b5b-c4e1a60cfe8e + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + 70d819c9-38b0-4d64-a6e0-bfd003d04728 + Area + 52.558756737298687 + + + + + + + 8 + 32.5079331791531 + + MI_Restricted_Substances + 4a2d9161-0f0a-46c5-91c5-ecc05f02ab7d + + 910f76f0 + part_910f76f0-66f9-452f-8090-72c07bb16e3f + 910f76f0-66f9-452f-8090-72c07bb16e3f + + + 3 + 67.537282578431672 + 6c0e2111 + part_6c0e2111-9a45-49b2-89f9-e75b9236807b + 6c0e2111-9a45-49b2-89f9-e75b9236807b + + + 18.61153776692764 + + MI_Restricted_Substances + 1a2673ec-4671-4e9c-a73b-2fef7045fb02 + + Aluminoborosilicate - G20 + Aluminoborosilicate - G20 + ad5ea6d8-bd5e-4129-8ecf-54d9e5e5f38e + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 73960487-6fc0-4df7-b3e3-7e034b13713c + Mass + 100 + + + + + 20.34711555826809 + + MI_Restricted_Substances + e678781a-1b38-4709-816b-9db609651db6 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 50B60, oil quenched & tempered at 425°C + f6b11b46-7824-436b-bcd0-0c4f7072fcf2 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + e2857007-525e-42e0-856d-ea8e587e1af9 + Mass + 100 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 1cd84982-979f-476d-9569-a73014bd478d + Mass + 64.810556343202734 + + + + + 20.34711555826809 + + MI_Restricted_Substances + 0ff3d25e-2024-43a5-9654-bb095ad302ce + + YS260, cold rolled + Bake hardening steel, YS260, cold rolled + e1c23815-ad33-4f51-97b0-6f79b533359c + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 0a7ced6d-460a-4301-b350-afa4640aef30 + Area + 88.825147081550753 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + 59aef919-4ba8-4fad-bc83-f909df5bb444 + Length + 90.453469562555412 + + + + + 20.34711555826809 + + MI_Restricted_Substances + 93e14fb3-4376-4df5-9d31-299bee56ea49 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 4340, oil quenched & tempered at 540°C + 0fc7dbac-bf70-45c7-90e8-3bd27a45fc1f + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 0c1a5db1-afbb-4a9b-b9da-d5f3c050426d + MassRemoved + 59.387153973517549 + + + + + 20.34711555826809 + + MI_Restricted_Substances + 3fd6cebb-a683-45be-b014-7c3fb617c3e7 + + Glass/polyimide honeycomb, ±45° fabric (0.064) + Glass/polyimide honeycomb, ±45° fabric (0.064), L Direction + d5016dee-0d50-4fb4-abc4-ff412b6567a2 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + 8daed5ae-3333-47bf-963f-5693dfe3963e + Mass + 100 + + + + + + + 1 + 76.9348563053342 + 637e0437 + part_637e0437-da8d-40d6-b882-cabd56acb117 + 637e0437-da8d-40d6-b882-cabd56acb117 + + + 45.937840801634749 + + MI_Restricted_Substances + d50d4fb1-e03a-43e7-b96d-6e8947848f36 + + Borosilicate - 7760 + Borosilicate - 7760 + 41aa4011-d38d-40e0-82e6-eefa8d9d6860 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + 18e019cd-e438-4439-aba5-793bfff432df + Area + 36.64996839903759 + + + + + 18.020719732788418 + + MI_Restricted_Substances + 6d658600-d198-46ed-bcca-cd0e3e2f5f4d + + Oil quenched & tempered at 425°C + Carbon steel, AISI 1060, oil quenched & tempered at 425°C + 09dddbfa-2400-4660-93fc-d0c784324731 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 4f40fad3-7ce7-40f8-bd4d-0940db95abc6 + Mass + 67.7786580602539 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 52e9ddf8-90c1-4f1b-9003-eb8de3f2a997 + Mass + 100 + + + + + 18.020719732788418 + + MI_Restricted_Substances + 00268f25-08c7-4add-91f3-3cc4ed1d7e34 + + Oil quenched & tempered at 425°C + Carbon steel, AISI 1141, oil quenched & tempered at 425°C + 244a218d-da02-4600-901f-3c795a8ed628 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 0c7a49f5-6aa3-4cf2-9870-f8b97e7d9e9e + Mass + 100 + + + + + 18.020719732788418 + + MI_Restricted_Substances + 034898f1-834f-4079-a0d3-65fffc17cb4d + + Silica (quartz fused) + Silica (quartz fused) + cc1dcc59-58ce-4ad0-b222-a342e392f666 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + 02a20918-409d-4751-a8c1-d14dafa88081 + Mass + 100 + + + + + + + 5 + 11.677817353828726 + f8a14e94 + part_f8a14e94-a386-4489-9648-e6082d18b30c + f8a14e94-a386-4489-9648-e6082d18b30c + + + 13.875720144191629 + + MI_Restricted_Substances + 0d45da58-d026-4a44-b2b5-3109fe88f824 + + Annealed + Carbon steel, AISI 1022, annealed + 65ec6136-26bc-442d-9570-1ce48f7690c7 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + bd16cf39-76af-43f8-b198-aeb8ad7be932 + Mass + 59.984697243191633 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + e6bb7f1e-7071-4e1d-a373-45ffe368eadc + Mass + 100 + + + + + 86.124279855808368 + + MI_Restricted_Substances + c60fa280-eb24-4c9a-b6cf-a8304e0eb1b5 + + YS500, hot rolled + High strength low alloy steel, YS500, hot rolled + 5aa8cb62-04fb-411f-9001-dec103cb7f1f + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + d42f33b8-5c49-477c-af67-ecb132d88eae + Mass + 100 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + e4979d16-32cf-4bb4-93a5-fa69b3693f69 + Mass + 100 + + + + + + + 6 + 86.295804049026131 + + MI_Restricted_Substances + 022614af-ecf8-4797-af86-25b711d65e30 + + c36583cf + part_c36583cf-709d-4e48-bcfa-afb789e667d9 + c36583cf-709d-4e48-bcfa-afb789e667d9 + + + 6 + 67.9633920397439 + b786aa15 + part_b786aa15-0e95-4b0a-82e6-923db26e9143 + b786aa15-0e95-4b0a-82e6-923db26e9143 + + + 28.160587944165144 + + MI_Restricted_Substances + 8c7579d0-7b78-40f6-a9e7-d11eea746c1f + + Uncoated + Press hardening steel, 22MnB5, austenized & H20 quenched, uncoated + f0f45be9-288d-4aa4-989b-0e8bfa87419b + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + a485a8f2-d7fc-4bc3-988b-da33a5828f70 + Length + 21.046489021296839 + + + + + 10.262773150833551 + + MI_Restricted_Substances + 8643d806-94c5-42f9-9ffc-4c21a6e16bd0 + + Annealed + Carbon steel, AISI 1141, annealed + b5578b36-590a-4ff3-9586-de0bc55d7ca5 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 9c75e21c-d10b-44e9-bfdb-16d235fd0245 + Area + 33.543377664658877 + + + + + 10.262773150833551 + + MI_Restricted_Substances + e6b45bea-dec9-4b91-996a-885bb0c31f8d + + Glass, S grade (10 micron monofilament, f) + Glass, S grade (10 micron monofilament, f) + da3524da-b989-495a-80bc-6a03e4dff35a + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 208aabda-3a37-4f4f-9759-695034f23d93 + Mass + 100 + + + + + 10.262773150833551 + + MI_Restricted_Substances + 82880431-c70c-4df9-856a-d5e00671a184 + + Annealed + Carbon steel, AISI 1020, annealed + f5c11d3d-e942-460a-a6e6-88d85c845501 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + bb96f553-a236-4770-9e20-ccbd1709d75c + Length + 16.778927397345626 + + + + + 10.262773150833551 + + MI_Restricted_Substances + 9052201a-a41d-4b86-8c7c-2e80163afd47 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 9255, oil quenched & tempered at 425°C + 259dbdfd-48fd-490b-b87e-c1a2e85fc26e + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + a36cc3bf-3a2e-4f6d-92bd-1ce74df99da7 + Length + 13.066051906471166 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + c12a6707-fd5a-4b34-8443-ab1cd3886c62 + Area + 17.750812423299443 + + + + + 10.262773150833551 + + MI_Restricted_Substances + 356303d7-c574-4db7-80f9-427e176a5308 + + 40CrMoV13-9, quenched & tempered + Low alloy steel, 40CrMoV13-9, quenched & tempered + 9f92067c-64e2-43cd-a019-67fcbd40b9d4 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + c4afe641-9b45-4754-ba04-d0f4d10a862c + Mass + 100 + + + + + 10.262773150833551 + + MI_Restricted_Substances + b85ebb9e-b198-4497-ae8e-b9b61ecde102 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 5160, oil quenched & tempered at 315°C + ff3c1af1-7726-48cf-9111-2405634e69c8 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 4c4e97c0-8d3f-43e2-b07b-3dc30b243b4b + Mass + 100 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + d091f519-b7d6-4d1d-9425-5fc6116d2bcf + Mass + 100 + + + + + 10.262773150833551 + + MI_Restricted_Substances + 30d9edb0-09d2-4270-b4f5-8dceb44a6bd6 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1137, oil quenched & tempered at 540°C + 5ec4816a-1e17-49e3-87f2-7045ba08b4a6 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + c43d69af-0147-4859-b393-3a06d193be25 + Mass + 100 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 9e5c4c82-e18a-4143-b951-79a464daa2ee + Mass + 100 + + + + + + + 8 + 55.56172149049199 + 7f1ea467 + part_7f1ea467-91f8-4023-8fd4-a144cdab337e + 7f1ea467-91f8-4023-8fd4-a144cdab337e + + + 54.561538321227552 + + MI_Restricted_Substances + c87d2bef-0549-4a3b-b699-3ad17b079fa1 + + YS355, hot rolled + High strength low alloy steel, YS355, hot rolled + 7ac8785d-6c83-4f8f-90de-933949972289 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 26432953-6f0e-4d93-96c7-bd5fcf6379f2 + Mass + 100 + + + + + 9.08769233575449 + + MI_Restricted_Substances + 21dcdeeb-524a-488e-b332-fcd4e1caf6f7 + + water quenched & tempered at 650°C + Carbon steel, AISI 1095, water quenched & tempered at 650°C + a790407d-9ced-4977-a510-4e069d78d746 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 03eb66c3-f545-462f-9769-f86b3dd6affc + Mass + 100 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + b61ec8b9-64a3-446e-b1ca-34ec20bca0ed + Mass + 100 + + + + + 9.08769233575449 + + MI_Restricted_Substances + a8f02f5c-c80e-446f-92f4-0046f3d093fc + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 8630, oil quenched & tempered at 425°C + 07fde33a-6f9f-45f7-a3ea-e654b0ce2405 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 442eafc3-87b0-40ac-b29e-e5250db24a9e + Length + 51.49531678831918 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + 2e2d0c69-7030-4356-9abd-21c9a343f13f + Length + 33.9750110795605 + + + + + 9.08769233575449 + + MI_Restricted_Substances + af4f67b9-f5a7-4fc3-9f1d-da3309e4b19a + + Solution treated & aged + Iron-base-superalloy, Cr-Ni alloy, A-286, solution treated & aged + 50b835ed-171b-447e-bd43-b8458edb8a36 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + bb3d5628-9b59-4a22-a339-57214c20ae1d + Mass + 100 + + + + + 9.08769233575449 + + MI_Restricted_Substances + 8dbb57f2-b225-4f57-9a5a-c25a03292d6e + + Annealed + Low alloy steel, AISI 6150, annealed + 0f20032f-64dd-4407-a483-f204c69438fb + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + b2907993-60fd-4b39-9d19-a6320539f3ff + Mass + 100 + + + + + 9.08769233575449 + + MI_Restricted_Substances + 9ecfadb9-f61f-48b3-81b1-bcac80eb164f + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 4150, oil quenched & tempered at 315°C + 8a787e70-737e-46e6-8dab-306d179ef24a + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 203cae3c-c8ea-468a-b0c2-1a2f1dba8083 + Mass + 100 + + + + + + + 9 + 10.829968196726389 + f5dacbb9 + part_f5dacbb9-c1f8-419a-9053-2a4d2c9d18a8 + f5dacbb9-c1f8-419a-9053-2a4d2c9d18a8 + + + 39.232889534548335 + + MI_Restricted_Substances + c62d668e-5411-4845-b19c-3a0c4eedf872 + + 10CrMo9-10, normalized & tempered + Low alloy steel, 10CrMo9-10, normalized & tempered + 33d3df79-d373-4b94-b3a6-660eb38c7e27 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 8314c26c-a7ee-4c74-bb24-5fd5a019029a + Mass + 50.223951577313223 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + 29e7d889-d958-4cf6-a9e9-4f530b87ea79 + Area + 5.869946398711738 + + + + + 10.127851744241944 + + MI_Restricted_Substances + 0afa77bf-df9b-456c-8c48-3c84b1ccd2e0 + + Low density glass-sphere filled + Bisphenol molding compound (low density glass-sphere filled) + 31c5fa38-c9cb-4a05-82b0-b841e128dbcf + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 2f9ef32d-cf41-40d8-b44e-1b8261e8da15 + Mass + 100 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 5fad0148-6141-4b01-bc17-321eb4744943 + MassRemoved + 76.215430803697288 + + + + + 10.127851744241944 + + MI_Restricted_Substances + ee5b018e-8d7f-4fb1-bad0-c73e871592bc + + 16Mo3, normalized + Low alloy steel, 16Mo3, normalized + a529dc2e-5812-49a2-95b6-6dd4275ccfaf + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + f7aaf415-d27b-4f53-bb9d-8395e0f29297 + Mass + 100 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + df76aa4d-4723-48c9-a1ae-f9609cf40fa4 + Mass + 100 + + + + + 10.127851744241944 + + MI_Restricted_Substances + a583e694-02c0-408e-9af4-6fbee856b58f + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 9260, oil quenched & tempered at 650°C + a71e7f88-dd9f-4bd5-97c5-ba0e454c8a86 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 25e57cf3-f067-4f6d-8227-81f597c51a51 + Mass + 100 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 60c7a5c7-b458-4867-bc66-6a7b7cf161e4 + MassRemoved + 51.182567910841925 + + + + + 10.127851744241944 + + MI_Restricted_Substances + 8ef69f01-44dd-4b96-ac5c-731bff7ceb6c + + Glass ceramic - 9606 + Glass ceramic - 9606 + ac8979df-ffa0-4867-92bd-4f50e905e723 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + dc7fe693-f05f-4a56-a129-0f668f88f684 + Mass + 100 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + d3632ca9-6bb1-4658-a277-3ecec3de1232 + Mass + 100 + + + + + 10.127851744241944 + + MI_Restricted_Substances + a583e694-02c0-408e-9af4-6fbee856b58f + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 9260, oil quenched & tempered at 650°C + beaa77bc-aa95-48b4-a090-f8d2d782206a + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + d42538b4-5ecd-43e4-8fe5-566b54d31b2f + Mass + 100 + + + + + 10.127851744241944 + + MI_Restricted_Substances + bac6ffd4-6d83-432c-90f4-de9606502589 + + Alkali barium glass + Alkali barium glass + c6e0f32c-d30b-482b-ae39-6a157d6c056b + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + c199a1d4-2aa7-4696-b556-67be5a32877e + Mass + 100 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 143e76aa-6810-4714-9c4b-0df021ee35c0 + Mass + 100 + + + + + + + 8 + 56.751658514492057 + bbcf0cb7 + part_bbcf0cb7-3799-419c-bb91-69efc6a773a2 + bbcf0cb7-3799-419c-bb91-69efc6a773a2 + + + 39.58289531971463 + + MI_Restricted_Substances + ac1b4f23-a357-459b-bfeb-deabffbc7020 + + Oil quenched & tempered at 315°C + Carbon steel, AISI 1050, oil quenched & tempered at 315°C + 75e963b5-5092-420b-8f67-36bb94675137 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 25d88b7e-7987-4bcd-9d04-0a59ca932205 + Length + 67.657515344981817 + + + + + 12.083420936057074 + + MI_Restricted_Substances + bfd46ac9-4021-49b6-9656-d1e426bd1c79 + + Oil quenched & tempered at 205°C + Carbon steel, AISI 1340, oil quenched & tempered at 205°C + cc19f7cb-4027-4c5e-a5db-2dd7a7559226 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + d7ecc6bf-c407-41c3-8b1a-6ba1b26dd902 + Area + 38.522749365550816 + + + + + 12.083420936057074 + + MI_Restricted_Substances + e06fc27c-5e39-4218-a5ca-6927af12a511 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 4140, oil quenched & tempered at 205°C + 9420bb2f-2d32-4cfe-a1f6-2ee9dc88147e + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 8baa897b-6b55-43c3-a1bf-76df9b858209 + MassRemoved + 54.654524267955928 + + + + + 12.083420936057074 + + MI_Restricted_Substances + d53daeda-87b2-4ade-a7a2-1ebe84e7e3ef + + Annealed + Low alloy steel, AISI 5115, annealed + ba3706f1-d63d-4915-aaf4-64fbbb441514 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + be2a3e2b-dc24-46df-b793-11fdbaf7a046 + Mass + 100 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 8992ea99-439f-4945-8d59-7b1da55af53c + Mass + 100 + + + + + 12.083420936057074 + + MI_Restricted_Substances + 6ee51b17-7fe0-46fd-8e32-a71585a34000 + + 40-45% glass and mineral + PBT (40-45% glass and mineral) + c5e03d92-c8bb-4bd6-8807-22324b49bdd8 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + ef746a79-0608-45eb-9625-1009cad3791e + Mass + 100 + + + + + 12.083420936057074 + + MI_Restricted_Substances + f8d1136f-3c1a-41e2-8b78-cf5f3965cba2 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 6150, oil quenched & tempered at 205°C + 66478372-76a4-407e-b812-4526b76fe9ef + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + e6b23627-745a-46ec-849e-ddfb9fb69ff9 + Mass + 100 + + + + + + + 3 + 47.096223126676037 + f6fbbc6b + part_f6fbbc6b-42d8-4d0f-8b82-95595f7cfc97 + f6fbbc6b-42d8-4d0f-8b82-95595f7cfc97 + + + 11.825464205735113 + + MI_Restricted_Substances + dec2859d-9573-49bd-846a-5e2a288c063f + + Soda barium glass + Soda barium glass + 8d38f1ad-6599-48e2-b23c-68fc43a64acf + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + e4279d68-ed80-4c1b-bd24-575b9cceb825 + Mass + 100 + + + + + 22.043633948566221 + + MI_Restricted_Substances + dec2859d-9573-49bd-846a-5e2a288c063f + + Soda barium glass + Soda barium glass + f0390429-7c94-4cb2-9d6d-61f157e52841 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + c6db4588-d5e0-4219-968b-eed84cd89885 + Length + 4.2175538391887919 + + + + + 22.043633948566221 + + MI_Restricted_Substances + 6f7c4754-84f7-46f0-873a-ec2e9f29e345 + + Glass/phenolic honeycomb, ±45° fabric (0.088) + Glass/phenolic honeycomb, ±45° fabric (0.088), W Direction + 252842a8-fb2a-4c4f-8d28-41739c6318dc + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + ec951dd2-d457-4e17-8988-b99dc3b2c87d + Mass + 100 + + + + + 22.043633948566221 + + MI_Restricted_Substances + c3e12411-ba5c-485f-b516-f489b95e8233 + + FR-4.1 (Df < 0.005 at 10GHz), Epoxy/Glass fiber, PCB laminate + FR-4.1 (Df < 0.005 at 10GHz), Epoxy/Glass fiber, PCB laminate + b39e6f9f-e41f-4cdd-b189-87298b42a606 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 789840db-daaa-4de1-b9a3-bc19836d8c37 + Mass + 100 + + + + + 22.043633948566221 + + MI_Restricted_Substances + 8245dc6c-3d61-4f18-82c8-6fb946e1582c + + Glass foam (0.13) + Glass foam (0.13) + a9e396af-a85b-416d-a610-0c044c88995e + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + f55d8028-28c0-40be-80f8-3ca1f420e68b + Mass + 100 + + + + + + + 6 + 55.608829974946019 + 7d472c22 + part_7d472c22-d1df-40ef-a113-6c4122effb2e + 7d472c22-d1df-40ef-a113-6c4122effb2e + + + 74.3681468415857 + + MI_Restricted_Substances + afc85ad6-9e99-44a7-a959-f75ddbacff15 + + FR-5, Epoxy/Glass fiber, PCB laminate + FR-5, Epoxy/Glass fiber, PCB laminate + 4bc44872-9a5d-495a-9caf-980d43e66b11 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 21ec7642-fe81-4c1c-a592-fabcaeff2b6b + Mass + 4.4001921566204132 + + + + + 4.2719755264023833 + + MI_Restricted_Substances + 63d5d6b5-3b52-4cd9-a56f-6e7c5c945139 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 81B45, oil quenched & tempered at 315°C + 74879e4c-7f99-47b3-b943-54b7b54f6222 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 20c2c644-69b9-4aa2-a360-e60e64f749e6 + Mass + 100 + + + + + 4.2719755264023833 + + MI_Restricted_Substances + 00268f25-08c7-4add-91f3-3cc4ed1d7e34 + + Oil quenched & tempered at 425°C + Carbon steel, AISI 1141, oil quenched & tempered at 425°C + d69c5639-1b8b-4737-907f-ed4d5be46e4d + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + 7cec420e-96c3-4ebc-b0da-625f9feb724e + Mass + 100 + + + + + 4.2719755264023833 + + MI_Restricted_Substances + 9c1918f9-aa9f-4078-93df-23539c8df8a8 + + Soda-lime - 0091 + Soda-lime - 0091 + 4fa78796-c5a9-46ca-86ce-f88f8a01b793 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + d3fb1692-a0d2-4ed7-8e3b-4933bb09a70f + Mass + 100 + + + + + 4.2719755264023833 + + MI_Restricted_Substances + 8349c912-772a-4fd7-90a5-7d52aa9c9448 + + Oil quenched & tempered at 425°C + Carbon steel, AISI 1137, oil quenched & tempered at 425°C + 1953f7e4-c39f-492a-a1b5-b6ed45c83f9a + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + 91cc33c3-fc0c-480d-a407-b205ddbe1ea2 + Area + 16.662223412032343 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + a6a67b54-a11a-4abe-b5b1-ea66d74709ca + Mass + 100 + + + + + 4.2719755264023833 + + MI_Restricted_Substances + 9cae15c6-b5b6-4ab9-9008-d962bee0e662 + + Glass/phenolic honeycomb, 0°/90° fabric (0.128) + Glass/phenolic honeycomb, 0°/90° fabric (0.128), L Direction + 9b7e2cfc-3307-431d-b34d-7003cac18824 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 73658f79-c750-4cd8-8eef-ee903cddc232 + Mass + 10.390798426415211 + + + + + 4.2719755264023833 + + MI_Restricted_Substances + a22f3160-83fe-4a55-8459-26e3f8647523 + + 55% glass and mineral filled + PARA (55% glass and mineral filled) + 950e232a-586e-4d42-9a1f-7b9733ef890a + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 1575dd40-f600-4bc4-a88a-c598678257de + Area + 64.681281738300484 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 929cc29c-e0e8-4022-b2a6-01a952031a69 + Mass + 100 + + + + + + + 2 + 14.808066661845922 + b1cb8514 + part_b1cb8514-070c-4d62-9ef5-4c49c90bc898 + b1cb8514-070c-4d62-9ef5-4c49c90bc898 + + + 97.051029278454848 + + MI_Restricted_Substances + 8dbb57f2-b225-4f57-9a5a-c25a03292d6e + + Annealed + Low alloy steel, AISI 6150, annealed + 86c67d23-08be-4393-9d92-495098f61f07 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 80c605e4-edf1-4cd5-bf78-a206557fc22f + Mass + 100 + + + + + 0.73724268038628793 + + MI_Restricted_Substances + a83cb894-badf-47de-8aff-fe75bbb39ecd + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 81B45, oil quenched & tempered at 540°C + 61cdd020-4268-4783-9885-d40cb0c8d22a + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + a83e56d7-ae09-4e6f-924d-f26157e38358 + Mass + 100 + + + + + 0.73724268038628793 + + MI_Restricted_Substances + ecee7ab4-461f-42e0-9b52-d03ea031201c + + Normalized + Carbon steel, AISI 1144, normalized + 06df061e-da0a-4d4c-9d3d-f6e18221e033 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + eace4d01-c48e-4b1e-8e22-15225c63f9bf + Area + 55.08029659049599 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + 41aaa4b3-1aaa-4dc8-9fa7-f19ff45a83ae + Mass + 100 + + + + + 0.73724268038628793 + + MI_Restricted_Substances + 66ed26ec-15e8-47d9-a7dc-140271411c07 + + Quenched & tempered + Low alloy steel, AISI 4130, air melted, quenched & tempered + 45b2ca44-3955-48b5-8eac-b98cec5366f3 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 4513f058-b7a2-4702-aa6e-decfec920a1a + Mass + 100 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + a960eb1f-91b4-4d76-af51-3b97a0c3bf8c + Mass + 39.232257026821493 + + + + + 0.73724268038628793 + + MI_Restricted_Substances + af4f67b9-f5a7-4fc3-9f1d-da3309e4b19a + + Solution treated & aged + Iron-base-superalloy, Cr-Ni alloy, A-286, solution treated & aged + 1916a851-ca70-4761-a100-5a0fd2c7ee5d + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + b3ac55f8-96d0-436e-bd89-27d480e45e0a + Mass + 100 + + + + + + + 6 + 7.051080422034059 + b6c22120 + part_b6c22120-5e85-4ed0-92c7-590b9eb9ac7a + b6c22120-5e85-4ed0-92c7-590b9eb9ac7a + + + 92.895007782101175 + + MI_Restricted_Substances + 81ce98b3-d459-4695-9dd9-d53244be47ed + + Annealed + Carbon steel, SA216 (Type WCC), cast, annealed + 12376dff-8e97-4e2c-9f52-fcca2e966de3 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 5054c941-f1fc-4991-864b-06f9400d43ae + Area + 43.140955894785449 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + aeb8805c-e856-4dcb-bbab-e379818c0478 + Length + 35.583568054988781 + + + + + 2.3683307392996085 + + MI_Restricted_Substances + 00fe5279-94a1-43fd-8b88-d83679a1bdce + + Normalized + Low alloy steel, AISI 8650, normalized + 94527534-0ff8-4ec1-aa02-5fd4dd86cbca + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 79ad3c95-21f4-429e-95e5-8dfa2f5be558 + Mass + 100 + + + + + 2.3683307392996085 + + MI_Restricted_Substances + 2fca0cda-4548-4601-ade6-49478da1542f + + Potash soda lead glass - 0120 + Potash soda lead glass - 0120 + eef4536e-0d78-4abf-adbf-f27a06ee9cf7 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 0b44e966-c220-49a6-b05f-8644b6e5bdb5 + Mass + 100 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + fdeac97c-9a5b-41d0-baad-81336f423d96 + Area + 77.518048313221925 + + + + + 2.3683307392996085 + + MI_Restricted_Substances + 4ad00a9e-92b5-4e28-92a0-409da4495c54 + + Oil quenched & tempered at 205°C + Carbon steel, AISI 1060, oil quenched & tempered at 205°C + fafbc500-8dbb-4e8f-af0c-bfc59a8b2bb3 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + 76bb9be2-bf69-4a02-8cb3-42b6d3246859 + Length + 71.418723078173912 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + f6122a10-907d-4619-a69b-847a1fa3368f + Mass + 100 + + + + + + + 3 + 13.140361995035951 + + MI_Restricted_Substances + 0dedeb55-6f6f-42f9-b703-5225f1cab2fb + + f0a7ab1b + part_f0a7ab1b-d6f5-4f47-ad8e-12d3e43d65a5 + f0a7ab1b-d6f5-4f47-ad8e-12d3e43d65a5 + + + 3 + 41.464385502722294 + 2c988253 + part_2c988253-cf8f-45cd-b7c4-cd4903dcd49c + 2c988253-cf8f-45cd-b7c4-cd4903dcd49c + + + 9.2300838368153588 + + MI_Restricted_Substances + 4cea2241-b602-4843-a983-45b33e64af05 + + YS600, cold rolled + Dual phase steel, YS600, cold rolled + 524819a4-baa5-40eb-b5a5-2e131ebfeeee + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + e7708b91-0bf6-46c6-a0f5-a5915cce29ef + Mass + 100 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 3c055067-1d8e-4d09-9eba-aabe150346f3 + Mass + 100 + + + + + 30.256638721061549 + + MI_Restricted_Substances + a89802d6-13c5-496d-b139-57ae43e6591c + + As rolled + Carbon steel, AISI 1022, as rolled + 953dc823-906a-4e1b-af55-24208c11831c + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 40b06799-47a2-4ac4-a84d-f17e31b3b432 + Mass + 40.874037770961429 + + + + + 30.256638721061549 + + MI_Restricted_Substances + 59ed9004-2126-437f-aa61-b8a0189e69d3 + + Oil quenched & tempered at 650°C + Carbon steel, AISI 1095, oil quenched & tempered at 650°C + f496a5a7-129c-4e5d-9a3e-9be489e5d6b0 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + bc3e2ee0-f497-4f79-ac4f-f2f0366a4837 + Mass + 100 + + + + + 30.256638721061549 + + MI_Restricted_Substances + 9e4a9338-5342-488e-ba70-770407c295f3 + + Oil quenched & tempered at 315°C + Carbon steel, AISI 1040, oil quenched & tempered at 315°C + 4d0995c4-f147-4654-acba-39954f9a5d93 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 378919a5-f10e-482c-b0bf-3a0f529ee29e + Mass + 100 + + + + + + + 5 + 28.705036979496963 + 4bf6e986 + part_4bf6e986-258f-4be2-975a-b61b454fd036 + 4bf6e986-258f-4be2-975a-b61b454fd036 + + + 89.111171192075673 + + MI_Restricted_Substances + b22c05ba-b0f7-4e07-890d-c5066c0db098 + + 40% glass and mineral + PPA (40% glass and mineral) + d02fd096-bc39-4e63-8595-cabbda073d3f + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + a8915a7a-54fe-4180-9b14-2cd502ef844a + Mass + 100 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + 5e09828c-7dc7-4c3d-a3de-81c97726afa3 + Mass + 100 + + + + + 2.7222072019810817 + + MI_Restricted_Substances + aa4ba2ad-ff11-448b-90e3-477f9a5f41fb + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 5150, oil quenched & tempered at 205°C + 8919da4a-bff7-471b-92d4-6e480aedd51b + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 22a1af61-950f-4631-8e36-09b8b226cfcd + MassRemoved + 76.786467003070968 + + + + + 2.7222072019810817 + + MI_Restricted_Substances + 5b4ea232-c032-4f8d-a633-3b059e93651a + + 36%Co steel + Hard magnetic alloy, 36%Co steel + 937c119a-d8ab-4f2a-bfe6-527ed53f36e4 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + b5585cab-ca53-42ae-893b-438529c3cc6b + Mass + 100 + + + + + 2.7222072019810817 + + MI_Restricted_Substances + 508489f2-cc48-4f0a-a6ee-482bb89a0386 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 5160, oil quenched & tempered at 205°C + a772bd14-162d-4be6-8c68-3a6257195aa9 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 2d8ffac5-4ca4-43ff-b862-abe7c992dea2 + Mass + 100 + + + + + 2.7222072019810817 + + MI_Restricted_Substances + 439e62b9-4268-44c6-a084-695412628448 + + water quenched & tempered at 425°C + Carbon steel, AISI 1095, water quenched & tempered at 425°C + 23ad95e3-9da9-4b3b-9a12-086d4e3782dc + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 79ab9f32-6fa4-4744-8404-a78e113343ca + Mass + 100 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 0fb5239f-3ffd-4eff-b115-ae18c7b5476a + Mass + 100 + + + + + + + 7 + 86.955840786432773 + 8850405f + part_8850405f-1bc8-4ee1-9e75-adcb828b2794 + 8850405f-1bc8-4ee1-9e75-adcb828b2794 + + + 59.7612447383633 + + MI_Restricted_Substances + b3c74dfc-9d72-4938-89cb-1a49ce0fdb80 + + Normalized + Carbon steel, AISI 1137, normalized + bef17b43-13e6-42d3-940e-9b453e4a92f6 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + b7684e39-7e3b-4dab-98cd-c9fd75c80e82 + Mass + 100 + + + + + 13.412918420545566 + + MI_Restricted_Substances + c80cfa14-8e35-42c8-a52d-d52864a3e2ea + + water quenched & tempered at 315°C + Carbon steel, AISI 1137, water quenched & tempered at 315°C + 11476ef8-d73f-4799-9563-3adac3b7fcf0 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 1a829ca7-bbba-41e3-9e71-73e060cff916 + Mass + 100 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 44697ca4-97e9-4840-9a94-831c57ced065 + Mass + 100 + + + + + 13.412918420545566 + + MI_Restricted_Substances + 9baf14a0-efff-4bce-9674-553db30bee1b + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 9255, oil quenched & tempered at 650°C + 070a8f49-a62c-48f5-8327-c2839138305a + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + f859aad7-e597-4c0f-8ee3-dbf8db722210 + Area + 56.935925575409051 + + + + + 13.412918420545566 + + MI_Restricted_Substances + d56a3593-45b4-418e-8f28-3fde55e8479f + + Homopolymer, 40% glass and mineral + PP (homopolymer, 40% glass and mineral) + a48ba86f-ca66-471e-99a7-11b96d16d089 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 928af391-7b14-4095-b310-7a0d4fb50d8b + Mass + 100 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 94837ed6-4763-4188-bcb2-f9d76fec1148 + Area + 93.1432443173338 + + + + + + + 5 + 58.993422267489791 + + MI_Restricted_Substances + a78dcd3a-f108-4fdb-857e-e2d00ed319d4 + + 09350fa0 + part_09350fa0-964d-456a-875c-2355638255a2 + 09350fa0-964d-456a-875c-2355638255a2 + + + 2 + 26.622188196807254 + + MI_Restricted_Substances + 3d4d35cd-1db3-477c-8f3f-b90800ea1c4d + + 0d5094b9 + part_0d5094b9-448f-4311-96e4-6355b5ea980e + 0d5094b9-448f-4311-96e4-6355b5ea980e + + + 1 + 42.1211239612294 + 1d364f95 + part_1d364f95-3b32-4f32-aed1-367c536a532f + 1d364f95-3b32-4f32-aed1-367c536a532f + + + 48.23920561384373 + + MI_Restricted_Substances + 7c0b2792-bc51-4837-a380-6cdb1c2fba31 + + water quenched & tempered at 205°C + Carbon steel, AISI 1030, water quenched & tempered at 205°C + f8179b44-4bf0-491c-876d-0a6302555b8e + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + ae31d735-5ef4-4561-bf00-7c41b089d9dd + Mass + 100 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + cc5b04e5-eddd-4572-abff-9cc328602f24 + MassRemoved + 56.827286843595694 + + + + + 6.4700992982695338 + + MI_Restricted_Substances + 6ad963b9-76ae-4d8e-be3b-12ec82c47054 + + Normalized + Carbon steel, AISI 1060, normalized + 1b3b78c7-840c-4991-945a-88510fccafa2 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 1a66aa79-8651-4c8e-9c86-a52ef36c31d5 + Mass + 100 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + d4f821e2-4a23-4cf2-8926-65786d7012f9 + Length + 55.494785101849018 + + + + + 6.4700992982695338 + + MI_Restricted_Substances + 3bed321b-712b-4769-ba8b-7297fb3569a7 + + Quenched & tempered + Low alloy steel, AISI 4340, quenched & tempered + 33a3eff2-e1e4-4c21-8ac7-9a905e1e862e + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 20fe4340-06c7-41b8-81d6-ca1340e1c90a + MassRemoved + 24.664297990810265 + + + + + 6.4700992982695338 + + MI_Restricted_Substances + eb2b811b-1da6-465a-857f-6d14b372a38b + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 50B60, oil quenched & tempered at 650°C + 68c27c37-385d-499b-930c-b78158169706 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 3f7cff83-2617-42ca-8868-574296edf06c + MassRemoved + 95.203585547955512 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 0a3118ff-9aae-4571-8895-a58ba84e33c9 + Length + 23.362058039457565 + + + + + 6.4700992982695338 + + MI_Restricted_Substances + bbe0765c-012b-434e-878b-b40ad692b373 + + YS550, hot rolled + High strength low alloy steel, YS550, hot rolled + c3492580-102d-4f91-8dfd-26db637181af + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 0c776f58-0051-4cb9-bb26-9be1e376bc3f + Area + 45.541906378018624 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 58f68306-3ccd-4ebf-b67f-0ae0f313ceec + Length + 40.215967567738133 + + + + + 6.4700992982695338 + + MI_Restricted_Substances + ee08f647-79af-49f3-98c5-043480a0fed4 + + Quenched & tempered + Low alloy steel, 4330V, quenched & tempered + 99290faa-a92c-4583-9b0d-32539e92b2d6 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + d0100540-dda2-4a97-bd09-1427497475ed + Length + 9.7285465848299424 + + + + + 6.4700992982695338 + + MI_Restricted_Substances + 356303d7-c574-4db7-80f9-427e176a5308 + + 40CrMoV13-9, quenched & tempered + Low alloy steel, 40CrMoV13-9, quenched & tempered + 74840c65-ae0a-441a-b6d8-05e21554527f + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + 66e4f09a-f36b-4510-8f50-40a22c2eb3e7 + Length + 43.417602844265105 + + + + + 6.4700992982695338 + + MI_Restricted_Substances + bbe3f98a-e574-482b-99cc-74e13b224dd3 + + Normalized + Low alloy steel, AISI 5160, normalized + 4e5bd8ab-b97d-437f-ab80-0c5670286203 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 51a5107c-bc3c-47c7-b6b2-23d2c8dcacec + Mass + 100 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 2c1e3bc7-75c6-4638-9130-f90efe2c2d5c + Mass + 100 + + + + + 6.4700992982695338 + + MI_Restricted_Substances + 1b3f17f9-2754-4fc4-bfa2-75ff0df55185 + + Polytetrafluoroethylene (PTFE)/Glass fiber, PCB laminate + Polytetrafluoroethylene (PTFE)/Glass fiber, PCB laminate + 4bfe58f3-cbc1-453e-92e9-688613f20f8f + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + c037fd34-47c3-445e-87e8-1c86512d3786 + Mass + 100 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 3e213698-14d3-42a2-9989-af8aa3312172 + Mass + 100 + + + + + + + 5 + 85.95529663653825 + 7ec3a18c + part_7ec3a18c-ffff-439f-9305-d9748487b66a + 7ec3a18c-ffff-439f-9305-d9748487b66a + + + 33.465488456872059 + + MI_Restricted_Substances + 9a48479a-292f-4bdd-aab5-0ad0835d7480 + + Oil quenched & tempered at 205°C + Carbon steel, AISI 1095, oil quenched & tempered at 205°C + 643411c0-010a-4d78-907b-49a80a3e41e3 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 7e66d1e3-6dba-410f-aa77-dc1022601c9c + Area + 5.7855534859865685 + + + + + 13.306902308625586 + + MI_Restricted_Substances + 5dbabc2e-4263-4458-abe1-31a2ece9e122 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 5160, oil quenched & tempered at 425°C + 4a10af13-f6ee-4995-8344-1ce2bad199ca + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 1a8fbc41-1827-4377-bb92-afb85abba9f9 + Length + 69.058964759604521 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 488d255d-4e2b-46af-9be2-a1ce70d1e17d + Mass + 100 + + + + + 13.306902308625586 + + MI_Restricted_Substances + ef0841e5-8fb9-46b4-aebb-deda5cb684ec + + SAE 8630, cast, quenched & tempered + Low alloy steel, SAE 8630, cast, quenched & tempered + 56a154cf-def2-47ce-ba1e-484564e1d13b + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 8935f69d-9e5d-4df9-8a90-62331e6f350c + MassRemoved + 54.872865860756889 + + + + + 13.306902308625586 + + MI_Restricted_Substances + 87e1a3cd-fd79-4013-b5f8-56d6f28bef34 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1144, oil quenched & tempered at 540°C + 426844c2-8310-476f-9003-ddaa939ef946 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 42356d23-a1bc-4085-918b-bcbb85dac7ce + Area + 52.543598111972024 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 0be48a8b-c143-4f2c-bc8a-1758c2e59f2e + Mass + 100 + + + + + 13.306902308625586 + + MI_Restricted_Substances + a22f3160-83fe-4a55-8459-26e3f8647523 + + 55% glass and mineral filled + PARA (55% glass and mineral filled) + c0f5f88d-93d8-43a3-a832-ac7880083a80 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + c53b58fa-c2ae-4d10-ab66-8ab56b237087 + Mass + 100 + + + + + 13.306902308625586 + + MI_Restricted_Substances + 90b2285b-4295-429d-beb8-90d9f5df0101 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 5046, oil quenched & tempered at 315°C + 0fa102a1-3015-4fd7-b13a-b44d6884f7b5 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 4d590157-848b-4d72-a031-b06cdb939687 + Mass + 100 + + + + + + + + + 4 + 3.0763709931989998 + 70f8232a + part_70f8232a-26b1-483d-adaf-c07e456b7752 + 70f8232a-26b1-483d-adaf-c07e456b7752 + + + 55.761856239178151 + + MI_Restricted_Substances + e8c6d73a-bd7a-4ef3-ae11-48e45d4a5515 + + Glass, E grade (0.4-12 micron monofilament, f) + Glass, E grade (0.4-12 micron monofilament, f) + b9ee7aab-1861-48b9-a1a2-1e4bdefc22ec + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 8d8d943a-0d46-40ba-bb6a-93f0a1dd920c + Mass + 100 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + e149f253-572a-4bc6-83d2-bf194e5708e1 + Mass + 100 + + + + + 8.84762875216437 + + MI_Restricted_Substances + 5169a157-0d18-4d45-b197-799e06aa00bc + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 9255, oil quenched & tempered at 315°C + a3bb3af9-27e6-46ca-bb64-6a2a0623375e + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 3f5ff23d-4c89-4dab-8f73-bd7fd2175a77 + Mass + 100 + + + + + 8.84762875216437 + + MI_Restricted_Substances + 6fa5237c-2f5c-4220-941e-b19cd18ec544 + + Normalized + Low alloy steel, AISI 6150, normalized + 21276669-329f-4952-91ad-c2f79f3ce717 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 7c6466b4-6d98-4968-9b81-d26df9d89279 + Length + 0.81775076725415452 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 373fe6b4-5498-48a5-8d41-e8b382c1feb0 + Mass + 100 + + + + + 8.84762875216437 + + MI_Restricted_Substances + b1fc58b3-1acb-4c8b-9974-7c4692ec32d0 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 8650, oil quenched & tempered at 650°C + 6c87c1c2-8743-45ad-9362-0f5eeac27b1b + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + fe5fb621-4a55-4fcc-80f4-aadc5cfcb7e4 + MassRemoved + 1.9487852239742804 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + b6f0f8ac-a0d0-4381-88f3-1863b47446ca + Mass + 100 + + + + + 8.84762875216437 + + MI_Restricted_Substances + d50ee383-7a44-463f-b42b-c38a6c6bb6d3 + + Oil quenched & tempered at 425°C + Carbon steel, AISI 1040, oil quenched & tempered at 425°C + 1e5cd8b2-d920-4941-8f4e-7b859656f987 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + 9b183e4f-7788-4a74-a9e0-805a3aa2c821 + Mass + 100 + + + + + 8.84762875216437 + + MI_Restricted_Substances + 6ad310ec-db2b-43b1-afa1-9b6ddae5880c + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 94B30, oil quenched & tempered at 425°C + fcc06535-6584-46b3-85f4-06d2a1ca8b03 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + db527b24-9abe-4698-aae4-4a48e47960da + Mass + 100 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 7b80ef3d-93d3-4c79-a573-357a2a358a6b + Mass + 100 + + + + + + + 9 + 89.669350529866918 + 195a024b + part_195a024b-3e4f-4b19-bbad-f089cd62b2bf + 195a024b-3e4f-4b19-bbad-f089cd62b2bf + + + 76.578830078513747 + + MI_Restricted_Substances + 439e62b9-4268-44c6-a084-695412628448 + + water quenched & tempered at 425°C + Carbon steel, AISI 1095, water quenched & tempered at 425°C + 67b10f59-fbbc-4c3b-8944-0ef9570b59db + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 2d6d5a93-a89c-4d00-b5b8-db49fa9ebc05 + Mass + 100 + + + + + 4.6842339842972507 + + MI_Restricted_Substances + ee5b018e-8d7f-4fb1-bad0-c73e871592bc + + 16Mo3, normalized + Low alloy steel, 16Mo3, normalized + 32a07b48-d0be-45e3-8e51-0f34a1c5907e + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 784bc120-d206-407b-b38f-31adfa10df74 + Length + 35.619115752921957 + + + + + 4.6842339842972507 + + MI_Restricted_Substances + d50ee383-7a44-463f-b42b-c38a6c6bb6d3 + + Oil quenched & tempered at 425°C + Carbon steel, AISI 1040, oil quenched & tempered at 425°C + e39e44b3-6e2f-4be5-ae25-ad420f1a6299 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 3ce2aaba-d58e-48ba-8e89-c26b8897924a + Mass + 100 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 9f669457-a33c-4f78-8bb6-1841e5c149d6 + Mass + 57.056501999989386 + + + + + 4.6842339842972507 + + MI_Restricted_Substances + fef7ffc8-9e47-4d80-abd6-138167e14e08 + + Oil quenched & tempered at 650°C + Carbon steel, AISI 1141, oil quenched & tempered at 650°C + e66aee7e-347b-4988-9e0b-bfcdc3a83dbe + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 27c37fbc-313f-483d-8e63-f496eb533762 + Mass + 100 + + + + + 4.6842339842972507 + + MI_Restricted_Substances + ef0841e5-8fb9-46b4-aebb-deda5cb684ec + + SAE 8630, cast, quenched & tempered + Low alloy steel, SAE 8630, cast, quenched & tempered + 7b7fb783-ed2c-4847-b99e-daeb6d988eda + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + c031e592-e0e0-4af9-8fc3-9de1734131b7 + Mass + 18.838563151116745 + + + + + 4.6842339842972507 + + MI_Restricted_Substances + 30d9edb0-09d2-4270-b4f5-8dceb44a6bd6 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1137, oil quenched & tempered at 540°C + 20ee1902-c282-4a50-92f6-2c9eacb73737 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 7e9cba50-9b50-439e-b58a-a458daa1e0d9 + MassRemoved + 97.325158676749638 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 5aa5f843-256e-4b4f-80aa-dd2b4e23e01a + MassRemoved + 3.297125503093528 + + + + + + + 6 + 23.241366503406951 + 14f0e1e4 + part_14f0e1e4-6765-4893-b03e-d2d1c17b8c71 + 14f0e1e4-6765-4893-b03e-d2d1c17b8c71 + + + 80.530636562281586 + + MI_Restricted_Substances + 90514ab4-75b3-48a9-9a07-98eb8f83ef81 + + As rolled + Carbon steel, AISI 1015, as rolled + 8e890dd5-0db6-4029-9435-1419f60aaa4f + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + f503fe00-672f-4ab5-82f5-a2aa8e08a5f9 + Mass + 100 + + + + + 2.7813376339597733 + + MI_Restricted_Substances + d02817f7-7500-4fcb-8c34-40927da681a5 + + Quenched & tempered + Carbon steel, SA216 (Type WCC), cast, quenched & tempered + 514c71a8-0111-45cc-bdcc-522dee776a2d + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + f2e8ca05-a474-49f3-a82c-c093fe13ba1b + Mass + 100 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 3452d23d-9d95-4467-9863-c68df83acf57 + Mass + 100 + + + + + 2.7813376339597733 + + MI_Restricted_Substances + 2a840794-eac4-4f77-90ba-f84bce518c0f + + Glass/phenolic honeycomb, 0°/90° fabric (0.055) + Glass/phenolic honeycomb, 0°/90° fabric (0.055), L Direction + bed81f2c-30e8-4eac-89b1-b4124a045c14 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + a8a45f5a-eead-4c40-b962-b6f711d06505 + Mass + 100 + + + + + 2.7813376339597733 + + MI_Restricted_Substances + 853c3077-4ccc-4b2e-a5dd-86833072391f + + Borosilicate - 7040 + Borosilicate - 7040 + 225f24ae-df65-45e5-8d8a-1a0f2838f5e9 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 6ebce5ce-d522-424a-9f65-be0123e5b12c + Mass + 100 + + + + + 2.7813376339597733 + + MI_Restricted_Substances + db238d75-fcb8-41f5-9289-83a352fa83a6 + + Annealed + Carbon steel, AISI 1015, annealed + b062ad8c-661d-447d-9ae2-5cc335062018 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 7160180b-1ce7-4223-b42c-2ba3efd257a9 + Mass + 100 + + + + + 2.7813376339597733 + + MI_Restricted_Substances + fc29cc59-a670-4ad6-85a0-eb07bf011f1a + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 6150, oil quenched & tempered at 425°C + 79c6cff6-2005-4f5e-9970-4ecdabcdba03 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 7fa9eff0-d7d6-4027-8ae5-e9553d3961dc + Mass + 100 + + + + + 2.7813376339597733 + + MI_Restricted_Substances + 9966da3f-c3f0-414e-9bce-4211a9eca2c3 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 8650, oil quenched & tempered at 425°C + 432ed0ab-8b6f-4207-855c-18fee527464a + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + c741e169-ad19-4998-9a3d-5b145647b204 + Mass + 100 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 47b4f5f2-84cd-4710-af7b-781e8cbb2468 + Mass + 100 + + + + + 2.7813376339597733 + + MI_Restricted_Substances + 644fc87d-87f3-468c-9a88-b8e2db43ae6b + + water quenched & tempered at 650°C + Low alloy steel, AISI 4130, water quenched & tempered at 650°C + 183ed598-d9ff-459c-9384-b0d45dd21779 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + a030dd08-4257-44c8-b5bc-ae9bc3d431ca + Mass + 100 + + + + + + + 9 + 32.967550322864 + + MI_Restricted_Substances + d89d67b6-c08f-47cb-b03a-4203cebfdf32 + + 00221385 + part_00221385-b3a7-46f9-aebd-3087369e83b7 + 00221385-b3a7-46f9-aebd-3087369e83b7 + + + 6 + 21.742705498702222 + 6c5f74ba + part_6c5f74ba-0b4a-4905-96ff-2ca89616bb58 + 6c5f74ba-0b4a-4905-96ff-2ca89616bb58 + + + 100 + + MI_Restricted_Substances + ddefbfb8-3b97-480b-887d-0ddadf161d95 + + YS350, cold rolled + High strength low alloy steel, YS350, cold rolled + d1fbfd45-2c54-40a3-bc7d-de35f6f526c6 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 49ae8788-cf29-4a3f-a545-16d8ae62529a + Area + 28.950212769652815 + + + + + + + 9 + 75.268144381823092 + e0926bb0 + part_e0926bb0-dc65-4c45-9456-7801829e6348 + e0926bb0-dc65-4c45-9456-7801829e6348 + + + 8.0295675937224029 + + MI_Restricted_Substances + 29b76cdc-672e-4a1f-8f6e-a5644857c880 + + Normalized + Low alloy steel, AISI 4135, normalized + 0625ef7f-e6ef-4910-9974-14d8e7ffbf87 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + 567d9e98-4502-4648-b8b3-ef082fc0e233 + Length + 55.245141896999037 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 424ee1ae-6beb-4d22-b51e-e53b6159a395 + Length + 65.763432004378842 + + + + + 91.9704324062776 + + MI_Restricted_Substances + 7b330562-a44d-4de7-8944-99c0b7b0d3e1 + + Quenched & tempered + Low alloy steel, AISI 8630, air melted, quenched & tempered + ee66e643-60b1-4a36-b83e-c56f8a3ac3b2 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 361bf8c7-4339-43e9-870e-3f0320c7f1ea + Mass + 100 + + + + + + + 4 + 25.966840854830497 + + MI_Restricted_Substances + a0987114-e9d2-4390-9d0f-e47283d2f4d0 + + f45dac5d + part_f45dac5d-02aa-4f5f-bfa7-35598d01e8f9 + f45dac5d-02aa-4f5f-bfa7-35598d01e8f9 + + + 1 + 65.162508639117007 + + MI_Restricted_Substances + 80083213-3621-42c0-9e23-cdaa30c759e6 + + 24a1ba54 + part_24a1ba54-01ac-4d58-936c-e842059a983c + 24a1ba54-01ac-4d58-936c-e842059a983c + + + 7 + 53.298955947765592 + b780524b + part_b780524b-e786-4e66-be8b-6fbbafc3f87a + b780524b-e786-4e66-be8b-6fbbafc3f87a + + + 92.576923776686627 + + MI_Restricted_Substances + 475d8bcb-500e-44b5-90be-8a095f5ab07a + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 4140, oil quenched & tempered at 425°C + 9d572329-af29-4a6d-ac29-60fa58766512 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 0a91caa4-8765-4ece-b073-d8f1f6ab1cb1 + Mass + 100 + + + + + 3.7115381116566866 + + MI_Restricted_Substances + 1556b3f0-3dc4-44ab-83b2-87712f9bfa12 + + Oil quenched & tempered at 650°C + Carbon steel, AISI 1080, oil quenched & tempered at 650°C + cf52a155-53ef-451c-8360-0d869f854d6e + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + a6929cda-f7db-4523-ac1f-1ddbb79f43a2 + Mass + 100 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 05e0caa4-c084-44cd-be3b-4843a77b771e + Mass + 100 + + + + + 3.7115381116566866 + + MI_Restricted_Substances + b10ab099-72fd-4e47-9274-015a08f619c2 + + Annealed + Low alloy steel, AISI 5160, annealed + de9272d8-4023-4cff-ade0-8b878a046467 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 8f56072b-43c9-400b-8c5b-e67d98543ea7 + Mass + 100 + + + + + + + 8 + 89.323968900984141 + e32026d2 + part_e32026d2-7426-453f-9f94-00e6a7129fb9 + e32026d2-7426-453f-9f94-00e6a7129fb9 + + + 63.923723187262063 + + MI_Restricted_Substances + a7ada434-62e4-411d-9c85-56dd9d44f094 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 4037, oil quenched & tempered at 425°C + 1591d1c1-f69a-4920-b545-e756b25efa02 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + b4d92019-dff1-4dd2-983f-4245e08b6729 + MassRemoved + 15.281639953740706 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 141a817e-ba3d-48a5-a2a1-6b2aeb1dd775 + MassRemoved + 97.204909938017323 + + + + + 18.038138406368969 + + MI_Restricted_Substances + 1a53b354-59b1-4129-a78d-0bfe95923541 + + Normalized + Carbon steel, AISI 1117, normalized + 54a22a08-9d3d-41be-a178-7bfea1c0def2 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + a580dffc-d62a-4f65-8eca-1a96dc2bab28 + Mass + 100 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 65585d20-e1c8-4fc2-adb5-23241e9f0c2c + MassRemoved + 75.3266816843891 + + + + + 18.038138406368969 + + MI_Restricted_Substances + af4f67b9-f5a7-4fc3-9f1d-da3309e4b19a + + Solution treated & aged + Iron-base-superalloy, Cr-Ni alloy, A-286, solution treated & aged + f7524499-f199-4c35-acee-8b946572cba5 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + 340f4f86-69e5-4f05-8788-2b0869a01cd2 + Area + 12.006861675533868 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + 6fef669b-ccb3-43cf-9954-02254a164867 + Mass + 100 + + + + + + + 3 + 38.096549659081056 + e9e99fb0 + part_e9e99fb0-50c3-47a8-adb5-23809d70c70d + e9e99fb0-50c3-47a8-adb5-23809d70c70d + + + 87.232606991768165 + + MI_Restricted_Substances + ca72e2f5-a1d0-4bb0-b612-ed5bc26a4f70 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 9255, oil quenched & tempered at 205°C + 47e5ed4b-71bd-44d3-b97d-2a1dbe69dfcc + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + e0ef29af-af9e-4bd7-944e-f5b0b133a5a0 + Mass + 100 + + + + + 1.8239132868902621 + + MI_Restricted_Substances + ce68d49d-fe57-4723-8f98-557cd3558504 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 5130, oil quenched & tempered at 205°C + e618c697-f36c-4e11-84d4-e85497c3688c + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 7e30a310-fa69-4545-ab39-35fc44b41dcd + Mass + 100 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + 8797b082-90f7-4d9e-8019-de8abe847279 + Mass + 100 + + + + + 1.8239132868902621 + + MI_Restricted_Substances + a8bcc71d-ff19-40c8-9520-f11553c604d2 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 5140, oil quenched & tempered at 650°C + c94214b9-09c7-4c4f-b9c4-afe7d09b77e1 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 874b120c-0b48-493a-b02d-e92c3b98d73b + Mass + 100 + + + + + 1.8239132868902621 + + MI_Restricted_Substances + 63d5d6b5-3b52-4cd9-a56f-6e7c5c945139 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 81B45, oil quenched & tempered at 315°C + e2fe75b0-1acc-4f11-a21b-311175a51273 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + c568c62a-1fec-4afc-b7de-314cd0c0d04a + Area + 57.159808816928326 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 30220a65-a1b4-4785-b503-01ba788bc54c + Mass + 100 + + + + + 1.8239132868902621 + + MI_Restricted_Substances + 00268f25-08c7-4add-91f3-3cc4ed1d7e34 + + Oil quenched & tempered at 425°C + Carbon steel, AISI 1141, oil quenched & tempered at 425°C + 7270e0db-6963-46f6-aa14-2d3bf76e8e14 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + f85671b9-370d-4034-bc4f-91e9b2645d55 + Mass + 100 + + + + + 1.8239132868902621 + + MI_Restricted_Substances + 31098687-aa58-4d56-99a0-f005a0258573 + + Glass/phenolic honeycomb, 0°/90° fabric (0.192) + Glass/phenolic honeycomb, 0°/90° fabric (0.192), L Direction + 458fc706-f4c8-4840-bc3b-a6e5de550e85 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + c838b879-07b5-4680-9e88-603b597a4539 + Mass + 100 + + + + + 1.8239132868902621 + + MI_Restricted_Substances + d7980de6-355d-48d2-93d7-471e3ef3b2cf + + Glass/phenolic honeycomb, ±45° fabric (0.032) + Glass/phenolic honeycomb, ±45° fabric (0.032), L Direction + 844def21-3a0f-425a-8e15-cf610855ec9e + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 62e6ab6e-6064-4c9c-ba09-ae7d2b2e3592 + Mass + 100 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 34028294-f961-400d-953c-7f2540574fe2 + Length + 76.6911161954939 + + + + + 1.8239132868902621 + + MI_Restricted_Substances + b4c065d7-6405-44fb-82cf-24ca2072f5c9 + + 300M (high carbon), quenched & tempered + Low alloy steel, 300M (high carbon), quenched & tempered + f1e42820-36e3-45dc-8a88-377a62883605 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 574de17d-5db5-4608-a946-68638b80c028 + Mass + 100 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 0506eeaf-1da0-44f5-9afa-4c873de9c3e6 + Length + 27.848751157451773 + + + + + + + 5 + 11.748979292693072 + 3e10fad4 + part_3e10fad4-becd-452d-847f-d3d359bca87f + 3e10fad4-becd-452d-847f-d3d359bca87f + + + 90.280809668023522 + + MI_Restricted_Substances + 9d224642-fb07-41ce-8191-c9b152122364 + + Quenched & tempered + Intermediate alloy, Fe-9Ni-4Co-0.30C steel, quenched & tempered + f4e5f17e-5646-404e-8cad-9fb8b98b4b1f + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + b2f45626-87b6-4f1b-b78e-7fe6cd1b992b + Mass + 100 + + + + + 3.2397301106588259 + + MI_Restricted_Substances + 8dc38bb5-eff9-4c60-9233-271a3c8f6270 + + Kovar, annealed + High alloy steel, Kovar, annealed + 19f5d901-382d-4eb3-a83e-a22dc1973b31 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + b80711d1-5204-4ad6-8a75-c7faf5917347 + Length + 31.375387511856566 + + + + + 3.2397301106588259 + + MI_Restricted_Substances + 1d9c8629-4a1d-4aaf-bb7c-ba7a97eef5f5 + + Normalized + Carbon steel, AISI 1340, normalized + e1c1b24a-48a4-4be7-8924-fd96253f0c4f + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 897bd7db-049a-4516-8474-7114d5eb7c5b + Mass + 100 + + + + + 3.2397301106588259 + + MI_Restricted_Substances + b35cf8d2-52a2-4761-b692-efabffabb0a6 + + As rolled + Carbon steel, AISI 12L14, as rolled + b4fc954b-520d-40b3-a2ef-6129530dc340 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 3e166ff8-b82b-45fc-bc26-05adf6858d0c + Mass + 100 + + + + + + + 4 + 18.434632624701891 + a493414a + part_a493414a-2c8e-457d-9c57-94cadceaacd5 + a493414a-2c8e-457d-9c57-94cadceaacd5 + + + 21.460491847926981 + + MI_Restricted_Substances + a01be0be-96e7-4123-b061-dfdbba1f1748 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 4037, oil quenched & tempered at 315°C + 6f490b8a-1bb1-4ed9-9273-2535d138e992 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + fb0c9722-d432-4d8e-8b46-eeb9a90400ae + Mass + 100 + + + + + 39.269754076036506 + + MI_Restricted_Substances + db7d255c-6269-4097-a5aa-e18a13019915 + + FR-4.0 (Df < 0.01 at 10GHz), Epoxy/Glass fiber, PCB laminate + FR-4.0 (Df < 0.01 at 10GHz), Epoxy/Glass fiber, PCB laminate + 6205bae6-cadd-45e7-aba1-c3f660389d5c + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 4c328ecd-d9fb-45aa-bff7-f8f8563c873c + Mass + 100 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 0da2f37f-a727-4c85-ac8e-52bde6211587 + Mass + 100 + + + + + 39.269754076036506 + + MI_Restricted_Substances + f65c5c4d-fbd1-4a54-8172-d3aba34c4c3a + + Annealed + Low alloy steel, AISI 4340, annealed + a1d20d36-f931-429d-a4f7-9a53c6acfd09 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 210b2098-6b44-467e-bb47-1f6d51c42e8b + Mass + 100 + + + + + + + 5 + 63.519481505974881 + b74fe856 + part_b74fe856-1cfa-4217-a3ac-a311a27d7aa9 + b74fe856-1cfa-4217-a3ac-a311a27d7aa9 + + + 94.424766904872271 + + MI_Restricted_Substances + 3e7feb56-09b4-498c-9966-c13b33dedccd + + water quenched & tempered at 205°C + Carbon steel, AISI 1137, water quenched & tempered at 205°C + fdc736a6-eeed-4531-b299-b3286941f188 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + 49206114-ba04-4d29-9247-c0a62fb3da8b + Mass + 100 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + be9698e6-9653-4c5d-a642-b120dd4d8fc2 + Mass + 100 + + + + + 1.8584110317092428 + + MI_Restricted_Substances + f65c5c4d-fbd1-4a54-8172-d3aba34c4c3a + + Annealed + Low alloy steel, AISI 4340, annealed + afa33e0e-ea40-434d-9e1e-e027575a3962 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + e8633a1f-f4b1-4273-86a1-c1abfaa2169b + Mass + 100 + + + + + 1.8584110317092428 + + MI_Restricted_Substances + 6d658600-d198-46ed-bcca-cd0e3e2f5f4d + + Oil quenched & tempered at 425°C + Carbon steel, AISI 1060, oil quenched & tempered at 425°C + fd950d24-e9d5-49ba-88b2-2eab4f6676fc + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 5200ca4d-b9a1-4b75-b110-d3e6bbcfc2e9 + Mass + 100 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 0c8c7d8c-abef-45ba-b45d-9d46600da479 + Area + 4.6632376986850232 + + + + + 1.8584110317092428 + + MI_Restricted_Substances + aec2777b-f126-4f12-b748-b94bf7393f2a + + Oil quenched & tempered at 650°C + Carbon steel, AISI 1060, oil quenched & tempered at 650°C + 79efa484-5232-4d43-89cc-4df07b2f7710 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + f2b9be9c-065a-4cb7-bb3a-91d15c0da6a2 + Mass + 100 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 59d4441e-0d49-454f-8792-5ed9e1077e55 + Mass + 100 + + + + + + + 4 + 77.080678882580571 + e4846aaa + part_e4846aaa-7030-44d8-86a2-6d16f9870dfe + e4846aaa-7030-44d8-86a2-6d16f9870dfe + + + 22.162508648895894 + + MI_Restricted_Substances + 5dbabc2e-4263-4458-abe1-31a2ece9e122 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 5160, oil quenched & tempered at 425°C + a85e8b0c-629b-492f-9e8f-b722a47356bb + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 468a3b3e-a3a3-4eb3-b340-f061f8c02506 + Area + 97.576662151877144 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 29b6840a-3421-4551-a038-0d4c71805cb8 + MassRemoved + 31.97802865504195 + + + + + 15.56749827022082 + + MI_Restricted_Substances + 9d224642-fb07-41ce-8191-c9b152122364 + + Quenched & tempered + Intermediate alloy, Fe-9Ni-4Co-0.30C steel, quenched & tempered + 4d3f486c-0f70-4522-9fbe-098b92bb9fbd + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + a54b7ead-0c88-4e24-9b62-d62c7fff051f + Mass + 100 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 5c11af00-f631-4998-ba25-9f61da956951 + Mass + 100 + + + + + 15.56749827022082 + + MI_Restricted_Substances + 3427457c-2b3d-4a7e-adbc-40fddd4c1f0e + + Normalized + Carbon steel, AISI 1020, normalized + d8bb7304-72ad-4659-a203-bb9538a5f4c2 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 4c4b4778-7bc0-4218-a370-1e68bd6124d9 + MassRemoved + 22.082696818785134 + + + + + 15.56749827022082 + + MI_Restricted_Substances + ddefbfb8-3b97-480b-887d-0ddadf161d95 + + YS350, cold rolled + High strength low alloy steel, YS350, cold rolled + d97b1f11-dbd3-4d5b-adc3-7a341c0102e2 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 47bbacde-0746-4420-bcb2-0868ce452618 + Mass + 100 + + + + + 15.56749827022082 + + MI_Restricted_Substances + b0c0246d-7238-46e4-9081-5bad34efbbdb + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 5140, oil quenched & tempered at 205°C + 6286beb2-d177-41cb-ba24-9907a04f02f7 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + eeae8e7f-b263-4993-bace-18b73e205c15 + Mass + 100 + + + + + 15.56749827022082 + + MI_Restricted_Substances + 0c172430-369d-48ad-910e-69fe1451a36e + + Normalized + Carbon steel, AISI 1095, normalized + a73f6675-eaa3-4004-9b77-6c49339c9ff3 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + e81a0263-0def-4aea-a0d6-e90ab2aa8b88 + Mass + 100 + + + + + + + 8 + 81.068579610934748 + + MI_Restricted_Substances + 2c677abc-5da2-4b21-9ce7-1d4e1cc0fb1c + + b5bf3503 + part_b5bf3503-c2cb-4a72-9c0f-7376cb2517d4 + b5bf3503-c2cb-4a72-9c0f-7376cb2517d4 + + + 3 + 15.700913181389176 + 8210398c + part_8210398c-aaf0-43f7-a5ff-df80e79cf3ee + 8210398c-aaf0-43f7-a5ff-df80e79cf3ee + + + 69.632973461241 + + MI_Restricted_Substances + 546a4247-5e3b-4adb-bc7e-3fc87f992447 + + Glass/phenolic honeycomb, 0°/90° fabric (0.055) + Glass/phenolic honeycomb, 0°/90° fabric (0.055), W Direction + 44a3e2c7-4127-4455-8f81-cde7273288ee + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 77287849-ec77-4920-b347-7256e0fafd43 + Mass + 100 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 5595bcbe-fef5-422e-81b1-22d819f4917e + Mass + 100 + + + + + 3.7958783173448758 + + MI_Restricted_Substances + 4b01d1e1-0f4c-4861-a797-7ea504ca38c4 + + Annealed + Low alloy steel, AISI 5150, annealed + 0cbaebc3-d894-4c2c-a8b7-fe3550381f20 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 08103bd5-a39d-4af5-9831-86999d865808 + Mass + 100 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + a8f6049b-2e2c-4238-b19a-d60b2fe5cbea + Mass + 100 + + + + + 3.7958783173448758 + + MI_Restricted_Substances + 6f9ce415-05a1-4774-bf1d-8952ab0f7306 + + Annealed + Low alloy steel, AISI 3140, annealed + b0d2f6dc-8f7c-4edc-b53f-1b3e2483b7eb + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 1b54f288-298c-4025-834a-c8f51d922266 + Area + 48.800121363624989 + + + + + 3.7958783173448758 + + MI_Restricted_Substances + 75a1c963-399c-444d-a38f-1929c00d15b7 + + Normalized + Low alloy steel, AISI 4150, normalized + 6de439af-fed7-4b77-973f-6ea42f142d38 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + a802bf5c-7424-4c38-82ee-265472c023c5 + Mass + 100 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + b84fda56-2306-4a38-96bd-24cce1cc5d42 + Mass + 100 + + + + + 3.7958783173448758 + + MI_Restricted_Substances + c2db0402-57c5-422f-b8c1-470fc9c6a9c8 + + Glass/phenolic honeycomb, 0°/90° fabric (0.112) + Glass/phenolic honeycomb, 0°/90° fabric (0.112), W Direction + ecb55168-b41b-43ca-9618-4429d50c25eb + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 469406a2-91cb-4ab4-b28a-c67acccb0730 + Mass + 100 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 8a073186-2e0a-4fe8-9785-facda396fce6 + Area + 11.150030517554855 + + + + + 3.7958783173448758 + + MI_Restricted_Substances + f931cdfe-568b-40b5-b238-ea22a815f312 + + ASTM A537 Class 1, normalized + Structural steel, ASTM A537 Class 1, normalized + 9adb933b-500f-4d0d-b6a8-36e2d08596a6 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + e4ec61b6-3156-44e2-b462-3b57835e8327 + MassRemoved + 7.8363897781057235 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + bc141ac6-6115-40a5-a0a9-188282d60cd2 + Mass + 100 + + + + + 3.7958783173448758 + + MI_Restricted_Substances + 04970b9b-7242-4f31-9a78-dee5e31ed341 + + As rolled + Carbon steel, AISI 1030, as rolled + 088be378-469c-495e-9909-523886534fef + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 21d7fd53-6d96-42d6-84e1-abb6c2c4e829 + Mass + 10.23056977904894 + + + + + 3.7958783173448758 + + MI_Restricted_Substances + 1a90238a-48c1-429a-83fc-e88d2c04dd94 + + Normalized + Low alloy steel, AISI 4140, normalized + 5048e052-f782-4b3a-b448-7bd7f648ea89 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + e170480f-259c-4407-a309-b0ea170503e1 + Mass + 100 + + + + + 3.7958783173448758 + + MI_Restricted_Substances + 79e715fe-fa1c-4bd9-9c99-83e41d74d87d + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 8630, oil quenched & tempered at 650°C + ed498724-7704-41fb-b943-86037c9ed2bb + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 02e846ea-584c-4a29-a82e-9067a7f01c9d + Area + 73.968612809650878 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + e46e3ef9-69c9-44a0-bce9-87b1a96ceb91 + Mass + 100 + + + + + + + 3 + 65.04590705272085 + a457a7d2 + part_a457a7d2-a39c-4699-b2c4-cbc0fbaef423 + a457a7d2-a39c-4699-b2c4-cbc0fbaef423 + + + 89.822766925125734 + + MI_Restricted_Substances + 9c05e644-9257-4778-9c68-be0cff6f58b5 + + Annealed + Low alloy steel, AISI 8620, annealed + 94841a1a-6b1f-4db6-89c7-16a566c68bb2 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 7b18f2a9-1949-42ad-9001-8f14be8f579b + Mass + 100 + + + + + 2.5443082687185665 + + MI_Restricted_Substances + df40828d-d5c3-4a43-9f00-5de867f4f406 + + Normalized + Low alloy steel, AISI 4320, normalized + c5185d73-1569-4b14-a7f9-fdf4ff504f2b + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 8f29bf51-4fa8-4e4f-bb35-c49d08a40800 + Mass + 100 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + a15f246e-0d91-4685-9f92-365acfcd9c75 + Mass + 100 + + + + + 2.5443082687185665 + + MI_Restricted_Substances + ef4e19ac-4c9c-4fc1-b971-3ce21de330a2 + + Glass/polyimide honeycomb, ±45° fabric (0.128) + Glass/polyimide honeycomb, ±45° fabric (0.128), W Direction + 1605cb26-7283-4069-a6ac-a5dade1e63ae + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + b5855ad8-769a-40f5-8bba-1ee6824f19a3 + Mass + 100 + + + + + 2.5443082687185665 + + MI_Restricted_Substances + a6ee4feb-80c5-43a7-b3ee-a1423218f502 + + AF1410 + High alloy steel, AF1410, solution treated & overaged + 671a69d9-6c2b-409c-8196-30e3e97636d1 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 461f3020-5fe4-4eeb-a2ac-359a8eea06a1 + Mass + 100 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 75de2e44-2518-4212-b68b-cd5f68eb0842 + Mass + 100 + + + + + 2.5443082687185665 + + MI_Restricted_Substances + 33160988-8422-40e2-93d1-e3e7467eafe9 + + Normalized + Carbon steel, AISI 1030, normalized + 65ec1327-8d01-4d68-a55c-a5f04b293114 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 4d03e670-e7b0-4ca6-8f6f-509eb916e02a + Mass + 100 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 5d9e5486-9b0c-460d-8224-e9c25d8a2b17 + Mass + 100 + + + + + + + 9 + 95.032587971087821 + c931aa13 + part_c931aa13-732d-4318-bed3-68ce005aee06 + c931aa13-732d-4318-bed3-68ce005aee06 + + + 16.335706839494271 + + MI_Restricted_Substances + b869cbb1-f68c-4d4a-ba09-c5ac060f1e31 + + Normalized + Low alloy steel, AISI 4620, normalized + ff67b556-303c-40af-a97f-17331d556521 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + ee824d43-d43c-4944-a23f-5a21aab9e2ca + MassRemoved + 19.787212749844048 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 07ea8c41-6dc7-427b-929a-e9c0956b9886 + Mass + 100 + + + + + 13.944048860084289 + + MI_Restricted_Substances + aa963e30-fca0-439d-bee2-ff48daa946f3 + + As rolled + Carbon steel, AISI 1095, as rolled + 8016f162-1c68-443a-b881-717f1e33eda2 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + 2d8fc038-9b33-406e-91f0-54703ecdfe0f + Mass + 100 + + + + + 13.944048860084289 + + MI_Restricted_Substances + 7a62318a-eff2-4f36-9925-ee919c5b4369 + + S235J + Structural steel, S235J + ccd91f23-7ae8-4927-be26-8bebe007d4e3 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + aa58fc1a-fd0d-402f-848b-01fe8c32e24f + Mass + 100 + + + + + 13.944048860084289 + + MI_Restricted_Substances + 3b818b25-e6de-4e5c-b546-e97c68e10225 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 5046, oil quenched & tempered at 650°C + 43af60f5-260b-44d2-92a1-87f7febe4590 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + e441cf67-84b9-4aa5-9ffa-b4bbd7081a53 + Mass + 100 + + + + + 13.944048860084289 + + MI_Restricted_Substances + c372db87-c3ae-4ef1-a9e5-defa1160f895 + + Glass/phenolic honeycomb, 0°/90° fabric (0.112) + Glass/phenolic honeycomb, 0°/90° fabric (0.112), L Direction + e95ea201-68e6-41af-80fd-7d9a92ae3f6d + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + c2368517-a0cf-417c-b548-107832a0178e + MassRemoved + 7.3714083094948011 + + + + + 13.944048860084289 + + MI_Restricted_Substances + 3e7feb56-09b4-498c-9966-c13b33dedccd + + water quenched & tempered at 205°C + Carbon steel, AISI 1137, water quenched & tempered at 205°C + 87ec12a7-8cdd-4174-90ae-31a82bfce945 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + bb565928-1afb-49e8-8d4d-ee54fa3bd189 + Mass + 100 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + a889bc2d-0015-4165-a4fb-e5d1d837966f + Length + 15.515472188366331 + + + + + 13.944048860084289 + + MI_Restricted_Substances + 0840d007-df07-4e12-bda5-bfc060fb15e6 + + Annealed + Low alloy steel, AISI 4320, annealed + e94f9a80-5706-448a-846d-d6055c096ce5 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 5a324b5b-9b75-422b-badd-c6f6addc1fdd + Mass + 100 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 6456b4f8-63df-4346-b43a-d5904364e259 + Mass + 100 + + + + + + + 8 + 41.166951945594953 + + MI_Restricted_Substances + 3d4d35cd-1db3-477c-8f3f-b90800ea1c4d + + d98fa79d + part_d98fa79d-9a65-4010-8c95-627aef9463a7 + d98fa79d-9a65-4010-8c95-627aef9463a7 + + + 9 + 45.096217489380493 + 4c6fcfd8 + part_4c6fcfd8-27aa-418b-bc49-d1829aac31f2 + 4c6fcfd8-27aa-418b-bc49-d1829aac31f2 + + + 33.186481629119477 + + MI_Restricted_Substances + d7980de6-355d-48d2-93d7-471e3ef3b2cf + + Glass/phenolic honeycomb, ±45° fabric (0.032) + Glass/phenolic honeycomb, ±45° fabric (0.032), L Direction + b921b8b4-2c86-4bee-a0b7-c67d943ab3e9 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + baa7ae9f-bf5f-4b8d-b3da-a2eb6dabbffb + Mass + 77.401227959152891 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 8ccf56ed-6624-4eeb-a014-3496d03c4eea + Mass + 39.094396838496628 + + + + + 9.5447883386972183 + + MI_Restricted_Substances + ab895171-8c16-4056-9062-78f7516be1b0 + + Borosilicate - 7050 + Borosilicate - 7050 + ca2ea373-9e27-4b69-aef4-519281dce6c9 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + f4f5493c-af77-431e-84b8-dc5839542adc + Area + 57.213367594971032 + + + + + 9.5447883386972183 + + MI_Restricted_Substances + 53268754-75cd-4016-8ed0-2577d32f766e + + As rolled + Carbon steel, AISI 1060, as rolled + 100eb4bb-59fd-4daf-8719-c5616d4e2aa5 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 4687d55a-1e3d-4a18-b3d9-5aa80b0df836 + Mass + 100 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 780cc4b7-361a-46e6-8119-4a016124f789 + Area + 17.550300861499412 + + + + + 9.5447883386972183 + + MI_Restricted_Substances + a22f3160-83fe-4a55-8459-26e3f8647523 + + 55% glass and mineral filled + PARA (55% glass and mineral filled) + 5f210b37-d70c-42ae-81ef-8eee2decaa73 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 5b2b9ce6-2c6a-4041-904f-9d8860044acd + Mass + 100 + + + + + 9.5447883386972183 + + MI_Restricted_Substances + c372db87-c3ae-4ef1-a9e5-defa1160f895 + + Glass/phenolic honeycomb, 0°/90° fabric (0.112) + Glass/phenolic honeycomb, 0°/90° fabric (0.112), L Direction + e0ec696c-370a-4840-b698-797569a24214 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 12522387-7f5d-429f-b2e3-2800e05fe4f9 + Mass + 100 + + + + + 9.5447883386972183 + + MI_Restricted_Substances + f508194e-6de7-4b6d-9f6f-7edb9addb85e + + Normalized + Carbon steel, AISI 1025, normalized + 7d6d4b93-fe09-48f6-90ca-06060782d354 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 7415b6b0-5d98-44a7-83f1-e6ac5e820c5c + Length + 25.469624449251977 + + + + + 9.5447883386972183 + + MI_Restricted_Substances + bb5f06fe-89ba-4708-8639-2e15c5c1cc4c + + Glass ceramic - 0330 + Glass ceramic - 0330 + 61a17a52-00f5-49ea-a68c-201eee68b1e8 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 4dd9c8a6-a70c-4b6a-a543-ba7104ade0ff + Mass + 100 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 75680045-166d-4bf3-8184-e7f46c3f2eb5 + Mass + 100 + + + + + 9.5447883386972183 + + MI_Restricted_Substances + f05d84ea-b8e2-46d1-83a4-577038c5ed32 + + As rolled + Carbon steel, AISI 1040, as rolled + c74fc6fa-d1f5-4e4c-9807-045bd5eb53ac + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 726ff067-da3a-4633-83eb-03a663c2431d + Length + 29.97018035034192 + + + + + + + 1 + 94.821921267929454 + 45c3c5aa + part_45c3c5aa-ca54-4e38-8b94-588d5d0dba7a + 45c3c5aa-ca54-4e38-8b94-588d5d0dba7a + + + 55.938318677217843 + + MI_Restricted_Substances + b1b14aff-8354-447c-9883-df4969a517a3 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 86B45, oil quenched & tempered at 315°C + d662fd50-7be2-4186-b04a-5c25a06b3e1f + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 6a575f86-25e6-4e12-ac46-c5e557ade046 + Mass + 11.892100801641169 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 06b27a1d-2427-43cd-a637-13aa583eb8f8 + Area + 94.382777528084247 + + + + + 11.015420330695539 + + MI_Restricted_Substances + b47d0104-e07a-4ebb-a481-18bc330d2ace + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 4340, oil quenched & tempered at 205°C + 9f48b8cd-31f7-4443-be9d-59b42767a0cf + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + b6d56b98-fc3d-4922-908c-8f0d147ce118 + Mass + 100 + + + + + 11.015420330695539 + + MI_Restricted_Substances + aa4540cb-3277-459f-a69a-ca324ddd0125 + + Glass ceramic (N0) + Glass ceramic (N0) + 700295de-ff35-4c30-8b51-085ebb8b4c7c + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 7febd832-fac7-41a3-9812-b041b38cdbad + Area + 39.837708016781932 + + + + + 11.015420330695539 + + MI_Restricted_Substances + a68201e5-218b-4387-9e30-d1332ccfa44f + + Oil quenched & tempered at 315°C + Carbon steel, AISI 1340, oil quenched & tempered at 315°C + baa90fa4-3ffb-45e4-b9f9-237e6a8d2c65 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + 21872dd4-8a64-40a3-931b-85ded9a7a9a7 + Length + 69.831599420789445 + + + + + 11.015420330695539 + + MI_Restricted_Substances + 9c05e644-9257-4778-9c68-be0cff6f58b5 + + Annealed + Low alloy steel, AISI 8620, annealed + 23bf3ceb-5f97-4862-bc95-47d220e98e6a + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + e6cce66e-28ef-43e1-88c4-c5573ee824d5 + Mass + 100 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + aca5a0a2-aea6-4028-b812-8e0953fad5f7 + MassRemoved + 42.472574786503138 + + + + + + + 4 + 22.143999031811955 + 36c649b1 + part_36c649b1-a957-4f0a-ba12-f99623733e3b + 36c649b1-a957-4f0a-ba12-f99623733e3b + + + 75.292657117961284 + + MI_Restricted_Substances + 9ecfadb9-f61f-48b3-81b1-bcac80eb164f + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 4150, oil quenched & tempered at 315°C + 6de93e26-7f8a-4644-9ff1-d3ba8341b247 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + d84d74df-f777-4b5b-834a-08953934bece + Area + 68.684520185312508 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 78c6e9f8-ae12-46bf-93bf-b26034c025d5 + MassRemoved + 39.263671701431122 + + + + + 4.9414685764077433 + + MI_Restricted_Substances + 1851a6ff-c2e6-4bc6-ab7a-a0eae431e281 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 5140, oil quenched & tempered at 540°C + 9dd9ceb8-e619-481b-8f99-076e8df0fa8f + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 677be290-d4e2-4ccc-b422-8e3e88169e90 + Mass + 100 + + + + + 4.9414685764077433 + + MI_Restricted_Substances + 192eb301-460f-4dc8-82ec-d451fef09827 + + Glass/polyimide honeycomb, ±45° fabric (0.064) + Glass/polyimide honeycomb, ±45° fabric (0.064), W Direction + ab9dfcac-de94-44b3-9b12-2a3ef82ccdef + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 6f8a024d-ef38-4303-b6f9-898348a5e05a + Mass + 100 + + + + + 4.9414685764077433 + + MI_Restricted_Substances + 0afa77bf-df9b-456c-8c48-3c84b1ccd2e0 + + Low density glass-sphere filled + Bisphenol molding compound (low density glass-sphere filled) + 4287941f-36b4-4feb-a928-4d8803bacdc4 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + a16d8051-7432-4c1f-92db-6407d3666b77 + Mass + 100 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 00e31473-0e80-4da8-98cc-86c07e300c50 + Mass + 100 + + + + + 4.9414685764077433 + + MI_Restricted_Substances + 8db72069-1e87-4b0f-84bc-cddf9ad19b4b + + water quenched & tempered at 540°C + Carbon steel, AISI 1050, water quenched & tempered at 540°C + 95c74639-f319-44b9-a88a-f3f6689e01d9 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + df367a5b-4d55-4e42-854c-1713dbee2576 + Area + 84.977147208981748 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + d459c727-3664-4f98-be9b-a715dba56277 + Mass + 100 + + + + + 4.9414685764077433 + + MI_Restricted_Substances + 2ad846d3-e112-42bc-bee5-4ac11e7492ba + + 250, maraged + Maraging steel, 250, maraged at 482°C + ccb33e25-61bc-43fc-87e2-1f5b739229c5 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + ab68e333-a7ab-46fc-8e66-623bbce05a06 + Mass + 100 + + + + + + + 7 + 41.748734210500835 + + MI_Restricted_Substances + 3d4d35cd-1db3-477c-8f3f-b90800ea1c4d + + 412e9d69 + part_412e9d69-8ccd-4db8-8d6e-0a19595b0ff3 + 412e9d69-8ccd-4db8-8d6e-0a19595b0ff3 + + + 1 + 11.777195852146109 + 4e07a4e4 + part_4e07a4e4-4b6b-4ab0-8a9a-85018488472c + 4e07a4e4-4b6b-4ab0-8a9a-85018488472c + + + 12.89145383652833 + + MI_Restricted_Substances + a83cb894-badf-47de-8aff-fe75bbb39ecd + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 81B45, oil quenched & tempered at 540°C + eada61b3-01ac-4ca6-96e6-99432b545b10 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 6c78e14e-8ba5-42ff-9feb-31af60a6ea6b + Mass + 100 + + + + + 87.108546163471672 + + MI_Restricted_Substances + b10ab099-72fd-4e47-9274-015a08f619c2 + + Annealed + Low alloy steel, AISI 5160, annealed + 9b3c225b-6927-4dab-a909-c0e78ab38bc5 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 2aafe353-9cdf-4ae7-81e7-c845c22c7730 + Mass + 100 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 7d9c749c-032c-4014-aee3-a19dc9c8a2a1 + Length + 65.22252348494834 + + + + + + + 7 + 65.298063245275088 + 02b9158f + part_02b9158f-ac57-451b-9ddc-59cd2a3d09f2 + 02b9158f-ac57-451b-9ddc-59cd2a3d09f2 + + + 86.083201126234229 + + MI_Restricted_Substances + 1f39574e-b571-4f15-b7c2-4e54411e3fb3 + + water quenched & tempered at 650°C + Carbon steel, AISI 1137, water quenched & tempered at 650°C + b2f3992f-70f4-4393-9844-f9be4fcc6328 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + a84924f5-ad44-40e5-a1f3-40b87133ee26 + Mass + 100 + + + + + 1.9881141248236816 + + MI_Restricted_Substances + bf6aa85b-3059-4b2c-86af-6bcb1996d5b9 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1340, oil quenched & tempered at 540°C + 4df2873d-97ea-482c-be3b-979c3995435f + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 3727beb1-0b8c-4891-af51-a924119ec964 + Mass + 100 + + + + + 1.9881141248236816 + + MI_Restricted_Substances + e5cb0b28-b074-4eb6-95ab-12e8692a87ea + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 50B60, oil quenched & tempered at 540°C + d17ef8cd-535b-498b-b313-5cac5ec78787 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + 6c3f805b-239f-4836-a730-a6ce31a6bd49 + Mass + 100 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 1bfc3801-dd97-4bdb-bba3-5e0eef8601ab + Mass + 100 + + + + + 1.9881141248236816 + + MI_Restricted_Substances + 72799627-a7c0-4df4-8250-e2be8538565f + + Glass ceramic (N11) + Glass ceramic (N11) + 5e286efa-b710-4d5b-b2c2-2f397ab0e46b + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 51f4a553-0c62-4c9f-9522-dd1f3853dbd4 + Mass + 100 + + + + + 1.9881141248236816 + + MI_Restricted_Substances + 8cd50236-3f00-4460-9e77-bc85138f34c4 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 51B60, oil quenched & tempered at 425°C + 32c4e3ad-6c13-40b8-b0cd-bc939c807c5f + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + e4dab1ed-d5a8-43d4-b4a5-f1dbf2d7a376 + Mass + 100 + + + + + 1.9881141248236816 + + MI_Restricted_Substances + 8be87fd7-f406-4a50-9150-2a29e4a26bfa + + Aluminoborosilicate - N51a + Aluminoborosilicate - N51a + bfa70fef-d853-42a4-b83d-73289e70c987 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + ce19d434-3eee-4e4b-9a47-ee280c1b7c83 + Mass + 100 + + + + + 1.9881141248236816 + + MI_Restricted_Substances + 7c0b2792-bc51-4837-a380-6cdb1c2fba31 + + water quenched & tempered at 205°C + Carbon steel, AISI 1030, water quenched & tempered at 205°C + ad90b266-4478-48aa-88ef-c2693d8d4463 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + 9281d347-54f6-4ccc-8f00-8f66f263ec35 + Mass + 100 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + be1e5cc6-8037-4091-bd75-8fb87907f926 + Mass + 100 + + + + + 1.9881141248236816 + + MI_Restricted_Substances + 48753642-e968-4a1f-92a1-c7b2e10c3fa0 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1060, oil quenched & tempered at 540°C + 8d4bbf76-e11e-42bb-abd5-c589e48cede2 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 67a63d46-dbdc-4e8a-b57d-9be080e27fca + Mass + 100 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 75e4a0db-0f3a-4dc7-b9f7-53c7cf5cf484 + Mass + 3.3637464993464512 + + + + + + + 7 + 1.6180497136051069 + 2ccb1d17 + part_2ccb1d17-f935-416e-afca-53702412172d + 2ccb1d17-f935-416e-afca-53702412172d + + + 14.568241738978886 + + MI_Restricted_Substances + be0bbb94-0c22-4276-9615-902f13ee0363 + + Oil quenched & tempered at 315°C + Carbon steel, AISI 1144, oil quenched & tempered at 315°C + 8ea4c0fd-a002-451c-a6e8-6924341889a3 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + bd3522ba-4106-4b60-8fc3-1abb38df1b09 + Mass + 100 + + + + + 85.431758261021116 + + MI_Restricted_Substances + db238d75-fcb8-41f5-9289-83a352fa83a6 + + Annealed + Carbon steel, AISI 1015, annealed + 6ea66f6d-ac3e-4179-ac62-13ff1764797d + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 33691a0b-11a2-43ee-850e-46683e369779 + Mass + 100 + + + + + + + 7 + 35.786516236041912 + adc60ac2 + part_adc60ac2-0b8f-41fa-a011-25ed79762bb7 + adc60ac2-0b8f-41fa-a011-25ed79762bb7 + + + 88.524026837443941 + + MI_Restricted_Substances + 06a05a3e-1419-430e-bd94-120296b4c49e + + Normalized + Low alloy steel, AISI 9255, normalized + 31740ff9-d5f1-40b6-bfa4-1cda064e0303 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + e89b9709-f53e-4b57-8f30-b76bbf4bb88b + Mass + 100 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + b6868b7b-8e92-487d-8852-cb0acb2c1eaa + Mass + 100 + + + + + 2.2951946325112118 + + MI_Restricted_Substances + a84110a5-15ac-4560-8e1e-642b3441da3c + + water quenched & tempered at 540°C + Low alloy steel, AISI 4130, water quenched & tempered at 540°C + 8e599c94-c6f9-41bf-8f5f-9ce12eec2739 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + a14aadca-2540-42e7-a9c1-6b4591e730cc + Length + 50.149607355776062 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 50ad3d84-915f-40c0-9339-52ccd33ed213 + Mass + 100 + + + + + 2.2951946325112118 + + MI_Restricted_Substances + b4c065d7-6405-44fb-82cf-24ca2072f5c9 + + 300M (high carbon), quenched & tempered + Low alloy steel, 300M (high carbon), quenched & tempered + d5fddba9-d61c-43d2-b3b9-0035f3b78fdd + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 66666fe5-dd7b-44ca-a1b0-4f912f48bc1f + Mass + 100 + + + + + 2.2951946325112118 + + MI_Restricted_Substances + fbdbafa4-b1a5-410d-a3f0-0b7077b0d7be + + Glass/polyimide honeycomb, ±45° fabric (0.112) + Glass/polyimide honeycomb, ±45° fabric (0.112), L Direction + 46d7d2d9-5bf6-43e2-ab8f-dd4723f36336 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 8442fdab-d90d-4f7e-833a-62e518b5aff9 + Mass + 100 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + fc2508fb-3e4b-4314-92b2-06692e1d2bf2 + MassRemoved + 41.76232178777564 + + + + + 2.2951946325112118 + + MI_Restricted_Substances + a1ecb25a-cbfa-484f-8221-3c08313c0d09 + + Glass/polyimide honeycomb, ±45° fabric (0.051) + Glass/polyimide honeycomb, ±45° fabric (0.051), L Direction + d3910f5c-5814-4376-90d5-1c3d8bac180e + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + e547c588-2953-4e9d-9329-8c14922fad6d + Mass + 100 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 8640ec1e-9f72-483a-85e4-efa340ebc4f3 + Mass + 100 + + + + + 2.2951946325112118 + + MI_Restricted_Substances + f7a5d844-1935-486f-adbe-99917b26b44b + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 4340, oil quenched & tempered at 315°C + 48e66c16-d6ab-4b09-9d94-975d8f246d90 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + f5ee22f3-bf2a-4273-ba68-2792bcecd1cf + Mass + 100 + + + + + + + 4 + 25.260202598413546 + 26bd8e2c + part_26bd8e2c-1a75-41d0-ac98-46b9b5e34dd5 + 26bd8e2c-1a75-41d0-ac98-46b9b5e34dd5 + + + 94.470490559223336 + + MI_Restricted_Substances + 6134776a-9764-4c71-b7a7-d2f9b7549541 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 8650, oil quenched & tempered at 315°C + 26d8597c-d71b-4049-abac-0827d97f1099 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 8a84d84b-218a-424f-99de-bd6715fee8b7 + Mass + 100 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 8644ce93-7a6d-44b1-90ee-9f78e593fb64 + Mass + 100 + + + + + 2.764754720388332 + + MI_Restricted_Substances + 29b76cdc-672e-4a1f-8f6e-a5644857c880 + + Normalized + Low alloy steel, AISI 4135, normalized + 5c791230-b424-4b95-8e77-433b9965e61e + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 05d2de98-77cd-4e15-8cb2-648e45a14d4b + Mass + 100 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 2ff312c0-e0fd-4795-9f1b-6adb5f2745e8 + Mass + 100 + + + + + 2.764754720388332 + + MI_Restricted_Substances + 55eaa961-cbe2-4f0a-9531-ec40dc32555a + + YS260, cold rolled + Interstitial free steel, YS260, cold rolled + f5b9069a-21f2-4805-9fa6-10bbfe2d8798 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + e6c4dde9-c580-45a7-940d-64a332b46231 + MassRemoved + 54.093045487111922 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + f8de7007-93b1-4c16-a4df-9817e25e0d4a + Mass + 100 + + + + + + + 9 + 71.6776263768215 + ca19d9ea + part_ca19d9ea-8ca0-484c-81db-f0bd52142b9f + ca19d9ea-8ca0-484c-81db-f0bd52142b9f + + + 59.690446201567745 + + MI_Restricted_Substances + 1d0ad45b-4da7-4c47-9850-754d0f67c02a + + Glass/polyimide honeycomb, ±45° fabric (0.096) + Glass/polyimide honeycomb, ±45° fabric (0.096), W Direction + 6c8308a1-a083-4648-828d-85cc00bd926f + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 2805da0d-1cd9-4846-917f-0eeddb1f2eee + Mass + 100 + + + + + 5.0386942248040318 + + MI_Restricted_Substances + 87e1a3cd-fd79-4013-b5f8-56d6f28bef34 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1144, oil quenched & tempered at 540°C + bd45b7c3-53dd-4545-a818-9e8a14433718 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 829287dd-168b-4894-b384-cf9c564e5eb5 + Mass + 100 + + + + + 5.0386942248040318 + + MI_Restricted_Substances + c87d2bef-0549-4a3b-b699-3ad17b079fa1 + + YS355, hot rolled + High strength low alloy steel, YS355, hot rolled + 3f725bb6-02ef-4193-b8d3-3dbc9c54e9ff + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + 6c48f731-cf08-4179-a64a-6bebca0e91e0 + Area + 40.897892015472934 + + + + + 5.0386942248040318 + + MI_Restricted_Substances + 50342378-5548-45ea-9a21-c0f16c6dcb1a + + Steel, terne coated + Coated steel, steel, terne coated + 0593fce9-6880-4931-804c-66c8741c542b + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + b3d8351c-fed0-4c9d-ae1b-748247fc6a80 + Mass + 100 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 411fd344-6411-4706-b6e6-2dcfd232887e + Mass + 100 + + + + + 5.0386942248040318 + + MI_Restricted_Substances + f76f3301-2bc9-4ad6-b438-b97cf4ca70b5 + + Silica (96%) + Silica (96%) + 3005609b-3b36-4665-b4c0-91998ffc4396 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 2ee50bf8-af5f-465c-ae27-71d171943cb4 + Area + 25.511942396644478 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 3c3be329-3045-4c83-9708-467b04bf44ac + MassRemoved + 54.940783397732659 + + + + + 5.0386942248040318 + + MI_Restricted_Substances + 1d24ecfa-ec45-4a74-9ad7-ceac6eef8ad3 + + Annealed + Low alloy steel, AISI 41L40, annealed + e41ace63-fc60-496d-8403-f0dc6caf2b90 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 112f8740-ae3f-42b5-b224-0cfb3785655d + Area + 52.6992777607866 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 23357b86-0f63-4693-9d68-ca2d8dbaeb0e + MassRemoved + 77.1684769900369 + + + + + 5.0386942248040318 + + MI_Restricted_Substances + c07a0ada-0510-4f27-be52-15e07d6c70c5 + + Soda-zinc glass - 6720 + Soda-zinc glass - 6720 + 6d479a4a-03a5-4fb8-a01a-7de8b71d93ed + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 5706ab2a-ad0e-401f-962c-8401cf83b454 + Mass + 100 + + + + + 5.0386942248040318 + + MI_Restricted_Substances + 91d7e1bd-d353-4eb1-9634-286e8e69d0d5 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1141, oil quenched & tempered at 540°C + ef0c00a2-9910-468c-abac-f671ea564dea + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + bc86342b-e9e2-4534-86c3-0356f4c8737e + Length + 64.861482551722546 + + + + + 5.0386942248040318 + + MI_Restricted_Substances + 5d611e30-0b00-4036-a656-f5fdc5bd2a52 + + Glass ceramic - slipcast + Glass ceramic - slipcast + 65a55aa8-7075-4c37-86b9-ad3c62c09b71 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 08cee76c-595b-49ce-8374-ce3d50474ad9 + Mass + 100 + + + + + + + 8 + 1.5985135462128157 + 1aa2360a + part_1aa2360a-be13-4479-acee-f78fd0ff0a78 + 1aa2360a-be13-4479-acee-f78fd0ff0a78 + + + 91.0480702719875 + + MI_Restricted_Substances + 0831e2e1-6d31-4532-8a04-eea412061805 + + Annealed + Low alloy steel, AISI 4140, annealed + 35bbc52d-b4ff-48e0-bf2d-8d97aeacfb51 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + ff0b079c-2c49-45c5-90ae-14ed0fd7236e + Mass + 100 + + + + + 8.9519297280125016 + + MI_Restricted_Substances + f8d1136f-3c1a-41e2-8b78-cf5f3965cba2 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 6150, oil quenched & tempered at 205°C + b4b703fb-eb23-4611-a8c2-07bfcf6cad8f + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 338c5266-1ede-466b-914f-711cd2523894 + Mass + 100 + + + + + + + 8 + 22.379741315906749 + + MI_Restricted_Substances + a78dcd3a-f108-4fdb-857e-e2d00ed319d4 + + a6821688 + part_a6821688-dd2f-4560-a927-8ce07f150ed2 + a6821688-dd2f-4560-a927-8ce07f150ed2 + + + 9 + 76.275390934327334 + ea0dfdcd + part_ea0dfdcd-e44a-4374-bf87-bc831dc41a05 + ea0dfdcd-e44a-4374-bf87-bc831dc41a05 + + + 80.67020866119779 + + MI_Restricted_Substances + 9e4c9bc1-b3b6-42dd-a32f-7af4e3190d72 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 86B45, oil quenched & tempered at 205°C + e21a7caa-7b95-4fd1-9b5c-4ea5de8d25c0 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + 9d6358ac-f6b0-4663-b181-eb854ccee899 + Length + 69.388320841541656 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + bb16eb8f-75a7-4f24-b751-3fca8fd7b6ce + Mass + 100 + + + + + 4.8324478347005524 + + MI_Restricted_Substances + ac1b4f23-a357-459b-bfeb-deabffbc7020 + + Oil quenched & tempered at 315°C + Carbon steel, AISI 1050, oil quenched & tempered at 315°C + b83b515c-473a-4076-96d9-38387cdc136a + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + f513bbeb-274d-4646-b8ed-2147c9592c95 + Area + 83.372145790314363 + + + + + 4.8324478347005524 + + MI_Restricted_Substances + 8349c912-772a-4fd7-90a5-7d52aa9c9448 + + Oil quenched & tempered at 425°C + Carbon steel, AISI 1137, oil quenched & tempered at 425°C + c0a9996c-0626-44be-b07f-e87b4f93e421 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + d01b9c5e-b734-49c0-841e-3cbfa92433b1 + Length + 69.282415820882846 + + + + + 4.8324478347005524 + + MI_Restricted_Substances + 2a840794-eac4-4f77-90ba-f84bce518c0f + + Glass/phenolic honeycomb, 0°/90° fabric (0.055) + Glass/phenolic honeycomb, 0°/90° fabric (0.055), L Direction + 110ae29e-9ac2-44f9-aba7-c1ccb4a27438 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + f3372e2c-73c8-42aa-bc02-6572ad5fbc51 + MassRemoved + 43.454528387381941 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + c561d0b5-9ee2-4284-bf6a-b46260454e8f + Mass + 100 + + + + + 4.8324478347005524 + + MI_Restricted_Substances + b17713f9-59e9-48f4-8bb3-27c72b0884b2 + + water quenched & tempered at 540°C + Carbon steel, AISI 1137, water quenched & tempered at 540°C + a647882e-2b40-4400-943c-0da1d9be57ea + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 8bbe6b83-92cb-4b0e-b49a-0c797d713f5b + Mass + 100 + + + + + + + 9 + 82.0234252056216 + + MI_Restricted_Substances + aeabeea6-e528-4e56-8247-0aeb8841d9de + + 9438eb43 + part_9438eb43-1eee-4cff-9d70-62c5bb89c32a + 9438eb43-1eee-4cff-9d70-62c5bb89c32a + + + 4 + 72.353651827365923 + 184b1ab4 + part_184b1ab4-9f2b-4154-bc06-b8b474d19fd7 + 184b1ab4-9f2b-4154-bc06-b8b474d19fd7 + + + 60.849965950869944 + + MI_Restricted_Substances + 278c6b66-fb3e-4e2d-b915-df6a231b2342 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1080, oil quenched & tempered at 540°C + 4f8dabc3-4b4f-4511-a439-029bfedcc353 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + fee9befe-d44a-4412-bf3b-51a47282a443 + Mass + 100 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + ad08b701-b6a5-48cf-ae9b-b35f7bf697cd + Area + 98.9209647285384 + + + + + 4.893754256141257 + + MI_Restricted_Substances + aa963e30-fca0-439d-bee2-ff48daa946f3 + + As rolled + Carbon steel, AISI 1095, as rolled + 7dcd1b01-ad72-4233-bb61-b06115c241bd + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + ad815955-2ea1-4810-bd9f-e0807ef38e3a + Mass + 100 + + + + + 4.893754256141257 + + MI_Restricted_Substances + a403e867-5052-44f9-b24b-5b11a3860cf4 + + Glass/polyimide honeycomb, ±45° fabric (0.051) + Glass/polyimide honeycomb, ±45° fabric (0.051), W Direction + ab7e0983-57d9-4403-87c7-2bba8ff091d3 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + a8d4437c-ca53-49f3-89ab-6f97f764defd + Length + 4.346819130865307 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + d9034901-0090-4e0a-a31a-bed850729cd0 + Mass + 100 + + + + + 4.893754256141257 + + MI_Restricted_Substances + 109eaa8c-e01c-4663-8802-f7dd1f10d61b + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 8630, oil quenched & tempered at 205°C + 3758b153-7456-4598-b41b-c53921a08384 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 61055064-79d2-46eb-9266-65253cdb2511 + Length + 93.752556896653289 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + 772bd1ed-edad-4c73-9949-13006f3b1dcf + Mass + 100 + + + + + 4.893754256141257 + + MI_Restricted_Substances + ee3c0238-df7d-426d-90f6-c073cddea37b + + Oil quenched & tempered at 425°C + Carbon steel, AISI 1340, oil quenched & tempered at 425°C + 3efcc781-9e69-4f6f-82e3-fc6cc6a137d0 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + ebd5fdc0-5126-4b32-b4ee-23fd2c6147b4 + Area + 16.777495535452616 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 3a6dafa6-ec47-4b1c-a67b-2de364a10ca4 + Mass + 100 + + + + + 4.893754256141257 + + MI_Restricted_Substances + e62ec0fe-66ca-4b17-88d1-609c5568e318 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 4340, oil quenched & tempered at 650°C + a02fee99-5c91-4df9-a446-8a6da1b9d9db + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 5861f36e-aa3e-4358-b32d-8e558fb5586b + Mass + 100 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + f928ee5f-60be-4f4f-bb08-ad8423b00867 + Mass + 100 + + + + + 4.893754256141257 + + MI_Restricted_Substances + c62d668e-5411-4845-b19c-3a0c4eedf872 + + 10CrMo9-10, normalized & tempered + Low alloy steel, 10CrMo9-10, normalized & tempered + 81e18383-3a45-4ba3-9bfc-7c36e2f23521 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + ef654035-33a9-4daf-8115-2cada5ba7c41 + Length + 25.672625389728985 + + + + + 4.893754256141257 + + MI_Restricted_Substances + 8245dc6c-3d61-4f18-82c8-6fb946e1582c + + Glass foam (0.13) + Glass foam (0.13) + 85aa7086-4a24-4732-9d0c-288fae52b970 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + cdda3e82-ef97-4ea2-a6a4-b4e96d2ff278 + Mass + 100 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 4c8fbc06-e918-4dd4-b0f0-40a9f037aa05 + Mass + 100 + + + + + 4.893754256141257 + + MI_Restricted_Substances + 71a3cd24-5128-46e5-8ef8-9ca8b5ed9892 + + 50% glass and mineral filled + PA46 (50% glass and mineral filled) + 066fdc49-0e2a-450e-b40e-f4f71e33a67d + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 8f98f3c3-3955-4b09-832c-7c8c1eeeb9b3 + Mass + 100 + + + + + + + 5 + 8.8805127930271031 + 4b2adbeb + part_4b2adbeb-72da-44b5-8bf9-697c3b7db31b + 4b2adbeb-72da-44b5-8bf9-697c3b7db31b + + + 65.331763338917753 + + MI_Restricted_Substances + 0f2ac0c2-16b0-422e-9f3c-48efb1a11594 + + Hardened and tempered + Low alloy steel, AISI 8620H, hardened and tempered + 966a2d0c-b2a1-4cff-b09e-70af1c7feafa + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + d3f2b6bf-5dc3-4af1-97e4-655b745bec8d + Area + 67.572932628715847 + + + + + 4.9526052372974636 + + MI_Restricted_Substances + 28d51559-b49b-4a2b-9f09-9a198db03164 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 4340, oil quenched & tempered at 425°C + 0a0484e4-e4d6-46a3-8a89-980d72ee02e1 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + fd9523ae-9d66-44e6-88e5-e699e4bb6710 + Mass + 100 + + + + + 4.9526052372974636 + + MI_Restricted_Substances + d53daeda-87b2-4ade-a7a2-1ebe84e7e3ef + + Annealed + Low alloy steel, AISI 5115, annealed + 65f38ac2-4598-4986-a161-fa9d2f9befa8 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 5ebf42e6-45c0-4782-bae6-f26fbb9c608f + Mass + 100 + + + + + 4.9526052372974636 + + MI_Restricted_Substances + 50c388cf-bb91-442a-9b62-8d34f7822f13 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1040, oil quenched & tempered at 540°C + 208eed49-b80a-4f9c-8d52-57ea802dbcfe + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + a3504bc5-92e6-4d45-869d-c64cd77071af + Mass + 100 + + + + + 4.9526052372974636 + + MI_Restricted_Substances + a84110a5-15ac-4560-8e1e-642b3441da3c + + water quenched & tempered at 540°C + Low alloy steel, AISI 4130, water quenched & tempered at 540°C + 954b9af8-ad49-400a-ba3d-c054db41c64c + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 46cd55fe-643e-4274-bc72-6eb959283ea8 + Mass + 100 + + + + + 4.9526052372974636 + + MI_Restricted_Substances + 5303364c-b06b-40d9-bca9-e0e2cd1d682c + + Normalized + Low alloy steel, AISI 8740, normalized + 39b96e26-6d23-44f6-83b7-884409172eab + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 6d9de306-4aae-485e-8018-527f177f25c0 + Length + 6.1955351877005471 + + + + + 4.9526052372974636 + + MI_Restricted_Substances + a83cb894-badf-47de-8aff-fe75bbb39ecd + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 81B45, oil quenched & tempered at 540°C + cd5f8484-59ff-40c1-8867-292095d1b9c6 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 75aaabe7-2e82-4bec-b265-80f2beb2a4fe + Mass + 100 + + + + + 4.9526052372974636 + + MI_Restricted_Substances + ac1b4f23-a357-459b-bfeb-deabffbc7020 + + Oil quenched & tempered at 315°C + Carbon steel, AISI 1050, oil quenched & tempered at 315°C + d23864dc-a8f2-4660-8e78-9ec574d6be3b + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 612bfbb6-4eb3-4282-8c9d-7332de9801b1 + Length + 92.551196689042825 + + + + + + + 1 + 26.153060247261571 + 45b2723f + part_45b2723f-b76c-4076-81bb-f3aecd32b356 + 45b2723f-b76c-4076-81bb-f3aecd32b356 + + + 100 + + MI_Restricted_Substances + 50ad77de-f231-48a8-a909-3dc689e19ac8 + + YS500, cold rolled + TWIP steel, YS500, cold rolled + cb2f5fa4-88c1-4234-9c99-c073df19e86a + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 45b62425-e6d6-4621-b79d-16266a05e004 + Mass + 100 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + c7722ec0-5403-4eab-9421-4aaf19d9aef2 + Mass + 100 + + + + + + + 4 + 40.539438203228379 + bab849e1 + part_bab849e1-aa58-4769-acc9-be284f83a250 + bab849e1-aa58-4769-acc9-be284f83a250 + + + 100 + + MI_Restricted_Substances + 48753642-e968-4a1f-92a1-c7b2e10c3fa0 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1060, oil quenched & tempered at 540°C + e9ca9bfc-2ac6-4e0a-b295-5ffa707baf1a + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 24532770-7d53-47c3-b1ed-27abd0be182b + Mass + 100 + + + + + + + 1 + 36.071550304103432 + 3a1c477f + part_3a1c477f-440a-4b0a-a064-a4487adefde0 + 3a1c477f-440a-4b0a-a064-a4487adefde0 + + + 94.927668010316637 + + MI_Restricted_Substances + cdb1bf9d-b906-4bef-afbf-7bb9f67e9562 + + Galvanized + Coated steel, steel, galvanized + c245e82a-cc15-44f5-a687-2be0187ef917 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + 47c269e2-54b2-4e47-a0b5-12bc0cf26ae0 + Area + 39.427965804668126 + + + + + 1.2680829974208407 + + MI_Restricted_Substances + a89802d6-13c5-496d-b139-57ae43e6591c + + As rolled + Carbon steel, AISI 1022, as rolled + 45169ece-d893-442d-bc03-57139b6d4d7a + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 3cfa5e61-937e-456d-a331-3e0ced1fae00 + Mass + 100 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 87f279ae-53fb-4ded-9910-3634fe179af4 + MassRemoved + 97.750562568079019 + + + + + 1.2680829974208407 + + MI_Restricted_Substances + 2ab1643a-3aff-46c7-a249-21c58b33f214 + + Annealed + Carbon steel, AISI 1144, annealed + 2edfdc17-8e02-4060-a0f4-e754d3c2d653 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 684f35b5-f8bb-4a0f-957d-4c58d08c32b2 + Mass + 60.250060800579405 + + + + + 1.2680829974208407 + + MI_Restricted_Substances + 0e008ce6-63df-4b25-81d6-02398cb9cc62 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 8660, oil quenched & tempered at 540°C + 68cbe79e-e13e-44d6-9573-7f9e77f22cd1 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + 8bf277bf-f275-4e32-9bf4-1fe49fafb994 + Mass + 100 + + + + + 1.2680829974208407 + + MI_Restricted_Substances + 6134776a-9764-4c71-b7a7-d2f9b7549541 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 8650, oil quenched & tempered at 315°C + e1b57077-4f40-4da6-977e-c67e9e778639 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 0e3a51c9-09b0-45a2-aedf-34ea1d17a8bd + Length + 40.742407339039453 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + b729456a-04c5-4c5a-a8d2-3196ce5464f9 + Length + 99.61028662492069 + + + + + + + 7 + 29.038112717232718 + ac3877a8 + part_ac3877a8-bab4-4a77-9d83-086ae6c8c1be + ac3877a8-bab4-4a77-9d83-086ae6c8c1be + + + 2.8898164643392974 + + MI_Restricted_Substances + 8ef69f01-44dd-4b96-ac5c-731bff7ceb6c + + Glass ceramic - 9606 + Glass ceramic - 9606 + a6ef08ec-0069-4005-bbe1-b41dd44704c0 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 6af6b4b1-5bf5-471c-b6e1-a54b3d4d2085 + Area + 54.02260178421745 + + + + + 32.370061178553563 + + MI_Restricted_Substances + 2096ca77-9981-4fd5-9bc6-afe56b3bbbd4 + + Glass/phenolic honeycomb, 0°/90° fabric (0.096) + Glass/phenolic honeycomb, 0°/90° fabric (0.096), W Direction + 9d3b8e4d-c4de-4b15-98cc-e3c0dba146de + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + a680b387-9a93-4d57-bf18-ce9452a624cb + Mass + 100 + + + + + 32.370061178553563 + + MI_Restricted_Substances + 158e73a4-18c6-4e1a-b5d8-57669c377335 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 8740, oil quenched & tempered at 650°C + c58ebde6-692b-44ad-a160-2185520c1fb7 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + b6344a2b-56f2-4386-87df-767576302146 + Mass + 100 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 3a0745ff-06f7-4320-9acb-a29e3fe1d090 + Length + 8.736669555649474 + + + + + 32.370061178553563 + + MI_Restricted_Substances + fc7fda6b-9d56-4e1f-b472-a664568c1169 + + Annealed + Carbon steel, AISI 1095, annealed + 001626e3-6549-4ddc-8cce-b828f12624fd + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + ffbb984e-4730-4035-9061-803e32f97eb7 + Mass + 100 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 20b0fdd3-f25d-4e84-928a-caa2749e5be5 + Length + 11.594373598505916 + + + + + + + 8 + 92.475714205054445 + 4a5223eb + part_4a5223eb-b35f-4b2c-bf59-4f7b81e6e11f + 4a5223eb-b35f-4b2c-bf59-4f7b81e6e11f + + + 21.060252525406074 + + MI_Restricted_Substances + b879bb01-8648-4b5b-8159-d591cb251ca8 + + Normalized + Carbon steel, AISI 1080, normalized + 297897c7-4c4a-45cc-8d61-44600c915c0c + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 0c515822-13ff-4c07-9bb2-de14104f8980 + Mass + 100 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + 1d490bb8-6f77-4a2f-b71d-6f3b66e60dc8 + Length + 71.96799226662516 + + + + + 11.277106782084847 + + MI_Restricted_Substances + d7980de6-355d-48d2-93d7-471e3ef3b2cf + + Glass/phenolic honeycomb, ±45° fabric (0.032) + Glass/phenolic honeycomb, ±45° fabric (0.032), L Direction + fb82fa0f-c0f9-4569-90b6-a0592ffa029b + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + 54981275-6cda-4f6e-bd84-3d665c863111 + Area + 77.647445713005709 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + a9374b93-9dce-47dd-9652-158248388b3c + Mass + 100 + + + + + 11.277106782084847 + + MI_Restricted_Substances + a6ee4feb-80c5-43a7-b3ee-a1423218f502 + + AF1410 + High alloy steel, AF1410, solution treated & overaged + 2edf1e77-1033-4b37-a10a-dd1ca6f9a9c7 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 5f14dda3-a81a-4378-9843-67d10402440b + Length + 11.760172765590331 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 2d1547ac-de50-4aa9-a2b7-dbe536b42c1e + Mass + 100 + + + + + 11.277106782084847 + + MI_Restricted_Substances + 82880431-c70c-4df9-856a-d5e00671a184 + + Annealed + Carbon steel, AISI 1020, annealed + 126da0ae-9ad2-4d46-8712-87716360c682 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 4e259791-dfc8-44ff-be04-a437f2945a23 + Mass + 37.62075800337864 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 946d277f-7c61-48a2-a0fa-e4b871588d2d + Mass + 100 + + + + + 11.277106782084847 + + MI_Restricted_Substances + 00cd78de-6c78-46f3-81b3-ec03803fa034 + + Glass/phenolic honeycomb, ±45° fabric (0.048) + Glass/phenolic honeycomb, ±45° fabric (0.048), W Direction + 56afd2d4-eed8-4d8e-ad4e-bd5029463b6a + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + e35e60e0-ca24-4c0a-86ab-29db1b5f185c + Area + 39.506165003174061 + + + + + 11.277106782084847 + + MI_Restricted_Substances + ab732b70-3546-4a94-b914-643f38c2443f + + 24CrMo13-6, quenched & tempered + Low alloy steel, 24CrMo13-6, quenched & tempered + 40dd174d-6d19-4fd9-abe0-1055299bef5f + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 3f980ef4-aa91-4002-8694-15f8c4c9caf3 + Mass + 100 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 379bb0ec-69dc-4fec-82c8-a9ffaff56261 + MassRemoved + 27.657357849021142 + + + + + 11.277106782084847 + + MI_Restricted_Substances + 496cca2a-43ad-4943-9e9b-23076f2e3a5c + + Glass/polyimide honeycomb, ±45° fabric (0.128) + Glass/polyimide honeycomb, ±45° fabric (0.128), L Direction + 5bfc5037-9bf2-43ba-ab06-5bb5ad11de76 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 75945f4f-fdd8-47bb-969c-bc07e382e033 + Mass + 100 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 09d7e6b4-4b3c-4784-a62d-908036e510d0 + Mass + 100 + + + + + 11.277106782084847 + + MI_Restricted_Substances + 439e62b9-4268-44c6-a084-695412628448 + + water quenched & tempered at 425°C + Carbon steel, AISI 1095, water quenched & tempered at 425°C + b5a24b72-e09d-4fc4-8bdc-93b928e91fff + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + b173992a-931e-49bb-99cb-284c471d0437 + Mass + 100 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 91e8113c-bb59-487e-97ee-2142e2ec1a71 + MassRemoved + 72.033606549740583 + + + + + + + 7 + 37.364186037967066 + + MI_Restricted_Substances + 47392269-2164-43ef-9890-518e6ea446fc + + c4b720bf + part_c4b720bf-7152-4199-ba3a-0beb9c811ddc + c4b720bf-7152-4199-ba3a-0beb9c811ddc + + + 1 + 75.03948122031963 + 5d1b372e + part_5d1b372e-556f-4e07-9c99-4d1973e0956b + 5d1b372e-556f-4e07-9c99-4d1973e0956b + + + 38.582426513816429 + + MI_Restricted_Substances + 190cf17e-dbc1-40c7-a3d1-cc776977cb47 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 50B46, oil quenched & tempered at 650°C + 6d8ea439-0bcd-4357-bc2c-4f5f7b539cd1 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + b717c6e1-b356-4193-a09a-779833a5491d + Mass + 100 + + + + + 61.417573486183571 + + MI_Restricted_Substances + 0ff273b3-9539-465b-9d91-21fc52f8e16c + + Lithium aluminosilicate + Lithium aluminosilicate + 968b3dec-5e80-492f-a30d-ecdf1a74c80d + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + c7f0dc2f-fe5e-43de-b9ba-1f0ad322866e + Area + 64.574601857259211 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + 00a56e08-69f5-474a-867f-187d3480a611 + Mass + 100 + + + + + + + 4 + 79.432184099886655 + 84fa7b6b + part_84fa7b6b-dcb3-42a7-9a11-df90dc8813bd + 84fa7b6b-dcb3-42a7-9a11-df90dc8813bd + + + 100 + + MI_Restricted_Substances + 940150b6-2d2e-4762-b1a0-6f354a75d95b + + Potash lead glass + Potash lead glass + 45d577fa-9e98-4254-b369-b09d9ae34dea + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + ddf7abd7-804d-47cd-838b-5d6e5758f5bc + MassRemoved + 41.91323963083012 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 5c3ae651-26b4-4c94-a704-c181b75171df + Length + 4.94128288931273 + + + + + + + 9 + 93.35876684326621 + e72320dd + part_e72320dd-1afd-432f-bd03-eefddd678339 + e72320dd-1afd-432f-bd03-eefddd678339 + + + 80.4446916004851 + + MI_Restricted_Substances + 3fc5450b-689d-4ced-bf3d-c91f339a95da + + Normalized + Low alloy steel, AISI 5150, normalized + 46179b7b-bc34-4765-88c5-494383858dd6 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 62efad99-f536-4714-be22-b9a5e4462cff + Mass + 31.524746227788153 + + + + + 2.4444135499393624 + + MI_Restricted_Substances + 408a337f-8eb7-4225-96bd-1225da437143 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 5140, oil quenched & tempered at 315°C + 1909b1f4-ede3-443c-a8e1-b7df1425057a + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + cc5799ab-1216-495a-964f-ed77c8c9ef20 + Mass + 100 + + + + + 2.4444135499393624 + + MI_Restricted_Substances + 75a1c963-399c-444d-a38f-1929c00d15b7 + + Normalized + Low alloy steel, AISI 4150, normalized + e5f13a79-e874-4575-8e7b-0f680c91c464 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 4229b4ae-cfe2-42c1-8696-47fe938b7892 + MassRemoved + 46.8832479542509 + + + + + 2.4444135499393624 + + MI_Restricted_Substances + 158e73a4-18c6-4e1a-b5d8-57669c377335 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 8740, oil quenched & tempered at 650°C + c8f26e0c-6f90-4518-9399-b2419ed7b03e + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 3bd0f0cb-124b-4c07-8983-fc20d22303a7 + Mass + 100 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 4ac89751-c8c9-44cd-a879-3bd567445c4d + Mass + 100 + + + + + 2.4444135499393624 + + MI_Restricted_Substances + 181f9596-7516-43ca-b989-8284ee056051 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 8630, oil quenched & tempered at 315°C + 824e264c-aa4f-4814-9514-7dbc00187a63 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + c860ca6f-6794-4288-a09b-6d5b1706b068 + Mass + 100 + + + + + 2.4444135499393624 + + MI_Restricted_Substances + 0ff273b3-9539-465b-9d91-21fc52f8e16c + + Lithium aluminosilicate + Lithium aluminosilicate + 4f8c8192-bfd6-420f-9006-52ae67d51144 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 3f54437c-f9be-482e-ac61-7f158845e71d + MassRemoved + 7.4207230505630006 + + + + + 2.4444135499393624 + + MI_Restricted_Substances + 3fc5450b-689d-4ced-bf3d-c91f339a95da + + Normalized + Low alloy steel, AISI 5150, normalized + e91f49be-553e-44e4-84d6-d794788dd34e + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + ca1138c5-5460-4fec-9558-cb346771a9a6 + Mass + 40.548966145398545 + + + + + 2.4444135499393624 + + MI_Restricted_Substances + 7c0b2792-bc51-4837-a380-6cdb1c2fba31 + + water quenched & tempered at 205°C + Carbon steel, AISI 1030, water quenched & tempered at 205°C + 009eb512-a2c6-4f54-9d2f-ee7e522cc525 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 7d963a71-ad65-49d7-87cf-1d526d17ecf8 + Mass + 100 + + + + + 2.4444135499393624 + + MI_Restricted_Substances + e9388a2e-df9f-4ef4-8f47-d4cc5a94b8e7 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 50B46, oil quenched & tempered at 425°C + ca917412-77c1-42a2-9559-f5ce8b14380e + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 9bf7f8ea-70f7-4df8-9d42-cfa787bb92ef + Mass + 58.372439890342044 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 11f586e0-0d5a-4108-a4e0-dec1a10ed8f1 + Mass + 100 + + + + + + + 6 + 98.910817736252582 + fc8daa76 + part_fc8daa76-313f-4416-91dc-f4184b57ac71 + fc8daa76-313f-4416-91dc-f4184b57ac71 + + + 11.365721426608841 + + MI_Restricted_Substances + 3fd6cebb-a683-45be-b014-7c3fb617c3e7 + + Glass/polyimide honeycomb, ±45° fabric (0.064) + Glass/polyimide honeycomb, ±45° fabric (0.064), L Direction + 43ac285d-b87c-4460-9c87-ad5dc4611237 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 42fca2f6-0417-49d7-a522-c7503940de71 + Mass + 19.470181511468336 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 1edd567a-b467-4c79-b267-2894398bee56 + Area + 74.248126090619763 + + + + + 22.158569643347789 + + MI_Restricted_Substances + 2839a622-af73-4a9f-90fa-0f3498243808 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 4042, oil quenched & tempered at 425°C + 6af79c06-d0e3-46ee-898b-80667674c307 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + e6f0e479-ca89-431c-b43e-234dc35f3768 + Mass + 100 + + + + + 22.158569643347789 + + MI_Restricted_Substances + 21dcdeeb-524a-488e-b332-fcd4e1caf6f7 + + water quenched & tempered at 650°C + Carbon steel, AISI 1095, water quenched & tempered at 650°C + a74f3555-bdd6-4433-a45b-5e86f7360f81 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 813642e4-8307-4b63-9092-bb0ab8d445e1 + Mass + 100 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 60b06372-c082-4197-b40e-a5e7a807c344 + Mass + 100 + + + + + 22.158569643347789 + + MI_Restricted_Substances + f6a8c45a-d545-43b7-acd0-7c51bd97ab52 + + Oil quenched & tempered at 425°C + Carbon steel, AISI 1095, oil quenched & tempered at 425°C + e4530039-6d97-4080-8cff-63281a88347b + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 9c980678-54cc-479f-b0bb-15463d9b0ad3 + Mass + 100 + + + + + 22.158569643347789 + + MI_Restricted_Substances + 2a821f5c-97b0-4a08-81b1-de3f1543fb44 + + Alkali strontium clear glass + Alkali strontium clear glass + b33a0c52-e5a3-43a3-b80a-eddad97ff6d3 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 1a071692-299c-4951-9e50-d95e02778526 + Length + 24.532270210111641 + + + + + + + + + 4 + 13.084379217161043 + eaab6ed5 + part_eaab6ed5-6189-4b0e-9a04-b351346795f9 + eaab6ed5-6189-4b0e-9a04-b351346795f9 + + + 34.273220428392861 + + MI_Restricted_Substances + 71841c03-2a43-418a-9a04-c18b2b603646 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 4150, oil quenched & tempered at 425°C + ebcdf539-f264-497e-b5eb-9065b8d16cdd + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + 030a4e68-4a19-4d96-bc52-facd972fd523 + Mass + 100 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 2138223c-491b-48d7-87f8-4ccd8a89dafa + Mass + 100 + + + + + 8.2158474464508924 + + MI_Restricted_Substances + 9cae15c6-b5b6-4ab9-9008-d962bee0e662 + + Glass/phenolic honeycomb, 0°/90° fabric (0.128) + Glass/phenolic honeycomb, 0°/90° fabric (0.128), L Direction + fd0c866c-664b-4ff0-87da-7571eeba3863 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 65c3952e-9995-49f8-b50a-6a6dd8ec1908 + Mass + 37.0300206528185 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 290d62f5-bd97-4f1c-b997-bc0ec64fe69a + Mass + 100 + + + + + 8.2158474464508924 + + MI_Restricted_Substances + bbe0765c-012b-434e-878b-b40ad692b373 + + YS550, hot rolled + High strength low alloy steel, YS550, hot rolled + 6272492b-6615-4e16-96f1-a7e9a715a3e0 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + c7a22d3d-5300-416d-be87-a3561d7a3b35 + Mass + 100 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 289630a9-9b30-4964-af5a-10155a53ad10 + Mass + 100 + + + + + 8.2158474464508924 + + MI_Restricted_Substances + 190cf17e-dbc1-40c7-a3d1-cc776977cb47 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 50B46, oil quenched & tempered at 650°C + 7d1db0cf-3bf8-4194-80e8-b4f4a3816437 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 13cbdc73-00ac-4995-8aa3-50bee3d6e803 + Mass + 100 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + d4a408ae-de74-4866-99cb-31142105ade7 + Mass + 100 + + + + + 8.2158474464508924 + + MI_Restricted_Substances + 92565d61-24fc-4880-9be5-0faeb9a8a3e8 + + Titanium silicate + Titanium silicate + 7db8274a-8d36-4fa7-8064-6b2d9f106c3c + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 986d99e8-9853-4ef3-9e51-88d18f934ec3 + Mass + 37.446228618475715 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + b3e68082-8c66-4835-8ed8-225e9e4ceab1 + Mass + 100 + + + + + 8.2158474464508924 + + MI_Restricted_Substances + 87e1a3cd-fd79-4013-b5f8-56d6f28bef34 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1144, oil quenched & tempered at 540°C + fa1e5541-f878-4ae6-87ba-8bea39fb760f + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 6663a73a-ebb8-4ca5-91e0-49b6cb9fca98 + Mass + 100 + + + + + 8.2158474464508924 + + MI_Restricted_Substances + 9df55457-5300-4ddb-b92e-122b5c121621 + + Glass and mineral filled, encapsulation, molding + Novolac (glass and mineral filled, encapsulation, molding) + a9652672-4387-4d33-90dc-797daf6a2247 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 867ce557-1eec-4ea4-ac1e-e6c063117dd5 + Area + 85.998112422413243 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + f5d984ea-e10a-41b8-b2fc-714f5497cfb8 + MassRemoved + 44.685697622916521 + + + + + 8.2158474464508924 + + MI_Restricted_Substances + 80d691ec-471b-4ef6-9060-a0e5cc0c1a91 + + Annealed + Carbon steel, AISI 1340, annealed + 740938e5-cbf4-4329-a132-317986c42928 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + a051fd93-c079-4c56-814e-f1a1f06ae422 + Mass + 100 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 1302c3cc-958c-4115-8576-14da6ff3319b + Mass + 24.247723270323 + + + + + 8.2158474464508924 + + MI_Restricted_Substances + 1a7c6e51-066a-4f25-9c48-76ca6fbd8330 + + Glass ceramic - 9658 + Glass ceramic - 9658 + 3e32010b-4f5e-40c0-bd19-89a0a002d4ca + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 853274a8-e09a-46e7-9fa2-a83c8460da8d + MassRemoved + 64.194198960528809 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 6c6b7134-8bd3-46d4-bcb9-f1207971edd5 + Mass + 100 + + + + + + + 2 + 74.93542394364971 + 600de0c1 + part_600de0c1-269a-4cb5-a3dd-0f06a65e8a04 + 600de0c1-269a-4cb5-a3dd-0f06a65e8a04 + + + 14.679744241144388 + + MI_Restricted_Substances + b869cbb1-f68c-4d4a-ba09-c5ac060f1e31 + + Normalized + Low alloy steel, AISI 4620, normalized + f06a9b56-aca5-4ff8-abbe-575e72b1f4a6 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 61a4cbdc-a3f0-45bc-98b6-48e86dbf7d04 + Mass + 100 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + e138600b-057c-4217-9d69-d02397975bb1 + MassRemoved + 86.673751886316467 + + + + + 28.440085252951871 + + MI_Restricted_Substances + a371ea54-94e0-4a85-9b8a-856cf82f2e1d + + SAE 4130, cast, quenched & tempered + Low alloy steel, SAE 4130, cast, quenched & tempered + 8e5f94e3-ba10-4e42-93d8-bd5830929189 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 053df7ee-4b20-4403-a01a-1a974af58e88 + MassRemoved + 3.6997650767209773 + + + + + 28.440085252951871 + + MI_Restricted_Substances + 7c0b2792-bc51-4837-a380-6cdb1c2fba31 + + water quenched & tempered at 205°C + Carbon steel, AISI 1030, water quenched & tempered at 205°C + 0ca4f619-8307-4733-9d1f-b25c1baa17b4 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 26b196c4-c9f8-4937-bf2e-cb1b4cf0a508 + Mass + 100 + + + + + 28.440085252951871 + + MI_Restricted_Substances + 8dd7188c-28e5-44bd-9d82-dc7a3890fe9b + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 8660, oil quenched & tempered at 425°C + f7318ab7-62ca-4424-8c50-9f0a0b9973ac + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 487d792d-3b4b-4d68-b262-e07419d26ee7 + Mass + 100 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + e3f0937a-c3ec-4bb5-a88a-cf06b71192c2 + Mass + 100 + + + + + + + 6 + 81.249335306347035 + 69cb5bfe + part_69cb5bfe-9b6e-4526-a72d-355b609a9766 + 69cb5bfe-9b6e-4526-a72d-355b609a9766 + + + 22.138060965639568 + + MI_Restricted_Substances + 0840d007-df07-4e12-bda5-bfc060fb15e6 + + Annealed + Low alloy steel, AISI 4320, annealed + 9ebb0694-21c8-43a3-9f5c-c85a7a30681f + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 133c245b-aaf6-4ac7-ae8d-cf874add17fe + Mass + 100 + + + + + 19.465484758590108 + + MI_Restricted_Substances + eb2b811b-1da6-465a-857f-6d14b372a38b + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 50B60, oil quenched & tempered at 650°C + 5f7e24e3-0b39-41bc-b5f8-389db535d06d + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 66988dcc-8901-4913-9730-c3a1271333f5 + Mass + 100 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + a2000eb3-8982-4192-9600-2daf6daed5f5 + Mass + 100 + + + + + 19.465484758590108 + + MI_Restricted_Substances + dbf855b9-a140-458a-af71-ee8bc216e050 + + YS140, cold rolled + Drawing quality, YS140, cold rolled + 8752cd77-a987-4ae3-98f4-685752472913 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 34a218b2-9122-4935-99c5-12ea2f110f66 + MassRemoved + 83.817196583290212 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + e901dc5d-4eae-4a52-ba77-589ac8e3a737 + Mass + 3.4734596514485121 + + + + + 19.465484758590108 + + MI_Restricted_Substances + e9388a2e-df9f-4ef4-8f47-d4cc5a94b8e7 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 50B46, oil quenched & tempered at 425°C + 7c8c7a54-e6ed-4e22-8b59-8101d8103a7c + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + ce65f8df-0e6d-4139-b034-106e035ab92f + Mass + 100 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 057914de-e8e5-461c-aa09-5009156e79ad + MassRemoved + 92.896151539355586 + + + + + 19.465484758590108 + + MI_Restricted_Substances + 8dc38bb5-eff9-4c60-9233-271a3c8f6270 + + Kovar, annealed + High alloy steel, Kovar, annealed + 608d3663-2d8a-4746-8fdc-171aaef76480 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + de7681c8-627f-4d67-be73-f14fb9a5cb08 + Mass + 100 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + fd0a4cbb-ee32-4ad7-a7b7-dacdd530c9e5 + Mass + 100 + + + + + + + 2 + 69.549875785387059 + + MI_Restricted_Substances + 5fd070ef-bb1b-4857-abcf-7eda481ecfbe + + 585c4a04 + part_585c4a04-66ae-4320-ac0b-1862c814961b + 585c4a04-66ae-4320-ac0b-1862c814961b + + + 7 + 85.600161592289879 + 6c61c8d8 + part_6c61c8d8-c73d-4b8d-a826-102684aa9aeb + 6c61c8d8-c73d-4b8d-a826-102684aa9aeb + + + 50.493672327368365 + + MI_Restricted_Substances + 4ff376ea-25d8-4792-a34f-9bd7b33c210c + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 4150, oil quenched & tempered at 540°C + c8bb3e17-04cf-45a1-bcd7-99d3fb74a16f + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 34e02d17-c4e5-435b-8ed3-ffb1ef4c9d2a + Mass + 100 + + + + + 7.072332524661662 + + MI_Restricted_Substances + 181b484f-4ada-4e9e-8c47-103ae23d76c3 + + Quenched & tempered + Low alloy steel, AISI 8740, quenched & tempered + 3a92cc02-c44b-44e4-a148-15aea8a90035 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 4e022716-d5fe-4c11-91e5-a62b08090d7e + Length + 3.6326395830291505 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + e8a2af71-51b8-4ef4-8387-739f2b5fe836 + Mass + 100 + + + + + 7.072332524661662 + + MI_Restricted_Substances + a8f02f5c-c80e-446f-92f4-0046f3d093fc + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 8630, oil quenched & tempered at 425°C + a9791003-2e6c-4557-8c19-e80bc23a8e15 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + cb06c772-3325-4721-809c-aa202f9520a5 + Mass + 100 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + c9e53a39-ce3f-4a5b-8a54-a92185f46219 + Mass + 100 + + + + + 7.072332524661662 + + MI_Restricted_Substances + 81ce98b3-d459-4695-9dd9-d53244be47ed + + Annealed + Carbon steel, SA216 (Type WCC), cast, annealed + 8a55ec37-ad56-4cec-87c9-365c731bfe1b + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + da1a7f41-d844-4f49-afa9-ca6d593638db + MassRemoved + 83.995902670545462 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 6d7c3052-e17d-473f-afd4-3d90020677be + Mass + 100 + + + + + 7.072332524661662 + + MI_Restricted_Substances + 181b484f-4ada-4e9e-8c47-103ae23d76c3 + + Quenched & tempered + Low alloy steel, AISI 8740, quenched & tempered + 9dad5bd2-58a6-431c-b5cc-59ce56b4bcb3 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 5a78a2fc-7fe3-419f-a323-3b74619f1bac + MassRemoved + 79.99000604263972 + + + + + 7.072332524661662 + + MI_Restricted_Substances + a583e694-02c0-408e-9af4-6fbee856b58f + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 9260, oil quenched & tempered at 650°C + f42679cc-9f4b-4473-95a1-5106c67077d8 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 7db14ace-659a-4a27-960b-2944742fd32a + Mass + 100 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 534e9bc3-533d-4407-b6e7-2bd6ab1e33a9 + Mass + 100 + + + + + 7.072332524661662 + + MI_Restricted_Substances + 66ed26ec-15e8-47d9-a7dc-140271411c07 + + Quenched & tempered + Low alloy steel, AISI 4130, air melted, quenched & tempered + 873fb86e-f515-4a35-a234-56f49c739b2c + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + dae4d4ee-2726-4d17-8bff-16ba89e95b77 + Mass + 100 + + + + + 7.072332524661662 + + MI_Restricted_Substances + 9ce914d8-75c1-4c5f-8c57-11c0e62b2cfa + + ASTM A299 Grade A + Structural steel, ASTM A299 Grade A + c8c694d5-afa2-4005-8c11-8825d43bfdb2 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + dd8d3ad7-3f40-4818-946d-86d68c06a83c + Mass + 100 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + baa2cf65-ab4e-459d-854a-cf25eaff975e + Mass + 100 + + + + + + + 8 + 75.952568639047712 + 76726401 + part_76726401-baa8-44b6-a4e0-e5302dec10f6 + 76726401-baa8-44b6-a4e0-e5302dec10f6 + + + 74.780161154819723 + + MI_Restricted_Substances + 535f6e21-a16f-4d54-8413-97634da82122 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 8650, oil quenched & tempered at 205°C + bae80313-e173-4052-b2fa-50a9e2e60960 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 492b6ff3-0321-4fcb-aa5e-3158f3e62904 + MassRemoved + 2.2527213684528697 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + f4706c49-7f96-4bca-a23f-206a398e6230 + Mass + 100 + + + + + 25.219838845180277 + + MI_Restricted_Substances + aec2777b-f126-4f12-b748-b94bf7393f2a + + Oil quenched & tempered at 650°C + Carbon steel, AISI 1060, oil quenched & tempered at 650°C + def7eaff-9817-496c-af57-856706c1a06e + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + ace803c1-43fb-4f08-a0c3-cfefe45ce798 + MassRemoved + 87.7672261967171 + + + + + + + 8 + 86.782260186403178 + + MI_Restricted_Substances + 65d980fe-c0ba-4642-af12-1fcec979852d + + e14a88c7 + part_e14a88c7-45e1-423e-b27e-86babfd9dcf3 + e14a88c7-45e1-423e-b27e-86babfd9dcf3 + + + 1 + 38.069795276070849 + c414229d + part_c414229d-a82c-4aa3-8452-dcb41b67dea2 + c414229d-a82c-4aa3-8452-dcb41b67dea2 + + + 100 + + MI_Restricted_Substances + 9124b244-f2f8-44df-b2cf-b05d3406eb9e + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 4042, oil quenched & tempered at 315°C + 124ef859-be1e-4318-a6b3-42da196e9137 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 4d6c7aba-caad-4a94-b180-6d4379626e21 + Mass + 100 + + + + + + + 5 + 66.076528730837865 + c781e004 + part_c781e004-6dec-4760-8d43-243728f8e4d5 + c781e004-6dec-4760-8d43-243728f8e4d5 + + + 78.259487998792665 + + MI_Restricted_Substances + 75a1c963-399c-444d-a38f-1929c00d15b7 + + Normalized + Low alloy steel, AISI 4150, normalized + 8d70de8d-1d0e-4a4b-801f-f95215c3976a + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 5ebcadfc-4777-48c0-8c5a-d9cfbfa16325 + Mass + 100 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 52139b6c-770b-46c3-9071-80999f8382a7 + Mass + 100 + + + + + 3.1057874287439051 + + MI_Restricted_Substances + 1851a6ff-c2e6-4bc6-ab7a-a0eae431e281 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 5140, oil quenched & tempered at 540°C + c729cdfe-6a51-4370-b488-c287406172e2 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 34620b10-bb57-496d-8575-9a758f6e5672 + Length + 73.591168398778493 + + + + + 3.1057874287439051 + + MI_Restricted_Substances + 644fc87d-87f3-468c-9a88-b8e2db43ae6b + + water quenched & tempered at 650°C + Low alloy steel, AISI 4130, water quenched & tempered at 650°C + 658cb1e8-b222-4188-9e64-f4df80338b62 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + adf2d187-1992-4151-a37c-c2149382bb0b + Mass + 65.685986851195793 + + + + + 3.1057874287439051 + + MI_Restricted_Substances + c15a44c3-d8be-4ae8-9a58-281f13b731cd + + YS420, cold rolled + High strength low alloy steel, YS420, cold rolled + 75c9a03c-429e-4914-a23d-a4b305f0cf9c + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 85c5e31f-cc31-485d-a4d5-4f439b884794 + MassRemoved + 23.233038058147319 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + d4b40bf2-bc76-4582-b25a-b90a0cadcfad + Mass + 100 + + + + + 3.1057874287439051 + + MI_Restricted_Substances + 21dcdeeb-524a-488e-b332-fcd4e1caf6f7 + + water quenched & tempered at 650°C + Carbon steel, AISI 1095, water quenched & tempered at 650°C + ae27b040-e52b-4a16-8609-dbbc671c97f3 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + c5a8c571-1e07-406a-b2ef-9e6aa295ea19 + Length + 53.134468408829747 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 5b8d094f-3398-4ef9-a662-0f4c5ab3a86e + Area + 51.965984912573347 + + + + + 3.1057874287439051 + + MI_Restricted_Substances + 1b3f17f9-2754-4fc4-bfa2-75ff0df55185 + + Polytetrafluoroethylene (PTFE)/Glass fiber, PCB laminate + Polytetrafluoroethylene (PTFE)/Glass fiber, PCB laminate + 7c1f398f-df49-45f6-b3b6-432c087f268d + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 537e1811-9212-4162-beab-93f0bf581d6f + Mass + 100 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 4ae4ce1a-50e8-4c13-9b14-b04cdb768561 + Length + 91.3594422821698 + + + + + 3.1057874287439051 + + MI_Restricted_Substances + 4f35be96-97d7-4cea-bd9a-316ce3dbe46e + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 8740, oil quenched & tempered at 425°C + 711d23f1-e1d1-4071-acc0-a71da961a93e + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + bda1ae1e-2cee-4f9d-a249-608570a13981 + Mass + 100 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 592bba8e-fff8-473e-ae64-fa414716e95c + Area + 94.373309237125 + + + + + 3.1057874287439051 + + MI_Restricted_Substances + 2fca0cda-4548-4601-ade6-49478da1542f + + Potash soda lead glass - 0120 + Potash soda lead glass - 0120 + 144549de-c05a-4f1d-ab02-55b3b7864a35 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + cccde058-d3c4-47f6-b3ea-7cd7ecb9738d + Mass + 100 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 21969510-545d-40d2-9285-022e1e4c34b9 + Mass + 100 + + + + + + + 4 + 34.739925868222457 + 3faf1c02 + part_3faf1c02-59c7-4ecd-aeee-a7e858166b6e + 3faf1c02-59c7-4ecd-aeee-a7e858166b6e + + + 17.061088474961505 + + MI_Restricted_Substances + 5b117a10-9c48-4dd0-a869-6eb490031da5 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 8640, oil quenched & tempered at 315°C + f9f46acf-b949-4c88-a4fc-1fac6b060499 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 27bbf502-8873-4da2-a061-5fac31a30463 + Mass + 100 + + + + + 11.848415932148356 + + MI_Restricted_Substances + 0c03540d-4b15-4c02-ac02-22aeb9a026d1 + + As rolled + Carbon steel, AISI 1050, as rolled + 86de2392-1c0c-4669-84e6-e9706904b083 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + d12be22d-c654-43de-a124-dbeb82fe01af + Mass + 100 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 6262f7bd-bdcc-425a-b0ab-839797dfd342 + Mass + 100 + + + + + 11.848415932148356 + + MI_Restricted_Substances + b0c0246d-7238-46e4-9081-5bad34efbbdb + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 5140, oil quenched & tempered at 205°C + 3670ad3e-b86c-42d6-9369-98cbe97b1784 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + 5751da81-aab6-4ec8-bfa5-3b0fc3aa666f + Mass + 100 + + + + + 11.848415932148356 + + MI_Restricted_Substances + 31491cd8-6f82-4358-a2d6-ef62bfbbfadd + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 4150, oil quenched & tempered at 205°C + 5668f21e-c347-4e6e-8600-007a6685dcf3 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 4576df90-6acf-478e-aa20-3ff3daf41fac + Mass + 100 + + + + + 11.848415932148356 + + MI_Restricted_Substances + 2a821f5c-97b0-4a08-81b1-de3f1543fb44 + + Alkali strontium clear glass + Alkali strontium clear glass + 82762369-e6d6-4208-bc80-ebec9047c104 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 5ad105d9-bc68-4a9d-94b1-71fb52ae712b + Mass + 100 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + d3f08ad0-5a6b-4586-858b-f774abfb5e4d + Mass + 100 + + + + + 11.848415932148356 + + MI_Restricted_Substances + e86ced85-7d75-4b62-8f8e-90bd345ae003 + + Normalized + Low alloy steel, AISI 5140, normalized + c62f6af4-a772-4fae-a097-6102d8585d71 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 88628cc8-966c-43a4-bf3f-ae07beb03e30 + Mass + 100 + + + + + 11.848415932148356 + + MI_Restricted_Substances + 1c7183ad-1608-4e9b-8d01-76721872fbf0 + + Glass/polyimide honeycomb, ±45° fabric (0.088) + Glass/polyimide honeycomb, ±45° fabric (0.088), W Direction + 0184e1c1-d32a-4391-bea7-c89d45ca500c + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + a738a823-8f01-4c63-be05-36c7bf87e740 + Mass + 9.0853340500431763 + + + + + 11.848415932148356 + + MI_Restricted_Substances + c15a44c3-d8be-4ae8-9a58-281f13b731cd + + YS420, cold rolled + High strength low alloy steel, YS420, cold rolled + 068e5759-afc8-4b4b-9ad6-dbe2c9bb6a9e + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + ec0efe92-6a72-4967-84d2-95261d4c6c08 + Length + 75.221976952265 + + + + + + + 8 + 26.336370979592377 + 0dbc4bcb + part_0dbc4bcb-7860-4d68-9e1c-2262ae49c643 + 0dbc4bcb-7860-4d68-9e1c-2262ae49c643 + + + 31.877887170704959 + + MI_Restricted_Substances + 817b973c-3e12-4b5f-96b3-89b05d14d76c + + ASTM A500 Grade C + Structural steel, ASTM A500 Grade C + ebfeefe1-6b1e-4e0c-955f-0fab4f7c9923 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 6f0add2b-811a-4910-bc00-819613f56130 + Mass + 100 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 9a201574-74b0-4655-afee-b0cde6b6c0ad + Mass + 100 + + + + + 68.122112829295048 + + MI_Restricted_Substances + 9df55457-5300-4ddb-b92e-122b5c121621 + + Glass and mineral filled, encapsulation, molding + Novolac (glass and mineral filled, encapsulation, molding) + a510660d-8847-40e7-9013-1b3a2aa1e846 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 721bb10d-40b3-40f8-a442-31329929a99a + Mass + 100 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 0dbd4f92-52da-4612-8f9b-445d36bd2baf + Mass + 100 + + + + + + + 4 + 43.539729082742582 + 8719cee3 + part_8719cee3-7e5e-419e-82b4-a33ad703e445 + 8719cee3-7e5e-419e-82b4-a33ad703e445 + + + 6.8166290907266687 + + MI_Restricted_Substances + 91d7e1bd-d353-4eb1-9634-286e8e69d0d5 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1141, oil quenched & tempered at 540°C + 09339501-b90d-4cc7-b6f3-ad949f588d4d + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 3e935dc2-739a-49b1-9698-176143391e94 + Mass + 44.908148210918604 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + c343fa32-2b7b-42c9-aee9-0c00bce27843 + Length + 72.754816465431276 + + + + + 15.530561818212222 + + MI_Restricted_Substances + 0c03540d-4b15-4c02-ac02-22aeb9a026d1 + + As rolled + Carbon steel, AISI 1050, as rolled + 04b0c57d-d8dd-4273-8532-8996b5b50db9 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 865313d8-57a7-40af-85b4-929a1aac2fcb + Mass + 100 + + + + + 15.530561818212222 + + MI_Restricted_Substances + bbe0765c-012b-434e-878b-b40ad692b373 + + YS550, hot rolled + High strength low alloy steel, YS550, hot rolled + da34dc54-db5a-40de-a63d-af3f077d3709 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + a3719d7a-5b96-47ca-97a0-bddd60ff8504 + Mass + 100 + + + + + 15.530561818212222 + + MI_Restricted_Substances + 28d51559-b49b-4a2b-9f09-9a198db03164 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 4340, oil quenched & tempered at 425°C + b6f03f03-413a-4337-ba39-05190a7b2dd7 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 594dabbe-39fd-4dd1-b88e-478b03efea2a + Mass + 100 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + 921a2ff2-aff7-4122-a3e3-1d9b999e2e22 + Mass + 100 + + + + + 15.530561818212222 + + MI_Restricted_Substances + ab895171-8c16-4056-9062-78f7516be1b0 + + Borosilicate - 7050 + Borosilicate - 7050 + 9c05940d-1c2a-4e3d-969c-d01087aaf891 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + bff839a3-d322-4f30-ab57-f2a490f66d3a + MassRemoved + 56.520598594341706 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + c29daa43-5f13-4db1-850f-84554bde107e + MassRemoved + 14.154799102877638 + + + + + 15.530561818212222 + + MI_Restricted_Substances + 9e11a8f7-0b35-4610-aee9-557a236bbe5c + + Soda borosilicate + Soda borosilicate + 5dc0bd97-c630-46fb-a89e-16a37070be8c + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 2ded6187-797e-46b0-bc88-cd21cb67e9dd + Mass + 100 + + + + + 15.530561818212222 + + MI_Restricted_Substances + 0a203f13-4112-4c7b-8d17-bd9ce600f647 + + YS350, cold rolled + Dual phase steel, YS350, cold rolled + f2dfa513-aae0-4797-beb9-1ed13e79d1d8 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + bf617362-33d0-4391-a330-bb1605b6106a + Mass + 100 + + + + + + + 6 + 81.783242049526066 + a0b611b5 + part_a0b611b5-342d-4b79-be32-7c9a076e0e8f + a0b611b5-342d-4b79-be32-7c9a076e0e8f + + + 18.181860315698135 + + MI_Restricted_Substances + 99d1c1c6-eca3-40ed-a479-6dec902f52da + + YS400, cold rolled + TRIP steel, YS400, cold rolled + f4beeddc-916c-4c6b-b4ef-579374ef198d + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 5046dd39-4752-4147-877b-f1661f6e3812 + Mass + 23.847984161157154 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + 636cacf1-3471-4160-b4da-89d7cb071e26 + Mass + 100 + + + + + 20.454534921075467 + + MI_Restricted_Substances + 59606aaf-e663-4044-b533-b4b8cb684253 + + YS500, cold rolled + Complex phase steel, YS500, cold rolled + e9403f7e-9696-4f1d-a154-714de79d9668 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 730d48fa-c6ef-4824-88ff-55453ba45851 + Mass + 100 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 028e4dc7-f215-4846-9938-98ef924d2a7e + MassRemoved + 83.675200857070834 + + + + + 20.454534921075467 + + MI_Restricted_Substances + b44fad5b-b59d-4153-addf-f70a7895947d + + Annealed + Low alloy steel, AISI 4130, annealed + 618cbf4c-398c-4566-ae46-3b02aeea4d07 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 5e318605-a8ed-40be-9d53-8871d8887891 + Mass + 100 + + + + + 20.454534921075467 + + MI_Restricted_Substances + dce2dc34-54db-4d0a-bab0-85d4e6e08d8e + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 6150, oil quenched & tempered at 650°C + 7a112c50-ea81-4f06-9f2b-e0bb931100f1 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + be96ad5c-ea44-4e45-a520-83bd94672ada + Area + 0.5402269775700882 + + + + + 20.454534921075467 + + MI_Restricted_Substances + 0c172430-369d-48ad-910e-69fe1451a36e + + Normalized + Carbon steel, AISI 1095, normalized + e81306d4-b281-4497-ba8a-5b2a664492c7 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 9803fbe4-2ff3-4ba5-83cd-4ab5cb34d1b7 + Mass + 100 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + dab3d543-1214-4a62-b05e-3f3291a45893 + MassRemoved + 36.132488789098566 + + + + + + + 4 + 35.294632024734575 + 208ce13a + part_208ce13a-b5f1-4feb-a7bd-e85b0bb4a8ad + 208ce13a-b5f1-4feb-a7bd-e85b0bb4a8ad + + + 100 + + MI_Restricted_Substances + 046c72ad-662c-4ce8-8132-16d5254188ee + + Heat resistant, molding + PF (glass and/or mineral filled, heat resistant, molding) + 3e668c82-8399-4eb2-b017-b473ff533ac3 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + 650bd447-3070-4a45-bb76-27c65e9e4ca4 + Area + 96.301162008336348 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 9d95b09b-f3c6-448d-95c8-f6231f465cd3 + Mass + 100 + + + + + + + 1 + 31.815718874249477 + + MI_Restricted_Substances + 19db41d7-f431-4cae-8977-8bdab8435374 + + a50db05b + part_a50db05b-55c0-48e8-b262-8bffcfa8738c + a50db05b-55c0-48e8-b262-8bffcfa8738c + + + 9 + 67.046943896937634 + 3a641f16 + part_3a641f16-839e-4d1f-aae2-ee4563f538c1 + 3a641f16-839e-4d1f-aae2-ee4563f538c1 + + + 100 + + MI_Restricted_Substances + 72799627-a7c0-4df4-8250-e2be8538565f + + Glass ceramic (N11) + Glass ceramic (N11) + 1f60f091-b4e3-4c58-b54d-61be8f2f0000 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + c3674baf-8976-4c3f-944b-0c659f07fd2f + Area + 77.0971026630593 + + + + + + + 2 + 39.97497518545714 + ba8288a7 + part_ba8288a7-5880-41d0-a8bc-4a42f0ee5be7 + ba8288a7-5880-41d0-a8bc-4a42f0ee5be7 + + + 79.03927889607813 + + MI_Restricted_Substances + fc29cc59-a670-4ad6-85a0-eb07bf011f1a + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 6150, oil quenched & tempered at 425°C + 4e1f456c-0ea0-40ac-bb59-3c78d035d548 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 27d27927-bd18-4356-bb79-401374ff5801 + MassRemoved + 8.4510101044788062 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 8a6c5514-4b0d-4384-b2fd-1819bdf963aa + Length + 1.7234645326265434 + + + + + 20.96072110392187 + + MI_Restricted_Substances + 874b8433-2e47-45c3-9c89-226428104214 + + Glass and mineral filled, heat resistant, molding + Novolac (glass and mineral filled, heat resistant, molding) + 7eda1423-f305-4bde-9d90-2e83666732fd + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + dfc3b8b7-afa2-41a4-8e7d-7d8682633f0d + Length + 17.662342273472966 + + + + + + + 2 + 38.256926992096439 + 19bd4234 + part_19bd4234-39b1-47f8-8eac-af3b32dbf354 + 19bd4234-39b1-47f8-8eac-af3b32dbf354 + + + 60.8626597844356 + + MI_Restricted_Substances + 67ea6f19-34d5-40af-9b8c-059058fd840a + + Oil quenched & tempered at 205°C + Carbon steel, AISI 1080, oil quenched & tempered at 205°C + cd2796d3-e2ad-4034-bb16-0ed081b6ba85 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 6d20e938-760d-4d91-80bb-7ef9c624bdd4 + Mass + 15.575744544889659 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + 2dd4aba0-cfb4-40e5-9e8a-6dc04a8ef5b7 + Mass + 100 + + + + + 19.5686701077822 + + MI_Restricted_Substances + ed1b937b-1738-408f-9591-bd3e40cc5e33 + + Quenched & tempered + Low alloy steel, D6AC, quenched & tempered + a2e8261e-5fd8-40b8-b1de-bf192c84f1a6 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 4f611131-8c4a-4d39-b8ee-dad994576bb7 + Mass + 100 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 3f84b836-0ee0-4a42-a86f-5367cdc47fb1 + Mass + 100 + + + + + 19.5686701077822 + + MI_Restricted_Substances + 3606ab13-13f3-49fb-bded-2e3470bcf7d9 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 81B45, oil quenched & tempered at 650°C + 438e3a3e-b57b-4f61-a754-c1a9f8f14655 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + ba4a6d40-3e32-41ca-8396-b53a02414c81 + Length + 53.875004013010766 + + + + + + + 5 + 3.5629354433915279 + 9dd6db59 + part_9dd6db59-314a-44cb-a1f8-80d8fef48bf7 + 9dd6db59-314a-44cb-a1f8-80d8fef48bf7 + + + 20.78174591100856 + + MI_Restricted_Substances + 0a203f13-4112-4c7b-8d17-bd9ce600f647 + + YS350, cold rolled + Dual phase steel, YS350, cold rolled + 7e1abe58-dc2f-49e9-b7c0-dbc38cbc01d0 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 6728f46f-986a-4275-9387-1cc4faa4da0b + Mass + 85.852806915460533 + + + + + 39.609127044495722 + + MI_Restricted_Substances + 55c8dd10-b62f-4136-b1c8-6260fcec05cc + + Annealed + Carbon steel, AISI 1040, annealed + a63a43fb-bd3e-4713-9d59-14cd253dcfb8 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + e10732c7-d7d9-40f8-9ce9-834264f73e30 + Mass + 100 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 312ad884-6078-48de-ac21-4b1cb4df5195 + Mass + 100 + + + + + 39.609127044495722 + + MI_Restricted_Substances + 9052201a-a41d-4b86-8c7c-2e80163afd47 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 9255, oil quenched & tempered at 425°C + 3f0e83fa-2dc2-40fd-8673-7af055ac9ebb + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + fdd1873a-08e3-49d6-ac02-ac8740413d2f + Mass + 98.71991826161738 + + + + + + + 2 + 65.842380172499631 + 91357df5 + part_91357df5-a0a9-4613-9e4e-4db5c3dd290a + 91357df5-a0a9-4613-9e4e-4db5c3dd290a + + + 29.547984213357786 + + MI_Restricted_Substances + c62d668e-5411-4845-b19c-3a0c4eedf872 + + 10CrMo9-10, normalized & tempered + Low alloy steel, 10CrMo9-10, normalized & tempered + 3f3c809b-73b8-49b9-9c0b-bc086b8b39a9 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 3d8df13c-3e9f-4988-bede-97cdbdea9c70 + Mass + 100 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + d644e2f7-3fb6-4478-a0e6-492dc9095c10 + Mass + 100 + + + + + 10.064573683806032 + + MI_Restricted_Substances + bf6aa85b-3059-4b2c-86af-6bcb1996d5b9 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1340, oil quenched & tempered at 540°C + 992bae49-43ed-4d6f-9ab8-9a32662693fe + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + d9c54a78-22a2-4129-8026-e53bf8b5e318 + Area + 24.615524534422683 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 23cdc31f-0efe-4f13-9490-41453d6a83ed + Mass + 100 + + + + + 10.064573683806032 + + MI_Restricted_Substances + 26c4e2ce-ddb9-499d-bc00-aa0f3bdd9c24 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 8740, oil quenched & tempered at 540°C + 2ea7361e-06a4-4657-87e0-1c0de2008304 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 65a19922-4bb3-4ca4-a6a5-69dca645c5ff + Mass + 100 + + + + + 10.064573683806032 + + MI_Restricted_Substances + 7ab4723d-0e73-471b-9be3-18cf27157318 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 5130, oil quenched & tempered at 540°C + 99975f48-c24c-4386-ba08-6128ca010a84 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 622c3df4-5555-49e5-873b-382ad90ef3ba + Length + 68.233961969722984 + + + + + 10.064573683806032 + + MI_Restricted_Substances + 6ad310ec-db2b-43b1-afa1-9b6ddae5880c + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 94B30, oil quenched & tempered at 425°C + 0da179b9-8835-487a-9c7e-dc94a332499c + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 7567cd31-1442-4f82-b28a-fe35bc1588d2 + Mass + 100 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + e7d87153-23d8-4119-8d80-f876d25399c0 + Mass + 100 + + + + + 10.064573683806032 + + MI_Restricted_Substances + 8dbb57f2-b225-4f57-9a5a-c25a03292d6e + + Annealed + Low alloy steel, AISI 6150, annealed + b9be711b-55d6-4195-b9d0-e0a8d321904c + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 1834584f-afbf-4ab2-bc96-be73a97aa21e + Length + 65.84657596696475 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 00887d64-3f95-46fc-9953-4f368a07f0eb + Mass + 100 + + + + + 10.064573683806032 + + MI_Restricted_Substances + a43e27db-2962-4e19-aebb-f135744741e3 + + Annealed + Low alloy steel, AISI 5120, annealed + ddf239e2-6149-43a3-8000-236874b5839b + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 0ef4f2b1-4984-4c98-90bd-180542bd7dde + Mass + 100 + + + + + 10.064573683806032 + + MI_Restricted_Substances + 5169a157-0d18-4d45-b197-799e06aa00bc + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 9255, oil quenched & tempered at 315°C + b85fa4ef-7d24-45db-b8ab-89797f8458c2 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 727324d2-de0e-483e-869c-5ce872d30888 + Length + 39.335817768860522 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + eef71883-cb51-409a-b7ce-70882f5ef579 + Mass + 100 + + + + + + + 3 + 19.394435323492825 + 1ff628be + part_1ff628be-8e3f-4c38-879f-0b4048e9e811 + 1ff628be-8e3f-4c38-879f-0b4048e9e811 + + + 65.8800943130069 + + MI_Restricted_Substances + b00ee3d8-d653-4c76-8154-c2f07820ceda + + As rolled + Carbon steel, AISI 1080, as rolled + 34f2f2b5-283d-41db-9853-4563182a132c + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 666ac6f9-c3bc-48e2-bc93-7e95e405309a + Length + 13.8378301699822 + + + + + 5.6866509478321845 + + MI_Restricted_Substances + dcce1340-a96d-465a-8878-4d8f44c2f7f7 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 5150, oil quenched & tempered at 540°C + 1f4c5613-0146-4a59-a030-e486677f0f9b + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 1963c1c5-b111-47ea-bb86-1bbde20ee277 + Mass + 100 + + + + + 5.6866509478321845 + + MI_Restricted_Substances + b879bb01-8648-4b5b-8159-d591cb251ca8 + + Normalized + Carbon steel, AISI 1080, normalized + a01b000d-fda4-4c5d-8d5d-d69fd0bb5e70 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 56e8844a-a9f1-4e73-b34e-8dda8ee558ec + Mass + 100 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 578cc726-506b-4075-ad45-8cff91a53ada + Mass + 100 + + + + + 5.6866509478321845 + + MI_Restricted_Substances + 2be5267e-fce0-4169-a0fe-d8de913e1d71 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 8640, oil quenched & tempered at 205°C + f68aa67a-f7f4-489e-9eaa-286340efe2d1 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + dc22fa7d-7549-4386-8c95-1837f5c128b2 + Mass + 100 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 530a525e-76b2-4f7f-9788-0e6d257c2238 + Mass + 100 + + + + + 5.6866509478321845 + + MI_Restricted_Substances + f95fb065-be79-4298-84c9-9f276ea46e48 + + Glass/polyimide honeycomb, ±45° fabric (0.088) + Glass/polyimide honeycomb, ±45° fabric (0.088), L Direction + 03a3141d-7b1e-4fff-a8a6-37299f364430 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 56360d01-e86f-423e-b37b-9fa3ba08185e + Mass + 59.824284752749037 + + + + + 5.6866509478321845 + + MI_Restricted_Substances + 2017a3b5-88e7-473f-b7c9-1ab8afe722fe + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 5160, oil quenched & tempered at 540°C + 9904d2c7-5bf9-4f27-8090-81297a499433 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 0b71141e-c7c1-41f5-87e5-badcfc0a5a0c + Length + 67.201602164284139 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + a22737bb-cc0a-4f41-9a11-64e3af9a7db4 + Area + 42.627087767527946 + + + + + 5.6866509478321845 + + MI_Restricted_Substances + e678781a-1b38-4709-816b-9db609651db6 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 50B60, oil quenched & tempered at 425°C + e7349359-10ab-4551-be4e-c99c7405dde4 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 93c0653b-b85f-40c7-93ee-3a0d7f16d0a6 + Mass + 100 + + + + + + + 9 + 66.3558430347386 + 873e2b55 + part_873e2b55-ef6f-416b-9880-a137f2b762af + 873e2b55-ef6f-416b-9880-a137f2b762af + + + 54.279447185937059 + + MI_Restricted_Substances + 81ce98b3-d459-4695-9dd9-d53244be47ed + + Annealed + Carbon steel, SA216 (Type WCC), cast, annealed + 023a42db-39d1-420c-bd0c-c50e7ec5d6b3 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 219011eb-716b-4b65-9d55-75b1e95d8541 + Mass + 100 + + + + + 45.720552814062941 + + MI_Restricted_Substances + b872537b-c0a0-4c3e-8388-e5544183cdd3 + + water quenched & tempered at 425°C + Carbon steel, AISI 1030, water quenched & tempered at 425°C + 85907385-a5ab-40fb-a8a1-d2d28034c0eb + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + c35e2aff-f3f8-4e4e-9a92-f70a56d3e198 + Length + 72.001279877499343 + + + + + + + 8 + 25.110623578126834 + 260376b9 + part_260376b9-7f28-4b9d-ba85-c71529c2e558 + 260376b9-7f28-4b9d-ba85-c71529c2e558 + + + 100 + + MI_Restricted_Substances + 2096ca77-9981-4fd5-9bc6-afe56b3bbbd4 + + Glass/phenolic honeycomb, 0°/90° fabric (0.096) + Glass/phenolic honeycomb, 0°/90° fabric (0.096), W Direction + cd0e804b-5055-491c-91bb-f578cd24b402 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + ac430bac-6be6-4ca3-a355-eaf8a392dca2 + Mass + 100 + + + + + + + 4 + 81.728687594518391 + 650a75cd + part_650a75cd-cf12-4f02-894a-47b250a8a649 + 650a75cd-cf12-4f02-894a-47b250a8a649 + + + 35.709987178309817 + + MI_Restricted_Substances + 44a3cdc8-1092-45c0-be37-1802daa92d30 + + Borosilicate - 7052 + Borosilicate - 7052 + 5c6db892-edf7-4a01-891a-62b1a8c3c0b3 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + a27619f0-e851-4da1-a062-7e6c7629df5f + Mass + 100 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + 29cedba9-c8e5-484f-8b1e-1573897b939a + Area + 74.103033949669012 + + + + + 32.145006410845092 + + MI_Restricted_Substances + 874b8433-2e47-45c3-9c89-226428104214 + + Glass and mineral filled, heat resistant, molding + Novolac (glass and mineral filled, heat resistant, molding) + 3bd97cc5-55ff-4338-8f5b-868161733ffb + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + d09771bf-6836-4948-99e4-add1146832cc + Mass + 70.765653238988321 + + + + + 32.145006410845092 + + MI_Restricted_Substances + bafd43bc-822e-4a22-bbac-ea5d189fb539 + + Glass/phenolic honeycomb, 0°/90° fabric (0.096) + Glass/phenolic honeycomb, 0°/90° fabric (0.096), L Direction + 9adcfe4f-0bcb-4a67-b39a-cb7ce736e73b + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 3b5ffc91-f48d-403f-ae38-123563087d04 + MassRemoved + 57.180027364371355 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + a921ce26-772c-4779-8f41-ef92162af905 + Area + 19.032967425432506 + + + + + + + 1 + 41.888644752040804 + 9ebdc15a + part_9ebdc15a-d6ae-45be-99de-789d4100ca40 + 9ebdc15a-d6ae-45be-99de-789d4100ca40 + + + 100 + + MI_Restricted_Substances + a89802d6-13c5-496d-b139-57ae43e6591c + + As rolled + Carbon steel, AISI 1022, as rolled + 94c367bb-be30-41d7-b198-c89579e1eacd + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + cd0c3208-da44-4c68-bea8-bde114513392 + Mass + 100 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + b65d9c76-58c0-4361-9dc0-a64d214066cb + MassRemoved + 76.781887224308164 + + + + + + + 5 + 13.107623305687504 + b489c8c7 + part_b489c8c7-b4d5-4664-aa4b-bb5250ccf3b2 + b489c8c7-b4d5-4664-aa4b-bb5250ccf3b2 + + + 100 + + MI_Restricted_Substances + 23967b46-b6a1-4f82-9a4f-d0ea6e728ece + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 5160, oil quenched & tempered at 650°C + 73ef86b5-6d18-4588-a375-1e5a070886e8 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + fbf0e496-74ad-4a0d-9726-2358bc601732 + Length + 39.468133654197743 + + + + + + + 4 + 96.196341093721031 + 5b9257d1 + part_5b9257d1-f821-4fff-a137-7e3ee55bfa4e + 5b9257d1-f821-4fff-a137-7e3ee55bfa4e + + + 93.020738238944091 + + MI_Restricted_Substances + be8a7515-ee24-4272-814c-77d9175f6448 + + As rolled + Carbon steel, AISI 1137, as rolled + 6ea1fac4-fb32-4f3c-af4b-f096113a38dc + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + aa5fbc04-e9e0-454a-bc5d-97ee7d8abd00 + Mass + 100 + + + + + 0.99703739443655848 + + MI_Restricted_Substances + 96ffbd8d-b296-4749-a0b0-fc5d243affda + + water quenched & tempered at 540°C + Carbon steel, AISI 1095, water quenched & tempered at 540°C + 156d7400-497b-46ae-b90a-01d15ae3584a + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 52debb42-5c4c-4d64-894a-f848f6076635 + Mass + 100 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 83a1e091-bf83-4510-906d-e127384dbaba + Length + 30.027891476651604 + + + + + 0.99703739443655848 + + MI_Restricted_Substances + 9e6962c2-d850-4285-97e5-fbb27dbc0447 + + water quenched & tempered at 425°C + Carbon steel, AISI 1050, water quenched & tempered at 425°C + ed8f8b22-77d8-47c4-8445-35f902c2fd70 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 48d616ec-5d6c-43ef-8222-c9f556facab8 + Area + 36.975034250400512 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 2598e531-13cd-4f51-924c-73bd3f0cbc5d + Length + 22.492894587336526 + + + + + 0.99703739443655848 + + MI_Restricted_Substances + 6c7c9029-b53e-45cd-9578-92083101604c + + Glass/phenolic honeycomb, ±45° fabric (0.032) + Glass/phenolic honeycomb, ±45° fabric (0.032), W Direction + fa45dc1e-1853-45e1-83a8-443a15d8245d + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + d9f0a1eb-bbaa-40ee-a757-f8cdedaa53e8 + Mass + 65.565940814821957 + + + + + 0.99703739443655848 + + MI_Restricted_Substances + f92ff01e-ed35-4c66-96d1-607d9684b44b + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 94B30, oil quenched & tempered at 315°C + 3e210ce1-97e5-430d-803f-b12cade81d95 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 7a24a97b-8f05-466b-918b-4dc2f6c5ed90 + Mass + 100 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 60b3d98f-e477-465c-abc1-f70e10b5d9da + Mass + 1.4603360097204969 + + + + + 0.99703739443655848 + + MI_Restricted_Substances + 8cd50236-3f00-4460-9e77-bc85138f34c4 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 51B60, oil quenched & tempered at 425°C + fdb12a23-07e4-41ed-a7db-1d63e9dba3dc + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 13e03c77-918f-49ce-823b-98f25145eb80 + Mass + 100 + + + + + 0.99703739443655848 + + MI_Restricted_Substances + 6d6a3603-a2a8-4db9-9e7e-ad4fc4f9c724 + + Glass/phenolic honeycomb, ±45° fabric (0.064) + Glass/phenolic honeycomb, ±45° fabric (0.064), W Direction + 642bc4ec-7dc1-4e24-b9de-f50f4971c09c + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + dcf23f35-d5c6-4368-b02e-6c0aa653c3eb + Mass + 100 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 900cce51-db5c-4b9c-b9b4-9a315fb29b16 + MassRemoved + 52.897117916912364 + + + + + 0.99703739443655848 + + MI_Restricted_Substances + 87e1a3cd-fd79-4013-b5f8-56d6f28bef34 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1144, oil quenched & tempered at 540°C + 15f2d5f4-0d3f-4dcb-ac36-3502ea6bc955 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 63823504-d8fb-4123-933c-f810c438558b + Mass + 18.231672615852055 + + + + + + + 3 + 22.852098812745929 + 7d1e9930 + part_7d1e9930-f664-42e2-9303-926b6b2461e0 + 7d1e9930-f664-42e2-9303-926b6b2461e0 + + + 70.843362794650417 + + MI_Restricted_Substances + a6ee4feb-80c5-43a7-b3ee-a1423218f502 + + AF1410 + High alloy steel, AF1410, solution treated & overaged + 2f3e003b-677d-4d37-8f9f-8d1464636002 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + fc55e36d-d625-4e4c-98a3-e04855bb014e + Mass + 100 + + + + + 29.156637205349583 + + MI_Restricted_Substances + d121aded-0a6a-41ae-be9f-f0532fab5cfd + + water quenched & tempered at 540°C + Carbon steel, AISI 1030, water quenched & tempered at 540°C + 8b20fef8-50e4-45ea-8bd2-cca011716365 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + f1eebee2-01d2-4e54-b6c3-d097f4ad32bf + Mass + 100 + + + + + + + 3 + 95.2344635944974 + 4023ab0f + part_4023ab0f-9880-418e-8820-5951c5d64aca + 4023ab0f-9880-418e-8820-5951c5d64aca + + + 19.395717149318994 + + MI_Restricted_Substances + ce76abdf-c476-4643-8436-8e49a2813e39 + + Oil quenched & tempered at 425°C + Carbon steel, AISI 1080, oil quenched & tempered at 425°C + 1bde5ecf-700e-4a11-97af-e0288a8e8c9b + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + d7eafcf8-27cc-4ebe-934c-6d935638c057 + Mass + 46.434849661977431 + + + + + 80.604282850681 + + MI_Restricted_Substances + af4f67b9-f5a7-4fc3-9f1d-da3309e4b19a + + Solution treated & aged + Iron-base-superalloy, Cr-Ni alloy, A-286, solution treated & aged + 98d98926-df80-4f95-9608-402ddc11f352 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 11ab8d32-b3f3-49f9-9742-57531e3f2a0f + Mass + 100 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 9b3018cd-88ea-4707-885d-edf6ad1b12dc + Mass + 100 + + + + + + + 3 + 31.530401078765468 + b5828b97 + part_b5828b97-1075-4774-be6c-accf9015044f + b5828b97-1075-4774-be6c-accf9015044f + + + 46.062491203687387 + + MI_Restricted_Substances + 00fe0155-9aca-4c9d-b0a2-1289f92fa2a0 + + Alkaline earth lead glass + Alkaline earth lead glass + 217f3630-b6ca-496a-9cf2-f3de87d86d02 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + e032fb18-10f2-491f-b682-593060272c98 + Mass + 100 + + + + + 8.989584799385435 + + MI_Restricted_Substances + fab0ed5a-7494-4bcb-b57a-e0d565751dfe + + Potash soda lead glass - 1990 + Potash soda lead glass - 1990 + 689fa427-652b-49ea-af17-4831b88b7446 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 7e70493a-73d5-40e6-b18d-87553700cf8a + Mass + 100 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 7ca68a1c-ff4c-43e4-93f4-8bb83e0f0e75 + Length + 20.890187016171492 + + + + + 8.989584799385435 + + MI_Restricted_Substances + a68201e5-218b-4387-9e30-d1332ccfa44f + + Oil quenched & tempered at 315°C + Carbon steel, AISI 1340, oil quenched & tempered at 315°C + 57c62021-7086-4950-a92c-456b85b9e884 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 676d724a-c0d0-49ab-9f89-5b4d9254e89e + Mass + 100 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + d8787978-abf8-42e7-84b8-015687e6c2c7 + Mass + 100 + + + + + 8.989584799385435 + + MI_Restricted_Substances + 1d5dd59c-75a0-4bf2-8862-7d77996aa0be + + Annealed + Low alloy steel, AISI 8650, annealed + c0d00feb-229c-45d8-b780-8d491e068b28 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + a4a4e099-acc5-405a-8bda-09da836ffc14 + Mass + 100 + + + + + 8.989584799385435 + + MI_Restricted_Substances + ef4e19ac-4c9c-4fc1-b971-3ce21de330a2 + + Glass/polyimide honeycomb, ±45° fabric (0.128) + Glass/polyimide honeycomb, ±45° fabric (0.128), W Direction + d0328aa0-162b-40b6-852c-c3aa591010b9 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 08fbec63-9041-46ca-b103-6b5477c34130 + Mass + 100 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 70cf2e8c-ff1b-4eef-81ff-44b95dcc433f + Mass + 100 + + + + + 8.989584799385435 + + MI_Restricted_Substances + 2096ca77-9981-4fd5-9bc6-afe56b3bbbd4 + + Glass/phenolic honeycomb, 0°/90° fabric (0.096) + Glass/phenolic honeycomb, 0°/90° fabric (0.096), W Direction + 9f41888e-8aac-4160-b914-30890b83248c + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 49748196-7cb6-4172-b1da-1f5290340c74 + Length + 5.7102597345180151 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + cc937aff-8c52-4315-b307-e41c7e4ef08c + Mass + 100 + + + + + 8.989584799385435 + + MI_Restricted_Substances + 67cc68ee-c8ab-40bd-bf62-4babd642a1fd + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 81B45, oil quenched & tempered at 425°C + 47a5075d-5e27-4e53-8b2a-eabaec901f1c + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 4a76f34b-6d55-432e-ad78-60128d843a4f + Mass + 100 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + abd73439-a4ae-4ba3-a258-fd5fc322115a + Mass + 100 + + + + + + + 4 + 23.832178359773092 + 06628875 + part_06628875-d9ee-4c09-89e7-0f454a13cd45 + 06628875-d9ee-4c09-89e7-0f454a13cd45 + + + 81.659225226221238 + + MI_Restricted_Substances + ee08f647-79af-49f3-98c5-043480a0fed4 + + Quenched & tempered + Low alloy steel, 4330V, quenched & tempered + 33f6730d-9f32-4321-8418-a3d9a8e4c514 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + d423ef7a-2f61-4992-9f5f-e4bacf13607b + Mass + 100 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + f4171533-291f-4ce9-9087-d31d486f10d0 + Mass + 100 + + + + + 18.340774773778762 + + MI_Restricted_Substances + d411a96b-aa1c-4651-a405-5a2bc5c32dff + + Modified, Grade 91 + Alloy steel, 9Cr-1Mo-V, modified, Grade 91 + a5fa4139-e40c-47fb-a213-a703316d9a57 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + f96af788-4771-487b-a457-aeafa787e071 + Mass + 100 + + + + + + + 8 + 88.412138441769471 + + MI_Restricted_Substances + fd7a9f3d-cb52-4422-8ede-c25a48f61056 + + 6795518b + part_6795518b-1296-4afe-b918-433b4c411abc + 6795518b-1296-4afe-b918-433b4c411abc + + + 8 + 1.5978388961394499 + + MI_Restricted_Substances + fd7a9f3d-cb52-4422-8ede-c25a48f61056 + + 52486ce9 + part_52486ce9-d674-4917-bb14-f25a244a5a8e + 52486ce9-d674-4917-bb14-f25a244a5a8e + + + 7 + 43.843906439768105 + + MI_Restricted_Substances + 80083213-3621-42c0-9e23-cdaa30c759e6 + + 5392a22c + part_5392a22c-ee32-4fd6-8428-0968c023863e + 5392a22c-ee32-4fd6-8428-0968c023863e + + + 3 + 39.933078754662105 + fd45e442 + part_fd45e442-8f0c-4731-b486-355c460e573f + fd45e442-8f0c-4731-b486-355c460e573f + + + 100 + + MI_Restricted_Substances + 90b2285b-4295-429d-beb8-90d9f5df0101 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 5046, oil quenched & tempered at 315°C + cb7ea85e-72ec-4dee-bee5-f9a93f4ad9ad + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 5b3d7c37-3bb1-41e3-91f3-d37aefcdfd96 + Mass + 100 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + f1deacca-1590-431d-b8fc-fe4934ecb0e3 + Mass + 100 + + + + + + + 2 + 99.169801780567411 + 76104c26 + part_76104c26-866e-4db9-9d90-7097e3982b3d + 76104c26-866e-4db9-9d90-7097e3982b3d + + + 38.343663391817209 + + MI_Restricted_Substances + 3cad12a9-0765-402c-a6b1-0be665ecd2e6 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 4140, oil quenched & tempered at 540°C + fc0e832c-2179-4f80-850a-a311863ffadd + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 89e7a6a4-d35c-4b53-b22a-188467bcd226 + Mass + 100 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 1b37e761-da85-4f06-8215-34330d7f61cf + Mass + 100 + + + + + 7.7070420760228489 + + MI_Restricted_Substances + 45a257d5-da48-4520-9174-ffe7bbadcd1c + + Glass/phenolic honeycomb, ±45° fabric (0.088) + Glass/phenolic honeycomb, ±45° fabric (0.088), L Direction + 83e993b0-6437-4eb5-a265-245d967243f1 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 176aea18-0ec1-4b4f-bceb-bddb9547aebe + Area + 88.583230408180142 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 93dea267-4bef-403b-a62d-1a8a007593c2 + Mass + 100 + + + + + 7.7070420760228489 + + MI_Restricted_Substances + 211ae46e-0827-4d61-af66-5a72c42d0cd8 + + T-glass + T-glass + a9a90986-ee65-4929-a4b6-f935adf547e9 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 25b28a90-51c9-4416-9ad3-3fe04a1746e2 + Mass + 100 + + + + + 7.7070420760228489 + + MI_Restricted_Substances + 4df9287d-c8fa-47a8-8f7b-218fdc14a141 + + Normalized + Low alloy steel, AISI 4340, normalized + edf4f538-5d79-419b-929f-aaa781ef585d + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 561f8a3b-3a9a-4141-aa92-ecca13669933 + Mass + 100 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 4d917439-f220-47bc-9ed2-cb39bb0b83cd + Mass + 100 + + + + + 7.7070420760228489 + + MI_Restricted_Substances + 644fc87d-87f3-468c-9a88-b8e2db43ae6b + + water quenched & tempered at 650°C + Low alloy steel, AISI 4130, water quenched & tempered at 650°C + 3c3474e6-baf8-44fa-b65b-095b10e30b8d + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 2c8a6e29-c719-489c-b5cc-4068a6161ded + Mass + 100 + + + + + 7.7070420760228489 + + MI_Restricted_Substances + 9ce914d8-75c1-4c5f-8c57-11c0e62b2cfa + + ASTM A299 Grade A + Structural steel, ASTM A299 Grade A + 48671cfe-bff1-4aef-a9ec-7ca411fb54f1 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 5010ab7a-ded4-4271-827c-cd2bfdbc5f4e + MassRemoved + 56.047520114131046 + + + + + 7.7070420760228489 + + MI_Restricted_Substances + 90b2285b-4295-429d-beb8-90d9f5df0101 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 5046, oil quenched & tempered at 315°C + 15109e4a-788f-45d7-b307-7eae9067ed3b + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 482c2990-9110-46c6-b63b-1fd1332ec968 + Mass + 100 + + + + + 7.7070420760228489 + + MI_Restricted_Substances + 966360b2-fda5-432b-9069-4a9814db3e6b + + YS1200, hot rolled + Martensitic steel, YS1200, hot rolled + 615c2e3c-f676-4a21-8bd3-aa289ab2f97f + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 1bc2734f-76ea-4eee-ac4e-3d305cac579e + Mass + 100 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + ee9438ae-3a81-4135-94df-b9c951d9e3b0 + Mass + 100 + + + + + 7.7070420760228489 + + MI_Restricted_Substances + 924b3986-e315-4b28-9daa-56a075aa18e9 + + Annealed + Low alloy steel, AISI 52100, annealed + 70eb3599-7754-404f-bbf4-c843a0d22ab8 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + beff16be-fa66-4825-94ed-f0627705c853 + Mass + 73.715334419959845 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 95e5da93-2323-4390-9111-995c2f3b4a15 + Mass + 100 + + + + + + + 2 + 84.140368077969356 + fa4944fc + part_fa4944fc-c700-4f4f-8520-ba8f7173c98d + fa4944fc-c700-4f4f-8520-ba8f7173c98d + + + 83.08901138747531 + + MI_Restricted_Substances + 87b588e6-604a-4acb-a651-c882f6211f74 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 8660, oil quenched & tempered at 650°C + 700b12bc-62b3-4c8d-ae28-a486940d8001 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 223ffc08-825b-4d8d-9930-631abbb47b36 + MassRemoved + 77.06509645891613 + + + + + 2.8184981020874482 + + MI_Restricted_Substances + 5169a157-0d18-4d45-b197-799e06aa00bc + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 9255, oil quenched & tempered at 315°C + 0b984f84-b973-4107-b1b6-b17ccefbd7f8 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 67d84b4a-6da7-4fc2-98cf-e5220310f972 + Mass + 100 + + + + + 2.8184981020874482 + + MI_Restricted_Substances + 23967b46-b6a1-4f82-9a4f-d0ea6e728ece + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 5160, oil quenched & tempered at 650°C + 6db0fe77-beeb-4841-b6fb-1ca4e65c1d5d + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 6d9f7993-fd2d-4dae-949b-77639a6bc6c6 + MassRemoved + 49.375426000624628 + + + + + 2.8184981020874482 + + MI_Restricted_Substances + 619c1e62-d6e1-4a5d-9abc-99a0b6c0ed7e + + Oil quenched & tempered at 315°C + Carbon steel, AISI 1141, oil quenched & tempered at 315°C + bab1cdce-dc22-49ec-bae4-99408792ca79 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 290a4dc9-7b4c-49b0-97c7-e93b67c2b124 + Mass + 100 + + + + + 2.8184981020874482 + + MI_Restricted_Substances + f92ff01e-ed35-4c66-96d1-607d9684b44b + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 94B30, oil quenched & tempered at 315°C + 84013519-f260-4996-8f52-eae2dd77a93d + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + 4c1c16e7-e2d4-4e31-91e1-c17abd37e0fc + Length + 1.5871109913974584 + + + + + 2.8184981020874482 + + MI_Restricted_Substances + fdf47c86-6c5b-4bba-b434-574871039636 + + Glass/phenolic honeycomb, 0°/90° fabric (0.035) + Glass/phenolic honeycomb, 0°/90° fabric (0.035), W Direction + 90bcb052-78bc-4251-85aa-0555a18e93ae + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 5f85a2cc-06aa-4971-95b2-20133fe72956 + MassRemoved + 75.496429752323976 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 13d90310-e45a-4c4d-a6db-66fbe8b84c3e + Mass + 100 + + + + + 2.8184981020874482 + + MI_Restricted_Substances + 31491cd8-6f82-4358-a2d6-ef62bfbbfadd + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 4150, oil quenched & tempered at 205°C + b3b3edfa-7cb4-4d3c-8c11-9e0bf7ceb4da + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + aeaa7c7d-552a-45bc-8fee-9369f478869e + Mass + 100 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + a7bacc7a-94ee-411a-b005-0a903e9276c8 + Mass + 93.806148922911916 + + + + + + + 1 + 18.80020835381011 + 3890ee72 + part_3890ee72-ec9e-4a61-956a-2f3bf7cff8f1 + 3890ee72-ec9e-4a61-956a-2f3bf7cff8f1 + + + 35.719457844141616 + + MI_Restricted_Substances + 1851a6ff-c2e6-4bc6-ab7a-a0eae431e281 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 5140, oil quenched & tempered at 540°C + 55a1b794-3e9e-4975-a05a-14b7b6e0b6ad + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 967af45a-0b14-473a-8705-a9e81e9b7dac + Length + 50.224826834269251 + + + + + 16.070135538964596 + + MI_Restricted_Substances + 55c8dd10-b62f-4136-b1c8-6260fcec05cc + + Annealed + Carbon steel, AISI 1040, annealed + 1a7dccf4-7487-4ad5-b672-fe8762edc3b9 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 8960a5e0-b2ce-4d40-b5b4-acca4e81a78a + MassRemoved + 81.076484676951765 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 13897563-6b51-4c26-8e14-0ecbf4347286 + MassRemoved + 18.305671316713873 + + + + + 16.070135538964596 + + MI_Restricted_Substances + ddefbfb8-3b97-480b-887d-0ddadf161d95 + + YS350, cold rolled + High strength low alloy steel, YS350, cold rolled + 609457c6-aebc-4d31-9fa5-b007283c4915 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 74ae08d1-3c4f-4117-867f-fec0de55cb8e + Mass + 100 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + b4f9cb90-f827-4693-822e-ac9d8bb3f4d7 + Mass + 100 + + + + + 16.070135538964596 + + MI_Restricted_Substances + 3fd6cebb-a683-45be-b014-7c3fb617c3e7 + + Glass/polyimide honeycomb, ±45° fabric (0.064) + Glass/polyimide honeycomb, ±45° fabric (0.064), L Direction + f7bb6e24-035c-40c0-b457-64f08fb203a7 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + e79a3e3f-5602-47b6-9d53-51234b906e4c + MassRemoved + 87.743540195628782 + + + + + 16.070135538964596 + + MI_Restricted_Substances + aebf8cac-5529-4a72-9e09-71badd344c6a + + Oil quenched & tempered at 315°C + Carbon steel, AISI 1137, oil quenched & tempered at 315°C + 30ec6d3e-5040-4bba-b1a3-ef36ff8e9a06 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + bfdc7b6a-8c3a-4462-a1cf-355129719f80 + Mass + 100 + + + + + + + 5 + 19.40949811572651 + 2c40d687 + part_2c40d687-52db-4733-8bc8-39d3e975dedc + 2c40d687-52db-4733-8bc8-39d3e975dedc + + + 25.917724625169171 + + MI_Restricted_Substances + c19a6c59-b937-499d-ac22-fe742ae42287 + + As rolled + Carbon steel, AISI 1117, as rolled + 682616f3-5dd4-43a6-87bc-b12c7efbebbf + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 677e0150-2a59-4e0a-a20d-34eb9781a1a0 + Mass + 100 + + + + + 10.583182196404405 + + MI_Restricted_Substances + 6f7c4754-84f7-46f0-873a-ec2e9f29e345 + + Glass/phenolic honeycomb, ±45° fabric (0.088) + Glass/phenolic honeycomb, ±45° fabric (0.088), W Direction + fae5f8c6-be59-4dfc-a8d1-b04ffab08fd6 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + e3fe3509-873f-49ae-9de5-e767c41476db + MassRemoved + 89.708564053153879 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + fbbafbef-49e9-4808-8e0a-7e52fbbc08ea + Mass + 100 + + + + + 10.583182196404405 + + MI_Restricted_Substances + 82eabba3-2697-4f74-a530-ae27f5e33ffe + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 50B46, oil quenched & tempered at 540°C + 676c75ce-1bbe-49fc-8a31-8bfc0946e5a4 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + b1e59de2-5ebd-486d-964a-6e331ee54fde + Mass + 100 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + de5634e0-eadc-4dc3-bf5e-0c1425af3cef + Mass + 100 + + + + + 10.583182196404405 + + MI_Restricted_Substances + ff23c6a6-3046-4f35-b5d2-ca7f0956efc7 + + Oil quenched & tempered at 650°C + Carbon steel, AISI 1144, oil quenched & tempered at 650°C + 89b207c0-acfc-48ec-bca3-5ce2642f0854 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + be06024e-a2c8-4ab6-99cc-72927a9505a0 + Mass + 100 + + + + + 10.583182196404405 + + MI_Restricted_Substances + 874b8433-2e47-45c3-9c89-226428104214 + + Glass and mineral filled, heat resistant, molding + Novolac (glass and mineral filled, heat resistant, molding) + 00a0bfef-99f5-4c56-a026-47749011ab84 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 5bde1064-f66e-4f88-b834-31456faceb1a + Mass + 100 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + d199e4a4-561b-4906-a67a-ca0118ec38bf + Mass + 100 + + + + + 10.583182196404405 + + MI_Restricted_Substances + 644fc87d-87f3-468c-9a88-b8e2db43ae6b + + water quenched & tempered at 650°C + Low alloy steel, AISI 4130, water quenched & tempered at 650°C + 4393fcfb-263c-4a72-837a-a614a9313933 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + cf5779a2-b757-4d07-81c5-42c1bf46b82a + MassRemoved + 20.518396664652229 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 64a74480-f724-4d60-9eed-bac3907ff551 + Mass + 100 + + + + + 10.583182196404405 + + MI_Restricted_Substances + fa4e12fa-2919-41e2-b7ef-1c487def0cd7 + + High ductility + Press hardening steel, 22MnB5, high ductility + 02c244ad-b832-4db8-8ac1-f47b2c6015b3 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + ad72b93b-2b56-43fa-a98d-988c4912c594 + Mass + 100 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 2a5f5f25-0e8b-47b6-8c61-fb1eaafcb459 + Mass + 100 + + + + + 10.583182196404405 + + MI_Restricted_Substances + 7468aa92-eb02-4838-8030-fdd8673f2710 + + Oil quenched & tempered at 650°C + Carbon steel, AISI 1137, oil quenched & tempered at 650°C + e4e02809-be4b-4c18-9937-8f69a032d385 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + cbf6fe52-eb1a-4f99-9fe1-bbb285bc1054 + Mass + 100 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + eef076b3-fb93-47b5-b699-9dcc261d1cf7 + Mass + 100 + + + + + + + 9 + 19.088955837808992 + 5f1c46ee + part_5f1c46ee-9cad-4e9b-92b3-1713e5f2ff0d + 5f1c46ee-9cad-4e9b-92b3-1713e5f2ff0d + + + 60.512046404421348 + + MI_Restricted_Substances + cfb19c31-b156-4a8d-854c-f264975539e1 + + water quenched & tempered at 205°C + Carbon steel, AISI 1095, water quenched & tempered at 205°C + 54726a26-d5d1-4891-ac76-39e512bfc31a + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 93932fda-bdb4-4ba5-92fc-1cf9c0200668 + Mass + 100 + + + + + 9.8719883988946631 + + MI_Restricted_Substances + 87e1a3cd-fd79-4013-b5f8-56d6f28bef34 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1144, oil quenched & tempered at 540°C + ff06982b-3b87-494e-8ea2-2289a468ac8d + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 20a674de-92bb-4885-9b60-ce739490865a + Mass + 38.959660864882011 + + + + + 9.8719883988946631 + + MI_Restricted_Substances + fc29cc59-a670-4ad6-85a0-eb07bf011f1a + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 6150, oil quenched & tempered at 425°C + 4dfb5330-7d89-4875-9af5-4a1797930125 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 415b4cf6-8c18-4891-95cc-97c099853f98 + Area + 80.037293899821719 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 48f16f83-03c9-4fad-b00e-e3ad7885ec54 + Mass + 100 + + + + + 9.8719883988946631 + + MI_Restricted_Substances + 44a3cdc8-1092-45c0-be37-1802daa92d30 + + Borosilicate - 7052 + Borosilicate - 7052 + f8dbfbcf-67ab-4546-a00f-734231e99272 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + d6a69287-e598-465d-8afc-8245664c5644 + Mass + 100 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + be1875f6-d842-414c-a8b6-517d43e196a0 + Area + 30.765419281444238 + + + + + 9.8719883988946631 + + MI_Restricted_Substances + 5169a157-0d18-4d45-b197-799e06aa00bc + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 9255, oil quenched & tempered at 315°C + 02d18f6b-77f7-4931-8cfc-8c5052bfffa1 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + d70b65cd-5829-4430-acd0-8cf419f0ad4e + Mass + 100 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 769319c4-d5ef-4263-9501-606ae66528f3 + Mass + 100 + + + + + + + 9 + 74.429648730172616 + a85dd27e + part_a85dd27e-e8bc-4368-bc9c-215f8fae7541 + a85dd27e-e8bc-4368-bc9c-215f8fae7541 + + + 65.106619086631866 + + MI_Restricted_Substances + e678781a-1b38-4709-816b-9db609651db6 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 50B60, oil quenched & tempered at 425°C + def1fda8-f648-4965-96ec-26c053b4019b + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + 4b9c70b2-8f84-46ad-83be-e4e9517fc95a + Mass + 100 + + + + + 11.631126971122711 + + MI_Restricted_Substances + e06fc27c-5e39-4218-a5ca-6927af12a511 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 4140, oil quenched & tempered at 205°C + fb54bac5-2cb9-4c8b-8ab2-5658261a71ef + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + fa81b70f-3425-48de-864b-261523b1dad4 + Mass + 100 + + + + + 11.631126971122711 + + MI_Restricted_Substances + 856cb700-78b1-46a2-8832-739a0d2c9a91 + + SAE 8630, cast, normalized & tempered + Low alloy steel, SAE 8630, cast, normalized & tempered + acf5bbf5-c930-48a5-95ad-dabdfa8dd275 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + cc1543da-80bc-442a-ae0a-d7e2e49140ef + Length + 91.340356129845773 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 2af08795-9cb2-4853-93cc-1229612571b0 + Mass + 22.867845149183573 + + + + + 11.631126971122711 + + MI_Restricted_Substances + 644fc87d-87f3-468c-9a88-b8e2db43ae6b + + water quenched & tempered at 650°C + Low alloy steel, AISI 4130, water quenched & tempered at 650°C + cb8e1ef3-aef0-4756-8c53-1f3e7d54bbbe + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + a48d7d60-3698-445d-9103-c1acecde702d + Mass + 100 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + eed8bb55-7968-4bcf-b369-760c417fb0e4 + Mass + 37.434310809445712 + + + + + + + + + 8 + 70.773215252334822 + d52d6c76 + part_d52d6c76-2b2a-4f0b-972a-46d6f2ad13e3 + d52d6c76-2b2a-4f0b-972a-46d6f2ad13e3 + + + 36.78084655514958 + + MI_Restricted_Substances + 59ed9004-2126-437f-aa61-b8a0189e69d3 + + Oil quenched & tempered at 650°C + Carbon steel, AISI 1095, oil quenched & tempered at 650°C + 5a9e0bf6-34f8-4139-b5e3-b2f85a89888f + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + fa2f6a0c-db85-48ed-9e55-624d4ae06730 + Mass + 100 + + + + + 63.21915344485042 + + MI_Restricted_Substances + 01ec383d-8c37-48b7-80b4-e1f3106fae04 + + Alumino silicate - 1723 + Alumino silicate - 1723 + f77d4be2-a6df-4143-a55c-c765d5aa7d96 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + df74fc86-f286-4690-a6d3-ef81470e62b6 + Mass + 100 + + + + + + + 8 + 66.293420068124973 + c4c003a6 + part_c4c003a6-872c-405a-b62d-7c6e971b2bb4 + c4c003a6-872c-405a-b62d-7c6e971b2bb4 + + + 73.853041778250144 + + MI_Restricted_Substances + 9e11a8f7-0b35-4610-aee9-557a236bbe5c + + Soda borosilicate + Soda borosilicate + d4d7ef9d-6f6a-406e-8f9b-caee54055563 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + c35d914b-a45d-43bd-8841-5445cba2fe5a + Area + 35.214935212961834 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + f255a03e-041f-4c57-bd65-a4f7852439d0 + Area + 28.655219091407591 + + + + + 3.2683697777187319 + + MI_Restricted_Substances + c87d2bef-0549-4a3b-b699-3ad17b079fa1 + + YS355, hot rolled + High strength low alloy steel, YS355, hot rolled + 6513bd3c-9be5-4b57-a0dc-278a1a6d1068 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + d4f57470-0eeb-4f6b-832b-a59d8c6a2c95 + Mass + 100 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 2b4f6f8f-6567-4c03-ad95-b732e5e75959 + Length + 39.425063151598472 + + + + + 3.2683697777187319 + + MI_Restricted_Substances + 78055acc-4fc2-46ae-bba8-f28bda85357e + + Annealed + Carbon steel, AISI 1060, annealed + 0c2e5260-a7bf-4425-b318-aa0ec4f9fa31 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + b165e2f7-b227-4571-9267-40ad9db6956c + MassRemoved + 1.5298774473042589 + + + + + 3.2683697777187319 + + MI_Restricted_Substances + 19b67562-02fa-47ea-8fba-af5b14d1fafa + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 4042, oil quenched & tempered at 650°C + ff1f0f52-3799-424b-beb5-049b2cc99995 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 64cef77d-ae60-40d0-b1ac-b22fd6abea77 + MassRemoved + 2.8174644814885523 + + + + + 3.2683697777187319 + + MI_Restricted_Substances + d2c2408b-ddaa-4dc0-825b-b2d3ef39767b + + Oil quenched & tempered at 315°C + Carbon steel, AISI 1095, oil quenched & tempered at 315°C + a7f4e72d-87ef-48c6-a86e-712f3d4e2138 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 42f13e55-e7bd-4c7b-b051-d07aa3898add + Mass + 100 + + + + + 3.2683697777187319 + + MI_Restricted_Substances + 99d1c1c6-eca3-40ed-a479-6dec902f52da + + YS400, cold rolled + TRIP steel, YS400, cold rolled + 118cc1b4-36aa-4b69-b9d3-32e9790caad1 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 8e06e192-0347-43a3-839a-5a71b6c9fcae + Mass + 100 + + + + + 3.2683697777187319 + + MI_Restricted_Substances + 21dcdeeb-524a-488e-b332-fcd4e1caf6f7 + + water quenched & tempered at 650°C + Carbon steel, AISI 1095, water quenched & tempered at 650°C + 52ad598e-1416-4dec-b5bd-8aff8208b8db + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + b50aea2b-3688-4402-9914-dddbe738e838 + Mass + 100 + + + + + 3.2683697777187319 + + MI_Restricted_Substances + f05d84ea-b8e2-46d1-83a4-577038c5ed32 + + As rolled + Carbon steel, AISI 1040, as rolled + f93339bb-c71d-4b31-a6a9-08cb87199b53 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + d52ddc93-319a-4966-8e46-25012692b1ef + Length + 10.129719837629105 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + a57649bf-cd41-44db-a5f7-351790d77ae2 + Mass + 100 + + + + + 3.2683697777187319 + + MI_Restricted_Substances + 8d48bb04-5031-4d20-b935-741272060e1d + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 4150, oil quenched & tempered at 650°C + 1233f1ab-df39-45bc-be89-2e26a570ae60 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 4dc61dbb-37e5-4863-bb6c-5e1b2243217e + Mass + 100 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + c8a0c32f-758b-4155-9f4e-7641ee45d39e + Mass + 100 + + + + + + + 4 + 66.636380770540043 + 03edde95 + part_03edde95-b982-4543-a5df-195356497f8c + 03edde95-b982-4543-a5df-195356497f8c + + + 13.505580841333408 + + MI_Restricted_Substances + a01be0be-96e7-4123-b061-dfdbba1f1748 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 4037, oil quenched & tempered at 315°C + 478bbb14-123b-4410-b504-d39ac82c0490 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + ef85d650-06c1-4321-b76e-cd16a7220037 + Mass + 2.3459902044134169 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + afbc9e21-777e-41a0-b763-9b6e2a5653dd + Mass + 100 + + + + + 12.356345594095227 + + MI_Restricted_Substances + e6b45bea-dec9-4b91-996a-885bb0c31f8d + + Glass, S grade (10 micron monofilament, f) + Glass, S grade (10 micron monofilament, f) + 1487a836-de1a-4be0-af28-3db5013290c9 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 5e81e7e7-8422-405a-bc3b-5bd5fe550de4 + Mass + 70.858186749209736 + + + + + 12.356345594095227 + + MI_Restricted_Substances + bafce5b8-9e49-4ba7-918f-1ddea11d2a80 + + Glass/phenolic honeycomb, ±45° fabric (0.048) + Glass/phenolic honeycomb, ±45° fabric (0.048), L Direction + 4923b9f5-46ef-4b25-8b0b-c8295e4a7ffa + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 42a4fe3a-2d8e-4d4d-89db-5392a0361584 + MassRemoved + 16.027386168030734 + + + + + 12.356345594095227 + + MI_Restricted_Substances + 7b330562-a44d-4de7-8944-99c0b7b0d3e1 + + Quenched & tempered + Low alloy steel, AISI 8630, air melted, quenched & tempered + d845a77e-1e71-447e-b0ca-a5cf02fd9304 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + 0757b759-02d5-48d8-b162-b4a4a475414c + Mass + 100 + + + + + 12.356345594095227 + + MI_Restricted_Substances + 302db922-ffc4-4955-9a98-ddaa64c43d26 + + Borosilicate - 7720 + Borosilicate - 7720 + e6cae0a2-d7c1-44f4-9491-ef2d12c258ea + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 50f44c04-64c2-497d-b596-07591a9ae790 + Mass + 100 + + + + + 12.356345594095227 + + MI_Restricted_Substances + 45a257d5-da48-4520-9174-ffe7bbadcd1c + + Glass/phenolic honeycomb, ±45° fabric (0.088) + Glass/phenolic honeycomb, ±45° fabric (0.088), L Direction + dd89e19a-16eb-4921-b5fa-75ded58ad9c7 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + ecbdce81-bcf2-456b-8658-3568e7d4d22c + Mass + 100 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + a547e090-52c3-489f-90a8-ae8cfc4e8c88 + MassRemoved + 91.819181848233185 + + + + + 12.356345594095227 + + MI_Restricted_Substances + 4b01d1e1-0f4c-4861-a797-7ea504ca38c4 + + Annealed + Low alloy steel, AISI 5150, annealed + b2289e42-0275-47f1-90dc-b31e07510f54 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 13116d75-e9d8-47c1-822c-bf54a65afa77 + Mass + 100 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 9657051c-e2a1-4316-bca7-d78bb12b9950 + Length + 92.933817111390553 + + + + + 12.356345594095227 + + MI_Restricted_Substances + 439e62b9-4268-44c6-a084-695412628448 + + water quenched & tempered at 425°C + Carbon steel, AISI 1095, water quenched & tempered at 425°C + 940ad85c-6e92-46b6-80ce-d10d866d406b + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + f08e98d5-2df7-4e66-aab2-77a852180cf3 + Mass + 100 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + c068ff86-6275-43bc-b654-be85b2356f53 + Mass + 100 + + + + + + + 3 + 44.304700961478382 + + MI_Restricted_Substances + 3d4d35cd-1db3-477c-8f3f-b90800ea1c4d + + 2383795b + part_2383795b-301d-446f-a7be-cfa59c010ba5 + 2383795b-301d-446f-a7be-cfa59c010ba5 + + + 8 + 93.199041948280779 + 9bf6b170 + part_9bf6b170-b0fa-45a3-b267-7678a39b64ca + 9bf6b170-b0fa-45a3-b267-7678a39b64ca + + + 15.18438603504765 + + MI_Restricted_Substances + bea16e1d-784b-41e4-b5f5-e21dd7b27217 + + S275J + Structural steel, S275J + 8fb52277-fcc3-4fd8-8040-c4f8e6ebc609 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + ec9717f3-4f66-4889-a85a-775536fae8d4 + Mass + 100 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + ed2e6f3e-6c30-413a-a7cc-dc0d3687f3da + MassRemoved + 55.602397003957257 + + + + + 28.271871321650782 + + MI_Restricted_Substances + 72799627-a7c0-4df4-8250-e2be8538565f + + Glass ceramic (N11) + Glass ceramic (N11) + ecfa2d96-bb9a-4014-a89b-12157cec2108 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + e282f3d8-ee59-40d9-9d7f-f22de0874625 + Length + 60.697405394491469 + + + + + 28.271871321650782 + + MI_Restricted_Substances + dbdb9330-8683-439b-8246-f873ee3ba9ed + + Oil quenched & tempered at 205°C + Carbon steel, AISI 1040, oil quenched & tempered at 205°C + 9d832bea-99e2-4270-a051-3ed24a3eec51 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 0b3796ce-3c68-457b-9897-cab81563639f + Mass + 100 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + afd8a295-e9bd-4f8b-b36f-4767fd5fe198 + Mass + 100 + + + + + 28.271871321650782 + + MI_Restricted_Substances + 31098687-aa58-4d56-99a0-f005a0258573 + + Glass/phenolic honeycomb, 0°/90° fabric (0.192) + Glass/phenolic honeycomb, 0°/90° fabric (0.192), L Direction + a9eb6336-e275-4b28-817f-85ed12dc53b7 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + ff831347-4460-4dee-946d-093c1fc16ca4 + Mass + 100 + + + + + + + 5 + 69.127918998304722 + 3b713dbf + part_3b713dbf-a4cc-4a3c-b566-00173c57a996 + 3b713dbf-a4cc-4a3c-b566-00173c57a996 + + + 75.658543350016018 + + MI_Restricted_Substances + dbdb9330-8683-439b-8246-f873ee3ba9ed + + Oil quenched & tempered at 205°C + Carbon steel, AISI 1040, oil quenched & tempered at 205°C + 98c21e49-732c-4212-9e89-f5625f7c0964 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 659a0e9a-ff98-4967-b1ca-617faedb8f55 + Area + 21.064121239382828 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + e59562de-dfc5-4b15-a7f4-91a0a0d135cf + Mass + 100 + + + + + 4.8682913299967963 + + MI_Restricted_Substances + aec3ed84-0fb0-4317-b8b1-9f6714a7a07f + + Normalized + Low alloy steel, AISI 4130, air melted, normalized + 6012ba6b-e23f-40dc-aa54-e131fcda591c + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 33fb5add-5127-42d3-9bdf-e6e4741cc5fe + Area + 48.934675915601979 + + + + + 4.8682913299967963 + + MI_Restricted_Substances + c07a0ada-0510-4f27-be52-15e07d6c70c5 + + Soda-zinc glass - 6720 + Soda-zinc glass - 6720 + c7fa3134-6224-400b-9b23-198757dc3820 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + 429d60eb-d5b1-44e5-b153-1f8a74a80ce6 + Mass + 100 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 83fbc8e3-74c1-4021-8f20-0e847ae8f35f + Mass + 100 + + + + + 4.8682913299967963 + + MI_Restricted_Substances + 78055acc-4fc2-46ae-bba8-f28bda85357e + + Annealed + Carbon steel, AISI 1060, annealed + 399f34bd-bcf3-4cd0-9a54-0bc17d32f3c4 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 7c597799-6150-4af3-ad3d-231f653568b1 + MassRemoved + 6.9922199971006354 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + bb3a21eb-f858-45d6-be8e-87456d6b6082 + Mass + 100 + + + + + 4.8682913299967963 + + MI_Restricted_Substances + aa963e30-fca0-439d-bee2-ff48daa946f3 + + As rolled + Carbon steel, AISI 1095, as rolled + 2ee2ea05-84bc-40c9-b373-30c6e7ae2bc3 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + d877e42f-ade4-4b77-aacb-465ae3cad5a9 + Mass + 100 + + + + + 4.8682913299967963 + + MI_Restricted_Substances + 1992b264-49ea-405f-82f9-41dd972b9510 + + FR-4.1 (Df < 0.01 at 10GHz), Epoxy/Glass fiber, PCB laminate + FR-4.1 (Df < 0.01 at 10GHz), Epoxy/Glass fiber, PCB laminate + aa85effd-cd5a-4852-9412-ce1cc988d929 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + a47eb5f5-d295-4709-948e-ecf31a6ef286 + Mass + 100 + + + + + + + 1 + 89.092612028630739 + b5fb6cb3 + part_b5fb6cb3-980e-42f7-802c-7d606f5d8526 + b5fb6cb3-980e-42f7-802c-7d606f5d8526 + + + 61.030266136410773 + + MI_Restricted_Substances + df40828d-d5c3-4a43-9f00-5de867f4f406 + + Normalized + Low alloy steel, AISI 4320, normalized + 472fa5d7-1d4a-4992-a0f6-c72997cae49e + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + daa001ac-b1c2-4169-908b-79616b5cc18c + Area + 92.137139193777529 + + + + + 19.484866931794613 + + MI_Restricted_Substances + 278c6b66-fb3e-4e2d-b915-df6a231b2342 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1080, oil quenched & tempered at 540°C + d3060c58-6ab9-45a4-a1a3-cd528624447f + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + e2046142-3a32-4076-a3de-62d1f1c81fe8 + Mass + 100 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 5256e8bd-15f6-4a3e-b1d3-0a4023e12c36 + Mass + 100 + + + + + 19.484866931794613 + + MI_Restricted_Substances + 4a35d8d1-5fb1-47e9-a669-37204ae732dc + + ASTM A500 Grade A + Structural steel, ASTM A500 Grade A + 76378b6e-199e-40a8-8042-12fe586291fb + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 67a6a904-0a2f-4872-aea6-b42b049a76cb + Mass + 100 + + + + + + + 6 + 75.069702079086426 + 8f1805fd + part_8f1805fd-3fd6-446b-8c46-7cc566012579 + 8f1805fd-3fd6-446b-8c46-7cc566012579 + + + 27.989640286187473 + + MI_Restricted_Substances + b067ed19-a836-41f7-9267-d9b04647d09f + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 5150, oil quenched & tempered at 650°C + 09c973c8-c5de-4ff3-9839-56d08d67fe11 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 2a7dbbbc-7c8c-47b9-bcd7-769e57644485 + Mass + 100 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 60adf4f5-af28-4293-9f07-3c079c8c949d + Length + 37.377998902172784 + + + + + 14.402071942762508 + + MI_Restricted_Substances + b82c121d-fcc2-41fa-b7ac-6cddb03c3e4f + + Oil quenched & tempered at 650°C + Carbon steel, AISI 1040, oil quenched & tempered at 650°C + fa156b69-3f5e-48ca-871b-cd8924b9d3c3 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 1970e7cb-2498-4daa-8eee-92c76dbb076c + MassRemoved + 23.763837443554696 + + + + + 14.402071942762508 + + MI_Restricted_Substances + 1d0ad45b-4da7-4c47-9850-754d0f67c02a + + Glass/polyimide honeycomb, ±45° fabric (0.096) + Glass/polyimide honeycomb, ±45° fabric (0.096), W Direction + 7804a639-9401-412f-a1a6-1a80d1ad60aa + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + df4fecc3-1710-423a-9ae0-d3b35be07f09 + Length + 20.417703464821773 + + + + + 14.402071942762508 + + MI_Restricted_Substances + 2656c71b-a4ea-4fc6-9139-adc0deae35b1 + + 65wt% glass, biaxial lay-up + Polyester/E-glass fiber, woven fabric, 65wt% glass, biaxial lay-up + 3bd1703e-538f-42db-9a5b-37106e562ff0 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + bc321ce8-99ce-4611-a562-ffb1d707261a + Mass + 100 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + e2368259-146c-46ed-8ec4-30e67366455a + Mass + 100 + + + + + 14.402071942762508 + + MI_Restricted_Substances + 1d55049a-3c25-4c8c-9125-70fd014c2a1e + + Normalized + Low alloy steel, AISI 8735, normalized + 7766937f-e107-46aa-a175-3a959b856fc9 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + ae7d75b2-8a65-41ba-8937-dfe5fc9976d3 + Mass + 100 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 695d82cd-d142-44b8-9b44-5ec0e5b63ffa + Mass + 100 + + + + + 14.402071942762508 + + MI_Restricted_Substances + 4ad00a9e-92b5-4e28-92a0-409da4495c54 + + Oil quenched & tempered at 205°C + Carbon steel, AISI 1060, oil quenched & tempered at 205°C + ad706008-b329-4fcf-9abf-b2b6deb1535d + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 977d0b15-5816-4f50-ab12-00bd7e388304 + Mass + 100 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 7713104b-4aef-41fd-9f56-d732708449cc + Mass + 100 + + + + + + + 5 + 10.30961340773367 + 753acfd6 + part_753acfd6-dc51-4f91-bfa1-38b28336fee8 + 753acfd6-dc51-4f91-bfa1-38b28336fee8 + + + 0.67350398780475551 + + MI_Restricted_Substances + 3cad12a9-0765-402c-a6b1-0be665ecd2e6 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 4140, oil quenched & tempered at 540°C + e2dfc2fe-532f-4a00-8ff4-6bda6706bfa6 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + af0ae7dd-aee5-4e61-a22f-88ebf0501060 + Mass + 100 + + + + + 24.831624003048812 + + MI_Restricted_Substances + 22fec326-b233-4c44-9751-288ad3ccc86c + + Glass/phenolic honeycomb, 0°/90° fabric (0.088) + Glass/phenolic honeycomb, 0°/90° fabric (0.088), L Direction + a683a8ec-a087-4b43-ad85-858f23368bac + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + 9b3f5d71-e1e9-4043-b65b-27d43377df91 + Mass + 100 + + + + + 24.831624003048812 + + MI_Restricted_Substances + f8d1136f-3c1a-41e2-8b78-cf5f3965cba2 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 6150, oil quenched & tempered at 205°C + ed6d5273-fd70-4a69-8437-df4b48b9acb9 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + d98068d6-2777-436f-a3c2-18a9b6232b62 + Mass + 100 + + + + + 24.831624003048812 + + MI_Restricted_Substances + ce68d49d-fe57-4723-8f98-557cd3558504 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 5130, oil quenched & tempered at 205°C + 6a0e39ba-62bb-42b2-8e4d-91b78cb6f061 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 3dec1b14-9f9d-402f-aa14-373b6c555013 + MassRemoved + 50.4954248901901 + + + + + 24.831624003048812 + + MI_Restricted_Substances + 5303364c-b06b-40d9-bca9-e0e2cd1d682c + + Normalized + Low alloy steel, AISI 8740, normalized + 336e441c-b20d-4baa-84ca-632e34116c09 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 1ca9c90f-01cb-4a4c-83c2-7fb303f09af7 + Mass + 12.181936256672227 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + ce16085e-fd9a-4f4d-9613-3250d6096d15 + Mass + 100 + + + + + + + 5 + 31.833864670169476 + + MI_Restricted_Substances + a0987114-e9d2-4390-9d0f-e47283d2f4d0 + + 65a6a323 + part_65a6a323-21c5-4cff-aa6d-87714e747f34 + 65a6a323-21c5-4cff-aa6d-87714e747f34 + + + 8 + 94.493642772777775 + 2760b4b9 + part_2760b4b9-8183-455c-9700-3367063c3001 + 2760b4b9-8183-455c-9700-3367063c3001 + + + 86.939953727154034 + + MI_Restricted_Substances + f7a5d844-1935-486f-adbe-99917b26b44b + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 4340, oil quenched & tempered at 315°C + 4b0c9723-8966-4e2d-b648-eece2a96b763 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + eb8f7ee6-58ee-4336-88f9-7e23d74d556a + Mass + 100 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + b563c586-2c48-49d3-8273-093d240d9c80 + Mass + 100 + + + + + 1.6325057841057458 + + MI_Restricted_Substances + ee5b018e-8d7f-4fb1-bad0-c73e871592bc + + 16Mo3, normalized + Low alloy steel, 16Mo3, normalized + 44333aa5-f26c-4408-85a3-b6b4a34488de + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 3f8f3b8d-4b81-4a61-b7f4-cdc435f53801 + Mass + 100 + + + + + 1.6325057841057458 + + MI_Restricted_Substances + 8f779b79-a040-48d7-ac26-b9a1edf50ad2 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 8640, oil quenched & tempered at 650°C + f2cb69f2-0efa-448f-b175-522f45304d2c + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 7d437191-a633-4670-820a-48bae896e2d7 + Mass + 100 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 1c8c6369-4064-47e4-8c90-783c0ba053f8 + Mass + 100 + + + + + 1.6325057841057458 + + MI_Restricted_Substances + 753c75df-7593-4169-a2e8-9f4c173887ff + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 50B46, oil quenched & tempered at 315°C + 023d3736-3ffc-4020-bebc-dd40856a62d1 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 5f8f5467-95fc-45a1-8f51-8ae537a2c36d + Mass + 100 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + c59f2d8d-13ad-45b6-b3a6-02385880f46b + Mass + 100 + + + + + 1.6325057841057458 + + MI_Restricted_Substances + 9c1918f9-aa9f-4078-93df-23539c8df8a8 + + Soda-lime - 0091 + Soda-lime - 0091 + 919838b1-8a20-4911-af04-c26dc5afa25d + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + 023b8dd5-5c8e-40bb-ad2d-e608e25ecf13 + Mass + 100 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 75ace459-2773-4a33-845c-ee99ce3895c8 + Length + 19.431832767758443 + + + + + 1.6325057841057458 + + MI_Restricted_Substances + 5d611e30-0b00-4036-a656-f5fdc5bd2a52 + + Glass ceramic - slipcast + Glass ceramic - slipcast + d453edbd-aa0c-4920-a12f-95036ef7681e + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 5f088df8-c4ca-4fd0-88e8-a3cb1205c251 + Length + 30.624887547746717 + + + + + 1.6325057841057458 + + MI_Restricted_Substances + 2b606408-37c3-4801-a307-dda7384ff7cc + + Glass/phenolic honeycomb, 0°/90° fabric (0.072) + Glass/phenolic honeycomb, 0°/90° fabric (0.072), W Direction + fc9ab45a-15b8-41e8-b533-f6e9218ee2d1 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 50b45eba-cc6e-41d7-ab9d-c1f47d6ec832 + Length + 69.8365239286034 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 2254e39a-2db3-40b2-920c-2fa067c7596b + Mass + 100 + + + + + 1.6325057841057458 + + MI_Restricted_Substances + 1345051c-8b29-468f-a10d-37712b50f19a + + Borosilicate - 9741 + Borosilicate - 9741 + 9d243586-11e4-400e-8397-9dfe3923cf14 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 0c005414-105b-4564-91d9-f6c9f6ef1bee + Mass + 100 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 57ff55eb-62d2-4127-b306-401303abac76 + Mass + 100 + + + + + 1.6325057841057458 + + MI_Restricted_Substances + 5d611e30-0b00-4036-a656-f5fdc5bd2a52 + + Glass ceramic - slipcast + Glass ceramic - slipcast + 04f7ece0-0796-4c04-85e9-c03cea57ab73 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 4303cb87-26e2-4493-8464-9b1fe77488c6 + Mass + 100 + + + + + + + 9 + 23.416724206608126 + 727a37db + part_727a37db-5802-42b7-aff1-af1338dc0857 + 727a37db-5802-42b7-aff1-af1338dc0857 + + + 100 + + MI_Restricted_Substances + 7468aa92-eb02-4838-8030-fdd8673f2710 + + Oil quenched & tempered at 650°C + Carbon steel, AISI 1137, oil quenched & tempered at 650°C + 07e14de9-dcb2-478c-afe9-7cb05feba43c + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 4fe0db44-8ceb-465e-86e2-e83403bcf8c3 + MassRemoved + 13.810230797999646 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + b3ed2f02-3c2e-4f0f-b2e6-8858eb8f4a71 + Mass + 100 + + + + + + + 6 + 56.339652443462818 + 02290f60 + part_02290f60-7fec-49de-a8db-3b8b9f5cf1ef + 02290f60-7fec-49de-a8db-3b8b9f5cf1ef + + + 45.485820688999176 + + MI_Restricted_Substances + c19a6c59-b937-499d-ac22-fe742ae42287 + + As rolled + Carbon steel, AISI 1117, as rolled + 82ea51af-a3c8-446e-89f0-c514db3c3f55 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + de6608fe-6ca8-49c1-b62f-17e8567b86c0 + Area + 65.494238382901173 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 01df642e-3603-4ee3-8bd1-db3793559d46 + Area + 86.317930224499634 + + + + + 9.08569655183347 + + MI_Restricted_Substances + 0c172430-369d-48ad-910e-69fe1451a36e + + Normalized + Carbon steel, AISI 1095, normalized + 21c73577-2514-48da-8442-c4256d44afbc + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 2a04e721-bba3-4dea-961c-c11a93d95acd + Mass + 100 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + 2728a71c-5a18-4c08-a639-4246e0a84aba + Area + 67.0766513175688 + + + + + 9.08569655183347 + + MI_Restricted_Substances + 2c2dc98a-ef9d-420d-aa00-25552c8f8bab + + S355J + Structural steel, S355J + 22c4c7c0-6f03-458c-81bd-2083c00a0610 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + 5e93ffd1-e73e-4fc9-bbd1-813b5f0fc345 + Area + 50.010276190010025 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 6253fbd0-d1ed-4054-91b2-a35ca93c5e1a + Mass + 79.462263025093023 + + + + + 9.08569655183347 + + MI_Restricted_Substances + e721d8b7-256a-4b7b-af09-6b40d8309979 + + water quenched & tempered at 425°C + Carbon steel, AISI 1040, water quenched & tempered at 425°C + 4a8a7f46-5f7d-4c70-b10b-7b4ecb313ec1 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 9595c1ba-d1bd-4ba0-8515-4aee43bcfb02 + Mass + 100 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + 19317cad-3c28-4ba7-9f2e-efd8088d560f + Length + 77.445913654494063 + + + + + 9.08569655183347 + + MI_Restricted_Substances + 2cfe1f1b-d831-4f62-acc6-672a44ba9bff + + Silica (fused) + Silica (fused) + 9e31ed64-a69b-4545-91ef-d8e243393777 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + a769d123-75f2-4ff7-bbe7-e386cc2a55f5 + Length + 32.943807604230848 + + + + + 9.08569655183347 + + MI_Restricted_Substances + ac443865-33d5-466d-89e2-c3f26e668369 + + Borosilicate - 3320 + Borosilicate - 3320 + 43a53775-5555-48fa-ba6c-e2cbcd629736 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 5fc73ba6-1428-4907-b22f-ea5c30f994bd + Mass + 100 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + b43eb407-aadd-4762-9fe7-8fdfd3a2505a + Mass + 1.7586886890971516 + + + + + 9.08569655183347 + + MI_Restricted_Substances + d02817f7-7500-4fcb-8c34-40927da681a5 + + Quenched & tempered + Carbon steel, SA216 (Type WCC), cast, quenched & tempered + b9baa811-cc92-42ce-a230-da12ef580185 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 10d0cd5c-c61e-40a6-b7bc-d27ff514e973 + Mass + 100 + + + + + + + 9 + 30.286148437432082 + + MI_Restricted_Substances + 8d808e11-061a-47b9-9f0f-83290dd83a3f + + 9319811e + part_9319811e-87ba-4711-a931-61c2e90125f8 + 9319811e-87ba-4711-a931-61c2e90125f8 + + + 1 + 2.1470312039121198 + ee0f57be + part_ee0f57be-f5a6-492d-a77a-53a9b3ef1876 + ee0f57be-f5a6-492d-a77a-53a9b3ef1876 + + + 25.576796161745115 + + MI_Restricted_Substances + b3c74dfc-9d72-4938-89cb-1a49ce0fdb80 + + Normalized + Carbon steel, AISI 1137, normalized + dde4e29f-f4be-42a5-b2c6-6f26e13a27b2 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 3b6a3762-0a63-4a5a-936f-d3a56d99b7ff + Mass + 100 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 59dd2f0e-c97e-4f91-86b0-c5c92c012a6a + Mass + 100 + + + + + 74.423203838254892 + + MI_Restricted_Substances + b17713f9-59e9-48f4-8bb3-27c72b0884b2 + + water quenched & tempered at 540°C + Carbon steel, AISI 1137, water quenched & tempered at 540°C + 6d25a69a-28c7-4838-83f7-695e221c91fd + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 56be02c9-8403-4ba1-aa7c-4485b3d84979 + Mass + 100 + + + + + + + 4 + 98.696554963801319 + 9554b085 + part_9554b085-4f0d-4fd8-8f0e-1d5909e3a9ee + 9554b085-4f0d-4fd8-8f0e-1d5909e3a9ee + + + 21.831664872277372 + + MI_Restricted_Substances + 04970b9b-7242-4f31-9a78-dee5e31ed341 + + As rolled + Carbon steel, AISI 1030, as rolled + 0f9c5716-bde8-4226-9278-7de69c6e3dab + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + b619b686-d734-4353-8871-2f4b05e99430 + Mass + 100 + + + + + 39.084167563861314 + + MI_Restricted_Substances + 5dbabc2e-4263-4458-abe1-31a2ece9e122 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 5160, oil quenched & tempered at 425°C + 065d0b45-fe12-459c-9970-5a4258e6ac61 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + 0a01f3f6-763c-47e8-8b72-b2cb8e7396e9 + Mass + 100 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 5676795c-d40c-4d41-98fe-9b61f18b91e8 + Mass + 80.443980768529684 + + + + + 39.084167563861314 + + MI_Restricted_Substances + 5169a157-0d18-4d45-b197-799e06aa00bc + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 9255, oil quenched & tempered at 315°C + a643f14c-e497-4667-912a-71cc5729d714 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 6510b67c-35e3-4355-9fa6-dcf9494bb9b1 + Mass + 100 + + + + + + + 8 + 53.010334890806277 + + MI_Restricted_Substances + 0dedeb55-6f6f-42f9-b703-5225f1cab2fb + + 3ed0a4d7 + part_3ed0a4d7-9196-4cf2-b960-6425844f853f + 3ed0a4d7-9196-4cf2-b960-6425844f853f + + + 1 + 73.759037150889185 + 301f7b0e + part_301f7b0e-dcc1-4414-a23c-42e6856223af + 301f7b0e-dcc1-4414-a23c-42e6856223af + + + 7.2784501161791626 + + MI_Restricted_Substances + 546a4247-5e3b-4adb-bc7e-3fc87f992447 + + Glass/phenolic honeycomb, 0°/90° fabric (0.055) + Glass/phenolic honeycomb, 0°/90° fabric (0.055), W Direction + 3157cd4e-49f4-40af-a349-3a9bc64e52f0 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + f7b0c970-b280-4bf5-8913-c794c228b468 + Length + 4.87922271940821 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 194e2592-b023-4d9f-94f2-929f1a2fad18 + Mass + 100 + + + + + 46.360774941910421 + + MI_Restricted_Substances + 535f6e21-a16f-4d54-8413-97634da82122 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 8650, oil quenched & tempered at 205°C + df931ea7-79c2-4a95-80c2-5d594e6d441f + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 7da753ff-132b-4d27-b3c4-b619ac47c427 + Mass + 100 + + + + + 46.360774941910421 + + MI_Restricted_Substances + 6505c582-906c-4706-a572-efb422916885 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 4037, oil quenched & tempered at 650°C + 056cb572-28fa-43a9-898b-ff35e53d41c9 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 2088b41e-79c5-4d6b-988a-d8095482c4b1 + Mass + 100 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 29bb7831-5820-41e0-b925-cc6c9f6efbbe + Mass + 100 + + + + + + + 9 + 21.367660873275092 + + MI_Restricted_Substances + d89d67b6-c08f-47cb-b03a-4203cebfdf32 + + c489932b + part_c489932b-a409-4051-9252-48e4425937a6 + c489932b-a409-4051-9252-48e4425937a6 + + + 7 + 3.245221918097335 + 08c9570d + part_08c9570d-8c4e-4846-9efb-2182a4470c17 + 08c9570d-8c4e-4846-9efb-2182a4470c17 + + + 12.418997246967162 + + MI_Restricted_Substances + 75a1c963-399c-444d-a38f-1929c00d15b7 + + Normalized + Low alloy steel, AISI 4150, normalized + 3adc0016-9664-4e08-bdbf-ea8810efda3e + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 1764a56c-aae3-4f59-8157-2971fc63fbb5 + Length + 92.122710166556161 + + + + + 10.947625344129104 + + MI_Restricted_Substances + c2db0402-57c5-422f-b8c1-470fc9c6a9c8 + + Glass/phenolic honeycomb, 0°/90° fabric (0.112) + Glass/phenolic honeycomb, 0°/90° fabric (0.112), W Direction + 54560eb0-0565-4833-b83c-6d90c0411637 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 67454c48-015a-40b8-8bef-b833defc2871 + MassRemoved + 60.786825446778359 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + f23047ce-7be6-49b6-bf91-05b843e0bc48 + Length + 36.957266804276621 + + + + + 10.947625344129104 + + MI_Restricted_Substances + ed1b937b-1738-408f-9591-bd3e40cc5e33 + + Quenched & tempered + Low alloy steel, D6AC, quenched & tempered + 3b5a6b78-5fa2-42f4-97a0-0238b84dd118 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 62cebf70-e386-499a-88cf-2bad6945a0d5 + Mass + 100 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + b453695b-b216-4d5c-bfb3-52b1fda5077c + Mass + 100 + + + + + 10.947625344129104 + + MI_Restricted_Substances + 1d9c8629-4a1d-4aaf-bb7c-ba7a97eef5f5 + + Normalized + Carbon steel, AISI 1340, normalized + b237902f-f130-4d97-a358-5f75db3fd7bd + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + d7307d47-47d5-4e58-824b-fdd7aab0e26b + Mass + 100 + + + + + 10.947625344129104 + + MI_Restricted_Substances + 67cc68ee-c8ab-40bd-bf62-4babd642a1fd + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 81B45, oil quenched & tempered at 425°C + aa20df4a-a828-4f26-9da3-b048036c5caf + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 3b56c56e-2cab-4cb0-ac71-3128598ec5d6 + Mass + 88.486676518100623 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 7261bef5-9a8e-49cb-9b8e-30ab1515aab8 + Mass + 100 + + + + + 10.947625344129104 + + MI_Restricted_Substances + dfe65b4e-afb8-4397-a303-1266359ccfda + + Quenched & tempered + Low alloy steel, Hy-Tuf, quenched & tempered + b95a75bb-0c0a-43b0-9f59-8443690290f3 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + ee5a3fce-52cb-4165-9135-20bf1035748c + Area + 4.2994518318676631 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + 34b36de7-62cf-4963-b711-e2a6eb04cd0e + Length + 50.606898335091252 + + + + + 10.947625344129104 + + MI_Restricted_Substances + 87e1a3cd-fd79-4013-b5f8-56d6f28bef34 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1144, oil quenched & tempered at 540°C + aa099eec-229f-4cf2-a849-3f01ada8241a + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 6b15a5cd-a1de-41bd-8fa3-e307e857c1c9 + Mass + 100 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + e047ad62-a283-49bd-b6ce-f4bff5177bc2 + Length + 12.756512552852051 + + + + + 10.947625344129104 + + MI_Restricted_Substances + 508489f2-cc48-4f0a-a6ee-482bb89a0386 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 5160, oil quenched & tempered at 205°C + 17511d11-f82e-4ad3-b3c4-99be4f16b7ee + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 5a39fdd0-7032-47f4-a96f-de0cc060177e + Mass + 100 + + + + + 10.947625344129104 + + MI_Restricted_Substances + 8db72069-1e87-4b0f-84bc-cddf9ad19b4b + + water quenched & tempered at 540°C + Carbon steel, AISI 1050, water quenched & tempered at 540°C + f8e918cc-1bab-4412-8b06-656d510582f3 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 9b3a3c87-2cd8-47d2-955a-6d4dcc4b5f2e + Mass + 100 + + + + + + + 4 + 23.415807831760407 + 19177595 + part_19177595-0720-4efe-a6b1-7a6c88a6cfd4 + 19177595-0720-4efe-a6b1-7a6c88a6cfd4 + + + 89.142506518001909 + + MI_Restricted_Substances + fc29cc59-a670-4ad6-85a0-eb07bf011f1a + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 6150, oil quenched & tempered at 425°C + d26c6998-802f-4b07-ba68-b3df6cd5c10c + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 59a6b857-29fa-45b8-832a-2a6b0c49369d + Area + 48.246371116603896 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 64e0b548-fd4d-4c60-960d-1bdccf33204d + Mass + 100 + + + + + 3.6191644939993637 + + MI_Restricted_Substances + 99d1c1c6-eca3-40ed-a479-6dec902f52da + + YS400, cold rolled + TRIP steel, YS400, cold rolled + 0c276c46-13c1-4b9f-ba3c-28896fcdc00e + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 4b0bdd1c-8d70-4292-9c4c-c5b183fe65ac + Mass + 100 + + + + + 3.6191644939993637 + + MI_Restricted_Substances + 2b606408-37c3-4801-a307-dda7384ff7cc + + Glass/phenolic honeycomb, 0°/90° fabric (0.072) + Glass/phenolic honeycomb, 0°/90° fabric (0.072), W Direction + 32217508-170e-4abd-82dc-8453a57ce9cc + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 309576da-8c52-4532-b892-294b9d96bbb1 + Mass + 100 + + + + + 3.6191644939993637 + + MI_Restricted_Substances + 5b117a10-9c48-4dd0-a869-6eb490031da5 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 8640, oil quenched & tempered at 315°C + 211278c8-5738-4088-a2ab-3110ba29f0a1 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + bbf8f2a5-4707-434d-906c-2b96b155561c + Mass + 100 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + d92145c6-3b71-4f80-aaa0-2da5ea2c3529 + Mass + 100 + + + + + + + 8 + 70.693638953703285 + + MI_Restricted_Substances + 2c677abc-5da2-4b21-9ce7-1d4e1cc0fb1c + + 7be3482d + part_7be3482d-71f1-4c23-a257-b65c80c953b5 + 7be3482d-71f1-4c23-a257-b65c80c953b5 + + + 9 + 13.07026916792163 + + MI_Restricted_Substances + b49e47be-bf96-4bf1-9366-5c1b840267d4 + + 6126ed15 + part_6126ed15-1e6c-45e9-9de8-21bf8fa238f1 + 6126ed15-1e6c-45e9-9de8-21bf8fa238f1 + + + 1 + 38.224890007742161 + 07cea42e + part_07cea42e-7a03-47e3-8a83-75d43afc0b1c + 07cea42e-7a03-47e3-8a83-75d43afc0b1c + + + 15.621604312035069 + + MI_Restricted_Substances + a6078356-e79c-4ddd-86ef-a3f01680dd35 + + As rolled + Carbon steel, AISI 1020, as rolled + 9c130994-2b19-4444-bb66-d6a078de87a6 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 945e032d-a8c5-4020-b29a-26f31023a3fd + Mass + 100 + + + + + 12.054056526852133 + + MI_Restricted_Substances + 9124b244-f2f8-44df-b2cf-b05d3406eb9e + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 4042, oil quenched & tempered at 315°C + 6f645f4e-aeb2-493b-a0bd-0f0193d02160 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 46cb2c29-e3be-4a31-babd-ab7d4c9b0730 + Length + 31.963613038865667 + + + + + 12.054056526852133 + + MI_Restricted_Substances + 9c05e644-9257-4778-9c68-be0cff6f58b5 + + Annealed + Low alloy steel, AISI 8620, annealed + 330d4475-b152-4293-9395-d6dc67b6a3db + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 3c21e613-08d7-4dec-84d7-51274ba6f236 + Area + 52.581935027885216 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + cb618223-8436-4637-8fe0-999bb920c62d + Length + 54.144588464007057 + + + + + 12.054056526852133 + + MI_Restricted_Substances + 78055acc-4fc2-46ae-bba8-f28bda85357e + + Annealed + Carbon steel, AISI 1060, annealed + 6aa1cddb-6418-4d38-be7a-61ebed04f993 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 90abe56e-8173-4ec6-9926-97b81934ed90 + Mass + 52.727100091393616 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + fd69c437-4c7a-4904-9c40-b37ad6996418 + Length + 0.84681157062147339 + + + + + 12.054056526852133 + + MI_Restricted_Substances + cec978ca-2cf6-489b-a21f-c424c7d49a61 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 4042, oil quenched & tempered at 540°C + 2cdb3acd-5890-47f2-ac24-51f198b2a0c5 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 551b2060-7f85-47e2-82e4-99ddf3ebb25a + Mass + 100 + + + + + 12.054056526852133 + + MI_Restricted_Substances + 8643d806-94c5-42f9-9ffc-4c21a6e16bd0 + + Annealed + Carbon steel, AISI 1141, annealed + 93db24a2-5c53-4e87-b40b-a91744f8e56a + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + ee620648-3497-4047-9e95-5a53c37f0db8 + Mass + 100 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + ef500286-8392-48ec-9d44-f6e7a8cac39f + Mass + 100 + + + + + 12.054056526852133 + + MI_Restricted_Substances + b076430e-dc1c-4448-86c9-bb8d0b8da741 + + Annealed + Low alloy steel, AISI 4620, annealed + 31314268-e853-4e65-a945-c067ed09df61 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 3626f437-79b1-45f5-b330-2f4a8b9ac615 + Area + 35.592545585517094 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 41200b68-01de-450c-b044-0134f41415eb + Mass + 100 + + + + + 12.054056526852133 + + MI_Restricted_Substances + 18384726-ca55-4d5f-880a-5a2b8776be3a + + Normalized + Carbon steel, AISI 1022, normalized + d349f636-70d5-4184-a03e-13cad9e80de4 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + ce8185ba-fc9f-48ae-8663-c8202c8cc8ec + Length + 37.2446677820965 + + + + + + + 5 + 21.27724104620388 + 8c3f38f0 + part_8c3f38f0-6e0b-4aca-b254-4132233af614 + 8c3f38f0-6e0b-4aca-b254-4132233af614 + + + 32.914368777030319 + + MI_Restricted_Substances + 28d51559-b49b-4a2b-9f09-9a198db03164 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 4340, oil quenched & tempered at 425°C + 34176637-a7e1-440f-be4f-2972da9bb57a + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + c06ac6d4-00cf-4a25-a01b-730c32a82a55 + Mass + 100 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 59f03655-f8fa-427f-9454-81bd9c0e5420 + MassRemoved + 96.736644626006779 + + + + + 13.417126244593936 + + MI_Restricted_Substances + dcba95c6-8741-4b93-bb8b-f433a9c39a78 + + 45wt% glass, biaxial lay-up + Polyester/E-glass fiber, woven fabric, 45wt% glass, biaxial lay-up + eca1ba7c-8432-4282-adeb-82fa79e7fd4d + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + be94a6ab-6d58-484f-8898-e1acaf00e506 + Mass + 100 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + f34fa341-34b1-4877-b30e-48c14af24bf6 + Area + 61.96187011057598 + + + + + 13.417126244593936 + + MI_Restricted_Substances + 6d6a3603-a2a8-4db9-9e7e-ad4fc4f9c724 + + Glass/phenolic honeycomb, ±45° fabric (0.064) + Glass/phenolic honeycomb, ±45° fabric (0.064), W Direction + c9a0792f-5002-423d-a659-e9712ffd763d + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 364cf3fb-aeb3-49e5-a9c1-d805299db30c + Mass + 100 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + f19ea066-91cd-460d-842a-f32d39a67aea + Area + 21.551902695350304 + + + + + 13.417126244593936 + + MI_Restricted_Substances + 3fd6cebb-a683-45be-b014-7c3fb617c3e7 + + Glass/polyimide honeycomb, ±45° fabric (0.064) + Glass/polyimide honeycomb, ±45° fabric (0.064), L Direction + 7a2ba64c-04cc-49e9-bc59-7d536d6f9e28 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + bc944cda-7533-407b-b00d-569eb379a60a + Mass + 100 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 6b48f74b-ecf8-4d5f-8092-2d4349c269fd + Mass + 100 + + + + + 13.417126244593936 + + MI_Restricted_Substances + 829ba125-1962-4803-a2ea-acd4eb899642 + + Annealed + Carbon steel, AISI 1030, annealed + 3b8852b5-0a4b-4eb3-945c-02bd69abd718 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + a1f35a33-91aa-41ff-99a8-4b171149ddaf + Mass + 100 + + + + + 13.417126244593936 + + MI_Restricted_Substances + 3a464919-b1b2-4ce0-88b2-824bc9a81e6b + + Borosilicate - 2405 + Borosilicate - 2405 + c85dd726-02f4-445c-a87a-cbfa7dab58ea + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 91fa02b9-77b8-4cf5-84d5-8483e0ead798 + Mass + 100 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + f756b894-c24d-4f04-90c7-ed5031cfab0e + Mass + 100 + + + + + + + 2 + 49.798439373168371 + + MI_Restricted_Substances + f5833937-26a5-4d36-aaae-722b03f04a3b + + 0fd51798 + part_0fd51798-b2a2-4efb-a0bf-6fa79eea315b + 0fd51798-b2a2-4efb-a0bf-6fa79eea315b + + + 1 + 67.432213466350092 + + MI_Restricted_Substances + 63c278b1-c877-40c9-b18c-e03bc07a1dd1 + + 722e564a + part_722e564a-777e-4f9c-8811-193145d86934 + 722e564a-777e-4f9c-8811-193145d86934 + + + 8 + 9.25529180525583 + 49942221 + part_49942221-0621-4af1-a2fc-0a4093a6d639 + 49942221-0621-4af1-a2fc-0a4093a6d639 + + + 50.883502955959884 + + MI_Restricted_Substances + b44fad5b-b59d-4153-addf-f70a7895947d + + Annealed + Low alloy steel, AISI 4130, annealed + a4ec8808-b585-496d-a5cc-d59c512f313e + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 6c81acc0-5663-48a0-80fb-0c2d91b678ad + Length + 25.633306440726532 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 11cd72a3-ed84-4616-ac4c-ebaed41492c9 + Length + 21.16212259100849 + + + + + 7.0166424348628738 + + MI_Restricted_Substances + 8f779b79-a040-48d7-ac26-b9a1edf50ad2 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 8640, oil quenched & tempered at 650°C + ff9a65cd-ebb1-451d-b40b-6b0647b7f578 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 6bbad37a-8852-47d4-abb8-cc6ffba27678 + Mass + 100 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 8018ee5d-e0de-46af-ae92-55ebdfa74e2b + Mass + 100 + + + + + 7.0166424348628738 + + MI_Restricted_Substances + a831e691-2a34-4edf-807f-dfd38c316ef0 + + Borosilicate - 7740 + Borosilicate - 7740 + 2a1d6322-a0ea-436c-9538-cceb38c18a83 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 04a0a0dd-d457-4389-920e-b89aff73af52 + Mass + 100 + + + + + 7.0166424348628738 + + MI_Restricted_Substances + 38da30dc-d742-49da-bc7e-998b66397040 + + Oil quenched & tempered at 425°C + Carbon steel, AISI 1144, oil quenched & tempered at 425°C + e5309be8-4142-4935-8a91-72fa921fdf2d + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + efbe77cf-4e96-4bb9-ac92-59e4e213384d + Length + 4.8390723321768787 + + + + + 7.0166424348628738 + + MI_Restricted_Substances + ee5b018e-8d7f-4fb1-bad0-c73e871592bc + + 16Mo3, normalized + Low alloy steel, 16Mo3, normalized + d4294b82-7ffe-47d3-b655-dc8b66bc7020 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + a1b45db5-85b0-4f26-9b01-2968d3776b26 + Length + 4.0306716710471884 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 477ee7d7-60b9-4ac0-8262-9e93cd7c26d3 + Mass + 100 + + + + + 7.0166424348628738 + + MI_Restricted_Substances + 9cae15c6-b5b6-4ab9-9008-d962bee0e662 + + Glass/phenolic honeycomb, 0°/90° fabric (0.128) + Glass/phenolic honeycomb, 0°/90° fabric (0.128), L Direction + 3d11b8af-1fd4-4675-8258-5b3b35f3c032 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 3bfd5fb1-23db-422d-90b3-f1e1a7c8a39a + Area + 5.0300065451441363 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + cbc4230b-cee3-48f8-8712-f8df2c6ba37d + Mass + 100 + + + + + 7.0166424348628738 + + MI_Restricted_Substances + 33160988-8422-40e2-93d1-e3e7467eafe9 + + Normalized + Carbon steel, AISI 1030, normalized + 6c76498c-79e8-4812-9fd1-af346f992f7e + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + 359a2740-1b43-4fd0-8d89-4cd4b18d63f0 + Mass + 100 + + + + + 7.0166424348628738 + + MI_Restricted_Substances + 72799627-a7c0-4df4-8250-e2be8538565f + + Glass ceramic (N11) + Glass ceramic (N11) + 96182ae5-ac0c-49fa-91bf-c58715109f6f + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 096e3ee6-8be5-4a27-9e82-195bcd236082 + Mass + 100 + + + + + + + 7 + 57.228530550947667 + 0a2f97d7 + part_0a2f97d7-dc23-4588-90f2-3a7dad859ea6 + 0a2f97d7-dc23-4588-90f2-3a7dad859ea6 + + + 49.671437661010508 + + MI_Restricted_Substances + 75a1c963-399c-444d-a38f-1929c00d15b7 + + Normalized + Low alloy steel, AISI 4150, normalized + 9729d0c1-9bae-49be-b5d5-bad7b0e57c20 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 3b462f60-aa3a-44b3-91a0-b9584d987069 + Area + 15.348283953661232 + + + + + 25.164281169494746 + + MI_Restricted_Substances + d2b08d58-fc58-402d-98a4-6ee646a8fff5 + + Potash soda lead glass - 0010 + Potash soda lead glass - 0010 + 42fe1c07-bf61-43fe-b200-091c0a99d3eb + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 9a3fb36d-fb3b-4899-a6c6-a492e6344ada + Area + 53.442114989013469 + + + + + 25.164281169494746 + + MI_Restricted_Substances + 3fd6cebb-a683-45be-b014-7c3fb617c3e7 + + Glass/polyimide honeycomb, ±45° fabric (0.064) + Glass/polyimide honeycomb, ±45° fabric (0.064), L Direction + f31b86d3-3d73-45d7-b335-dc80c6fe3797 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 390fa0ad-01b8-4920-8c1b-cb3b44fc86e3 + Mass + 100 + + + + + + + 1 + 31.800849098619473 + 6982cff1 + part_6982cff1-1540-4179-9bfb-6085885c7e80 + 6982cff1-1540-4179-9bfb-6085885c7e80 + + + 42.985126582433061 + + MI_Restricted_Substances + 3fd6cebb-a683-45be-b014-7c3fb617c3e7 + + Glass/polyimide honeycomb, ±45° fabric (0.064) + Glass/polyimide honeycomb, ±45° fabric (0.064), L Direction + 2f198640-ec20-443e-bce0-aa2480ebc5fa + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + a95b81e7-3165-4c66-b27c-79f80b8a77c1 + Mass + 100 + + + + + 28.507436708783469 + + MI_Restricted_Substances + 405361fd-5b54-4a33-b835-7eb9eee13310 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 4042, oil quenched & tempered at 205°C + be2142f9-d6ab-490f-97dc-a6a35fae95f0 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + effd4e9c-9b82-4183-b83a-1c7b6373a274 + Mass + 100 + + + + + 28.507436708783469 + + MI_Restricted_Substances + e678781a-1b38-4709-816b-9db609651db6 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 50B60, oil quenched & tempered at 425°C + 9b463961-9e1d-49ac-a291-a22f41835348 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + f9a42968-f583-4ea2-8f08-7abb2b3d7c69 + Area + 15.600100073777185 + + + + + + + 5 + 5.3799660435784453 + c59f3dd3 + part_c59f3dd3-5757-4896-be0f-fe4a52ac813f + c59f3dd3-5757-4896-be0f-fe4a52ac813f + + + 1.0071820584159261 + + MI_Restricted_Substances + ed1b937b-1738-408f-9591-bd3e40cc5e33 + + Quenched & tempered + Low alloy steel, D6AC, quenched & tempered + 52cf4b83-73d4-4df3-8a79-30543a4005bd + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 85be6d38-4183-4573-a6fe-b2d0883d1e7e + MassRemoved + 42.003885163927393 + + + + + 49.496408970792039 + + MI_Restricted_Substances + 99d1c1c6-eca3-40ed-a479-6dec902f52da + + YS400, cold rolled + TRIP steel, YS400, cold rolled + 6795f40a-00cf-4910-81e0-e6bfd760da45 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 0c6e3617-bc3c-4f77-9b0b-ce00180df965 + Mass + 52.913747752510822 + + + + + 49.496408970792039 + + MI_Restricted_Substances + cc556116-e08b-4aa7-a2f1-af5315cb6a49 + + Annealed + Low alloy steel, AISI 8740, annealed + d2c298de-fc99-4858-a8d0-3ff585bfbee9 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + afb02586-6603-4e8b-9df6-62bdbcfc9562 + Area + 51.587891556130671 + + + + + + + 9 + 29.531311956016026 + fe91d311 + part_fe91d311-524b-4814-93bc-0e03eec4d4ea + fe91d311-524b-4814-93bc-0e03eec4d4ea + + + 100 + + MI_Restricted_Substances + ee08f647-79af-49f3-98c5-043480a0fed4 + + Quenched & tempered + Low alloy steel, 4330V, quenched & tempered + b1170aef-0d45-4706-bf6e-58a6290598f8 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + bc36cb23-5d3d-4152-91e8-94d719fef358 + Mass + 100 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 72eb8ad1-7f1d-4ec2-a7f8-c2f2fb390bb5 + Length + 32.99316960991974 + + + + + + + 4 + 81.231096611000169 + e0e5af0a + part_e0e5af0a-e0c5-4e59-af5b-fb8261eaf757 + e0e5af0a-e0c5-4e59-af5b-fb8261eaf757 + + + 99.876987701224621 + + MI_Restricted_Substances + 6ad310ec-db2b-43b1-afa1-9b6ddae5880c + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 94B30, oil quenched & tempered at 425°C + 5603f0cd-721c-4d66-97e3-0fae5da13c6e + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 53e81066-b63d-4911-8057-e3c49aaa7138 + Area + 20.675033619941694 + + + + + 0.015376537346922348 + + MI_Restricted_Substances + b00ee3d8-d653-4c76-8154-c2f07820ceda + + As rolled + Carbon steel, AISI 1080, as rolled + 9cc836ff-8d2f-41dd-82b9-747946f2675f + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + e2ed0c08-5f2f-48f6-ab7e-e6e6b91f51f5 + Mass + 100 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 47ff2e6f-c4fc-481b-ac7a-88e391b3d956 + Length + 20.458014225800529 + + + + + 0.015376537346922348 + + MI_Restricted_Substances + 00cd78de-6c78-46f3-81b3-ec03803fa034 + + Glass/phenolic honeycomb, ±45° fabric (0.048) + Glass/phenolic honeycomb, ±45° fabric (0.048), W Direction + a3e8d452-f55c-4b4f-afb4-78b5105fab0b + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 83448319-1f36-4f78-b6b2-ddccb968a8d6 + Mass + 100 + + + + + 0.015376537346922348 + + MI_Restricted_Substances + 1345051c-8b29-468f-a10d-37712b50f19a + + Borosilicate - 9741 + Borosilicate - 9741 + 34ee0405-4c30-4272-aa74-8cd0006c7cdc + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + e1dad974-b607-47f0-897c-389bce8c3130 + Length + 32.534031026314025 + + + + + 0.015376537346922348 + + MI_Restricted_Substances + f7146c54-87d0-4395-b57a-86bb0c43716a + + ASTM A106 Grade B + Structural steel, ASTM A106 Grade B + b1097059-ddc7-4042-9c37-ca46873934aa + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + a643177b-46b3-48e6-b617-520aa03a590a + Mass + 100 + + + + + 0.015376537346922348 + + MI_Restricted_Substances + bac6ffd4-6d83-432c-90f4-de9606502589 + + Alkali barium glass + Alkali barium glass + 13adc0ad-d341-44b0-bd5a-0e4be59efd3c + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + f1502dd5-5b95-4b45-8d0b-deb5e9a4673d + Mass + 100 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 84af3f8c-8dba-49b4-9c0d-fd2aebc545b2 + Length + 15.257700353515194 + + + + + 0.015376537346922348 + + MI_Restricted_Substances + 92565d61-24fc-4880-9be5-0faeb9a8a3e8 + + Titanium silicate + Titanium silicate + 969b4e8d-aa09-45d8-b760-9a6d5f39bd17 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + cf49c522-0eee-46ad-b8fb-0bb1617f3b1f + MassRemoved + 71.953743915983353 + + + + + 0.015376537346922348 + + MI_Restricted_Substances + 90b2285b-4295-429d-beb8-90d9f5df0101 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 5046, oil quenched & tempered at 315°C + c55b3a48-af24-4adb-8756-73a57c037afd + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + 9de8fabe-f587-4fbf-af1a-0737dbf6e562 + Mass + 100 + + + + + 0.015376537346922348 + + MI_Restricted_Substances + 50c388cf-bb91-442a-9b62-8d34f7822f13 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1040, oil quenched & tempered at 540°C + 85ea47d0-5bbe-4bfa-8dd5-351374048369 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 553326e4-d43e-4a2a-a8a7-e9a26f0a8dcf + Mass + 100 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + b5fbf9f0-b92e-477b-9ce7-aa33dddfaa3f + Mass + 28.596958857307659 + + + + + + + 1 + 97.074463729315653 + 437de059 + part_437de059-b008-4e7c-b520-10a8123000e1 + 437de059-b008-4e7c-b520-10a8123000e1 + + + 63.048234937269356 + + MI_Restricted_Substances + dce50f42-7360-4343-bf6c-8ed14aa0f092 + + 40% glass and mineral + PA66 (40% glass and mineral) + 701e5165-2c25-4cea-96ed-7750f5f41acc + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 6aa5c7f2-e8e6-41ab-9717-77236751e16f + Mass + 100 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + d509c5d2-e8e1-4640-9d90-8b15141ea57f + Mass + 100 + + + + + 18.475882531365322 + + MI_Restricted_Substances + 0c172430-369d-48ad-910e-69fe1451a36e + + Normalized + Carbon steel, AISI 1095, normalized + 1f7e073c-a7eb-49f3-adc0-0417aa2cfa5f + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + c33eccae-1ac4-4d8d-8b3d-a449ae0752dc + Mass + 100 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + d71fb4fe-b849-4560-a0e0-68b2e512cc69 + Mass + 100 + + + + + 18.475882531365322 + + MI_Restricted_Substances + 00cd78de-6c78-46f3-81b3-ec03803fa034 + + Glass/phenolic honeycomb, ±45° fabric (0.048) + Glass/phenolic honeycomb, ±45° fabric (0.048), W Direction + e56af113-d40b-42ac-a2df-f2472f70efee + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + ec8a21c1-8d76-4127-a2c3-83673ca72874 + Length + 19.651641752408651 + + + + + + + 7 + 27.138954786182829 + 04fa7bb4 + part_04fa7bb4-3a59-43c1-a203-6be1b2da9fcf + 04fa7bb4-3a59-43c1-a203-6be1b2da9fcf + + + 22.9690014957306 + + MI_Restricted_Substances + 7a62318a-eff2-4f36-9925-ee919c5b4369 + + S235J + Structural steel, S235J + b5b0bc54-ff16-4e30-aa8e-1174d01b0db9 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + f7e1d2c7-2fa3-4356-8737-63d41dea09cf + Mass + 100 + + + + + 25.676999501423136 + + MI_Restricted_Substances + 29b76cdc-672e-4a1f-8f6e-a5644857c880 + + Normalized + Low alloy steel, AISI 4135, normalized + 8b2a4aa2-e23e-4c9e-90b7-03a4272434ce + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + b7749878-bcea-4e27-92e1-43cbe27fa037 + Mass + 100 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 6006957c-f765-4ba5-bb70-31ffeab91dd8 + Mass + 100 + + + + + 25.676999501423136 + + MI_Restricted_Substances + 72799627-a7c0-4df4-8250-e2be8538565f + + Glass ceramic (N11) + Glass ceramic (N11) + cd3d696d-39e4-4ba2-beb9-220431560555 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + b84b3ae8-bb31-4e8a-8081-ecf61c235074 + Mass + 100 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 47bae213-7435-4793-96f0-733c137b25a9 + Mass + 100 + + + + + 25.676999501423136 + + MI_Restricted_Substances + aa85aa64-c83c-4dec-afe9-120ed38bfd6b + + Quenched & tempered + Intermediate alloy, Fe-5Cr-Mo-V aircraft steel, quenched & tempered + 82f871e0-b0dc-41a1-85fc-c757560e0d45 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + 443ee55b-1242-420a-b5ef-a1785070b80a + Mass + 100 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + df470091-0c62-4e4b-b5cc-ace6fc3bcedc + Mass + 100 + + + + + + + 1 + 37.721345777493596 + 5b8a41c6 + part_5b8a41c6-a8e6-44ab-bf66-c6f9793fa82e + 5b8a41c6-a8e6-44ab-bf66-c6f9793fa82e + + + 63.613183453498955 + + MI_Restricted_Substances + 829ba125-1962-4803-a2ea-acd4eb899642 + + Annealed + Carbon steel, AISI 1030, annealed + 16e80a3f-6e09-41a2-9cf5-4ba5eb4a7e14 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 55446e81-a459-4b89-84db-e9afdca8258d + Mass + 100 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + e13a47ea-20e1-427d-aa4d-c96d2f032ab5 + Length + 65.540538106831036 + + + + + 9.0967041366252612 + + MI_Restricted_Substances + 3c7e2f5d-1c0d-4d81-8f90-3aa111fa97ee + + water quenched & tempered at 205°C + Carbon steel, AISI 1040, water quenched & tempered at 205°C + bf017666-33ee-4e9c-a7c7-c79809c76bd5 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + b7d09318-089b-4b93-acb0-da0f87626678 + Mass + 100 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 986f836b-cbcf-4eca-a03e-94505ea593da + Mass + 100 + + + + + 9.0967041366252612 + + MI_Restricted_Substances + fbdbafa4-b1a5-410d-a3f0-0b7077b0d7be + + Glass/polyimide honeycomb, ±45° fabric (0.112) + Glass/polyimide honeycomb, ±45° fabric (0.112), L Direction + 930d52cf-2cee-4c4b-b1a9-b1d96d3044c9 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 6a48fca9-fbaf-4264-9482-96ab92322e57 + Mass + 100 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 72adcdd4-1469-4a17-84e7-9d58cf04a38e + Mass + 100 + + + + + 9.0967041366252612 + + MI_Restricted_Substances + 6f9ce415-05a1-4774-bf1d-8952ab0f7306 + + Annealed + Low alloy steel, AISI 3140, annealed + 676c5e9b-ff60-4183-a7a9-9d7fcd32c4ed + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + a0295e52-f3ba-4990-a17d-a6d1be73ff17 + Mass + 100 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 6b7c542c-ddd3-4aa2-8c5d-24e74a10c92d + Area + 68.080936403982776 + + + + + 9.0967041366252612 + + MI_Restricted_Substances + a8bcc71d-ff19-40c8-9520-f11553c604d2 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 5140, oil quenched & tempered at 650°C + a21a8da1-da97-4c1b-8fbe-4a5aa1a91a46 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 499b161c-fe41-45c5-a2ad-a21511698d33 + Mass + 100 + + + + + + + 5 + 45.262771633110368 + + MI_Restricted_Substances + 5fd070ef-bb1b-4857-abcf-7eda481ecfbe + + c8fe4f3d + part_c8fe4f3d-a700-4d0c-84e3-a14b889a4cc7 + c8fe4f3d-a700-4d0c-84e3-a14b889a4cc7 + + + 5 + 24.669284105612562 + eb2deb8b + part_eb2deb8b-b41d-4c74-8e4b-a7e85b8ec439 + eb2deb8b-b41d-4c74-8e4b-a7e85b8ec439 + + + 11.293506487875016 + + MI_Restricted_Substances + c95c73c3-4701-4efd-902e-cbf342cdcf96 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 6150, oil quenched & tempered at 540°C + 745d6d44-8f46-419e-9b32-25bc47eaa59e + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 89f9c223-e5c2-4ebd-9633-4d3e6f846f0a + Mass + 100 + + + + + 44.353246756062489 + + MI_Restricted_Substances + 36e1311d-2e77-4147-8cf3-c4cdce6f6c7f + + Grade F9 + Alloy steel, 9Cr-1Mo, Grade F9 + 9b22d40c-ac77-4697-9810-85b65fe477be + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 08d160c5-0163-43da-9917-db0b516d1d61 + Area + 23.876643285097852 + + + + + 44.353246756062489 + + MI_Restricted_Substances + b10ab099-72fd-4e47-9274-015a08f619c2 + + Annealed + Low alloy steel, AISI 5160, annealed + 31356a48-ade5-4b4d-a93b-9808b6383d9e + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + f7533552-c5cd-4a4e-ab60-a532681d340a + Mass + 100 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + e3b12039-e222-49f5-8803-779b9f7fd7af + Length + 66.376230244699968 + + + + + + + 4 + 15.264850256622234 + 7ec1f344 + part_7ec1f344-f8f3-4bb7-a8bb-91fc987da37d + 7ec1f344-f8f3-4bb7-a8bb-91fc987da37d + + + 48.340723639512774 + + MI_Restricted_Substances + ab895171-8c16-4056-9062-78f7516be1b0 + + Borosilicate - 7050 + Borosilicate - 7050 + 4a413853-4f19-4033-99e9-d2558285fd77 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + b141dd7a-08fe-49c9-9e5e-60c573dff406 + Mass + 100 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + ebc20434-b632-4a83-98ce-36397e7cc4b6 + Length + 84.008895598356091 + + + + + 10.331855272097446 + + MI_Restricted_Substances + 92565d61-24fc-4880-9be5-0faeb9a8a3e8 + + Titanium silicate + Titanium silicate + e2589441-809a-4632-b5f5-604e86d5df1d + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 49000dd4-39c6-4c0e-91a4-9733e7cdc4cc + Mass + 100 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 2a8c198d-6795-43a2-89b0-18d302c51e22 + Mass + 4.0292751528459023 + + + + + 10.331855272097446 + + MI_Restricted_Substances + d424fe56-b6f6-42c2-99fb-3e92da8ce70b + + Molding, glass filled + DAP (molding, glass filled) + 9f8bae76-87c4-4a92-9d2e-7acd712324b4 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 5a4e401d-dfcd-43eb-a876-1e11b6606ba3 + Mass + 100 + + + + + 10.331855272097446 + + MI_Restricted_Substances + 0a203f13-4112-4c7b-8d17-bd9ce600f647 + + YS350, cold rolled + Dual phase steel, YS350, cold rolled + c0ce1d7a-cd01-4611-bf88-190e3d52c5c6 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + 4c5daa87-9d94-4e0c-b0ed-f6e29891ec70 + Length + 60.250467090052773 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + c33605f5-647b-4115-ba26-4220139253f8 + MassRemoved + 19.773969203128466 + + + + + 10.331855272097446 + + MI_Restricted_Substances + d56a3593-45b4-418e-8f28-3fde55e8479f + + Homopolymer, 40% glass and mineral + PP (homopolymer, 40% glass and mineral) + 18c72c1f-62dc-424a-b1e3-829ebae03638 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 39556d21-4b67-439a-ab9a-aa687ff13719 + Length + 88.799339946731621 + + + + + 10.331855272097446 + + MI_Restricted_Substances + c62d668e-5411-4845-b19c-3a0c4eedf872 + + 10CrMo9-10, normalized & tempered + Low alloy steel, 10CrMo9-10, normalized & tempered + eb75a1ff-cfed-4cff-9ee0-51b0ae2bff51 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 97aba755-6d6b-476a-9d91-b4ae031e069d + Mass + 100 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 8d6ff545-b87a-4f86-b87e-b0c67814fc8a + Length + 7.2227010537044611 + + + + + + + 6 + 83.811494653956728 + 82a614ac + part_82a614ac-71f0-43c2-9f05-50d6d6bc5dd7 + 82a614ac-71f0-43c2-9f05-50d6d6bc5dd7 + + + 27.351893311064639 + + MI_Restricted_Substances + d2c2408b-ddaa-4dc0-825b-b2d3ef39767b + + Oil quenched & tempered at 315°C + Carbon steel, AISI 1095, oil quenched & tempered at 315°C + 6ca8c8cd-314f-49f3-98a2-fe7da413b8dd + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + a37f7e86-aa84-4a27-991a-117d1677ba50 + Length + 56.536164393898183 + + + + + 18.162026672233839 + + MI_Restricted_Substances + 8b442749-964a-49d6-be5c-9a55c81d85f8 + + Annealed + Carbon steel, AISI 1137, annealed + c476e626-5152-486e-86db-e1e4879b8322 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + ea5ab7ac-c8d8-4223-b0ed-27111a71e53f + MassRemoved + 32.525596224016326 + + + + + 18.162026672233839 + + MI_Restricted_Substances + 81ce98b3-d459-4695-9dd9-d53244be47ed + + Annealed + Carbon steel, SA216 (Type WCC), cast, annealed + 49e350c2-4a76-46dc-91c9-a053293f1246 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 44afe398-fa7e-4205-b019-ff981c913696 + Mass + 100 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + efd3f567-f565-4c76-bfdd-53016814b06f + Mass + 100 + + + + + 18.162026672233839 + + MI_Restricted_Substances + 158e73a4-18c6-4e1a-b5d8-57669c377335 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 8740, oil quenched & tempered at 650°C + f67e261d-6a6d-460c-b268-c2d94e6e6095 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + 95f56dd5-b66f-4a7a-bcf5-23248b4bf618 + Mass + 100 + + + + + 18.162026672233839 + + MI_Restricted_Substances + 4b01d1e1-0f4c-4861-a797-7ea504ca38c4 + + Annealed + Low alloy steel, AISI 5150, annealed + 2b4ff675-7d16-452a-aa95-6822f6f80a28 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 65d94de4-5ac4-4511-93bd-5c4493f91339 + Mass + 86.868624476189083 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 1927203e-d336-40f9-9ac8-002e3fb8404f + Mass + 100 + + + + + + + 2 + 26.229461061875085 + 8b6c545e + part_8b6c545e-01a8-4124-a864-f4715e58b341 + 8b6c545e-01a8-4124-a864-f4715e58b341 + + + 8.0149594731698546 + + MI_Restricted_Substances + 7c667712-7c0d-46fe-bf29-e73482f1a937 + + Normalized + Carbon steel, AISI 1040, normalized + 436bf9aa-eeaa-43b2-b091-946739429e46 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + b04303aa-fa93-4a4b-b15a-1d399aa6ef2a + Mass + 100 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + cc3e31e1-5109-4d2c-89c5-e9afbe14ac07 + Mass + 100 + + + + + 91.985040526830147 + + MI_Restricted_Substances + 879f3268-e8b6-48c0-822a-40a010d12911 + + AISI 1010, annealed + Carbon steel, AISI 1010, annealed + 5b140538-a83a-4932-8530-b6b9b1354b33 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + bd4e9820-9ff3-4955-adf8-a54c1fb91c6f + Mass + 100 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 21454e66-9f53-46ce-bc28-9eae97e8e2aa + Mass + 100 + + + + + + + 5 + 68.122599864435657 + 32a97613 + part_32a97613-8749-4521-911a-dadce88e2fbc + 32a97613-8749-4521-911a-dadce88e2fbc + + + 87.248372979112148 + + MI_Restricted_Substances + 9124b244-f2f8-44df-b2cf-b05d3406eb9e + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 4042, oil quenched & tempered at 315°C + fb4f654c-e2e5-4e46-82a7-135d9d12e8b8 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 899c2231-7fab-4232-9b1b-90460bf58577 + Mass + 100 + + + + + 1.5939533776109816 + + MI_Restricted_Substances + 29d2e9de-9de0-4ea9-9bff-3a1cee0c26e3 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 4037, oil quenched & tempered at 205°C + e3442955-c1af-4772-8b05-38a14c8b56d6 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 106b9d46-3e65-4149-82ad-e1be183c3aa0 + Mass + 100 + + + + + 1.5939533776109816 + + MI_Restricted_Substances + 5dbabc2e-4263-4458-abe1-31a2ece9e122 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 5160, oil quenched & tempered at 425°C + bafe2017-cae7-4cb0-a9a9-a0a07178065f + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + 04dae83c-67b6-4578-88e8-186be8062412 + Mass + 100 + + + + + 1.5939533776109816 + + MI_Restricted_Substances + e5cb0b28-b074-4eb6-95ab-12e8692a87ea + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 50B60, oil quenched & tempered at 540°C + ede158ad-d3b7-4822-9c1b-7baa9a4a09ec + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 3d7da978-b277-4a25-b720-5638eeb242a3 + Mass + 67.539811678016477 + + + + + 1.5939533776109816 + + MI_Restricted_Substances + d6e501d1-0349-4e73-a9da-d539d7cd5486 + + Normalized & tempered + Carbon steel, SA216 (Type WCC), cast, normalized & tempered + 89b60b9d-50b9-458a-8a79-bc7fabf95943 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 22dc52e0-34ca-4412-952e-49bc1bf22f01 + Mass + 100 + + + + + 1.5939533776109816 + + MI_Restricted_Substances + 9baf14a0-efff-4bce-9674-553db30bee1b + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 9255, oil quenched & tempered at 650°C + 669c5e9a-c19c-4473-a1d7-4ac59cedb10a + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + dfcbbda8-fb7c-4a18-b4b8-67ce4d0a060e + Length + 10.265371115070474 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 777fa19d-d738-4b3b-915d-6996371d9079 + Mass + 100 + + + + + 1.5939533776109816 + + MI_Restricted_Substances + a1ecb25a-cbfa-484f-8221-3c08313c0d09 + + Glass/polyimide honeycomb, ±45° fabric (0.051) + Glass/polyimide honeycomb, ±45° fabric (0.051), L Direction + 2a239261-e9fa-4492-b6d9-487b94adce00 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 3231389f-f837-46b2-ab9f-65bd393369dc + Mass + 3.3359815847761842 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 965ee3ad-4b83-4b1c-aeb6-280f7931ac17 + Mass + 100 + + + + + 1.5939533776109816 + + MI_Restricted_Substances + cec978ca-2cf6-489b-a21f-c424c7d49a61 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 4042, oil quenched & tempered at 540°C + b9ea77fb-a00b-4873-9afe-bebec9745c86 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + a9fc01c6-b5f8-4d21-ab7e-6afa5fb68b26 + Mass + 100 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 6a975675-91de-4ed0-a7da-0a74e72c8af0 + Mass + 100 + + + + + 1.5939533776109816 + + MI_Restricted_Substances + 940150b6-2d2e-4762-b1a0-6f354a75d95b + + Potash lead glass + Potash lead glass + 6f275f8d-94c9-458c-bf77-a73191c7d328 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 8662860d-124e-4acd-987c-ee1d0d4d7046 + MassRemoved + 4.0768485535294046 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 1889b177-f9b6-4429-ad45-cd5dda537c09 + Mass + 100 + + + + + + + 8 + 52.665403649520783 + + MI_Restricted_Substances + 19db41d7-f431-4cae-8977-8bdab8435374 + + f45aed28 + part_f45aed28-e2ce-47d9-9f72-262b61b4cf4c + f45aed28-e2ce-47d9-9f72-262b61b4cf4c + + + 5 + 67.809588400558368 + 029eebe4 + part_029eebe4-61d9-4313-8b11-48a3b2ddaa26 + 029eebe4-61d9-4313-8b11-48a3b2ddaa26 + + + 100 + + MI_Restricted_Substances + e6ccd83b-bd9f-45c2-a45e-53933b3b3638 + + YS170, hot rolled + Drawing quality, YS170, hot rolled + a1084c64-0392-4ae2-8349-95b72dd23979 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 20e30242-be1b-4382-abb8-ae0a7c43b0b5 + Mass + 100 + + + + + + + 9 + 72.54869717757623 + 9d4a9735 + part_9d4a9735-5832-40b9-a0c7-374f7f8ef4eb + 9d4a9735-5832-40b9-a0c7-374f7f8ef4eb + + + 100 + + MI_Restricted_Substances + b0c0246d-7238-46e4-9081-5bad34efbbdb + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 5140, oil quenched & tempered at 205°C + 69802d0e-a351-4e61-822e-72bef720e710 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 60c7e574-7a63-4b65-aa28-e295f5d044fe + Mass + 100 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 48ff2572-798d-43a3-937f-b1e0d1412155 + Mass + 100 + + + + + + + 5 + 45.7524002742732 + 08e41ceb + part_08e41ceb-09ac-4b39-aec4-13ca0971e3f3 + 08e41ceb-09ac-4b39-aec4-13ca0971e3f3 + + + 19.097819933247667 + + MI_Restricted_Substances + be0bbb94-0c22-4276-9615-902f13ee0363 + + Oil quenched & tempered at 315°C + Carbon steel, AISI 1144, oil quenched & tempered at 315°C + 562fb1a0-2d01-4d8e-ab17-daed570352ce + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + c7299a56-0153-46d0-a959-7608c0a3e4b8 + Mass + 100 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 1cff8140-3e0c-417e-a513-0dfa93a2efdb + MassRemoved + 2.8178233666428474 + + + + + 16.180436013350466 + + MI_Restricted_Substances + 00fe5279-94a1-43fd-8b88-d83679a1bdce + + Normalized + Low alloy steel, AISI 8650, normalized + 4d72c6e4-2025-4bcc-9f26-0bd1a1e025f0 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + b8497ea3-22dd-4402-9297-c567f477f441 + Mass + 100 + + + + + 16.180436013350466 + + MI_Restricted_Substances + 44170b93-ef3d-4d60-848c-1d454eadbd1f + + As rolled + Carbon steel, AISI 1118, as rolled + fab0c294-61a5-4f4e-ba4e-1e003c0add97 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 12c5941f-9f7d-4a7c-a233-d62edcba2b73 + Mass + 100 + + + + + 16.180436013350466 + + MI_Restricted_Substances + 8d11e762-0e0a-4010-873b-28aa9eda77f1 + + water quenched & tempered at 650°C + Carbon steel, AISI 1040, water quenched & tempered at 650°C + 91e457fb-587b-4340-9663-d6588e04a9ef + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + 6d8b3ee0-b47a-45a7-b221-d37c4af789df + Length + 87.838828371762673 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + c0019e0b-9940-4b0a-8012-bb274efe6a46 + Mass + 100 + + + + + 16.180436013350466 + + MI_Restricted_Substances + ff23c6a6-3046-4f35-b5d2-ca7f0956efc7 + + Oil quenched & tempered at 650°C + Carbon steel, AISI 1144, oil quenched & tempered at 650°C + c1f1d2ae-d067-4cb6-9b97-0cb20f40aebb + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 391d1f1f-4586-47a2-9597-7a988ac7fbab + Area + 9.24836546613293 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 07e2be6c-604c-4c09-b7a1-5f96e5172fbc + Mass + 100 + + + + + 16.180436013350466 + + MI_Restricted_Substances + 3cad12a9-0765-402c-a6b1-0be665ecd2e6 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 4140, oil quenched & tempered at 540°C + 73da6b78-b8b6-434a-b85c-9f69819556d8 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + 1fc8a46d-4615-47eb-8e25-3868bcde3026 + Mass + 100 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 173921f9-7fc6-4d2f-861f-477d238a8158 + Mass + 55.180364500349555 + + + + + + + 1 + 67.484517613185815 + + MI_Restricted_Substances + a78dcd3a-f108-4fdb-857e-e2d00ed319d4 + + 0aa5949f + part_0aa5949f-02ce-4d0d-8c81-2c420977ba2c + 0aa5949f-02ce-4d0d-8c81-2c420977ba2c + + + 7 + 72.33532828853248 + 14a60b45 + part_14a60b45-ed26-4545-91b1-579cf92fd920 + 14a60b45-ed26-4545-91b1-579cf92fd920 + + + 81.390423412150909 + + MI_Restricted_Substances + a831e691-2a34-4edf-807f-dfd38c316ef0 + + Borosilicate - 7740 + Borosilicate - 7740 + af47e5bf-dc1e-4631-8029-06abeb8d8aa9 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + b1dd64a2-c274-46bd-8687-3d33878586b1 + Mass + 100 + + + + + 2.3261970734811364 + + MI_Restricted_Substances + ab732b70-3546-4a94-b914-643f38c2443f + + 24CrMo13-6, quenched & tempered + Low alloy steel, 24CrMo13-6, quenched & tempered + 107419cf-caf4-4a12-99ab-00b4a6924134 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 0c3c00cc-917f-4ec7-9aaf-7c89dbfd4515 + Mass + 100 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 64849db1-58f0-4cc6-a61e-19fc913cae47 + Length + 89.790219156905181 + + + + + 2.3261970734811364 + + MI_Restricted_Substances + 33160988-8422-40e2-93d1-e3e7467eafe9 + + Normalized + Carbon steel, AISI 1030, normalized + 5acf8036-ea0f-4650-bf06-d513c66556d7 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 6960e6d3-8999-4b93-8a23-f1254b1b62b8 + Mass + 100 + + + + + 2.3261970734811364 + + MI_Restricted_Substances + 52f4bd78-04b3-4f59-ad9d-f4d9e695cec1 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 8640, oil quenched & tempered at 540°C + 7b765542-1a51-4dd5-84c6-c364df62912c + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 52723d99-ec82-4965-82a5-fb22addcdd55 + Mass + 100 + + + + + 2.3261970734811364 + + MI_Restricted_Substances + b6d7f7bf-6ae9-4782-adb0-3c8684b58ab7 + + water quenched & tempered at 205°C + Low alloy steel, AISI 4130, water quenched & tempered at 205°C + cf75a3bf-9adf-4a7d-8531-24962738c224 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + 4431c3ad-10d5-40ff-b98f-6b99b8d09273 + Mass + 100 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 9c3b4101-5c00-4270-be01-b034398c6850 + Mass + 100 + + + + + 2.3261970734811364 + + MI_Restricted_Substances + 63d5d6b5-3b52-4cd9-a56f-6e7c5c945139 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 81B45, oil quenched & tempered at 315°C + 78d1af3d-f686-40b0-bb54-b1f232113dd9 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 8620f028-3d43-485e-95b8-c002cbbd1e66 + Mass + 100 + + + + + 2.3261970734811364 + + MI_Restricted_Substances + b3d89bcf-5e9a-4fe8-a953-98ceb384b8a3 + + water quenched & tempered at 650°C + Carbon steel, AISI 1030, water quenched & tempered at 650°C + 37dddd7a-f7db-44aa-925f-ce0d3b6d2daf + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + b3a173fe-d3fa-4fd1-a112-3526a28e9216 + Mass + 100 + + + + + 2.3261970734811364 + + MI_Restricted_Substances + 21dcdeeb-524a-488e-b332-fcd4e1caf6f7 + + water quenched & tempered at 650°C + Carbon steel, AISI 1095, water quenched & tempered at 650°C + 0a9b7806-e04f-42d4-a59e-34cdec3357a3 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 91eea166-f867-4a19-8026-f9c59a7efbb3 + Area + 51.02855272173349 + + + + + 2.3261970734811364 + + MI_Restricted_Substances + b7281866-0d52-4e7c-b595-207e18a0a759 + + Glass ceramic (ZD) + Glass ceramic (ZD) + 8c8132bb-5369-4aee-a41b-e9fc45f6bbec + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 8b451d54-b071-44e9-960b-5a76f446e6ad + Mass + 100 + + + + + + + + + 4 + 94.962504690029888 + dbd26773 + part_dbd26773-8e8f-4777-ac11-5ae169b0adeb + dbd26773-8e8f-4777-ac11-5ae169b0adeb + + + 76.005991071465417 + + MI_Restricted_Substances + d42eaa02-9811-4935-b9cd-652adc845e8c + + Oil quenched & tempered at 650°C + Carbon steel, AISI 1050, oil quenched & tempered at 650°C + b664d6da-3d02-4c61-beca-ac15117002b4 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 0c30cc1c-7adb-42ff-9e3c-6df6902dd623 + Mass + 41.32548810044559 + + + + + 3.4277155612192263 + + MI_Restricted_Substances + 9df55457-5300-4ddb-b92e-122b5c121621 + + Glass and mineral filled, encapsulation, molding + Novolac (glass and mineral filled, encapsulation, molding) + 129b2bc8-e985-4f46-a8e6-9df04926e059 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + 4b3e027e-808e-43e5-9b43-24670aa70a5a + Mass + 100 + + + + + 3.4277155612192263 + + MI_Restricted_Substances + 1a9ca626-1709-4d7b-954c-65aa69bf6536 + + YS300, cold rolled + High strength low alloy steel, YS300, cold rolled + 6b2a51a6-4f05-4529-b956-d5f89154aea1 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + 4f7389b7-6ed6-4bde-9a00-47eba952c0cb + Mass + 100 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 663bef70-ccb1-4122-bf49-37c1ecdbc270 + Mass + 100 + + + + + 3.4277155612192263 + + MI_Restricted_Substances + b067ed19-a836-41f7-9267-d9b04647d09f + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 5150, oil quenched & tempered at 650°C + a6928515-9d7b-425b-87d6-77dd32f92761 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 9b5e8df2-1fdf-456d-b942-69d71caa3bdb + Mass + 100 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + e47e033a-4cbb-4a05-b953-ddd17520582c + Length + 66.68110939985192 + + + + + 3.4277155612192263 + + MI_Restricted_Substances + 1a9a8159-774b-4fc9-9c09-4bbc5474f364 + + Oil quenched & tempered at 315°C + Carbon steel, AISI 1060, oil quenched & tempered at 315°C + 8fe9ddc8-d93d-4141-b1e6-e6d7c7ca7714 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 14745818-f77a-49c3-8543-cec80704e400 + Length + 63.610596472216116 + + + + + 3.4277155612192263 + + MI_Restricted_Substances + 8349c912-772a-4fd7-90a5-7d52aa9c9448 + + Oil quenched & tempered at 425°C + Carbon steel, AISI 1137, oil quenched & tempered at 425°C + 45eb05de-7dfa-4c59-8020-7a62fe7ffe9b + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + b92ed420-a919-4d7c-b717-467ed447e789 + Mass + 100 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 3e345310-3294-49ec-9563-4a560a1cbd77 + Mass + 100 + + + + + 3.4277155612192263 + + MI_Restricted_Substances + 877882c6-9b86-4643-a4a0-363d7d8023fd + + P355N/NH, normalized + High strength low alloy steel, P355N/NH, normalized + f6f762d4-60e6-41df-bd5b-a3c9a913e2a5 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 801772a7-9f20-4d3a-be55-c1d56953929c + Mass + 100 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 9b415600-3892-4880-8548-5d2a1771f6df + Mass + 100 + + + + + 3.4277155612192263 + + MI_Restricted_Substances + ae5812e1-18fd-4a4d-aaa2-a04ca5e84b7a + + YS400, hot rolled + Dual phase steel, YS400, hot rolled + 65c218e8-5bf8-4ffe-b06f-33330785a050 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + de4d8201-fd83-49b7-bdaa-17fe3fc25396 + Mass + 100 + + + + + + + 2 + 68.68658208692753 + 3c323160 + part_3c323160-5fd8-44e4-a13d-2b9f8d257e5c + 3c323160-5fd8-44e4-a13d-2b9f8d257e5c + + + 38.656917232394648 + + MI_Restricted_Substances + 15dcb0d7-3be1-4d92-952e-c80ccbdc6a58 + + Annealed + Carbon steel, AISI 1117, annealed + 495b33c6-6072-4b51-abeb-ea0631bda54a + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 804ba7d8-7241-430b-a8bd-ffbfd8e9e1e6 + Mass + 97.846216986815548 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 4032f224-a752-4e9b-9239-1216ab831a2a + Area + 23.4050722901733 + + + + + 20.447694255868452 + + MI_Restricted_Substances + ac443865-33d5-466d-89e2-c3f26e668369 + + Borosilicate - 3320 + Borosilicate - 3320 + 79b889c4-0a6a-43ee-a624-d1edde521eee + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + 2fdcde75-03c6-4ca8-95ee-94c569666985 + Area + 49.369266000282607 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 32429d18-f93d-4f9a-8b3b-b2185d113077 + Mass + 100 + + + + + 20.447694255868452 + + MI_Restricted_Substances + 0d45da58-d026-4a44-b2b5-3109fe88f824 + + Annealed + Carbon steel, AISI 1022, annealed + b52b229c-244e-43e4-a7af-d62cf3dcbc7b + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + ead16e14-f3e0-4428-9590-75daef15c905 + MassRemoved + 1.858558180676102 + + + + + 20.447694255868452 + + MI_Restricted_Substances + c95c73c3-4701-4efd-902e-cbf342cdcf96 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 6150, oil quenched & tempered at 540°C + 6ee1f13a-259e-4c0d-808e-8ba5bfaee21a + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + f57655a3-883e-40dd-a093-9964a8356299 + Mass + 100 + + + + + + + 8 + 54.49852945958196 + 5dd3822f + part_5dd3822f-b24c-4067-b80a-a757c8cd42af + 5dd3822f-b24c-4067-b80a-a757c8cd42af + + + 9.03867003928808 + + MI_Restricted_Substances + 90514ab4-75b3-48a9-9a07-98eb8f83ef81 + + As rolled + Carbon steel, AISI 1015, as rolled + 5be59a06-d6b7-41ad-b182-8fde7d1e4ef0 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + a6ec4773-da93-4378-b1ab-ae3501c1c3a3 + Length + 56.508613357557266 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 359cb7f8-ca98-47e0-a518-e151f66bb612 + Mass + 100 + + + + + 12.994475708673132 + + MI_Restricted_Substances + b7281866-0d52-4e7c-b595-207e18a0a759 + + Glass ceramic (ZD) + Glass ceramic (ZD) + 08e59c8a-2717-49be-9877-99514a1d892c + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + fb977997-cc93-43b1-97a2-fce283ab53c3 + Mass + 100 + + + + + 12.994475708673132 + + MI_Restricted_Substances + 6d6a3603-a2a8-4db9-9e7e-ad4fc4f9c724 + + Glass/phenolic honeycomb, ±45° fabric (0.064) + Glass/phenolic honeycomb, ±45° fabric (0.064), W Direction + 4d7fbb98-5105-4379-91f3-c0e83a36490f + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + 4f99306f-f5d8-4a01-a9c2-4bec570e02c1 + Mass + 100 + + + + + 12.994475708673132 + + MI_Restricted_Substances + f92ff01e-ed35-4c66-96d1-607d9684b44b + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 94B30, oil quenched & tempered at 315°C + 94ee114f-4921-482e-b6f0-bcf062174668 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 86a3e3ac-e646-4dc8-bd37-31f184e119b8 + Mass + 100 + + + + + 12.994475708673132 + + MI_Restricted_Substances + db238d75-fcb8-41f5-9289-83a352fa83a6 + + Annealed + Carbon steel, AISI 1015, annealed + 4f63a2b4-ca62-458e-a376-2e8c16a35be6 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + bd30ba17-0112-479e-86a4-ed7cd8a7e16d + Length + 32.4986593017814 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + dd48f4ee-fed1-4743-a078-97593acdbb3d + MassRemoved + 1.4542936819858354 + + + + + 12.994475708673132 + + MI_Restricted_Substances + a1ecb25a-cbfa-484f-8221-3c08313c0d09 + + Glass/polyimide honeycomb, ±45° fabric (0.051) + Glass/polyimide honeycomb, ±45° fabric (0.051), L Direction + cba81f0c-37ce-4fa0-98eb-cd0f1f202dbc + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + aadbc19e-955c-4d2d-b6d2-eb1c26ba3ac6 + MassRemoved + 22.666930417840803 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 76780348-4023-4a50-9c95-d2021dca2c25 + MassRemoved + 18.420393494153579 + + + + + 12.994475708673132 + + MI_Restricted_Substances + 87e1a3cd-fd79-4013-b5f8-56d6f28bef34 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1144, oil quenched & tempered at 540°C + da444f58-762b-4434-a8b4-68e908157cbc + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 4d5bf7d5-e56b-46dd-93d1-a791d41ebe7e + Mass + 100 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 2f5e2e30-90dc-422e-ad04-7e4a745524ee + Length + 40.701439623116251 + + + + + 12.994475708673132 + + MI_Restricted_Substances + ee08f647-79af-49f3-98c5-043480a0fed4 + + Quenched & tempered + Low alloy steel, 4330V, quenched & tempered + 743e0b8f-fc4b-4b51-b429-4add411a3d50 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 35b35d9a-b0e3-48ad-842c-7989acce53f7 + Mass + 41.913643917959945 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 6a9dcf43-279e-4b1a-b9e6-05b7f00e03df + Mass + 100 + + + + + + + 6 + 76.823358320083173 + + MI_Restricted_Substances + 022614af-ecf8-4797-af86-25b711d65e30 + + ede9c4dc + part_ede9c4dc-b959-4cd3-886d-d73c16ba410f + ede9c4dc-b959-4cd3-886d-d73c16ba410f + + + 5 + 65.1566377678684 + c6deee78 + part_c6deee78-ba90-46e1-bf50-943770fe74f5 + c6deee78-ba90-46e1-bf50-943770fe74f5 + + + 59.535038219548312 + + MI_Restricted_Substances + 5b4ea232-c032-4f8d-a633-3b059e93651a + + 36%Co steel + Hard magnetic alloy, 36%Co steel + a4a505df-4b60-4496-8bca-af20cff0717c + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + ad5e3fec-5699-4265-9bff-4a5337d214e0 + Length + 90.222387896022937 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 64596daa-99ae-48b6-a37d-f3fa3730f7e4 + Area + 44.093146335376957 + + + + + 6.7441602967419483 + + MI_Restricted_Substances + e6461f0f-809d-4f17-8ea9-b85d7219639a + + Glass/phenolic honeycomb, ±45° fabric (0.128) + Glass/phenolic honeycomb, ±45° fabric (0.128), L Direction + aa3e1d42-4b4a-4b04-8309-006cc76ba803 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 5d230694-57bd-43d6-8494-9ab67a963c63 + Length + 58.901326525444787 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + bfed3d36-890a-457d-ad16-0e33003a5c8e + Length + 66.634482362603066 + + + + + 6.7441602967419483 + + MI_Restricted_Substances + f17caf23-cca0-47c9-a216-c29c1533ed51 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 50B60, oil quenched & tempered at 315°C + 576ada76-20e0-4680-8d0d-354906e8d430 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + a086531c-9ed6-445c-8011-ad89a896fb3f + Length + 4.8088964097243254 + + + + + 6.7441602967419483 + + MI_Restricted_Substances + 2a840794-eac4-4f77-90ba-f84bce518c0f + + Glass/phenolic honeycomb, 0°/90° fabric (0.055) + Glass/phenolic honeycomb, 0°/90° fabric (0.055), L Direction + b0d69130-2193-4218-8e43-bdc5990b9811 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 6443405a-6eb7-4cdb-9e03-9151c4d973e5 + Area + 13.542481331872978 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 8ef1914b-82a3-4b4c-8136-82b22c52426d + Mass + 100 + + + + + 6.7441602967419483 + + MI_Restricted_Substances + 1d9c8629-4a1d-4aaf-bb7c-ba7a97eef5f5 + + Normalized + Carbon steel, AISI 1340, normalized + 8ac39931-3435-41fe-9cd4-79a44528d043 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 3add1843-5548-42ea-8cd5-a6bc7ab62e06 + Mass + 100 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 4f7fb088-a550-4303-8c43-bb2c5f9d463f + Mass + 100 + + + + + 6.7441602967419483 + + MI_Restricted_Substances + 2656c71b-a4ea-4fc6-9139-adc0deae35b1 + + 65wt% glass, biaxial lay-up + Polyester/E-glass fiber, woven fabric, 65wt% glass, biaxial lay-up + 205d1b5d-8be2-451c-abd9-7db894c4f25e + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + d8276af2-5e1b-425b-b32e-6a243751c623 + Mass + 100 + + + + + 6.7441602967419483 + + MI_Restricted_Substances + d07fe7e1-e745-42a8-9761-6f68c2a7bd1b + + Annealed + Low alloy steel, AISI 4150, annealed + ff18eea8-708c-4a5e-b423-dfd95959a9ec + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 9ef576f6-f156-400a-b8aa-0036675290ba + Mass + 100 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 392e0c5f-13c3-4c87-bc47-2eb2e6905400 + Mass + 100 + + + + + + + 7 + 33.034452997629742 + c4d2141a + part_c4d2141a-9ba8-46ec-9f1b-cd0d9b30cdcf + c4d2141a-9ba8-46ec-9f1b-cd0d9b30cdcf + + + 30.825772197370309 + + MI_Restricted_Substances + 0afa77bf-df9b-456c-8c48-3c84b1ccd2e0 + + Low density glass-sphere filled + Bisphenol molding compound (low density glass-sphere filled) + cb3eb454-1ec1-4bea-a815-1fb838a21831 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 31e23a0f-0a29-4e65-89b2-d93541db603e + Mass + 100 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + bc72ef57-53db-4fe6-aaaa-ad09ba171161 + Area + 92.217149721559679 + + + + + 23.058075934209896 + + MI_Restricted_Substances + 50342378-5548-45ea-9a21-c0f16c6dcb1a + + Steel, terne coated + Coated steel, steel, terne coated + 5776bdfe-4912-49c1-85d3-0713d6a6d0fe + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 8fbb6564-41cb-4784-afb4-598244cd31d6 + Mass + 100 + + + + + 23.058075934209896 + + MI_Restricted_Substances + 67ea6f19-34d5-40af-9b8c-059058fd840a + + Oil quenched & tempered at 205°C + Carbon steel, AISI 1080, oil quenched & tempered at 205°C + d8af9b19-e096-4e1d-a96e-77f0e70f87a9 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + ae9b8fa6-82e4-4518-a408-29804f7900ec + Mass + 100 + + + + + 23.058075934209896 + + MI_Restricted_Substances + e6b45bea-dec9-4b91-996a-885bb0c31f8d + + Glass, S grade (10 micron monofilament, f) + Glass, S grade (10 micron monofilament, f) + e4923503-0e75-4099-909f-cd195156daf8 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 225b44b1-2efa-48de-93d8-03f8ecd7ef75 + Mass + 100 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 163fc9e0-4602-455c-b0d0-7fa5bffbe4ef + Mass + 100 + + + + + + + 9 + 28.289836565167565 + 594a4dd2 + part_594a4dd2-ce0c-4965-9bb3-36af1a32b5a7 + 594a4dd2-ce0c-4965-9bb3-36af1a32b5a7 + + + 44.68628249349365 + + MI_Restricted_Substances + b1b14aff-8354-447c-9883-df4969a517a3 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 86B45, oil quenched & tempered at 315°C + 4f79bf51-0531-4f50-bb8a-df6902de48cd + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + bc48191a-0d55-4729-a6db-1bac764cd512 + Mass + 100 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + a44b17b1-ae57-4836-ad1a-9d8cb71ad42e + Length + 4.8352695558384378 + + + + + 11.06274350130127 + + MI_Restricted_Substances + f7146c54-87d0-4395-b57a-86bb0c43716a + + ASTM A106 Grade B + Structural steel, ASTM A106 Grade B + ca1f9eb2-30f5-42c6-937a-3ea2ca2f4d2a + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 0aded0e8-09f1-41e5-b847-8182cf58fed2 + Mass + 100 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 6ee5135e-0662-4010-a3a7-be01a3fd96f6 + Mass + 100 + + + + + 11.06274350130127 + + MI_Restricted_Substances + 81ce98b3-d459-4695-9dd9-d53244be47ed + + Annealed + Carbon steel, SA216 (Type WCC), cast, annealed + 3c64a19c-38df-4a75-8dea-04697e832cb8 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 29e1accd-4ed8-4250-8ee8-e3f9e5b155af + Mass + 100 + + + + + 11.06274350130127 + + MI_Restricted_Substances + d41a9d62-4a05-4cd7-98ac-f1acb5d39658 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 9255, oil quenched & tempered at 540°C + b02cf418-c984-4b2d-81f3-c2c6bdc78eb8 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 1ba1cac9-17cb-4ede-a6f6-18a75f2373ce + Length + 56.162055421696067 + + + + + 11.06274350130127 + + MI_Restricted_Substances + 7a62318a-eff2-4f36-9925-ee919c5b4369 + + S235J + Structural steel, S235J + 4afca0bd-8482-4501-b933-c2c4f00a1e43 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + f1346717-38e4-4925-a6b6-0645ca8949e5 + Length + 52.162394277827062 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 13e8ee9b-153a-4fd9-81dc-cc83a571e7ec + Area + 93.833674115051366 + + + + + 11.06274350130127 + + MI_Restricted_Substances + db7d255c-6269-4097-a5aa-e18a13019915 + + FR-4.0 (Df < 0.01 at 10GHz), Epoxy/Glass fiber, PCB laminate + FR-4.0 (Df < 0.01 at 10GHz), Epoxy/Glass fiber, PCB laminate + 00c7da4f-fc24-4233-a13b-93d9b85f404d + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 94055cf8-2c15-465d-96f8-ce0b25246c07 + Mass + 100 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 6138dc7b-3602-45ac-94bd-4847d94d1570 + Mass + 100 + + + + + + + 2 + 97.771993790647016 + ac138146 + part_ac138146-5194-40a7-afa3-349c4345f39a + ac138146-5194-40a7-afa3-349c4345f39a + + + 11.777257319436064 + + MI_Restricted_Substances + afc85ad6-9e99-44a7-a959-f75ddbacff15 + + FR-5, Epoxy/Glass fiber, PCB laminate + FR-5, Epoxy/Glass fiber, PCB laminate + 066fbaf0-5b98-435c-b493-64d5892cadde + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + ad47d1f6-bd11-488e-b825-3147dd8a0b0d + Mass + 100 + + + + + 44.11137134028197 + + MI_Restricted_Substances + 3b818b25-e6de-4e5c-b546-e97c68e10225 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 5046, oil quenched & tempered at 650°C + 3b208f3b-1113-4f4b-a983-943d22590029 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + ad68552e-cc31-494a-b899-0363e52ff508 + Mass + 100 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + ca93ef19-cf1a-4ea2-8aa5-c7e1207b8901 + MassRemoved + 79.367918558124416 + + + + + 44.11137134028197 + + MI_Restricted_Substances + c15a44c3-d8be-4ae8-9a58-281f13b731cd + + YS420, cold rolled + High strength low alloy steel, YS420, cold rolled + cbbd1922-4a1d-4ccd-bb7b-1f6200ea54d2 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 757d131d-bfd7-4b49-9b42-d0a25856f793 + Mass + 100 + + + + + + + 2 + 19.663618653856041 + ee26367d + part_ee26367d-0bcb-470b-a527-67a3b872892d + ee26367d-0bcb-470b-a527-67a3b872892d + + + 100 + + MI_Restricted_Substances + ed1b937b-1738-408f-9591-bd3e40cc5e33 + + Quenched & tempered + Low alloy steel, D6AC, quenched & tempered + 8cde10fa-e9a7-4913-b5cc-927b86a872e8 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 1947e9d9-a9d2-4f50-8e37-0e15f16f5504 + Mass + 100 + + + + + + + 1 + 85.8339871679591 + + MI_Restricted_Substances + 19db41d7-f431-4cae-8977-8bdab8435374 + + 4c8dc587 + part_4c8dc587-a97e-4506-8131-725ceaa59696 + 4c8dc587-a97e-4506-8131-725ceaa59696 + + + 5 + 1.9630376258692879 + + MI_Restricted_Substances + 80083213-3621-42c0-9e23-cdaa30c759e6 + + 688d58f6 + part_688d58f6-c50e-49e8-9a82-b2d516050610 + 688d58f6-c50e-49e8-9a82-b2d516050610 + + + 6 + 55.042830787153378 + eeb0858c + part_eeb0858c-7c6f-4c91-b611-86f355ae9e89 + eeb0858c-7c6f-4c91-b611-86f355ae9e89 + + + 100 + + MI_Restricted_Substances + 3606ab13-13f3-49fb-bded-2e3470bcf7d9 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 81B45, oil quenched & tempered at 650°C + a28c71b6-8dc4-4c8d-8b5d-2fbc0092dab9 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 26d4f20b-6511-40ab-befd-fb38f522e745 + Mass + 100 + + + + + + + 8 + 57.843534442523278 + 2a3b25e9 + part_2a3b25e9-fca6-4e5f-9b98-fe2ce973810f + 2a3b25e9-fca6-4e5f-9b98-fe2ce973810f + + + 26.934134926150616 + + MI_Restricted_Substances + 2f1d8340-2d1b-4b7a-b236-f9924123bb33 + + ASTM A36 + Structural steel, ASTM A36 + 6f0f316e-86cd-411c-a55d-2df8bb735b25 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + bea52eff-5ecd-443b-beb2-7d6157ad5338 + Mass + 100 + + + + + 18.266466268462345 + + MI_Restricted_Substances + d02817f7-7500-4fcb-8c34-40927da681a5 + + Quenched & tempered + Carbon steel, SA216 (Type WCC), cast, quenched & tempered + 45174c87-f58a-4227-9e14-2b3b74d04890 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 33219f1e-6ff6-4254-a2d5-02fe3c0ad4c2 + Mass + 100 + + + + + 18.266466268462345 + + MI_Restricted_Substances + 8245dc6c-3d61-4f18-82c8-6fb946e1582c + + Glass foam (0.13) + Glass foam (0.13) + faf424bd-e724-47e9-ad77-070fc9b8c516 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + c79a3353-8f86-4943-bf90-27ce904735ac + Length + 79.649383472115446 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + e3c506d8-8c0f-4f71-b852-52a049df532c + Mass + 100 + + + + + 18.266466268462345 + + MI_Restricted_Substances + 4ad00a9e-92b5-4e28-92a0-409da4495c54 + + Oil quenched & tempered at 205°C + Carbon steel, AISI 1060, oil quenched & tempered at 205°C + e179e37a-2ffe-48ba-8fd5-38f96742c82c + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 6fe9513f-2ebb-4255-8b57-5175a2fb5301 + Mass + 100 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + c1365da9-9c8e-479a-844d-31329ca62c6f + Mass + 100 + + + + + 18.266466268462345 + + MI_Restricted_Substances + 74efd204-f3f9-4a40-b3a6-0b48295b815b + + Annealed + Low alloy steel, AISI 4820, annealed + 74fbb2dd-5b0b-45a7-8d1a-97f82013df63 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 6115d183-bb4f-4295-b816-54a7a78a79b4 + Mass + 47.649450063542211 + + + + + + + 7 + 44.481351619810496 + 752b9eaf + part_752b9eaf-5396-46c5-bcbc-d117e67e2f96 + 752b9eaf-5396-46c5-bcbc-d117e67e2f96 + + + 22.263660711359073 + + MI_Restricted_Substances + a7ada434-62e4-411d-9c85-56dd9d44f094 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 4037, oil quenched & tempered at 425°C + 5208a1a6-321f-4a4f-bcbe-15661555a999 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 9a7ab126-e2ea-4b43-82a2-eca4d9ae391a + MassRemoved + 73.804193909188825 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + c5f7c1a0-78e3-4e38-9110-c5ffcc28052e + Length + 72.204110385945114 + + + + + 38.86816964432046 + + MI_Restricted_Substances + 7b1fcb28-a127-417b-978f-6a5c58305d24 + + Annealed + Carbon steel, AISI 1118, annealed + b0b5ed93-ca11-440d-a2a1-664c6bcac957 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + 5c79f499-9c93-41ec-bd6d-d37c328af4a8 + Mass + 100 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + ad5ae1ba-3a86-473d-9ba7-7c9f207b9d6e + Mass + 100 + + + + + 38.86816964432046 + + MI_Restricted_Substances + 82eabba3-2697-4f74-a530-ae27f5e33ffe + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 50B46, oil quenched & tempered at 540°C + 54555277-80b6-4c9a-8da3-b8e285ae98b2 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 9ea0a363-7c54-4a24-8b4a-8cbdbe6c35a4 + Length + 23.485833463950936 + + + + + + + 2 + 74.286081862769123 + 2e0b4bbe + part_2e0b4bbe-5824-4f04-9403-e4f67aec2048 + 2e0b4bbe-5824-4f04-9403-e4f67aec2048 + + + 83.898301135701274 + + MI_Restricted_Substances + aa4540cb-3277-459f-a69a-ca324ddd0125 + + Glass ceramic (N0) + Glass ceramic (N0) + 549b49a4-59fe-4e55-983e-59f6201188c0 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + b960c1ca-3311-4ced-ab97-6bfb02fd2191 + Mass + 100 + + + + + 8.0508494321493629 + + MI_Restricted_Substances + 2c2dc98a-ef9d-420d-aa00-25552c8f8bab + + S355J + Structural steel, S355J + 2a660257-441e-4c57-8125-05d3218ad94e + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 72ef15df-ca91-48a0-bbd7-1ebdfb8bdcd3 + Mass + 100 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 9742cee8-239e-48ac-be60-9892713d4e00 + Mass + 100 + + + + + 8.0508494321493629 + + MI_Restricted_Substances + 356303d7-c574-4db7-80f9-427e176a5308 + + 40CrMoV13-9, quenched & tempered + Low alloy steel, 40CrMoV13-9, quenched & tempered + a3459071-3026-41a8-a904-69f211082c8a + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 7947cbf5-9a0f-4dfd-a747-1febff1d0340 + Mass + 100 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + d863c646-cf1e-4b41-82a6-a226ab0dec22 + Mass + 100 + + + + + + + 5 + 70.405681510644811 + 8d0be01b + part_8d0be01b-cd46-49cb-81ec-b2b4c50964cf + 8d0be01b-cd46-49cb-81ec-b2b4c50964cf + + + 7.14154662896951 + + MI_Restricted_Substances + 9ce914d8-75c1-4c5f-8c57-11c0e62b2cfa + + ASTM A299 Grade A + Structural steel, ASTM A299 Grade A + 780ef8f9-0a79-4f8b-94f4-f1d0c4dec462 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 08a232b4-2a98-4633-bbf3-baed71150706 + Mass + 100 + + + + + 11.607306671378812 + + MI_Restricted_Substances + b00ee3d8-d653-4c76-8154-c2f07820ceda + + As rolled + Carbon steel, AISI 1080, as rolled + 8ba7ceb6-645f-4fef-9c4a-c447e49d1da4 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 01d0d6b3-f68f-416e-b445-f48b3a3ce19e + Length + 72.121478231680342 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + e1cde062-59c4-42ad-a43b-9c66e8760037 + Mass + 100 + + + + + 11.607306671378812 + + MI_Restricted_Substances + a371ea54-94e0-4a85-9b8a-856cf82f2e1d + + SAE 4130, cast, quenched & tempered + Low alloy steel, SAE 4130, cast, quenched & tempered + ed9f8659-9b73-4ff7-a9ac-e4273cb6ab76 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 7092b96c-cefa-4e67-8da6-9c7779335375 + Mass + 100 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 8c7953d2-68b5-4d7e-9f01-0d34f54c3fc2 + Mass + 100 + + + + + 11.607306671378812 + + MI_Restricted_Substances + 546a4247-5e3b-4adb-bc7e-3fc87f992447 + + Glass/phenolic honeycomb, 0°/90° fabric (0.055) + Glass/phenolic honeycomb, 0°/90° fabric (0.055), W Direction + f65d11fe-0f04-4ba2-ac2d-5542ec8c2670 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 7580986d-3ee6-4c6a-9a94-6b99b6ed12f2 + Mass + 100 + + + + + 11.607306671378812 + + MI_Restricted_Substances + 1a53b354-59b1-4129-a78d-0bfe95923541 + + Normalized + Carbon steel, AISI 1117, normalized + 02a05e20-e8b9-4787-aeda-496e299a562e + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 3ec679b8-7a36-46ad-bdd5-4ba75842cb86 + Length + 81.291739214813219 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + e29497ec-64a7-44e2-b3a8-b3f770ba7c78 + Area + 57.871781828753541 + + + + + 11.607306671378812 + + MI_Restricted_Substances + 54bbb9b3-efe0-473b-ac70-caea9951e470 + + Normalized + Carbon steel, AISI 1015, normalized + 8ad15042-122a-4394-bcb0-2a56ed110de8 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 2008b7c6-e12f-4136-9367-de9f2a6d072d + Mass + 100 + + + + + 11.607306671378812 + + MI_Restricted_Substances + 4b01d1e1-0f4c-4861-a797-7ea504ca38c4 + + Annealed + Low alloy steel, AISI 5150, annealed + c366e688-47cf-4eaf-acd3-370c008eea59 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + f616899b-8d17-422b-b9ba-090eb825b8f1 + Mass + 100 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 3e713ee4-69e8-40e1-9bd3-a2e20b2b66b0 + Area + 76.453028049530928 + + + + + 11.607306671378812 + + MI_Restricted_Substances + 181b484f-4ada-4e9e-8c47-103ae23d76c3 + + Quenched & tempered + Low alloy steel, AISI 8740, quenched & tempered + c5f7e172-3732-466c-8c3a-e6ecc194ca4f + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + fcb2b75a-217b-440e-a1cf-af410418a94e + Mass + 100 + + + + + 11.607306671378812 + + MI_Restricted_Substances + dfe65b4e-afb8-4397-a303-1266359ccfda + + Quenched & tempered + Low alloy steel, Hy-Tuf, quenched & tempered + 8c447b96-27ef-469f-bb52-4c30c221dc6c + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + b61e3ed4-60fa-43e8-8492-b21edf314aad + Mass + 100 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 45dd58ca-a1a6-4d56-a27e-39e6e13aab7c + Mass + 100 + + + + + + + 6 + 87.74853874358746 + fc816c81 + part_fc816c81-a4dd-4dbd-b057-77d33b2f6164 + fc816c81-a4dd-4dbd-b057-77d33b2f6164 + + + 81.516732918804863 + + MI_Restricted_Substances + 90514ab4-75b3-48a9-9a07-98eb8f83ef81 + + As rolled + Carbon steel, AISI 1015, as rolled + 19c6e2e4-b12f-4b6c-ab24-9d6ae0efe7a4 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 20d186fd-4564-4e69-be02-a1892a71baf7 + Mass + 100 + + + + + 3.6966534162390277 + + MI_Restricted_Substances + 8643d806-94c5-42f9-9ffc-4c21a6e16bd0 + + Annealed + Carbon steel, AISI 1141, annealed + 99975f5e-3441-4c19-abe7-1213b862408f + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 9adb3451-4da0-4f78-82b2-c2a889364b23 + MassRemoved + 64.340470481822493 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 08361ab9-fa03-427d-9348-179d5086d15d + Mass + 100 + + + + + 3.6966534162390277 + + MI_Restricted_Substances + b067ed19-a836-41f7-9267-d9b04647d09f + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 5150, oil quenched & tempered at 650°C + 9b87de39-67d3-4897-880a-12702f2e28b5 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 025f356b-b30a-47cf-b1f8-907108147f00 + Length + 59.377822540410705 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 8113c9c1-0bed-4c38-8ae7-0d1b761e7311 + Mass + 100 + + + + + 3.6966534162390277 + + MI_Restricted_Substances + e8c6d73a-bd7a-4ef3-ae11-48e45d4a5515 + + Glass, E grade (0.4-12 micron monofilament, f) + Glass, E grade (0.4-12 micron monofilament, f) + cb5eb97c-7540-4e16-875d-0bb131bb3e50 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 8e626599-1413-442a-a50e-98fc9b5e5328 + Mass + 100 + + + + + 3.6966534162390277 + + MI_Restricted_Substances + 53268754-75cd-4016-8ed0-2577d32f766e + + As rolled + Carbon steel, AISI 1060, as rolled + 04d19f03-af42-47d7-8f68-fe846602a7be + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + b2cfdd42-6c18-4810-b594-cf360f47cb55 + Mass + 93.583163243524339 + + + + + 3.6966534162390277 + + MI_Restricted_Substances + 82eabba3-2697-4f74-a530-ae27f5e33ffe + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 50B46, oil quenched & tempered at 540°C + 10c7c9ea-394a-4280-8af9-bda6bfd5e307 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 84fa5022-2526-4aa2-9fd1-4b989f0d0b21 + Mass + 100 + + + + + + + 3 + 75.5753188745935 + 6f4ea3c5 + part_6f4ea3c5-a560-45f6-85b8-efcc4021f17d + 6f4ea3c5-a560-45f6-85b8-efcc4021f17d + + + 29.577397382621374 + + MI_Restricted_Substances + f82520a6-b061-4bc7-b873-40211a51aca5 + + Glass/phenolic honeycomb, 0°/90° fabric (0.035) + Glass/phenolic honeycomb, 0°/90° fabric (0.035), L Direction + c60b55d8-4b8d-4131-a9b6-c56872672986 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 947e4440-d7c0-46d4-aa13-288ef2c8111e + Length + 5.5953458443262365 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 7afbe458-61cb-451c-8c13-39a13573658c + Mass + 100 + + + + + 70.422602617378629 + + MI_Restricted_Substances + ae5812e1-18fd-4a4d-aaa2-a04ca5e84b7a + + YS400, hot rolled + Dual phase steel, YS400, hot rolled + 795d3e5d-15f9-4a9f-bea5-e2c87939073d + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 2a150d7e-f85b-4124-a8f4-740f7c7d4a82 + Length + 35.414769423853031 + + + + + + + 6 + 43.720106009263596 + + MI_Restricted_Substances + 544dcb08-b28a-4b6c-9af7-20182b64b0d5 + + 20e6b945 + part_20e6b945-da4f-4a53-8dff-867f7572e201 + 20e6b945-da4f-4a53-8dff-867f7572e201 + + + 1 + 47.330395666570588 + 70bb5351 + part_70bb5351-c3a4-4d02-8ddd-bab2abc64736 + 70bb5351-c3a4-4d02-8ddd-bab2abc64736 + + + 4.8230129782217617 + + MI_Restricted_Substances + db7d255c-6269-4097-a5aa-e18a13019915 + + FR-4.0 (Df < 0.01 at 10GHz), Epoxy/Glass fiber, PCB laminate + FR-4.0 (Df < 0.01 at 10GHz), Epoxy/Glass fiber, PCB laminate + 8b451981-2b7a-4e40-9ac4-8c12fc1333fc + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + bd408aff-759c-48ed-9276-eadd50a0b216 + Mass + 69.312933166191414 + + + + + 23.794246755444561 + + MI_Restricted_Substances + dec2859d-9573-49bd-846a-5e2a288c063f + + Soda barium glass + Soda barium glass + 9f39f2a6-0599-4e0c-824c-79c6f486a44d + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 53eae939-c16c-4057-8c64-f9c12cb2f5ef + MassRemoved + 45.088557873428122 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + c27ee4cd-2b72-4c46-b68a-9c1026279818 + Mass + 100 + + + + + 23.794246755444561 + + MI_Restricted_Substances + 6ad310ec-db2b-43b1-afa1-9b6ddae5880c + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 94B30, oil quenched & tempered at 425°C + e82ad814-b0c3-4722-9b6f-71ac40e64ee6 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 6b869a1e-25a3-43f4-bac6-3cff261c374f + Mass + 100 + + + + + 23.794246755444561 + + MI_Restricted_Substances + b4c065d7-6405-44fb-82cf-24ca2072f5c9 + + 300M (high carbon), quenched & tempered + Low alloy steel, 300M (high carbon), quenched & tempered + 4e99b4bd-16c5-4612-91cb-3952e0dc3898 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + f4876557-b875-4b71-8d35-029df65ce865 + Area + 63.322926621568818 + + + + + 23.794246755444561 + + MI_Restricted_Substances + 9df55457-5300-4ddb-b92e-122b5c121621 + + Glass and mineral filled, encapsulation, molding + Novolac (glass and mineral filled, encapsulation, molding) + 3576fa9a-49e7-44f7-a99d-6775a875d4bd + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + d52732f0-161d-4e4c-8463-3a4e85c75d72 + Mass + 100 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + b2cb5a54-a8ee-4c3a-9a07-7e083363d2ee + Length + 34.494777272685795 + + + + + + + 7 + 57.098844860260769 + + MI_Restricted_Substances + 80083213-3621-42c0-9e23-cdaa30c759e6 + + 0fcb7c9e + part_0fcb7c9e-dbdd-4c19-ad50-ddf5a00e01c2 + 0fcb7c9e-dbdd-4c19-ad50-ddf5a00e01c2 + + + 6 + 45.430244340296014 + 0576d8c4 + part_0576d8c4-c39b-4493-b636-374dba713f25 + 0576d8c4-c39b-4493-b636-374dba713f25 + + + 83.058517558061766 + + MI_Restricted_Substances + 117e786a-5af5-40b0-9511-e7c38ca3cfc8 + + Glass/polyimide honeycomb, ±45° fabric (0.072) + Glass/polyimide honeycomb, ±45° fabric (0.072), W Direction + f8101f90-713a-4793-b01f-ad55639b49cb + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 1c3b25a1-0b5c-4e0e-890c-6563239f6ce2 + Mass + 100 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + 56b0591d-04d3-4e8b-b09e-4b9ccad5a5ad + Length + 28.862317152722888 + + + + + 16.941482441938234 + + MI_Restricted_Substances + 1d0ad45b-4da7-4c47-9850-754d0f67c02a + + Glass/polyimide honeycomb, ±45° fabric (0.096) + Glass/polyimide honeycomb, ±45° fabric (0.096), W Direction + 42bf9baa-39d4-483b-85de-46e4326430c5 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + 3faf0869-1db6-47e3-bc34-fc636587259d + Mass + 100 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + f16f3737-1e44-4ce0-a379-43b7f3ad7e4c + Mass + 100 + + + + + + + 9 + 46.750087592168754 + + MI_Restricted_Substances + a0987114-e9d2-4390-9d0f-e47283d2f4d0 + + c4325510 + part_c4325510-db9e-4f15-9ef8-66a97e028988 + c4325510-db9e-4f15-9ef8-66a97e028988 + + + 5 + 18.38959623984508 + + MI_Restricted_Substances + 544dcb08-b28a-4b6c-9af7-20182b64b0d5 + + 85107a1d + part_85107a1d-27db-4878-a5b4-fc404d4c5668 + 85107a1d-27db-4878-a5b4-fc404d4c5668 + + + 7 + 15.805600730611758 + c75365fa + part_c75365fa-98cf-40aa-9d90-68b2529b0508 + c75365fa-98cf-40aa-9d90-68b2529b0508 + + + 24.249886825797095 + + MI_Restricted_Substances + 01ec383d-8c37-48b7-80b4-e1f3106fae04 + + Alumino silicate - 1723 + Alumino silicate - 1723 + 0c05f18a-1f67-4ac8-b0da-7c71265eacd5 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 6798addc-42ba-4b2f-a691-c10c0bffb185 + Length + 76.796792948989562 + + + + + 18.937528293550727 + + MI_Restricted_Substances + a762be42-466e-4a8e-8819-d5270e44d056 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 5046, oil quenched & tempered at 425°C + ca4c6fb3-b09a-4c8d-9884-cf50c1071638 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 71abf1c0-362e-4877-8785-be423591c697 + Mass + 100 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 9caa083b-cce8-40d0-ba47-b8bffba47504 + Area + 24.17301532075415 + + + + + 18.937528293550727 + + MI_Restricted_Substances + e721d8b7-256a-4b7b-af09-6b40d8309979 + + water quenched & tempered at 425°C + Carbon steel, AISI 1040, water quenched & tempered at 425°C + 1c24ebe1-b57e-4c56-92e1-6df2174a2e0b + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 1675e5e7-c66b-420c-9bf8-e2949d6a1a7f + Mass + 100 + + + + + 18.937528293550727 + + MI_Restricted_Substances + e721d8b7-256a-4b7b-af09-6b40d8309979 + + water quenched & tempered at 425°C + Carbon steel, AISI 1040, water quenched & tempered at 425°C + df500fac-ba7d-42f6-894b-69ff466b31c7 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 6a1a0d20-cecf-47af-92be-015ee0b17539 + Mass + 100 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + d8b5098d-8109-4eb3-9ca4-c62419c9ffd3 + Area + 25.70968541582566 + + + + + 18.937528293550727 + + MI_Restricted_Substances + 9e6962c2-d850-4285-97e5-fbb27dbc0447 + + water quenched & tempered at 425°C + Carbon steel, AISI 1050, water quenched & tempered at 425°C + 5c28dcb5-193b-4e9c-8623-70f937166824 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + ce5e29df-02de-4836-a411-8d4e080128c2 + Mass + 100 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 5f382dc7-27c8-42c0-93e9-133ece0d9c5d + Mass + 100 + + + + + + + 9 + 49.851170112309589 + afe15050 + part_afe15050-4a7a-48cc-86c0-a34446c4d25e + afe15050-4a7a-48cc-86c0-a34446c4d25e + + + 100 + + MI_Restricted_Substances + 817b973c-3e12-4b5f-96b3-89b05d14d76c + + ASTM A500 Grade C + Structural steel, ASTM A500 Grade C + 471ba675-c826-419d-9111-c902a4a1d4cb + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + c3dd28cd-7242-433e-a8b9-f5ec656edb2f + MassRemoved + 74.795963510310258 + + + + + + + 9 + 79.07995198810471 + + MI_Restricted_Substances + 5fd070ef-bb1b-4857-abcf-7eda481ecfbe + + fd38543e + part_fd38543e-2ac8-46c6-9945-e879f1e6d043 + fd38543e-2ac8-46c6-9945-e879f1e6d043 + + + 4 + 91.771853105990147 + 2fc0eed1 + part_2fc0eed1-9aab-4b0e-8636-67dc838dec78 + 2fc0eed1-9aab-4b0e-8636-67dc838dec78 + + + 47.4155172926446 + + MI_Restricted_Substances + 06a05a3e-1419-430e-bd94-120296b4c49e + + Normalized + Low alloy steel, AISI 9255, normalized + a67754f0-ea35-42e0-9169-80df7eb59057 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 04f597ff-4d91-4149-8140-e709349f2e3f + Length + 68.854388906086967 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + e92babea-36ac-4c89-90e2-b88b7b14daee + Mass + 100 + + + + + 10.51689654147108 + + MI_Restricted_Substances + f931cdfe-568b-40b5-b238-ea22a815f312 + + ASTM A537 Class 1, normalized + Structural steel, ASTM A537 Class 1, normalized + 24ff9c57-a699-487d-b778-bc706c394c05 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 9fed9a45-3a29-4476-805c-6edd642feb3e + Mass + 71.037765066622654 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 33605c7b-486e-47cd-81f3-681f399de83c + Mass + 100 + + + + + 10.51689654147108 + + MI_Restricted_Substances + 44a3cdc8-1092-45c0-be37-1802daa92d30 + + Borosilicate - 7052 + Borosilicate - 7052 + a8b12cda-618b-44bd-bc34-a9b0333ff458 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + aa7cf824-fbef-48ca-84c5-ae19e80961ba + Mass + 100 + + + + + 10.51689654147108 + + MI_Restricted_Substances + 36e1311d-2e77-4147-8cf3-c4cdce6f6c7f + + Grade F9 + Alloy steel, 9Cr-1Mo, Grade F9 + 4c8622ed-a969-4911-b5bf-d1ff0098db47 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + c55b65b1-28c1-48ba-a11e-9cae31e736bb + MassRemoved + 9.684168458769177 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 01fe6c09-b96c-48cc-9bbb-32ace592981c + Area + 56.77588300629327 + + + + + 10.51689654147108 + + MI_Restricted_Substances + f0e0782d-fdaa-43d9-ab8f-24d22dc5b6dd + + Glass ceramic - 9608 + Glass ceramic - 9608 + 7bbdc680-6d10-4890-b5bf-03906ee4f30c + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 0002114a-bdce-4ef1-9acc-ec6dc50574a2 + Area + 51.10335394325822 + + + + + 10.51689654147108 + + MI_Restricted_Substances + aec2777b-f126-4f12-b748-b94bf7393f2a + + Oil quenched & tempered at 650°C + Carbon steel, AISI 1060, oil quenched & tempered at 650°C + f1a82f7f-8728-4954-b9fb-caf45531c9f5 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + f5295f87-f76e-4f3a-922b-f14f6ec81595 + Mass + 100 + + + + + + + 2 + 85.746784035929849 + b1d8c895 + part_b1d8c895-0906-409d-99e6-4c5919fb9b6b + b1d8c895-0906-409d-99e6-4c5919fb9b6b + + + 3.2550883028912772 + + MI_Restricted_Substances + e1d1747e-ff7a-4817-9dcc-e889d45170d7 + + ASTM A500 Grade B + Structural steel, ASTM A500 Grade B + 79f1b5c2-32ef-4860-90e7-30cbe94313be + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 30bb6304-7941-4b04-8e75-0618496f653b + Mass + 100 + + + + + 24.18622792427718 + + MI_Restricted_Substances + 91d7e1bd-d353-4eb1-9634-286e8e69d0d5 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1141, oil quenched & tempered at 540°C + 4fbd0d4b-53a4-4b73-91a8-783fd0110759 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + d376f895-8b83-43a1-82ff-1c938cb2c6a0 + Mass + 100 + + + + + 24.18622792427718 + + MI_Restricted_Substances + 1a7c6e51-066a-4f25-9c48-76ca6fbd8330 + + Glass ceramic - 9658 + Glass ceramic - 9658 + db2f5774-4815-4522-8fd0-cf95620dee65 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 695799ab-341b-4eb6-a057-79255d347a9d + Mass + 100 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + ee9b5a3d-3387-4007-8c05-5b752e0712c4 + Mass + 100 + + + + + 24.18622792427718 + + MI_Restricted_Substances + 9b08ec7e-e481-47fa-a36b-849db7ef2432 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 8640, oil quenched & tempered at 425°C + 219af804-fba3-4969-95d9-15acd6d89103 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + c8e629d8-7f63-4bf7-a48d-1965f7221999 + Length + 96.1120123956874 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 8857c24c-af73-48d3-81f8-550c4aa46582 + Mass + 100 + + + + + 24.18622792427718 + + MI_Restricted_Substances + 385dc8fe-7c8c-4fe3-9382-2a7182e05f0d + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 5130, oil quenched & tempered at 425°C + 7b333b0a-326f-4a21-afec-f792c08d4d8d + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 9ffa563d-2079-4734-86f2-dba1ca12318c + Mass + 100 + + + + + + + 7 + 62.57189580359119 + + MI_Restricted_Substances + b49e47be-bf96-4bf1-9366-5c1b840267d4 + + 60239b93 + part_60239b93-5be2-4036-967e-2afeb7065fd6 + 60239b93-5be2-4036-967e-2afeb7065fd6 + + + 1 + 34.507880003428035 + 5a030026 + part_5a030026-d9e8-4a55-9529-1de2a3eb8198 + 5a030026-d9e8-4a55-9529-1de2a3eb8198 + + + 42.039970281552506 + + MI_Restricted_Substances + 302db922-ffc4-4955-9a98-ddaa64c43d26 + + Borosilicate - 7720 + Borosilicate - 7720 + 56c9f4c4-33d4-4405-8dfe-36340475ce5f + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + d96f47c4-59ef-4dad-89d2-c976ed12a1d5 + Mass + 100 + + + + + 9.6600049530745817 + + MI_Restricted_Substances + e62ec0fe-66ca-4b17-88d1-609c5568e318 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 4340, oil quenched & tempered at 650°C + 369ebc5c-f45b-4a95-8dd5-80a361a5c326 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 40b73cfe-a6a1-424a-9960-11449ecd040f + MassRemoved + 66.544521211900062 + + + + + 9.6600049530745817 + + MI_Restricted_Substances + 2a821f5c-97b0-4a08-81b1-de3f1543fb44 + + Alkali strontium clear glass + Alkali strontium clear glass + bd589432-665c-4ef9-9d92-66b17a82eab6 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + b9fba68d-8a09-41e0-baab-68cc96db7559 + Mass + 100 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 9817b026-cd99-4ac4-91aa-7caa79f0c4c6 + MassRemoved + 21.932605291685373 + + + + + 9.6600049530745817 + + MI_Restricted_Substances + 9e4c9bc1-b3b6-42dd-a32f-7af4e3190d72 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 86B45, oil quenched & tempered at 205°C + 27d7103f-bcb4-4f37-820f-4a834cab7231 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 5d53a7ab-207c-4801-bd76-31d384a9faae + Mass + 100 + + + + + 9.6600049530745817 + + MI_Restricted_Substances + 874b8433-2e47-45c3-9c89-226428104214 + + Glass and mineral filled, heat resistant, molding + Novolac (glass and mineral filled, heat resistant, molding) + 6779227e-472b-405d-8086-e00c7a69ad00 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 3eca388a-b85a-4678-a38f-2f25f7b98507 + Length + 44.56747772384783 + + + + + 9.6600049530745817 + + MI_Restricted_Substances + fce75b98-deb8-41ba-b343-cc7385cdac54 + + Normalized + Carbon steel, AISI 1050, normalized + e306def9-6d76-4a97-888f-d39b9974c797 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + 1d8cba15-9394-42a6-a029-556bcffab1f8 + Mass + 100 + + + + + 9.6600049530745817 + + MI_Restricted_Substances + 2096ca77-9981-4fd5-9bc6-afe56b3bbbd4 + + Glass/phenolic honeycomb, 0°/90° fabric (0.096) + Glass/phenolic honeycomb, 0°/90° fabric (0.096), W Direction + 5795e66e-2a08-4228-bdb4-92539278f4f7 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + ea5d9b88-8e43-40da-a972-18d6fc15ed98 + Mass + 100 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + bbbc7617-982c-43f5-a5db-702f38e7ef69 + Mass + 100 + + + + + + + 5 + 85.552923560865651 + bc8e6ffa + part_bc8e6ffa-8b27-4321-8456-10bc4f3e7d19 + bc8e6ffa-8b27-4321-8456-10bc4f3e7d19 + + + 100 + + MI_Restricted_Substances + ccc92e6a-14f4-4ec6-9c3a-35ef3d6c9d8e + + Annealed + Carbon steel, AISI 1025, annealed + b64ecb2d-305d-4678-ad0f-08783eb2f374 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 5df561aa-20c7-4c4d-88c3-c0dc93b04997 + MassRemoved + 85.516044071650157 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 3f99c16f-500d-4cb8-969f-92035a8e9aae + Mass + 100 + + + + + + + 8 + 83.626185582776628 + 6a607cfd + part_6a607cfd-65b1-4917-8374-36d286e28ee4 + 6a607cfd-65b1-4917-8374-36d286e28ee4 + + + 68.800139971450037 + + MI_Restricted_Substances + bfd46ac9-4021-49b6-9656-d1e426bd1c79 + + Oil quenched & tempered at 205°C + Carbon steel, AISI 1340, oil quenched & tempered at 205°C + a7d39015-8698-4a5b-b3e0-e5b265a71b0e + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + f1f551c9-a71e-442a-b237-1b73837c0ad5 + Mass + 100 + + + + + 15.599930014274982 + + MI_Restricted_Substances + 0ff3d25e-2024-43a5-9654-bb095ad302ce + + YS260, cold rolled + Bake hardening steel, YS260, cold rolled + 08b7b0d1-0161-4afa-818d-142d5257881e + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + f4e8b684-fdbc-440b-bb16-bdd6e5dc66b1 + Mass + 100 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + a92f3b13-cc3b-4fdd-ac36-a2e4cd214b22 + Mass + 100 + + + + + 15.599930014274982 + + MI_Restricted_Substances + 190cf17e-dbc1-40c7-a3d1-cc776977cb47 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 50B46, oil quenched & tempered at 650°C + b353e0da-bc65-4e67-8422-3bce015ee9fd + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 995c18cc-f708-4937-b3bc-c4462d7a0f7f + Mass + 100 + + + + + + + 7 + 87.425868253887572 + + MI_Restricted_Substances + 2fcb534e-37c5-4b25-add8-ff02d2541953 + + c997a949 + part_c997a949-3734-4f78-9866-a447dfa7aa44 + c997a949-3734-4f78-9866-a447dfa7aa44 + + + 7 + 13.381408813121453 + 8e95a169 + part_8e95a169-d4b7-4e5d-bed6-a39cc76be1a5 + 8e95a169-d4b7-4e5d-bed6-a39cc76be1a5 + + + 32.832744546622386 + + MI_Restricted_Substances + 5dbabc2e-4263-4458-abe1-31a2ece9e122 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 5160, oil quenched & tempered at 425°C + 07e936d2-1016-4eb6-871b-573615c7c7c8 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + fd989855-85eb-43ef-93d9-84bc7a9a80dd + MassRemoved + 97.496870671164643 + + + + + 22.389085151125869 + + MI_Restricted_Substances + 0e008ce6-63df-4b25-81d6-02398cb9cc62 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 8660, oil quenched & tempered at 540°C + 3a848f66-c7d2-4da9-80f8-1ed69363c023 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 31563959-eb4b-46f7-a3d6-8b438a498e2b + Mass + 100 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 1ba4994a-d2f9-4463-a80f-696a35e15e73 + Mass + 100 + + + + + 22.389085151125869 + + MI_Restricted_Substances + 00cd78de-6c78-46f3-81b3-ec03803fa034 + + Glass/phenolic honeycomb, ±45° fabric (0.048) + Glass/phenolic honeycomb, ±45° fabric (0.048), W Direction + 44fa0e99-bc9e-4595-a489-d2e166778188 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 4337ff91-2af3-40da-a7fa-a67a94a428e9 + Area + 18.064450061910065 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + aff00a81-6a29-423f-95f3-99f6c4b2be77 + Area + 69.015454765882083 + + + + + 22.389085151125869 + + MI_Restricted_Substances + 53268754-75cd-4016-8ed0-2577d32f766e + + As rolled + Carbon steel, AISI 1060, as rolled + 6cb131f2-70f7-4b9c-b0b9-d120775abcb9 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 443eccb7-655d-431a-b524-43bed794f997 + Length + 68.815057058266859 + + + + + + + 6 + 76.043504511957764 + cae856bf + part_cae856bf-64b8-4a2c-b9ce-63fcd115b52e + cae856bf-64b8-4a2c-b9ce-63fcd115b52e + + + 25.048650254052436 + + MI_Restricted_Substances + d424fe56-b6f6-42c2-99fb-3e92da8ce70b + + Molding, glass filled + DAP (molding, glass filled) + 223cf977-1df7-49b8-82f4-67945bd2c3d3 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 668935b6-9930-4325-ad98-0c8a54f077d5 + Mass + 100 + + + + + 74.951349745947567 + + MI_Restricted_Substances + dec7564b-7c27-43fc-9f05-8965e384367a + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 51B60, oil quenched & tempered at 540°C + a6f0b2b1-608e-409c-96fc-733c8873de63 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 3707a636-2e10-452a-89ec-51b15cb875bc + Mass + 100 + + + + + + + 8 + 66.343702546480912 + 56b4f594 + part_56b4f594-a9e8-4e3b-a813-588e42dafa72 + 56b4f594-a9e8-4e3b-a813-588e42dafa72 + + + 0.61400756268483 + + MI_Restricted_Substances + 211ae46e-0827-4d61-af66-5a72c42d0cd8 + + T-glass + T-glass + 2c65e5f7-741d-487a-869b-1726fa6a37bd + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + d53e38b8-5876-49b8-a484-90c4c6a2a731 + Mass + 100 + + + + + 14.197998919616452 + + MI_Restricted_Substances + 408a337f-8eb7-4225-96bd-1225da437143 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 5140, oil quenched & tempered at 315°C + be0900d2-62f9-4365-85e4-463b8bd776dd + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 721a16f9-1256-4322-99e8-1774a6202966 + Mass + 100 + + + + + 14.197998919616452 + + MI_Restricted_Substances + 0f82772a-b4f0-4ed3-a8cc-6c721ad4b9ac + + Potash soda zinc + Potash soda zinc + 34bdc8cb-ae4d-4f37-bbf5-dd6894e95004 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 644495c6-0047-4cd5-b2a2-748aa6ecdb0d + Mass + 100 + + + + + 14.197998919616452 + + MI_Restricted_Substances + 2096ca77-9981-4fd5-9bc6-afe56b3bbbd4 + + Glass/phenolic honeycomb, 0°/90° fabric (0.096) + Glass/phenolic honeycomb, 0°/90° fabric (0.096), W Direction + cbd9105b-8a92-41b8-8c1e-00601241859a + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 38a3b737-2b6e-401e-8465-5e1ed7619f2b + Mass + 59.021085993862286 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + a711d2a6-d325-40d0-8164-b4eeaa30d36b + Area + 55.370409859051186 + + + + + 14.197998919616452 + + MI_Restricted_Substances + 1d5dd59c-75a0-4bf2-8862-7d77996aa0be + + Annealed + Low alloy steel, AISI 8650, annealed + 5bb492cb-1d62-4f49-bcdc-a43831448785 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 3b618581-8302-4403-967c-a81638512e9f + Length + 31.769880993184579 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + cffc250d-acec-41ed-b562-6c6dddf00ed4 + MassRemoved + 11.271175747397903 + + + + + 14.197998919616452 + + MI_Restricted_Substances + 91d7e1bd-d353-4eb1-9634-286e8e69d0d5 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1141, oil quenched & tempered at 540°C + 019601ba-d111-4682-88b5-004b2a41848e + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 2f0ea54d-7e78-4a80-8655-3b9e1bd1d721 + MassRemoved + 50.962580112257314 + + + + + 14.197998919616452 + + MI_Restricted_Substances + d411a96b-aa1c-4651-a405-5a2bc5c32dff + + Modified, Grade 91 + Alloy steel, 9Cr-1Mo-V, modified, Grade 91 + a86b311d-7528-4d4c-b2a3-da67f2e81884 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + 1f845714-341b-442d-aa4a-d1ba844719b5 + Area + 55.852763334220633 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 1c595b1c-d4de-4e19-90bd-b8323a12e1e6 + Length + 74.532069766210427 + + + + + 14.197998919616452 + + MI_Restricted_Substances + 5169a157-0d18-4d45-b197-799e06aa00bc + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 9255, oil quenched & tempered at 315°C + 3c82221e-f220-447b-8353-fbc156f544ed + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 0e962534-eaab-491a-b461-aff65ecbe25e + Mass + 100 + + + + + + + 3 + 43.268384758042352 + 034ae570 + part_034ae570-6b72-4588-8858-d05fe8ec4265 + 034ae570-6b72-4588-8858-d05fe8ec4265 + + + 64.118560340310708 + + MI_Restricted_Substances + a89802d6-13c5-496d-b139-57ae43e6591c + + As rolled + Carbon steel, AISI 1022, as rolled + 2430abfe-a4d5-450e-b249-b1ff3006f50d + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + ab0dc822-7a2f-4f1d-8319-46a360810b4e + MassRemoved + 97.34478066551722 + + + + + 7.1762879319378587 + + MI_Restricted_Substances + e86ced85-7d75-4b62-8f8e-90bd345ae003 + + Normalized + Low alloy steel, AISI 5140, normalized + 2aacd7fb-6f52-4112-9e9f-2718f5f9ac37 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 49bc9837-9417-4b98-aec6-9353098a48a1 + Mass + 100 + + + + + 7.1762879319378587 + + MI_Restricted_Substances + 021e3fde-941b-4d44-bc55-a1c5a346d6d9 + + Quenched & tempered + Intermediate alloy, Fe-9Ni-4Co-0.20C steel, quenched & tempered + e3d1ac3a-608f-4766-b1ae-c521602c3f52 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 6f34c420-447e-43ac-87f4-ebbd6fd1e91d + Length + 18.833783463963208 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 1945f590-e5fa-461a-884e-e9bf4ca3d301 + Mass + 100 + + + + + 7.1762879319378587 + + MI_Restricted_Substances + 19b67562-02fa-47ea-8fba-af5b14d1fafa + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 4042, oil quenched & tempered at 650°C + 584c4675-c341-4e74-a273-9fbaa509f17b + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + d4c6f167-a12a-4b18-af27-9bb9c9ac9770 + Mass + 100 + + + + + 7.1762879319378587 + + MI_Restricted_Substances + 410f0fc7-aeda-4f4e-bb83-0595b7ba09d0 + + Solution treated + Iron-base-superalloy, N-155, solution treated + 85173ead-dc76-4602-9409-e0d379bc5f67 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + f3ed9441-ef86-45c4-85da-a71c014cdb35 + Length + 0.33939192087361214 + + + + + 7.1762879319378587 + + MI_Restricted_Substances + 7b1fcb28-a127-417b-978f-6a5c58305d24 + + Annealed + Carbon steel, AISI 1118, annealed + 396fd799-d5c0-44ef-85fb-309959f4e4b9 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 06fab3de-256c-48f9-93a7-1b2849ca4b4f + Mass + 100 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + b85a77bf-b67d-4805-bef6-1176e4ab66c5 + Mass + 100 + + + + + + + 9 + 9.6230559561508979 + 892d8144 + part_892d8144-5af7-4433-a93d-2c0fd1355046 + 892d8144-5af7-4433-a93d-2c0fd1355046 + + + 9.1305946508099289 + + MI_Restricted_Substances + c19a6c59-b937-499d-ac22-fe742ae42287 + + As rolled + Carbon steel, AISI 1117, as rolled + 5edc8f84-3ef2-456f-8007-b3db426f53c6 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + 68a418f0-f161-4882-9578-a7e1abef180a + Mass + 100 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 38b2029f-3112-4b68-a716-d1fe6554d580 + MassRemoved + 0.8057812232551077 + + + + + 45.434702674595037 + + MI_Restricted_Substances + 6e5c3f76-3954-45fb-bd02-a4b4203f29ee + + Normalized + Low alloy steel, AISI 3140, normalized + a59c9c63-bbc8-4b08-874c-432f04b3f67a + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 27435063-ed4f-4b17-9d26-35642427bfdb + Mass + 100 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 96848ba2-a5ef-4328-afe2-6f8989a9c358 + Mass + 100 + + + + + 45.434702674595037 + + MI_Restricted_Substances + 5e96987a-3cc6-4330-bccc-e8d163c47831 + + Normalized + Low alloy steel, AISI 9310, normalized + 18fd487b-24b7-40be-bb09-bf7e916c2729 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 18cb0958-5b95-4080-992c-80f3553253d3 + Mass + 100 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 774c39fc-977e-4097-81a8-c5c5cc995da4 + Mass + 100 + + + + + + + 6 + 9.89473164542333 + fef19823 + part_fef19823-f258-40d3-b7d7-7d59f9d377cf + fef19823-f258-40d3-b7d7-7d59f9d377cf + + + 100 + + MI_Restricted_Substances + 74df2f0b-340a-4267-a759-197069aea298 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 8740, oil quenched & tempered at 205°C + 044eedee-721e-4717-9291-b816ab286628 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 1751808a-1424-41e4-b362-35afdc7c2003 + Mass + 100 + + + + + + + + + + + Factory to port + + MI_Restricted_Substances + c29ab353-2bd5-4964-b577-a0e4cfb4d284 + + 7777000000 + + + Port to center + + MI_Restricted_Substances + c29ab353-2bd5-4964-b577-a0e4cfb4d284 + + 9999 + + + \ No newline at end of file diff --git a/tests/test_integration_tests.py b/tests/test_integration_tests.py index bf3c2906..4ca187fd 100644 --- a/tests/test_integration_tests.py +++ b/tests/test_integration_tests.py @@ -1,5 +1,5 @@ import pytest -from .inputs import sample_bom_complex, sample_bom_custom_db, sample_bom_2301 +from .inputs import sample_bom_complex, sample_bom_custom_db, sample_bom_2301, sample_bom_2301_complex from ansys.grantami.bomanalytics import queries, GrantaMIException from .common import LEGISLATIONS, INDICATORS, CUSTOM_TABLES @@ -208,11 +208,18 @@ def test_legislation_is_not_affected_with_no_links(self, connection): class TestSustainabilityBomQueries: def test_sustainability_summary_query(self, default_connection): query = queries.BomSustainabilitySummaryQuery() - query.with_bom(sample_bom_2301) + query.with_bom(sample_bom_2301_complex) response = default_connection.run(query) + assert response.process.name == "Processes" + assert response.material.name == "Material" + assert response.transport.name == "Transport" + assert len(response.phases_summary) == 3 + + assert len(response.material_details) == 3 + all_others = next(mat for mat in response.material_details if mat.name == "Other") + def test_sustainability_query(self, default_connection): query = queries.BomSustainabilityQuery() - query.with_bom(sample_bom_2301) - query.with_units(mass="lb") + query.with_bom(sample_bom_2301_complex) response = default_connection.run(query) From e3205119b950eb4f19e1da6a73c180cf77e6a24c Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Wed, 13 Sep 2023 18:02:34 +0200 Subject: [PATCH 023/275] Code styling --- pyproject.toml | 2 +- .../grantami/bomanalytics/_item_results.py | 70 +++++++++---------- .../grantami/bomanalytics/_query_results.py | 12 ++-- src/ansys/grantami/bomanalytics/queries.py | 24 +++---- tests/inputs/__init__.py | 1 - tests/test_argument_managers.py | 5 +- tests/test_integration_tests.py | 2 +- .../test_sustainability.py | 8 +-- 8 files changed, 60 insertions(+), 64 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index f74cacd5..e37c427d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -117,7 +117,7 @@ deps = black mypy==0.910 commands = - codespell ./src ./tests ./examples ./doc/source + codespell ./src ./tests ./examples ./doc/source --skip="./doc/source/_static/xml_schemas" flake8 ./src ./tests ./examples black ./src ./tests --check mypy ./src diff --git a/src/ansys/grantami/bomanalytics/_item_results.py b/src/ansys/grantami/bomanalytics/_item_results.py index d4e5b368..7d125a40 100644 --- a/src/ansys/grantami/bomanalytics/_item_results.py +++ b/src/ansys/grantami/bomanalytics/_item_results.py @@ -457,8 +457,7 @@ def create_transport_with_sustainability( @classmethod def create_unitted_value( - cls, - result: models.GrantaBomAnalyticsServicesImplementationCommonValueWithUnit + cls, result: models.GrantaBomAnalyticsServicesImplementationCommonValueWithUnit ) -> "ValueWithUnit": """Returns a value with unit. @@ -474,7 +473,9 @@ def create_unitted_value( return ValueWithUnit(value=result.value, unit=result.unit) @classmethod - def create_phase_summary(cls, result: models.CommonSustainabilityPhaseSummary) -> "SustainabilityPhaseSummaryResult": + def create_phase_summary( + cls, result: models.CommonSustainabilityPhaseSummary + ) -> "SustainabilityPhaseSummaryResult": return SustainabilityPhaseSummaryResult( name=result.phase, embodied_energy=cls.create_unitted_value(result.embodied_energy), @@ -485,8 +486,7 @@ def create_phase_summary(cls, result: models.CommonSustainabilityPhaseSummary) - @classmethod def create_transport_summary( - cls, - result: models.CommonSustainabilityTransportSummaryEntry + cls, result: models.CommonSustainabilityTransportSummaryEntry ) -> "TransportSummaryResult": reference_type = cls.parse_reference_type(result.record_reference.reference_type) return TransportSummaryResult( @@ -502,8 +502,7 @@ def create_transport_summary( @classmethod def create_material_summary( - cls, - result: models.CommonSustainabilityMaterialSummaryEntry + cls, result: models.CommonSustainabilityMaterialSummaryEntry ) -> "MaterialSummaryResult": reference_type = cls.parse_reference_type(result.record_reference.reference_type) """#TODO docs""" @@ -519,16 +518,14 @@ def create_material_summary( climate_change_percentage=result.climate_change_percentage, mass_after_processing=cls.create_unitted_value(result.mass_after_processing), mass_before_processing=cls.create_unitted_value(result.mass_before_processing), - contributors=[ - cls.create_contributing_component(component) - for component in result.largest_contributors - ] if result.largest_contributors else [] + contributors=[cls.create_contributing_component(component) for component in result.largest_contributors] + if result.largest_contributors + else [], ) @classmethod def create_contributing_component( - cls, - result: models.CommonSustainabilityMaterialContributingComponent + cls, result: models.CommonSustainabilityMaterialContributingComponent ) -> "ContributingComponentResult": """#TODO docs""" reference_type = cls.parse_reference_type(result.record_reference.reference_type) @@ -1481,7 +1478,8 @@ class CoatingWithComplianceResult(ChildSubstanceWithComplianceMixin, ComplianceR class ValueWithUnit: - """Describes a value obtained from the API """ + """Describes a value obtained from the API""" + def __init__( self, value: float, @@ -1523,6 +1521,7 @@ class SustainabilityResultMixin: Contains arguments handled by other mixins or base classes, e.g. ``reference_type`` and ``reference_value`` for ``RecordDefinition``-based objects. """ + def __init__( self, embodied_energy: ValueWithUnit, @@ -1552,6 +1551,7 @@ class MassResultMixin: Contains arguments handled by other mixins or base classes, e.g. ``reference_type`` and ``reference_value`` for ``RecordDefinition``-based objects. """ + def __init__( self, reported_mass: ValueWithUnit, @@ -1582,6 +1582,7 @@ class ReusabilityResultMixin: Contains arguments handled by other mixins or base classes, e.g. ``reference_type`` and ``reference_value`` for ``RecordDefinition``-based objects. """ + def __init__( self, recyclable: bool, @@ -1612,8 +1613,7 @@ def __init__(self, **kwargs: Any) -> None: @property def materials(self) -> List["MaterialWithSustainabilityResult"]: - """Material with sustainability result objects that are direct children of this item in the BoM. - """ + """Material with sustainability result objects that are direct children of this item in the BoM.""" return self._materials @@ -1654,8 +1654,7 @@ def __init__(self, **kwargs: Any) -> None: @property def parts(self) -> List["PartWithSustainabilityResult"]: - """Part with sustainability result objects that are direct children of this item in the BoM. - """ + """Part with sustainability result objects that are direct children of this item in the BoM.""" return self._parts @@ -1697,8 +1696,7 @@ def __init__(self, **kwargs: Any) -> None: @property def specifications(self) -> List["SpecificationWithSustainabilityResult"]: - """Specification with sustainability result objects that are direct children of this item in the BoM. - """ + """Specification with sustainability result objects that are direct children of this item in the BoM.""" return self._specifications @@ -1740,8 +1738,7 @@ def __init__(self, **kwargs: Any) -> None: @property def substances(self) -> List["SubstanceResult"]: - """Substance objects that are direct children of this item in the BoM. - """ + """Substance objects that are direct children of this item in the BoM.""" return self._substances @@ -1842,7 +1839,7 @@ class MaterialWithSustainabilityResult( SustainabilityResultMixin, ReusabilityResultMixin, MassResultMixin, - MaterialDefinition + MaterialDefinition, ): """Describes an individual material included as part of a sustainability query result. This object includes three categories of attributes: @@ -2144,6 +2141,7 @@ class SustainabilitySummaryMixin: Contains arguments handled by other mixins or base classes, e.g. ``reference_type`` and ``reference_value`` for ``RecordDefinition``-based objects. """ + def __init__( self, embodied_energy: ValueWithUnit, @@ -2201,6 +2199,7 @@ class NamedItemMixin: Contains arguments handled by other mixins or base classes, e.g. ``reference_type`` and ``reference_value`` for ``RecordDefinition``-based objects. """ + def __init__( self, name: str, @@ -2232,11 +2231,7 @@ class SustainabilityPhaseSummaryResult(NamedItemMixin, SustainabilitySummaryMixi class TransportDefinition(TransportReference): def __init__( - self, - reference_type: ReferenceType, - reference_value: Union[int, str, None], - name: str, - distance: ValueWithUnit + self, reference_type: ReferenceType, reference_value: Union[int, str, None], name: str, distance: ValueWithUnit ): super().__init__( reference_type=reference_type, @@ -2256,8 +2251,8 @@ def distance(self) -> ValueWithUnit: return self._distance -# TODO: Standardize documentation approach. For PR, used inherited properties to avoid reviewing the same string N times. -# Still documenting guids/identities as attributes, but they could also be defined as inherited properties +# TODO: Standardize documentation approach. For PR, used inherited properties to avoid reviewing the same string N +# times. Still documenting guids/identities as attributes, but they could also be defined as inherited properties class TransportSummaryResult(SustainabilitySummaryMixin, TransportDefinition): """ Sustainability summary for a transport stage. @@ -2288,6 +2283,7 @@ class ContributingComponentResult(NamedItemMixin, PartDefinition): record_guid : str, optional Record GUID. """ + def __init__( self, material_mass_before_processing: ValueWithUnit, @@ -2319,6 +2315,7 @@ class MaterialSummaryResult(SustainabilitySummaryMixin, NamedItemMixin, RecordRe record_guid : str, optional Record GUID. """ + # TODO what makes a part be listed as a contributor? mass percentage threshold? def __init__( self, @@ -2362,13 +2359,14 @@ class ProcessSummaryResult(SustainabilitySummaryMixin): Describes the environmental footprint of a process, accounting for all occurrences of the process-material pair found in the BoM. """ + def __init__( - self, - material_name: str, - material_reference: MaterialDefinition, - process_name: str, - process_reference: ProcessReference, - **kwargs, + self, + material_name: str, + material_reference: MaterialDefinition, + process_name: str, + process_reference: ProcessReference, + **kwargs, ): super().__init__(**kwargs) self._material_name = material_name diff --git a/src/ansys/grantami/bomanalytics/_query_results.py b/src/ansys/grantami/bomanalytics/_query_results.py index 5ad0d630..92a7c9fb 100644 --- a/src/ansys/grantami/bomanalytics/_query_results.py +++ b/src/ansys/grantami/bomanalytics/_query_results.py @@ -790,10 +790,11 @@ class BomSustainabilityQueryResult(ResultBaseClass): Objects of this class are only returned as the result of a query. The class is not intended to be instantiated directly. """ + def __init__( - self, - results: List[models.GetSustainabilityForBom2301Response], - messages: List[LogMessage], + self, + results: List[models.GetSustainabilityForBom2301Response], + messages: List[LogMessage], ) -> None: super().__init__(messages) self._response = results[0] @@ -842,6 +843,7 @@ class BomSustainabilitySummaryQueryResult(ResultBaseClass): Objects of this class are only returned as the result of a query. The class is not intended to be instantiated directly. """ + def __init__( self, results: List[models.GetSustainabilitySummaryForBom2301Response], @@ -859,8 +861,7 @@ def __init__( for transport in self._response.transport_summary.summary ] self._material_details: List[MaterialSummaryResult] = [ - ItemResultFactory.create_material_summary(material) - for material in self._response.material_summary.summary + ItemResultFactory.create_material_summary(material) for material in self._response.material_summary.summary ] self._primary_processes_details: List[ProcessSummaryResult] = [ @@ -875,6 +876,7 @@ def __init__( ItemResultFactory.create_process_summary(process) for process in self._response.process_summary.joining_and_finishing_processes ] + # High level summaries: # - provide list of all phases -> allow generic plotting/reporting of all phases indistinctively # - provide individual phase summaries -> allow direct access without iterating through all phases diff --git a/src/ansys/grantami/bomanalytics/queries.py b/src/ansys/grantami/bomanalytics/queries.py index 8d288fe9..50711542 100644 --- a/src/ansys/grantami/bomanalytics/queries.py +++ b/src/ansys/grantami/bomanalytics/queries.py @@ -1598,16 +1598,19 @@ def with_bom(self: Query_Builder, bom: str) -> Query_Builder: Notes ----- The XML schema is defined by the schema document - :download:`BillOfMaterialsEco1711.xsd `, which in turn references - :download:`grantarecord1205.xsd`. Together, these XSD files can be - used to validate that the BoM is both valid XML and adheres to the Ansys Granta 1711 XML BoM schema. + :download:`BillOfMaterialsEco1711.xsd `, which in turn + references :download:`grantarecord1205.xsd`. Together, these XSD + files can be used to validate that the BoM is both valid XML and adheres to the Ansys Granta 1711 XML BoM + schema. """ self._data.bom = bom return self -class _Bom2301QueryBuilder(_BomQueryBuilder, ): +class _Bom2301QueryBuilder( + _BomQueryBuilder, +): bom_version = "bom_xml2301" @validate_argument_type(str) @@ -1634,9 +1637,10 @@ def with_bom(self: Query_Builder, bom: str) -> Query_Builder: Notes ----- The XML schema is defined by the schema document - :download:`BillOfMaterialsEco2301.xsd `, which in turn references - :download:`grantarecord1205.xsd`. Together, these XSD files can be - used to validate that the BoM is both valid XML and adheres to the Ansys Granta 2301 XML BoM schema. + :download:`BillOfMaterialsEco2301.xsd `, which in turn + references :download:`grantarecord1205.xsd`. Together, these XSD + files can be used to validate that the BoM is both valid XML and adheres to the Ansys Granta 2301 XML BoM + schema. """ self._data.bom = bom @@ -1782,11 +1786,7 @@ def with_units(self, distance: str = None, energy: str = None, mass: str = None) self._preferred_units.mass_unit = mass return self - def _run_query( - self, - api_instance: api.SustainabilityApi, - static_arguments: Dict - ) -> Query_Result: + def _run_query(self, api_instance: api.SustainabilityApi, static_arguments: Dict) -> Query_Result: """Something""" api_method = getattr(api_instance, self._api_method) arguments = { diff --git a/tests/inputs/__init__.py b/tests/inputs/__init__.py index cbd4f085..77514300 100644 --- a/tests/inputs/__init__.py +++ b/tests/inputs/__init__.py @@ -18,4 +18,3 @@ _complex_bom_2301_path = pathlib.Path(__file__).parent / "bom-2301-complex.xml" with open(_complex_bom_2301_path, "r") as f: sample_bom_2301_complex = f.read() - diff --git a/tests/test_argument_managers.py b/tests/test_argument_managers.py index a2650e26..715be9e8 100644 --- a/tests/test_argument_managers.py +++ b/tests/test_argument_managers.py @@ -83,7 +83,6 @@ def test_repr(self): class TestBomArgManager: - @pytest.mark.parametrize("bom_version", ["bom_xml1711", "bom_xml2301"]) def test_uninitialized_configuration(self, bom_version): am = queries._BomQueryDataManager(bom_version) @@ -96,8 +95,8 @@ def test_uninitialized_configuration(self, bom_version): [ ("Test bom less than 100 chars", "bom_xml1711"), (sample_bom, "bom_xml1711"), - (sample_bom_2301, "bom_xml2301") - ] + (sample_bom_2301, "bom_xml2301"), + ], ) def test_add_bom(self, bom, bom_version): am = queries._BomQueryDataManager(bom_version) diff --git a/tests/test_integration_tests.py b/tests/test_integration_tests.py index 4ca187fd..10769149 100644 --- a/tests/test_integration_tests.py +++ b/tests/test_integration_tests.py @@ -1,5 +1,5 @@ import pytest -from .inputs import sample_bom_complex, sample_bom_custom_db, sample_bom_2301, sample_bom_2301_complex +from .inputs import sample_bom_complex, sample_bom_custom_db, sample_bom_2301_complex from ansys.grantami.bomanalytics import queries, GrantaMIException from .common import LEGISLATIONS, INDICATORS, CUSTOM_TABLES diff --git a/tests/test_mocked_responses/test_sustainability.py b/tests/test_mocked_responses/test_sustainability.py index 25b66e71..757ceac0 100644 --- a/tests/test_mocked_responses/test_sustainability.py +++ b/tests/test_mocked_responses/test_sustainability.py @@ -1,8 +1,6 @@ -from ansys.grantami.bomanalytics import queries, indicators +from ansys.grantami.bomanalytics import queries from ansys.grantami.bomanalytics._query_results import BomSustainabilityQueryResult -from ansys.grantami.bomanalytics_openapi.models import ( - GetSustainabilityForBom2301Response -) +from ansys.grantami.bomanalytics_openapi.models import GetSustainabilityForBom2301Response from .common import ( BaseMockTester, ) @@ -78,4 +76,4 @@ def test_response_processing(self, mock_connection): assert process.embodied_energy.value == 0.09 assert process.climate_change.unit == "kg" assert process.climate_change.value == 0 - assert process.record_history_guid == "d986c90a-2835-45f3-8b69-d6d662dcf53a" \ No newline at end of file + assert process.record_history_guid == "d986c90a-2835-45f3-8b69-d6d662dcf53a" From f26911f27aede0c432060dfea1c90fea9faeab06 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Wed, 13 Sep 2023 18:28:26 +0200 Subject: [PATCH 024/275] Fix typing --- .../grantami/bomanalytics/_item_results.py | 38 +++++++++---------- src/ansys/grantami/bomanalytics/queries.py | 28 +++++++------- 2 files changed, 34 insertions(+), 32 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/_item_results.py b/src/ansys/grantami/bomanalytics/_item_results.py index 7d125a40..3ade1356 100644 --- a/src/ansys/grantami/bomanalytics/_item_results.py +++ b/src/ansys/grantami/bomanalytics/_item_results.py @@ -1503,7 +1503,7 @@ def unit(self) -> str: return self._unit -class SustainabilityResultMixin: +class SustainabilityResultMixin(mixin_base_class): """Adds results from a sustainability query to a class. A Bom-sustainability query returns a BoM-like results object, with additional sustainability information attached @@ -1533,7 +1533,7 @@ def __init__( self.climate_change = climate_change -class MassResultMixin: +class MassResultMixin(mixin_base_class): """Adds results from a sustainability query to a class. A Bom-sustainability query returns a BoM-like results object, with additional sustainability information attached @@ -1561,7 +1561,7 @@ def __init__( self.reported_mass = reported_mass -class ReusabilityResultMixin: +class ReusabilityResultMixin(mixin_base_class): """Adds results from a sustainability query to a class. A Bom-sustainability query returns a BoM-like results object, with additional sustainability information attached @@ -1596,7 +1596,7 @@ def __init__( self.downcycle: bool = downcycle -class ChildMaterialWithSustainabilityMixin: +class ChildMaterialWithSustainabilityMixin(mixin_base_class): """Provides the implementation for managing children materials, by adding a ``materials`` property to the class. Parameters @@ -1637,7 +1637,7 @@ def _add_child_materials( self._materials.append(child_material_with_sustainability) -class ChildPartWithSustainabilityMixin: +class ChildPartWithSustainabilityMixin(mixin_base_class): """Provides the implementation for managing children parts, by adding a ``parts`` property to the class. Parameters @@ -1678,7 +1678,7 @@ def _add_child_parts( self._parts.append(child_part_with_sustainability) -class ChildSpecificationWithSustainabilityMixin: +class ChildSpecificationWithSustainabilityMixin(mixin_base_class): """Provides the implementation for managing children specifications, by adding a ``specifications`` property to the class. @@ -1720,7 +1720,7 @@ def _add_child_specifications( self._specifications.append(child_specification_with_sustainability) -class ChildSubstanceMixin: +class ChildSubstanceMixin(mixin_base_class): """Provides the implementation for managing children substances, by adding a ``substances`` property to the class. @@ -1758,7 +1758,7 @@ def _add_child_substances(self, child_substances: List[models.CommonSubstanceRef self._substances.append(child_substance_result) -class ChildCoatingMixin: +class ChildCoatingMixin(mixin_base_class): """Provides the implementation for managing children coatings, by adding a ``coatings`` property to the class. Parameters @@ -1795,7 +1795,7 @@ def _add_child_coatings(self, child_coatings: List[models.CommonCoatingReference self._coatings.append(child_coating_result) -class ChildProcessWithSustainabilityMixin: +class ChildProcessWithSustainabilityMixin(mixin_base_class): """Provides the implementation for managing children processes, by adding a ``processes`` property to the class. Parameters @@ -2122,7 +2122,7 @@ class TransportWithSustainabilityResult( """ -class SustainabilitySummaryMixin: +class SustainabilitySummaryMixin(mixin_base_class): # TODO reuse existing SusResultMixin? """Adds sustainability summary results to a class. @@ -2188,7 +2188,7 @@ def climate_change_percentage(self) -> float: # TODO: Consider alternatives for name. Ideally we'd prefer the docs for the property to be specific to the parent, e.g. # "The name of the part." -class NamedItemMixin: +class NamedItemMixin(mixin_base_class): """Adds a name to a class. Parameters @@ -2203,8 +2203,8 @@ class NamedItemMixin: def __init__( self, name: str, - **kwargs, - ): + **kwargs: Any, + ) -> None: super().__init__(**kwargs) self._name = name @@ -2287,8 +2287,8 @@ class ContributingComponentResult(NamedItemMixin, PartDefinition): def __init__( self, material_mass_before_processing: ValueWithUnit, - **kwargs, - ): + **kwargs: Any, + ) -> None: super().__init__(**kwargs) self._material_mass_before_processing = material_mass_before_processing @@ -2322,8 +2322,8 @@ def __init__( mass_before_processing: ValueWithUnit, mass_after_processing: ValueWithUnit, contributors: List[ContributingComponentResult], - **kwargs, - ): + **kwargs: Any, + ) -> None: super().__init__(**kwargs) self._mass_before_processing = mass_before_processing self._mass_after_processing = mass_after_processing @@ -2366,8 +2366,8 @@ def __init__( material_reference: MaterialDefinition, process_name: str, process_reference: ProcessReference, - **kwargs, - ): + **kwargs: Any, + ) -> None: super().__init__(**kwargs) self._material_name = material_name self._material_reference = material_reference diff --git a/src/ansys/grantami/bomanalytics/queries.py b/src/ansys/grantami/bomanalytics/queries.py index 50711542..06d90fae 100644 --- a/src/ansys/grantami/bomanalytics/queries.py +++ b/src/ansys/grantami/bomanalytics/queries.py @@ -18,6 +18,7 @@ from abc import ABC, abstractmethod from typing import ( + Any, Union, List, Literal, @@ -1572,7 +1573,7 @@ def with_bom(self: Query_Builder, bom: str) -> Query_Builder: class _Bom1711QueryBuilder(_BomQueryBuilder): - bom_version = "bom_xml1711" + bom_version: Literal["bom_xml1711"] = "bom_xml1711" @validate_argument_type(str) def with_bom(self: Query_Builder, bom: str) -> Query_Builder: @@ -1608,10 +1609,8 @@ def with_bom(self: Query_Builder, bom: str) -> Query_Builder: return self -class _Bom2301QueryBuilder( - _BomQueryBuilder, -): - bom_version = "bom_xml2301" +class _Bom2301QueryBuilder(_BomQueryBuilder): + bom_version: Literal["bom_xml2301"] = "bom_xml2301" @validate_argument_type(str) def with_bom(self: Query_Builder, bom: str) -> Query_Builder: @@ -1754,18 +1753,21 @@ def _run_query(api_instance: api.DocumentationApi, **kwargs: Dict) -> str: class _SustainabilityMixin(_ApiMixin): + _api_method: str api_class = api.SustainabilityApi - def __init_subclass__(cls, api_method: str, request_type: Type, **kwargs): - cls._api_method: str = api_method + def __init_subclass__(cls, api_method: str, request_type: Type, **kwargs: Any): + super().__init_subclass__(**kwargs) # type: ignore + cls._api_method = api_method cls._request_type = request_type - super().__init_subclass__(**kwargs) - def __init__(self): + def __init__(self) -> None: super().__init__() self._preferred_units = models.CommonPreferredUnits() - def with_units(self, distance: str = None, energy: str = None, mass: str = None): + def with_units( + self: Query_Builder, distance: Optional[str] = None, energy: Optional[str] = None, mass: Optional[str] = None + ) -> Query_Builder: """ Specifies units to use in the response. @@ -1773,11 +1775,11 @@ def with_units(self, distance: str = None, energy: str = None, mass: str = None) Parameters ---------- - distance : str + distance : Optional[str] Unit symbol for distance. - energy : str + energy : Optional[str] Unit symbol for energy. - mass : str + mass : Optional[str] Unit symbol for mass. """ From f39af57802e9cecc1308238b05ab70b149a47ec0 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 14 Sep 2023 10:14:47 +0200 Subject: [PATCH 025/275] Add missing docstrings in factory [skip ci] --- .../grantami/bomanalytics/_item_results.py | 63 +++++++++++++++++-- 1 file changed, 58 insertions(+), 5 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/_item_results.py b/src/ansys/grantami/bomanalytics/_item_results.py index 3ade1356..7138e9dd 100644 --- a/src/ansys/grantami/bomanalytics/_item_results.py +++ b/src/ansys/grantami/bomanalytics/_item_results.py @@ -476,6 +476,17 @@ def create_unitted_value( def create_phase_summary( cls, result: models.CommonSustainabilityPhaseSummary ) -> "SustainabilityPhaseSummaryResult": + """Returns a SustainabilityPhaseSummaryResult instantiated from the low-level API model. + + Parameters + ---------- + result: models.CommonSustainabilityPhaseSummary + Result from the REST API describing the sustainability metrics for a particular phase. + + Returns + ------- + SustainabilityPhaseSummaryResult + """ return SustainabilityPhaseSummaryResult( name=result.phase, embodied_energy=cls.create_unitted_value(result.embodied_energy), @@ -488,6 +499,17 @@ def create_phase_summary( def create_transport_summary( cls, result: models.CommonSustainabilityTransportSummaryEntry ) -> "TransportSummaryResult": + """Returns a TransportSummaryResult instantiated from the low-level API model. + + Parameters + ---------- + result: models.CommonSustainabilityTransportSummaryEntry + Result from the REST API describing the sustainability metrics for a transport stage. + + Returns + ------- + TransportSummaryResult + """ reference_type = cls.parse_reference_type(result.record_reference.reference_type) return TransportSummaryResult( reference_type=reference_type, @@ -505,7 +527,18 @@ def create_material_summary( cls, result: models.CommonSustainabilityMaterialSummaryEntry ) -> "MaterialSummaryResult": reference_type = cls.parse_reference_type(result.record_reference.reference_type) - """#TODO docs""" + """Returns a MaterialSummaryResult instantiated from the low-level API model. + + Parameters + ---------- + result: models.CommonSustainabilityMaterialSummaryEntry + Result from the REST API describing the sustainability metrics for a unique material aggregated for the + whole BoM. + + Returns + ------- + MaterialSummaryResult + """ # TODO one of these is a bucket for all other materials that do not contribute >2% EE. Worth separating it? # It does not have a valid record reference or contributors. return MaterialSummaryResult( @@ -527,7 +560,17 @@ def create_material_summary( def create_contributing_component( cls, result: models.CommonSustainabilityMaterialContributingComponent ) -> "ContributingComponentResult": - """#TODO docs""" + """Returns a ContributingComponentResult instantiated from the low-level API model. + + Parameters + ---------- + result: models.CommonSustainabilityMaterialContributingComponent + Result from the REST API describing parts contributing the most to a material's environmental footprint. + + Returns + ------- + ContributingComponentResult + """ reference_type = cls.parse_reference_type(result.record_reference.reference_type) return ContributingComponentResult( reference_type=reference_type, @@ -538,7 +581,18 @@ def create_contributing_component( @classmethod def create_process_summary(cls, result: models.CommonSustainabilityProcessSummaryEntry) -> "ProcessSummaryResult": - """#TODO docs""" + """Returns a ProcessSummaryResult instantiated from the low-level API model. + + Parameters + ---------- + result: models.CommonSustainabilityProcessSummaryEntry + Result from the REST API describing the sustainability metrics for a unique process-material pair, + aggregated for the whole BoM. + + Returns + ------- + ProcessSummaryResult + """ return ProcessSummaryResult( material_name=result.material_name, material_reference=MaterialDefinition( @@ -1587,7 +1641,7 @@ def __init__( self, recyclable: bool, biodegradable: bool, - downcycle: bool, # TODO will change, see CR-1341 -> "Functional recycle" + downcycle: bool, **kwargs: Any, ) -> None: super().__init__(**kwargs) @@ -2316,7 +2370,6 @@ class MaterialSummaryResult(SustainabilitySummaryMixin, NamedItemMixin, RecordRe Record GUID. """ - # TODO what makes a part be listed as a contributor? mass percentage threshold? def __init__( self, mass_before_processing: ValueWithUnit, From f4ca4463654191334fc04bd5e2ffc7976b82e7a1 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 14 Sep 2023 11:09:43 +0200 Subject: [PATCH 026/275] Customize name docstring [skip ci] --- src/ansys/grantami/bomanalytics/_item_results.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/_item_results.py b/src/ansys/grantami/bomanalytics/_item_results.py index 7138e9dd..88d2b777 100644 --- a/src/ansys/grantami/bomanalytics/_item_results.py +++ b/src/ansys/grantami/bomanalytics/_item_results.py @@ -532,7 +532,7 @@ def create_material_summary( Parameters ---------- result: models.CommonSustainabilityMaterialSummaryEntry - Result from the REST API describing the sustainability metrics for a unique material aggregated for the + Result from the REST API describing the sustainability metrics for a unique material aggregated for the whole BoM. Returns @@ -2240,8 +2240,6 @@ def climate_change_percentage(self) -> float: return self._climate_change_percentage -# TODO: Consider alternatives for name. Ideally we'd prefer the docs for the property to be specific to the parent, e.g. -# "The name of the part." class NamedItemMixin(mixin_base_class): """Adds a name to a class. @@ -2282,6 +2280,10 @@ class SustainabilityPhaseSummaryResult(NamedItemMixin, SustainabilitySummaryMixi """ + # Overriding docstring for property `name` inherited from mixin + name: str + """Name of the phase. Supported values are ``Material``, ``Processes``, and ``Transport``.""" + class TransportDefinition(TransportReference): def __init__( @@ -2338,6 +2340,10 @@ class ContributingComponentResult(NamedItemMixin, PartDefinition): Record GUID. """ + # Overriding docstring for property `name` inherited from mixin + name: str + """Name of the part.""" + def __init__( self, material_mass_before_processing: ValueWithUnit, @@ -2370,6 +2376,10 @@ class MaterialSummaryResult(SustainabilitySummaryMixin, NamedItemMixin, RecordRe Record GUID. """ + # Overriding docstring for property `name` inherited from mixin + name: str + """Name of the material.""" + def __init__( self, mass_before_processing: ValueWithUnit, From 6b9a83b218abf773a7799a6edbb99f346a765cd2 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 14 Sep 2023 11:38:00 +0200 Subject: [PATCH 027/275] Add summary sustainability mocked response test [skip ci] --- .../test_sustainability.py | 101 +++++++++++++++++- 1 file changed, 99 insertions(+), 2 deletions(-) diff --git a/tests/test_mocked_responses/test_sustainability.py b/tests/test_mocked_responses/test_sustainability.py index 757ceac0..f0544b77 100644 --- a/tests/test_mocked_responses/test_sustainability.py +++ b/tests/test_mocked_responses/test_sustainability.py @@ -1,6 +1,12 @@ from ansys.grantami.bomanalytics import queries -from ansys.grantami.bomanalytics._query_results import BomSustainabilityQueryResult -from ansys.grantami.bomanalytics_openapi.models import GetSustainabilityForBom2301Response +from ansys.grantami.bomanalytics._query_results import ( + BomSustainabilityQueryResult, + BomSustainabilitySummaryQueryResult, +) +from ansys.grantami.bomanalytics_openapi.models import ( + GetSustainabilityForBom2301Response, + GetSustainabilitySummaryForBom2301Response, +) from .common import ( BaseMockTester, ) @@ -77,3 +83,94 @@ def test_response_processing(self, mock_connection): assert process.climate_change.unit == "kg" assert process.climate_change.value == 0 assert process.record_history_guid == "d986c90a-2835-45f3-8b69-d6d662dcf53a" + + +class TestBomSustainabilitySummary(BaseMockTester): + query = queries.BomSustainabilitySummaryQuery() + mock_key = GetSustainabilitySummaryForBom2301Response.__name__ + + def test_response_processing(self, mock_connection): + response = self.get_mocked_response(mock_connection) + assert isinstance(response, BomSustainabilitySummaryQueryResult) + + assert len(response.messages) == 0 + + material_summary = response.material + assert material_summary.embodied_energy.value == 134.482549067761 + assert material_summary.embodied_energy.unit == "MJ" + assert material_summary.climate_change.value == 4.3276934674222 + assert material_summary.climate_change.unit == "kg" + assert material_summary.embodied_energy_percentage == 95.1957177924867 + assert material_summary.climate_change_percentage == 93.623465310322 + + process_summary = response.process + assert process_summary.embodied_energy.value == 6.78698719532399 + assert process_summary.embodied_energy.unit == "MJ" + assert process_summary.climate_change.value == 0.29475182775859 + assert process_summary.climate_change.unit == "kg" + assert process_summary.embodied_energy_percentage == 4.80428220751333 + assert process_summary.climate_change_percentage == 6.37653468967796 + + transport_summary = response.transport + assert transport_summary.embodied_energy.value == 0 + assert transport_summary.embodied_energy.unit == "MJ" + assert transport_summary.climate_change.value == 0 + assert transport_summary.climate_change.unit == "kg" + assert transport_summary.embodied_energy_percentage == 0 + assert transport_summary.climate_change_percentage == 0 + + assert len(response.material_details) == 1 + unique_material_0 = response.material_details[0] + assert unique_material_0.name == "steel-kovar-annealed" + assert unique_material_0.record_guid == "8dc38bb5-eff9-4c60-9233-271a3c8f6270" + assert unique_material_0.embodied_energy.value == 134.482549067761 + assert unique_material_0.embodied_energy.unit == "MJ" + assert unique_material_0.climate_change.value == 4.3276934674222 + assert unique_material_0.climate_change.unit == "kg" + assert unique_material_0.embodied_energy_percentage == 100 + assert unique_material_0.climate_change_percentage == 100 + assert unique_material_0.mass_before_processing.value == 0.625 + assert unique_material_0.mass_before_processing.unit == "kg" + assert unique_material_0.mass_after_processing.value == 0.5 + assert unique_material_0.mass_after_processing.unit == "kg" + + assert len(unique_material_0.contributors) == 1 + # TODO this is consistent with the example response. But is the example response correct? + assert unique_material_0.contributors[0].name == "" + assert unique_material_0.contributors[0].part_number is None + assert unique_material_0.contributors[0].material_mass_before_processing.value == 0.625 + assert unique_material_0.contributors[0].material_mass_before_processing.unit == "kg" + + assert len(response.joining_and_finishing_processes_details) == 0 + + assert len(response.primary_processes_details) == 1 + # Unique primary process - material pair + unique_ppmp_0 = response.primary_processes_details[0] + assert unique_ppmp_0.process_name == "Metal casting" + assert unique_ppmp_0.process_reference.record_guid == "baa6c95b-ff0e-4811-9120-92717ee15bda" + assert unique_ppmp_0.material_name == "High alloy steel, Kovar, annealed" + assert unique_ppmp_0.material_reference.record_guid == "8dc38bb5-eff9-4c60-9233-271a3c8f6270" + + assert unique_ppmp_0.embodied_energy.value == 6.55438765769984 + assert unique_ppmp_0.embodied_energy.unit == "MJ" + assert unique_ppmp_0.climate_change.value == 0.283705040845716 + assert unique_ppmp_0.climate_change.unit == "kg" + assert unique_ppmp_0.embodied_energy_percentage == 100 + assert unique_ppmp_0.climate_change_percentage == 100 + + assert len(response.secondary_processes_details) == 1 + # Unique secondary process - material pair + unique_spmp_0 = response.secondary_processes_details[0] + assert unique_spmp_0.process_name == "Machining, coarse" + assert unique_spmp_0.process_reference.record_guid == "907bda29-e800-44f6-b7ea-4eb8e7cff375" + assert unique_spmp_0.material_name == "High alloy steel, Kovar, annealed" + assert unique_spmp_0.material_reference.record_guid == "8dc38bb5-eff9-4c60-9233-271a3c8f6270" + + assert unique_spmp_0.embodied_energy.value == 0.232599537624153 + assert unique_spmp_0.embodied_energy.unit == "MJ" + assert unique_spmp_0.climate_change.value == 0.0110467869128737 + assert unique_spmp_0.climate_change.unit == "kg" + assert unique_spmp_0.embodied_energy_percentage == 100 + assert unique_spmp_0.climate_change_percentage == 100 + + assert len(response.transport_details) == 0 From 2f1666bcf9f1b3db805a7a4c1f78fde8b2e22f52 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 14 Sep 2023 12:38:22 +0200 Subject: [PATCH 028/275] Add unit tests [skip ci] --- src/ansys/grantami/bomanalytics/queries.py | 1 + tests/test_query_builders/test_bom.py | 14 ++++++++++++-- .../test_sustainability.py | 19 +++++++++++++++++++ 3 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 tests/test_query_builders/test_sustainability.py diff --git a/src/ansys/grantami/bomanalytics/queries.py b/src/ansys/grantami/bomanalytics/queries.py index 06d90fae..594359a5 100644 --- a/src/ansys/grantami/bomanalytics/queries.py +++ b/src/ansys/grantami/bomanalytics/queries.py @@ -1771,6 +1771,7 @@ def with_units( """ Specifies units to use in the response. + Sets all units, overriding any previous configuration. Units not set will default to the API default unit. Provided unit symbols must exist in the target database. Parameters diff --git a/tests/test_query_builders/test_bom.py b/tests/test_query_builders/test_bom.py index 29f1966d..00440383 100644 --- a/tests/test_query_builders/test_bom.py +++ b/tests/test_query_builders/test_bom.py @@ -1,15 +1,25 @@ import pytest from ansys.grantami.bomanalytics import queries +all_bom_queries = pytest.mark.parametrize( + "query_type", + [ + queries.BomComplianceQuery, + queries.BomImpactedSubstancesQuery, + queries.BomSustainabilityQuery, + queries.BomSustainabilitySummaryQuery, + ] +) -@pytest.mark.parametrize("query_type", [queries.BomComplianceQuery, queries.BomImpactedSubstancesQuery]) + +@all_bom_queries def test_add_bom(query_type): query = query_type().with_bom("TEST BOM") assert isinstance(query, query_type) assert query._data.bom == "TEST BOM" -@pytest.mark.parametrize("query_type", [queries.BomComplianceQuery, queries.BomImpactedSubstancesQuery]) +@all_bom_queries def test_add_bom_wrong_type(query_type): with pytest.raises(TypeError) as e: query_type().with_bom(12345) diff --git a/tests/test_query_builders/test_sustainability.py b/tests/test_query_builders/test_sustainability.py new file mode 100644 index 00000000..c953590f --- /dev/null +++ b/tests/test_query_builders/test_sustainability.py @@ -0,0 +1,19 @@ +import pytest +from ansys.grantami.bomanalytics import queries + +DISTANCE = "a" +ENERGY = "b" +MASS = "c" + + +class TestUnitSelection: + @pytest.mark.parametrize("mass", [MASS, None]) + @pytest.mark.parametrize("energy", [ENERGY, None]) + @pytest.mark.parametrize("distance", [DISTANCE, None]) + @pytest.mark.parametrize("query_type", [queries.BomSustainabilitySummaryQuery, queries.BomSustainabilityQuery]) + def test_units_are_set(self, query_type, mass, energy, distance): + query = query_type() + query.with_units(distance=distance, energy=energy, mass=mass) + assert query._preferred_units.mass_unit == mass + assert query._preferred_units.distance_unit == distance + assert query._preferred_units.energy_unit == energy From 35c00f30463fbeff8f1ba1e811bd9484ee4b13be Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 14 Sep 2023 14:05:13 +0200 Subject: [PATCH 029/275] Item definitions clean up [skip ci] --- .../bomanalytics/_item_definitions.py | 83 +------------------ .../grantami/bomanalytics/_item_results.py | 36 +++----- tests/test_bom_item_definitions.py | 20 +++-- tests/test_query_builders/test_bom.py | 2 +- 4 files changed, 31 insertions(+), 110 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/_item_definitions.py b/src/ansys/grantami/bomanalytics/_item_definitions.py index ed8eea83..13ea782b 100644 --- a/src/ansys/grantami/bomanalytics/_item_definitions.py +++ b/src/ansys/grantami/bomanalytics/_item_definitions.py @@ -388,66 +388,15 @@ def _definition(self) -> models.GetComplianceForSubstancesSubstanceWithAmount: class CoatingReference(RecordReference, ABC): - def __init__( - self, - reference_type: ReferenceType, - reference_value: Union[int, str, None], - ): - super().__init__( - reference_type=reference_type, - reference_value=reference_value, - ) + """Extends RecordReference without changes, to re-define the class name, because it appears in the repr.""" class ProcessReference(RecordReference, ABC): - def __init__( - self, - reference_type: ReferenceType, - reference_value: Union[int, str, None], - ): - super().__init__( - reference_type=reference_type, - reference_value=reference_value, - ) + """Extends RecordReference without changes, to re-define the class name, because it appears in the repr.""" class TransportReference(RecordReference, ABC): - def __init__( - self, - reference_type: ReferenceType, - reference_value: Union[int, str, None], - ): - super().__init__( - reference_type=reference_type, - reference_value=reference_value, - ) - - -class BoM1711Definition: - """Represents a BoM that is supplied as part of a BoM query. - - The XML contains record references within it, so there are no explicit references to records in this object. - - Parameters - ---------- - bom - BoM in XML 1711 format. - """ - - def __init__(self, bom: str): - super().__init__() - self._bom = bom - - @property - def _definition(self) -> str: - """Low-level API BoM definition. - - Returns - ------- - Definition - """ - - return self._bom + """Extends RecordReference without changes, to re-define the class name, because it appears in the repr.""" class AbstractBomFactory: @@ -881,29 +830,3 @@ def create_definition_by_ec_number(ec_number: str) -> SubstanceDefinition: """ return SubstanceDefinition(reference_type=ReferenceType.EcNumber, reference_value=ec_number) - - -@AbstractBomFactory.register( - [ - models.GetComplianceForBom1711Request, - models.GetImpactedSubstancesForBom1711Request, - ] -) -class BomFactory: - """Creates bom definition objects.""" - - @staticmethod - def create_definition(bom: str) -> BoM1711Definition: - """Instantiate and return a ``Bom1711Definition`` object based on a BoM. - - Parameters - ---------- - bom - BoM. - - Returns - ------- - Bom1711Definition - """ - - return BoM1711Definition(bom=bom) diff --git a/src/ansys/grantami/bomanalytics/_item_results.py b/src/ansys/grantami/bomanalytics/_item_results.py index 88d2b777..e2a44843 100644 --- a/src/ansys/grantami/bomanalytics/_item_results.py +++ b/src/ansys/grantami/bomanalytics/_item_results.py @@ -2285,31 +2285,9 @@ class SustainabilityPhaseSummaryResult(NamedItemMixin, SustainabilitySummaryMixi """Name of the phase. Supported values are ``Material``, ``Processes``, and ``Transport``.""" -class TransportDefinition(TransportReference): - def __init__( - self, reference_type: ReferenceType, reference_value: Union[int, str, None], name: str, distance: ValueWithUnit - ): - super().__init__( - reference_type=reference_type, - reference_value=reference_value, - ) - self._name = name - self._distance = distance - - @property - def name(self) -> str: - """Name of the transport stage.""" - return self._name - - @property - def distance(self) -> ValueWithUnit: - """Distance travelled in the transport stage.""" - return self._distance - - # TODO: Standardize documentation approach. For PR, used inherited properties to avoid reviewing the same string N # times. Still documenting guids/identities as attributes, but they could also be defined as inherited properties -class TransportSummaryResult(SustainabilitySummaryMixin, TransportDefinition): +class TransportSummaryResult(NamedItemMixin, SustainabilitySummaryMixin, TransportReference): """ Sustainability summary for a transport stage. @@ -2323,6 +2301,18 @@ class TransportSummaryResult(SustainabilitySummaryMixin, TransportDefinition): Record GUID. """ + name: str + """Name of the transport stage.""" + + def __init__(self, distance: ValueWithUnit, **kwargs: Any) -> None: + super().__init__(**kwargs) + self._distance = distance + + @property + def distance(self) -> ValueWithUnit: + """Distance travelled in the transport stage.""" + return self._distance + class ContributingComponentResult(NamedItemMixin, PartDefinition): """ diff --git a/tests/test_bom_item_definitions.py b/tests/test_bom_item_definitions.py index 8b26b4be..306f7447 100644 --- a/tests/test_bom_item_definitions.py +++ b/tests/test_bom_item_definitions.py @@ -1,11 +1,14 @@ import pytest from ansys.grantami.bomanalytics._item_definitions import ( - BoM1711Definition, MaterialDefinition, SpecificationDefinition, PartDefinition, SubstanceDefinition, ReferenceType, + CoatingReference, + ProcessReference, + TransportReference, + RecordReference, ) from ansys.grantami.bomanalytics_openapi import ( CommonMaterialReference as MatRef, @@ -15,11 +18,6 @@ ) -def test_bom_definition(): - bom_item = BoM1711Definition("TEST_BOM") - assert bom_item._definition == "TEST_BOM" - - common_test_cases = [ ({"reference_type": ReferenceType.MiRecordGuid, "reference_value": "TEST_GUID"}, "record_guid"), ( @@ -30,6 +28,16 @@ def test_bom_definition(): ] +@pytest.mark.parametrize( + "kwargs, variable_name", + common_test_cases, +) +@pytest.mark.parametrize("item_type", [RecordReference, ProcessReference, CoatingReference, TransportReference]) +def test_base_record_references(kwargs, variable_name, item_type): + item = item_type(**kwargs) + assert getattr(item, variable_name) == kwargs["reference_value"] + + @pytest.mark.parametrize( "kwargs, variable_name", [({"reference_type": ReferenceType.MaterialId, "reference_value": "TEST_MATERIAL_ID"}, "material_id")] diff --git a/tests/test_query_builders/test_bom.py b/tests/test_query_builders/test_bom.py index 00440383..4520edb5 100644 --- a/tests/test_query_builders/test_bom.py +++ b/tests/test_query_builders/test_bom.py @@ -8,7 +8,7 @@ queries.BomImpactedSubstancesQuery, queries.BomSustainabilityQuery, queries.BomSustainabilitySummaryQuery, - ] + ], ) From 0cb1ab083a03f92a809cd25e6472bcf741823187 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 14 Sep 2023 15:22:38 +0200 Subject: [PATCH 030/275] Add reprs and tests [skip ci] --- .../grantami/bomanalytics/_item_results.py | 28 +++ tests/test_item_results.py | 160 ++++++++++++++++++ 2 files changed, 188 insertions(+) diff --git a/src/ansys/grantami/bomanalytics/_item_results.py b/src/ansys/grantami/bomanalytics/_item_results.py index e2a44843..6d79be55 100644 --- a/src/ansys/grantami/bomanalytics/_item_results.py +++ b/src/ansys/grantami/bomanalytics/_item_results.py @@ -2284,6 +2284,12 @@ class SustainabilityPhaseSummaryResult(NamedItemMixin, SustainabilitySummaryMixi name: str """Name of the phase. Supported values are ``Material``, ``Processes``, and ``Transport``.""" + def __repr__(self) -> str: + return ( + f"<{self.__class__.__name__}('{self.name}'," + f" EE%={self.embodied_energy_percentage}, CC%={self.climate_change_percentage})>" + ) + # TODO: Standardize documentation approach. For PR, used inherited properties to avoid reviewing the same string N # times. Still documenting guids/identities as attributes, but they could also be defined as inherited properties @@ -2313,6 +2319,12 @@ def distance(self) -> ValueWithUnit: """Distance travelled in the transport stage.""" return self._distance + def __repr__(self) -> str: + return ( + f"<{self.__class__.__name__}('{self.name}'," + f" EE%={self.embodied_energy_percentage}, CC%={self.climate_change_percentage})>" + ) + class ContributingComponentResult(NamedItemMixin, PartDefinition): """ @@ -2349,6 +2361,10 @@ def material_mass_before_processing(self) -> ValueWithUnit: """ return self._material_mass_before_processing + def __repr__(self) -> str: + _mass = f"{self._material_mass_before_processing.value}{self._material_mass_before_processing.unit}" + return f"<{self.__class__.__name__}('{self.name}', mass={_mass})>" + class MaterialSummaryResult(SustainabilitySummaryMixin, NamedItemMixin, RecordReference): """ @@ -2402,6 +2418,12 @@ def contributors(self) -> List[ContributingComponentResult]: # TODO translate docstring to actual English return self._contributors + def __repr__(self) -> str: + return ( + f"<{self.__class__.__name__}('{self.name}'," + f" EE%={self.embodied_energy_percentage}, CC%={self.climate_change_percentage})>" + ) + # TODO has two names: breaks the NamedItemMixin approach # TODO has two refs (process + material): breaks the Mixin approach for refs @@ -2454,3 +2476,9 @@ def process_reference(self) -> ProcessReference: Process record reference. """ return self._process_reference + + def __repr__(self) -> str: + return ( + f"<{self.__class__.__name__}(process='{self.process_name}', material='{self.material_name}', " + f"EE%={self.embodied_energy_percentage}, CC%={self.climate_change_percentage})>" + ) diff --git a/tests/test_item_results.py b/tests/test_item_results.py index 034d23c7..7dc77202 100644 --- a/tests/test_item_results.py +++ b/tests/test_item_results.py @@ -117,3 +117,163 @@ def test_compliance_item_repr(result_type): repr(result) == f"<{result_type}Result({{'reference_type': 'MiRecordGuid', " f"'reference_value': 'TEST_GUID'}}), {len(indicator_results)} indicators>" ) + + +class TestSustainabilitySummaryResultsRepr: + _rec_ref_kwargs = {"reference_type": "MiRecordGuid", "reference_value": "TEST_GUID"} + _eco_metrics = { + "embodied_energy": models.GrantaBomAnalyticsServicesImplementationCommonValueWithUnit( + value=1.0, + unit="KJ", + ), + "climate_change": models.GrantaBomAnalyticsServicesImplementationCommonValueWithUnit( + value=1.0, + unit="KJ", + ), + "embodied_energy_percentage": 60.0, + "climate_change_percentage": 40.0, + } + + def test_phase_summary_repr(self): + phase_summary = models.CommonSustainabilityPhaseSummary( + phase="Material", + **self._eco_metrics, + ) + phase_summary_result = ItemResultFactory.create_phase_summary(phase_summary) + assert repr(phase_summary_result) == "" + + def test_transport_phase_summary_repr(self): + model = models.CommonSustainabilityTransportSummaryEntry( + **self._eco_metrics, + stage_name="Train A->B", + distance=models.GrantaBomAnalyticsServicesImplementationCommonValueWithUnit(value=45, unit="km"), + record_reference=models.CommonTransportReference(**self._rec_ref_kwargs), + ) + transport_result = ItemResultFactory.create_transport_summary(model) + expected = "B', EE%=60.0, CC%=40.0)>" + assert repr(transport_result) == expected + + def test_material_phase_summary_repr(self): + model = models.CommonSustainabilityMaterialSummaryEntry( + **self._eco_metrics, + name="Steel", + record_reference=models.CommonMaterialReference(**self._rec_ref_kwargs), + largest_contributors=[], + mass_after_processing=models.GrantaBomAnalyticsServicesImplementationCommonValueWithUnit( + value=50, unit="kg" + ), + mass_before_processing=models.GrantaBomAnalyticsServicesImplementationCommonValueWithUnit( + value=45, unit="kg" + ), + ) + result = ItemResultFactory.create_material_summary(model) + expected = "" + assert repr(result) == expected + + def test_process_phase_summary_repr(self): + model = models.CommonSustainabilityProcessSummaryEntry( + **self._eco_metrics, + material_name="Steel", + material_record_reference=models.CommonMaterialReference(**self._rec_ref_kwargs), + process_name="Forging", + process_record_reference=models.CommonProcessReference(**self._rec_ref_kwargs), + ) + result = ItemResultFactory.create_process_summary(model) + expected = "" + assert repr(result) == expected + + def test_contributing_part_repr(self): + model = models.CommonSustainabilityMaterialContributingComponent( + component_name="Engine", + material_mass_before_processing=models.GrantaBomAnalyticsServicesImplementationCommonValueWithUnit( + value=50, unit="kg" + ), + record_reference=models.CommonPartReference(**self._rec_ref_kwargs), + ) + result = ItemResultFactory.create_contributing_component(model) + expected = "" + assert repr(result) == expected + + +class TestSustainabilityResultsRepr: + _rec_ref_kwargs = {"reference_type": "MiRecordGuid", "reference_value": "TEST_GUID"} + _eco_metrics = { + "embodied_energy": models.GrantaBomAnalyticsServicesImplementationCommonValueWithUnit( + value=2.3, + unit="KJ", + ), + "climate_change": models.GrantaBomAnalyticsServicesImplementationCommonValueWithUnit( + value=5.1, + unit="KJ", + ), + } + + def test_transport_result_repr(self): + model = models.CommonSustainabilityTransportWithSustainability( + **self._eco_metrics, + **self._rec_ref_kwargs, + ) + result = ItemResultFactory.create_transport_with_sustainability(model) + expected = ( + "" + ) + assert repr(result) == expected + + def test_part_result_repr(self): + model = models.CommonSustainabilityPartWithSustainability( + **self._eco_metrics, + **self._rec_ref_kwargs, + materials=[], + substances=[], + specifications=[], + processes=[], + parts=[], + reported_mass=models.GrantaBomAnalyticsServicesImplementationCommonValueWithUnit(value=45, unit="kg"), + ) + result = ItemResultFactory.create_part_with_sustainability(model) + expected = "" + assert repr(result) == expected + + def test_material_result_repr(self): + model = models.CommonSustainabilityMaterialWithSustainability( + **self._eco_metrics, + **self._rec_ref_kwargs, + biodegradable=True, + downcycle=True, + recyclable=True, + processes=[], + substances=[], + reported_mass=models.GrantaBomAnalyticsServicesImplementationCommonValueWithUnit(value=45, unit="kg"), + ) + result = ItemResultFactory.create_material_with_sustainability(model) + expected = ( + "" + ) + assert repr(result) == expected + + def test_process_result_repr(self): + model = models.CommonSustainabilityProcessWithSustainability( + **self._eco_metrics, + **self._rec_ref_kwargs, + ) + result = ItemResultFactory.create_process_with_sustainability(model) + expected = ( + "" + ) + assert repr(result) == expected + + def test_coating_result_repr(self): + model = models.CommonCoatingReference( + **self._rec_ref_kwargs, + ) + result = ItemResultFactory.create_coating_result(model) + expected = "" + assert repr(result) == expected + + def test_substance_result_repr(self): + model = models.CommonSubstanceReference( + **self._rec_ref_kwargs, + ) + result = ItemResultFactory.create_substance_result(model) + expected = "" + assert repr(result) == expected From 84fd5ace7e24c296f639eb50c02f2c328ba51ad1 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 14 Sep 2023 17:27:26 +0200 Subject: [PATCH 031/275] Update .gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 53adba47..c7019750 100644 --- a/.gitignore +++ b/.gitignore @@ -52,6 +52,8 @@ test-output.xml # Docs builds doc/build +.ipython/profile_default/history.sqlite + # ipynb (generated from py files on docs build) *.ipynb From 7b921888229d981ce24ea1dbf5be873a96eb7ea7 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 14 Sep 2023 17:35:48 +0200 Subject: [PATCH 032/275] Simplify record references --- .../bomanalytics/_item_definitions.py | 185 +++++------------- 1 file changed, 46 insertions(+), 139 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/_item_definitions.py b/src/ansys/grantami/bomanalytics/_item_definitions.py index 13ea782b..e5ca33f3 100644 --- a/src/ansys/grantami/bomanalytics/_item_definitions.py +++ b/src/ansys/grantami/bomanalytics/_item_definitions.py @@ -49,15 +49,29 @@ def __init__( reference_type: ReferenceType, reference_value: Union[int, str, None], ): - self.record_history_identity = None - self.record_guid = None - self.record_history_guid = None - if reference_type == ReferenceType.MiRecordHistoryIdentity: - self.record_history_identity = cast(int, reference_value) - elif reference_type == ReferenceType.MiRecordGuid: - self.record_guid = cast(str, reference_value) - elif reference_type == ReferenceType.MiRecordHistoryGuid: - self.record_history_guid = cast(str, reference_value) + self._reference_type = reference_type + self._reference_value = reference_value + + @property + def record_history_identity(self) -> Optional[int]: + """Record history identity.""" + if self._reference_type == ReferenceType.MiRecordHistoryIdentity: + return cast(int, self._reference_value) + return None + + @property + def record_guid(self) -> Optional[str]: + """Record GUID.""" + if self._reference_type == ReferenceType.MiRecordGuid: + return cast(str, self._reference_value) + return None + + @property + def record_history_guid(self) -> Optional[str]: + """Record history GUID.""" + if self._reference_type == ReferenceType.MiRecordHistoryGuid: + return cast(str, self._reference_value) + return None @property def record_reference(self) -> Dict[str, Optional[str]]: @@ -67,26 +81,10 @@ def record_reference(self) -> Dict[str, Optional[str]]: as the repr for this object and subobjects. """ - if self.record_guid: - result: Dict[str, Optional[str]] = { - "reference_type": ReferenceType.MiRecordGuid.name, - "reference_value": self.record_guid, - } - elif self.record_history_guid: - result = { - "reference_type": ReferenceType.MiRecordHistoryGuid.name, - "reference_value": self.record_history_guid, - } - elif self.record_history_identity: - result = { - "reference_type": ReferenceType.MiRecordHistoryIdentity.name, - "reference_value": str(self.record_history_identity), - } - else: - result = { - "reference_type": None, - "reference_value": None, - } + result = { + "reference_type": self._reference_type.name, + "reference_value": self._reference_value, + } return result def __repr__(self) -> str: @@ -108,42 +106,19 @@ def _definition(self) -> models.ModelBase: class PartDefinition(RecordDefinition): """Represents a part record from the concrete :class:`RecordDefinition` subclass. - This class extends the base constructor to also support part numbers. - - Parameters - ---------- - reference_type - Type of the record reference value. - reference_value; str, int - Value of the record reference. All values are strings except for record identities values, which are integers. + This class extends the base class to also support part numbers. """ - def __init__( - self, - reference_type: ReferenceType, - reference_value: Union[int, str, None], - ): - super().__init__( - reference_type=reference_type, - reference_value=reference_value, - ) - self.part_number = None - if reference_type == ReferenceType.PartNumber: - self.part_number = cast(str, reference_value) - @property - def record_reference(self) -> Dict[str, Optional[str]]: - if self.part_number: - return { - "reference_type": ReferenceType.PartNumber.name, - "reference_value": self.part_number, - } - else: - return super().record_reference + def part_number(self) -> Optional[str]: + """Part number.""" + if self._reference_type == ReferenceType.PartNumber: + return cast(str, self._reference_value) + return None @property def _definition(self) -> models.CommonPartReference: - """Low-level API material definition. + """Low-level API part definition. Returns ------- @@ -157,39 +132,15 @@ def _definition(self) -> models.CommonPartReference: class MaterialDefinition(RecordDefinition): """Represents a material record from the concrete :class:`RecordDefinition` subclass. - This class extends the base constructor to also support material IDs. - - Parameters - ---------- - reference_type - Type of the record reference value. - reference_value : str, int - Value of the record reference. All are strings except for record history identities, - which are integers. + This class extends the base class to also support material IDs. """ - def __init__( - self, - reference_type: ReferenceType, - reference_value: Union[int, str, None], - ): - super().__init__( - reference_type=reference_type, - reference_value=reference_value, - ) - self.material_id = None - if reference_type == ReferenceType.MaterialId: - self.material_id = cast(str, reference_value) - @property - def record_reference(self) -> Dict[str, Optional[str]]: - if self.material_id: - return { - "reference_type": ReferenceType.MaterialId.name, - "reference_value": self.material_id, - } - else: - return super().record_reference + def material_id(self) -> Optional[str]: + """Material ID.""" + if self._reference_type == ReferenceType.MaterialId: + return cast(str, self._reference_value) + return None @property def _definition(self) -> models.CommonMaterialReference: @@ -207,39 +158,15 @@ def _definition(self) -> models.CommonMaterialReference: class SpecificationDefinition(RecordDefinition): """Represents a specification record from the concrete :class:`RecordDefinition` subclass. - This class extends the base constructor to also support specification IDs. - - Parameters - ---------- - reference_type - Type of the record reference value. - reference_value : str, int - Value of the record reference. All are strings except for record history identities, - which are integers. + This class extends the base class to also support specification IDs. """ - def __init__( - self, - reference_type: ReferenceType, - reference_value: Union[int, str, None], - ): - super().__init__( - reference_type=reference_type, - reference_value=reference_value, - ) - self.specification_id = None - if reference_type == ReferenceType.SpecificationId: - self.specification_id = cast(str, reference_value) - @property - def record_reference(self) -> Dict[str, Optional[str]]: - if self.specification_id: - return { - "reference_type": ReferenceType.SpecificationId.name, - "reference_value": self.specification_id, - } - else: - return super().record_reference + def specification_id(self) -> Optional[str]: + """Specification ID.""" + if self._reference_type == ReferenceType.SpecificationId: + return cast(str, self._reference_value) + return None @property def _definition(self) -> models.CommonSpecificationReference: @@ -291,26 +218,6 @@ def __init__( elif reference_type == ReferenceType.EcNumber: self.ec_number = cast(str, reference_value) - @property - def record_reference(self) -> Dict[str, Optional[str]]: - if self.chemical_name: - return { - "reference_type": ReferenceType.ChemicalName.name, - "reference_value": self.chemical_name, - } - elif self.cas_number: - return { - "reference_type": ReferenceType.CasNumber.name, - "reference_value": self.cas_number, - } - elif self.ec_number: - return { - "reference_type": ReferenceType.EcNumber.name, - "reference_value": self.ec_number, - } - else: - return super().record_reference - class SubstanceDefinition(RecordDefinition, BaseSubstanceReference): """Represents the definition of a substance as supplied to a compliance query from the concrete From d1f6cdf50915738d6c30530a6ab10400f327ea76 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 14 Sep 2023 18:38:12 +0200 Subject: [PATCH 033/275] Remove autosummary --- doc/source/_templates/autosummary/base.rst | 9 --- doc/source/_templates/autosummary/class.rst | 38 ---------- .../_templates/custom-class-template.rst | 38 ---------- .../_templates/custom-module-template.rst | 70 ------------------- doc/source/conf.py | 1 - 5 files changed, 156 deletions(-) delete mode 100644 doc/source/_templates/autosummary/base.rst delete mode 100644 doc/source/_templates/autosummary/class.rst delete mode 100644 doc/source/_templates/custom-class-template.rst delete mode 100644 doc/source/_templates/custom-module-template.rst diff --git a/doc/source/_templates/autosummary/base.rst b/doc/source/_templates/autosummary/base.rst deleted file mode 100644 index f40e6062..00000000 --- a/doc/source/_templates/autosummary/base.rst +++ /dev/null @@ -1,9 +0,0 @@ -.. vale off - -{{ name | escape | underline}} - -.. currentmodule:: {{ module }} - -.. auto{{ objtype }}:: {{ objname }} - -.. vale on \ No newline at end of file diff --git a/doc/source/_templates/autosummary/class.rst b/doc/source/_templates/autosummary/class.rst deleted file mode 100644 index 1fbe6961..00000000 --- a/doc/source/_templates/autosummary/class.rst +++ /dev/null @@ -1,38 +0,0 @@ -.. vale off - -{{ fullname | escape | underline}} - -.. currentmodule:: {{ module }} - -.. autoclass:: {{ objname }} - - {% block methods %} - - {% if methods %} - .. rubric:: {{ _('Methods') }} - - .. autosummary:: - :toctree: - {% for item in methods %} - {% if item != "__init__" %} - {{ name }}.{{ item }} - {% endif %} - {%- endfor %} - {% endif %} - {% endblock %} - - {% block attributes %} - {% if attributes %} - .. rubric:: {{ _('Attributes') }} - - .. autosummary:: - :toctree: - {% for item in attributes %} - {% if item.0 != item.upper().0 %} - {{ name }}.{{ item }} - {% endif %} - {%- endfor %} - {% endif %} - {% endblock %} - -.. vale on \ No newline at end of file diff --git a/doc/source/_templates/custom-class-template.rst b/doc/source/_templates/custom-class-template.rst deleted file mode 100644 index 1fbe6961..00000000 --- a/doc/source/_templates/custom-class-template.rst +++ /dev/null @@ -1,38 +0,0 @@ -.. vale off - -{{ fullname | escape | underline}} - -.. currentmodule:: {{ module }} - -.. autoclass:: {{ objname }} - - {% block methods %} - - {% if methods %} - .. rubric:: {{ _('Methods') }} - - .. autosummary:: - :toctree: - {% for item in methods %} - {% if item != "__init__" %} - {{ name }}.{{ item }} - {% endif %} - {%- endfor %} - {% endif %} - {% endblock %} - - {% block attributes %} - {% if attributes %} - .. rubric:: {{ _('Attributes') }} - - .. autosummary:: - :toctree: - {% for item in attributes %} - {% if item.0 != item.upper().0 %} - {{ name }}.{{ item }} - {% endif %} - {%- endfor %} - {% endif %} - {% endblock %} - -.. vale on \ No newline at end of file diff --git a/doc/source/_templates/custom-module-template.rst b/doc/source/_templates/custom-module-template.rst deleted file mode 100644 index 009898a3..00000000 --- a/doc/source/_templates/custom-module-template.rst +++ /dev/null @@ -1,70 +0,0 @@ -.. vale off - -{{ fullname | escape | underline}} - -.. automodule:: {{ fullname }} - - {% block attributes %} - {% if attributes %} - .. rubric:: Module Attributes - - .. autosummary:: - :toctree: - {% for item in attributes %} - {{ item }} - {%- endfor %} - {% endif %} - {% endblock %} - - {% block functions %} - {% if functions %} - .. rubric:: {{ _('Functions') }} - - .. autosummary:: - :toctree: - {% for item in functions %} - {{ item }} - {%- endfor %} - {% endif %} - {% endblock %} - - {% block classes %} - {% if classes %} - .. rubric:: {{ _('Classes') }} - - .. autosummary:: - :toctree: - :template: custom-class-template.rst - {% for item in classes %} - {{ item }} - {%- endfor %} - {% endif %} - {% endblock %} - - {% block exceptions %} - {% if exceptions %} - .. rubric:: {{ _('Exceptions') }} - - .. autosummary:: - :toctree: - {% for item in exceptions %} - {{ item }} - {%- endfor %} - {% endif %} - {% endblock %} - -{% block modules %} -{% if modules %} -.. rubric:: Modules - -.. autosummary:: - :toctree: - :template: custom-module-template.rst - :recursive: -{% for item in modules %} - {{ item }} -{%- endfor %} -{% endif %} -{% endblock %} - -.. vale on \ No newline at end of file diff --git a/doc/source/conf.py b/doc/source/conf.py index a4a12718..b49d96a7 100755 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -25,7 +25,6 @@ "sphinx.ext.autodoc", "numpydoc", "sphinx.ext.doctest", - "sphinx.ext.autosummary", "notfound.extension", "sphinx.ext.intersphinx", "sphinx_copybutton", From 14c609d96c6f87aebc15b635acfc6a28e9d03201 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Fri, 15 Sep 2023 11:10:46 +0200 Subject: [PATCH 034/275] Add custom class members sorting method --- doc/source/conf.py | 86 +++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 82 insertions(+), 4 deletions(-) diff --git a/doc/source/conf.py b/doc/source/conf.py index b49d96a7..8b22fcd1 100755 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -1,13 +1,22 @@ -import sys import os -from datetime import datetime -from ansys_sphinx_theme import ansys_favicon, get_version_match, pyansys_logo_black import shutil +import sys +from datetime import datetime from pathlib import Path +from typing import Any + import jupytext +from ansys.grantami.bomanalytics import __version__ +from ansys_sphinx_theme import ansys_favicon, get_version_match, pyansys_logo_black +from sphinx.application import Sphinx +from sphinx.ext.autodoc import ( + ClassDocumenter as DefaultClassDocumenter, + PropertyDocumenter, MethodDocumenter, + Documenter, + member_order_option, +) sys.path.insert(0, os.path.abspath("../../src")) -from ansys.grantami.bomanalytics import __version__ # -- Project information ----------------------------------------------------- @@ -271,3 +280,72 @@ def _copy_examples_and_convert_to_notebooks(source_dir, output_dir): ---- """ + + +class ClassDocumenter(DefaultClassDocumenter): + # The only customization is to intercept the sort_members method and, only if the class being documented is + # configured to use the custom member-order, to sort the member documenters by following the MRO. + + def sort_members(self, documenters: list[tuple[Documenter, bool]], + order: str) -> list[tuple[Documenter, bool]]: + # Intercept sorting only for classes configured with the custom member-order value + if order != "by_mro_by_source": + return super().sort_members(documenters, order) + + # Get ordered list of parent classes. In reverse, so that the resulting documentation includes members inherited + # from the furthest ancestors first. + mro = reversed([c.__qualname__ for c in self.object.__mro__]) + + sorted_documenters = [] + for parent_kls_name in mro: + documenters_for_this_parent_kls = [] + for documenter, isattr in documenters: + if isinstance(documenter, MethodDocumenter): + documenter.parse_name() + documenter.import_object(True) + member_name = documenter.object.__qualname__ + elif isinstance(documenter, PropertyDocumenter): + documenter.parse_name() + documenter.import_object(True) + member_name = documenter.object.fget.__qualname__ + else: + raise Exception(f"Item type {type(documenter)} is not supported.") + + member_kls_name, member_fn_name = member_name.split(".") + if member_kls_name == parent_kls_name: + documenters_for_this_parent_kls.append((documenter, isattr)) + if documenters_for_this_parent_kls: + # Cannot delegate to super().sort_members to sort by source, because self.analyzer.tagorder identifies + # object by `BaseClass.method`, whereas the documenters identify objects by `ConcreteClass.method` + + # Block copied from Documenter.sort_members + # sort by source order, by virtue of the module analyzer + tagorder = self.analyzer.tagorder + + def keyfunc(entry: tuple[Documenter, bool]) -> int: + fullname = entry[0].name.split('::')[1] + # Substitute the parent name with the base class name + fullname_in_mro = fullname.replace(self.object_name, parent_kls_name) + return tagorder.get(fullname_in_mro, len(tagorder)) + + sorted_by_parent_source = sorted(documenters_for_this_parent_kls, key=keyfunc) + sorted_documenters.extend(sorted_by_parent_source) + return sorted_documenters + + +def wrapped_member_order_option(arg: Any) -> str | None: + """Used to convert the :member-order: option to auto directives.""" + # Allow extra configuration value for member order. + if arg == "by_mro_by_source": + return arg + else: + return member_order_option(arg) + + +# Allow custom member-order setting +ClassDocumenter.option_spec['member-order'] = wrapped_member_order_option + + +def setup(app: Sphinx): + # Register custom documenter as the default documenter for classes. + app.add_autodocumenter(ClassDocumenter, override=True) From 3e4eab90b4968d616953a7286328ed7011ab5cd5 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Fri, 15 Sep 2023 11:12:59 +0200 Subject: [PATCH 035/275] Re-order references to match previous documentation order --- src/ansys/grantami/bomanalytics/_item_definitions.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/_item_definitions.py b/src/ansys/grantami/bomanalytics/_item_definitions.py index e5ca33f3..acc02310 100644 --- a/src/ansys/grantami/bomanalytics/_item_definitions.py +++ b/src/ansys/grantami/bomanalytics/_item_definitions.py @@ -60,16 +60,16 @@ def record_history_identity(self) -> Optional[int]: return None @property - def record_guid(self) -> Optional[str]: - """Record GUID.""" - if self._reference_type == ReferenceType.MiRecordGuid: + def record_history_guid(self) -> Optional[str]: + """Record history GUID.""" + if self._reference_type == ReferenceType.MiRecordHistoryGuid: return cast(str, self._reference_value) return None @property - def record_history_guid(self) -> Optional[str]: - """Record history GUID.""" - if self._reference_type == ReferenceType.MiRecordHistoryGuid: + def record_guid(self) -> Optional[str]: + """Record GUID.""" + if self._reference_type == ReferenceType.MiRecordGuid: return cast(str, self._reference_value) return None From a0927a9bccdc7fff593b427b57014e1cdfd7318a Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Fri, 15 Sep 2023 12:08:17 +0200 Subject: [PATCH 036/275] Define and use correct references in sustainability --- .../bomanalytics/_item_definitions.py | 70 ++++++++++--------- .../grantami/bomanalytics/_item_results.py | 40 ++++++----- 2 files changed, 59 insertions(+), 51 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/_item_definitions.py b/src/ansys/grantami/bomanalytics/_item_definitions.py index acc02310..dcf8513a 100644 --- a/src/ansys/grantami/bomanalytics/_item_definitions.py +++ b/src/ansys/grantami/bomanalytics/_item_definitions.py @@ -103,8 +103,8 @@ def _definition(self) -> models.ModelBase: pass -class PartDefinition(RecordDefinition): - """Represents a part record from the concrete :class:`RecordDefinition` subclass. +class PartReference(RecordReference): + """Represents a reference to a part record from the concrete :class:`RecordReference` subclass. This class extends the base class to also support part numbers. """ @@ -116,6 +116,10 @@ def part_number(self) -> Optional[str]: return cast(str, self._reference_value) return None + +class PartDefinition(RecordDefinition, PartReference): + """Represents a part record from the concrete :class:`RecordDefinition` subclass.""" + @property def _definition(self) -> models.CommonPartReference: """Low-level API part definition. @@ -129,8 +133,8 @@ def _definition(self) -> models.CommonPartReference: return result -class MaterialDefinition(RecordDefinition): - """Represents a material record from the concrete :class:`RecordDefinition` subclass. +class MaterialReference(RecordReference): + """Represents a reference to a material record from the abstract ``RecordReference`` subclass. This class extends the base class to also support material IDs. """ @@ -142,6 +146,10 @@ def material_id(self) -> Optional[str]: return cast(str, self._reference_value) return None + +class MaterialDefinition(RecordDefinition, MaterialReference): + """Represents a material record from the concrete :class:`RecordDefinition` subclass.""" + @property def _definition(self) -> models.CommonMaterialReference: """Low-level API material definition. @@ -155,8 +163,8 @@ def _definition(self) -> models.CommonMaterialReference: return result -class SpecificationDefinition(RecordDefinition): - """Represents a specification record from the concrete :class:`RecordDefinition` subclass. +class SpecificationReference(RecordReference): + """Represents a reference to a specification record from the concrete :class:`RecordReference` subclass. This class extends the base class to also support specification IDs. """ @@ -168,6 +176,10 @@ def specification_id(self) -> Optional[str]: return cast(str, self._reference_value) return None + +class SpecificationDefinition(RecordDefinition, SpecificationReference): + """Represents a specification record from the concrete :class:`RecordDefinition` subclass.""" + @property def _definition(self) -> models.CommonSpecificationReference: """Low-level API specification definition. @@ -189,34 +201,28 @@ class BaseSubstanceReference(RecordReference, ABC): Substance references come in multiple flavors. Inputs, compliance results, and impacted substance results quantify substances in slightly different ways. This class implements the reference aspects of the substance record only. The quantifications are implemented in the subclasses. - - Parameters - ---------- - reference_type - Type of the record reference value. - reference_value - Value of the record reference. All are strings except for record history identities, - which are integers. """ - def __init__( - self, - reference_type: ReferenceType, - reference_value: Union[int, str, None], - ): - super().__init__( - reference_type=reference_type, - reference_value=reference_value, - ) - self.chemical_name = None - self.cas_number = None - self.ec_number = None - if reference_type == ReferenceType.ChemicalName: - self.chemical_name = cast(str, reference_value) - elif reference_type == ReferenceType.CasNumber: - self.cas_number = cast(str, reference_value) - elif reference_type == ReferenceType.EcNumber: - self.ec_number = cast(str, reference_value) + @property + def cas_number(self) -> Optional[str]: + """CAS number.""" + if self._reference_type == ReferenceType.CasNumber: + return cast(str, self._reference_value) + return None + + @property + def ec_number(self) -> Optional[str]: + """EC number.""" + if self._reference_type == ReferenceType.EcNumber: + return cast(str, self._reference_value) + return None + + @property + def chemical_name(self) -> Optional[str]: + """Chemical name.""" + if self._reference_type == ReferenceType.ChemicalName: + return cast(str, self._reference_value) + return None class SubstanceDefinition(RecordDefinition, BaseSubstanceReference): diff --git a/src/ansys/grantami/bomanalytics/_item_results.py b/src/ansys/grantami/bomanalytics/_item_results.py index 6d79be55..86557b5f 100644 --- a/src/ansys/grantami/bomanalytics/_item_results.py +++ b/src/ansys/grantami/bomanalytics/_item_results.py @@ -26,7 +26,9 @@ CoatingReference, ProcessReference, TransportReference, - RecordReference, + PartReference, + MaterialReference, + SpecificationReference, ) from .indicators import WatchListIndicator, RoHSIndicator @@ -1893,7 +1895,7 @@ class MaterialWithSustainabilityResult( SustainabilityResultMixin, ReusabilityResultMixin, MassResultMixin, - MaterialDefinition, + MaterialReference, ): """Describes an individual material included as part of a sustainability query result. This object includes three categories of attributes: @@ -1956,7 +1958,7 @@ class PartWithSustainabilityResult( ChildSpecificationWithSustainabilityMixin, SustainabilityResultMixin, MassResultMixin, - PartDefinition, + PartReference, ): """Describes an individual part included as part of a sustainability query result. This object includes three categories of attributes: @@ -2016,7 +2018,7 @@ class SpecificationWithSustainabilityResult( ChildCoatingWithComplianceMixin, SustainabilityResultMixin, MassResultMixin, - SpecificationDefinition, + SpecificationReference, ): """Describes an individual specification included as part of a sustainability query result. This object includes three categories of attributes: @@ -2326,7 +2328,7 @@ def __repr__(self) -> str: ) -class ContributingComponentResult(NamedItemMixin, PartDefinition): +class ContributingComponentResult(NamedItemMixin, PartReference): """ Identifies a Part as one the largest contributors to the environmental footprint of a material. @@ -2366,7 +2368,7 @@ def __repr__(self) -> str: return f"<{self.__class__.__name__}('{self.name}', mass={_mass})>" -class MaterialSummaryResult(SustainabilitySummaryMixin, NamedItemMixin, RecordReference): +class MaterialSummaryResult(SustainabilitySummaryMixin, NamedItemMixin, MaterialReference): """ Aggregated sustainability summary for a material. @@ -2438,7 +2440,7 @@ class ProcessSummaryResult(SustainabilitySummaryMixin): def __init__( self, material_name: str, - material_reference: MaterialDefinition, + material_reference: MaterialReference, process_name: str, process_reference: ProcessReference, **kwargs: Any, @@ -2450,32 +2452,32 @@ def __init__( self._process_reference = process_reference @property - def material_name(self) -> str: + def process_name(self) -> str: """ - Material name. + Process name. """ - return self._material_name + return self._process_name @property - def material_reference(self) -> MaterialDefinition: + def process_reference(self) -> ProcessReference: """ - Material record reference. + Process record reference. """ - return self._material_reference + return self._process_reference @property - def process_name(self) -> str: + def material_name(self) -> str: """ - Process name. + Material name. """ - return self._process_name + return self._material_name @property - def process_reference(self) -> ProcessReference: + def material_reference(self) -> MaterialReference: """ - Process record reference. + Material record reference. """ - return self._process_reference + return self._material_reference def __repr__(self) -> str: return ( From aa3c50a7d0cfe1ee2bc48da6474527b1600c9d58 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Fri, 15 Sep 2023 12:33:13 +0200 Subject: [PATCH 037/275] Clean summary sustainability docs --- doc/source/api/sustainability/bom_summary.rst | 14 ++++++--- doc/source/api/sustainability/common.rst | 15 +++++++++ .../bomanalytics/_item_definitions.py | 7 +++-- .../grantami/bomanalytics/_item_results.py | 31 ------------------- .../grantami/bomanalytics/_query_results.py | 5 ++- src/ansys/grantami/bomanalytics/queries.py | 8 ++--- 6 files changed, 35 insertions(+), 45 deletions(-) diff --git a/doc/source/api/sustainability/bom_summary.rst b/doc/source/api/sustainability/bom_summary.rst index 3f141b8f..cc519f2b 100644 --- a/doc/source/api/sustainability/bom_summary.rst +++ b/doc/source/api/sustainability/bom_summary.rst @@ -8,9 +8,9 @@ Query definition .. autoclass:: ansys.grantami.bomanalytics.queries.BomSustainabilitySummaryQuery :members: - - .. automethod:: with_bom - .. automethod:: with_units + :inherited-members: + :exclude-members: api_class + :member-order: by_mro_by_source Query result ~~~~~~~~~~~~ @@ -18,6 +18,7 @@ Query result .. autoclass:: ansys.grantami.bomanalytics._query_results.BomSustainabilitySummaryQueryResult :members: :inherited-members: + :member-order: by_mro_by_source Phase summary @@ -26,7 +27,7 @@ Phase summary .. autoclass:: ansys.grantami.bomanalytics._item_results.SustainabilityPhaseSummaryResult :members: :inherited-members: - + :member-order: by_mro_by_source Transport ~~~~~~~~~ @@ -35,6 +36,7 @@ Transport :members: :inherited-members: :exclude-members: record_reference + :member-order: by_mro_by_source Material ~~~~~~~~ @@ -43,11 +45,13 @@ Material :members: :inherited-members: :exclude-members: record_reference + :member-order: by_mro_by_source .. autoclass:: ansys.grantami.bomanalytics._item_results.ContributingComponentResult :members: :inherited-members: :exclude-members: record_reference + :member-order: by_mro_by_source Process ~~~~~~~ @@ -56,4 +60,4 @@ Process :members: :inherited-members: :exclude-members: record_reference - + :member-order: by_mro_by_source diff --git a/doc/source/api/sustainability/common.rst b/doc/source/api/sustainability/common.rst index 79db52d6..aaa00526 100644 --- a/doc/source/api/sustainability/common.rst +++ b/doc/source/api/sustainability/common.rst @@ -8,3 +8,18 @@ Value with unit .. autoclass:: ansys.grantami.bomanalytics._item_results.ValueWithUnit :members: + +Record references +~~~~~~~~~~~~~~~~~ + +.. autoclass:: ansys.grantami.bomanalytics._item_definitions.MaterialReference + :members: + :inherited-members: + :exclude-members: record_reference + :member-order: by_mro_by_source + +.. autoclass:: ansys.grantami.bomanalytics._item_definitions.ProcessReference + :members: + :inherited-members: + :exclude-members: record_reference + :member-order: by_mro_by_source diff --git a/src/ansys/grantami/bomanalytics/_item_definitions.py b/src/ansys/grantami/bomanalytics/_item_definitions.py index dcf8513a..bba45516 100644 --- a/src/ansys/grantami/bomanalytics/_item_definitions.py +++ b/src/ansys/grantami/bomanalytics/_item_definitions.py @@ -134,7 +134,8 @@ def _definition(self) -> models.CommonPartReference: class MaterialReference(RecordReference): - """Represents a reference to a material record from the abstract ``RecordReference`` subclass. + # Because of ProcessSummaryResult, this is publicly documented. + """Represents a reference to a Material record. This class extends the base class to also support material IDs. """ @@ -305,7 +306,9 @@ class CoatingReference(RecordReference, ABC): class ProcessReference(RecordReference, ABC): - """Extends RecordReference without changes, to re-define the class name, because it appears in the repr.""" + # Because of ProcessSummaryResult, this is publicly documented. + # Extends RecordReference without changes, to re-define the class name, because it appears in the repr. + """Represents a reference to a Process record.""" class TransportReference(RecordReference, ABC): diff --git a/src/ansys/grantami/bomanalytics/_item_results.py b/src/ansys/grantami/bomanalytics/_item_results.py index 86557b5f..70384de3 100644 --- a/src/ansys/grantami/bomanalytics/_item_results.py +++ b/src/ansys/grantami/bomanalytics/_item_results.py @@ -2293,20 +2293,9 @@ def __repr__(self) -> str: ) -# TODO: Standardize documentation approach. For PR, used inherited properties to avoid reviewing the same string N -# times. Still documenting guids/identities as attributes, but they could also be defined as inherited properties class TransportSummaryResult(NamedItemMixin, SustainabilitySummaryMixin, TransportReference): """ Sustainability summary for a transport stage. - - Attributes - ---------- - record_history_identity : int, optional - Record history identity. - record_history_guid : str, optional - Record history GUID. - record_guid : str, optional - Record GUID. """ name: str @@ -2331,17 +2320,6 @@ def __repr__(self) -> str: class ContributingComponentResult(NamedItemMixin, PartReference): """ Identifies a Part as one the largest contributors to the environmental footprint of a material. - - Attributes - ---------- - record_history_identity : int, optional - Record history identity. - part_number : str, optional - Part number. - record_history_guid : str, optional - Record history GUID. - record_guid : str, optional - Record GUID. """ # Overriding docstring for property `name` inherited from mixin @@ -2373,15 +2351,6 @@ class MaterialSummaryResult(SustainabilitySummaryMixin, NamedItemMixin, Material Aggregated sustainability summary for a material. Describes the environmental footprint of a unique material, accounting for all occurrences of the material in BoM. - - Attributes - ---------- - record_history_identity : int, optional - Record history identity. - record_history_guid : str, optional - Record history GUID. - record_guid : str, optional - Record GUID. """ # Overriding docstring for property `name` inherited from mixin diff --git a/src/ansys/grantami/bomanalytics/_query_results.py b/src/ansys/grantami/bomanalytics/_query_results.py index 92a7c9fb..3d7b5551 100644 --- a/src/ansys/grantami/bomanalytics/_query_results.py +++ b/src/ansys/grantami/bomanalytics/_query_results.py @@ -863,7 +863,6 @@ def __init__( self._material_details: List[MaterialSummaryResult] = [ ItemResultFactory.create_material_summary(material) for material in self._response.material_summary.summary ] - self._primary_processes_details: List[ProcessSummaryResult] = [ ItemResultFactory.create_process_summary(process) for process in self._response.process_summary.primary_processes @@ -915,14 +914,14 @@ def process(self) -> SustainabilityPhaseSummaryResult: """ return self._process_summary + # TODO confirm it is ALL and not some above threshold + Aggregated Other @property def transport_details(self) -> List[TransportSummaryResult]: - # TODO confirm it is ALL and not some above threshold + Aggregated Other """ Summary information for all transport stages. Values in percentages express the contribution of the specific transport stage, relative to contributions of all - transport stages. + transport stages. """ return self._transport_details diff --git a/src/ansys/grantami/bomanalytics/queries.py b/src/ansys/grantami/bomanalytics/queries.py index 594359a5..78b482c9 100644 --- a/src/ansys/grantami/bomanalytics/queries.py +++ b/src/ansys/grantami/bomanalytics/queries.py @@ -1754,7 +1754,7 @@ def _run_query(api_instance: api.DocumentationApi, **kwargs: Dict) -> str: class _SustainabilityMixin(_ApiMixin): _api_method: str - api_class = api.SustainabilityApi + api_class = api.SustainabilityApi # TODO consider making private. Manually excluded from docs for now. def __init_subclass__(cls, api_method: str, request_type: Type, **kwargs: Any): super().__init_subclass__(**kwargs) # type: ignore @@ -1776,11 +1776,11 @@ def with_units( Parameters ---------- - distance : Optional[str] + distance : str | None Unit symbol for distance. - energy : Optional[str] + energy : str | None Unit symbol for energy. - mass : Optional[str] + mass : str | None Unit symbol for mass. """ From a7868790b377cb0c124606007609a35cae280eaa Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Fri, 15 Sep 2023 13:34:57 +0200 Subject: [PATCH 038/275] Handle parent classes in different modules --- doc/source/conf.py | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/doc/source/conf.py b/doc/source/conf.py index 8b22fcd1..a56ef302 100755 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -1,7 +1,9 @@ import os import shutil import sys +import warnings from datetime import datetime +from inspect import getmodule from pathlib import Path from typing import Any @@ -14,6 +16,7 @@ PropertyDocumenter, MethodDocumenter, Documenter, member_order_option, + ModuleAnalyzer, ) sys.path.insert(0, os.path.abspath("../../src")) @@ -294,10 +297,15 @@ def sort_members(self, documenters: list[tuple[Documenter, bool]], # Get ordered list of parent classes. In reverse, so that the resulting documentation includes members inherited # from the furthest ancestors first. - mro = reversed([c.__qualname__ for c in self.object.__mro__]) + mro = reversed([ + {"name": c.__qualname__, "class": c} + for c in self.object.__mro__]) sorted_documenters = [] - for parent_kls_name in mro: + for parent_kls in mro: + parent_kls_name = parent_kls["name"] + parent_kls_module = getmodule(parent_kls["class"]) + documenters_for_this_parent_kls = [] for documenter, isattr in documenters: if isinstance(documenter, MethodDocumenter): @@ -309,7 +317,10 @@ def sort_members(self, documenters: list[tuple[Documenter, bool]], documenter.import_object(True) member_name = documenter.object.fget.__qualname__ else: - raise Exception(f"Item type {type(documenter)} is not supported.") + raise Exception( + f"Error when processing {self.name}. Member {documenter.name} is of type {type(documenter)}, " + f"which is not supported. Supported member types are property and method." + ) member_kls_name, member_fn_name = member_name.split(".") if member_kls_name == parent_kls_name: @@ -320,13 +331,23 @@ def sort_members(self, documenters: list[tuple[Documenter, bool]], # Block copied from Documenter.sort_members # sort by source order, by virtue of the module analyzer - tagorder = self.analyzer.tagorder + if getmodule(self.object).__name__ == parent_kls_module.__name__: + tagorder = self.analyzer.tagorder + else: + # parent class not defined in current module, instantiate analyzer for parent class module + analyzer = ModuleAnalyzer.for_module(parent_kls_module.__name__) + analyzer.analyze() + tagorder = analyzer.tagorder def keyfunc(entry: tuple[Documenter, bool]) -> int: fullname = entry[0].name.split('::')[1] # Substitute the parent name with the base class name fullname_in_mro = fullname.replace(self.object_name, parent_kls_name) - return tagorder.get(fullname_in_mro, len(tagorder)) + order = tagorder.get(fullname_in_mro, None) + if order is None: + warnings.warn(message=f"Unable to evaluate source order for {fullname_in_mro}") + order = len(tagorder) + return order sorted_by_parent_source = sorted(documenters_for_this_parent_kls, key=keyfunc) sorted_documenters.extend(sorted_by_parent_source) From 70ddb41213b76b6287d4914d0d51df5a915b34f9 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Fri, 15 Sep 2023 14:03:12 +0200 Subject: [PATCH 039/275] Clean sustainability docs --- doc/source/api/sustainability/bom.rst | 38 +++- .../grantami/bomanalytics/_item_results.py | 210 +++++------------- .../grantami/bomanalytics/_query_results.py | 12 - 3 files changed, 88 insertions(+), 172 deletions(-) diff --git a/doc/source/api/sustainability/bom.rst b/doc/source/api/sustainability/bom.rst index c8b750b4..d43d5617 100644 --- a/doc/source/api/sustainability/bom.rst +++ b/doc/source/api/sustainability/bom.rst @@ -8,10 +8,9 @@ Query definition ~~~~~~~~~~~~~~~~ .. autoclass:: ansys.grantami.bomanalytics.queries.BomSustainabilityQuery - :members: - - .. automethod:: with_bom - .. automethod:: with_units + :inherited-members: + :exclude-members: api_class + :member-order: by_mro_by_source Query result ~~~~~~~~~~~~ @@ -19,37 +18,60 @@ Query result .. autoclass:: ansys.grantami.bomanalytics._query_results.BomSustainabilityQueryResult :members: :inherited-members: - -Part -~~~~ -.. autoclass:: ansys.grantami.bomanalytics._item_results.PartWithSustainabilityResult + :member-order: by_mro_by_source Transport ~~~~~~~~~ .. autoclass:: ansys.grantami.bomanalytics._item_results.TransportWithSustainabilityResult + :inherited-members: + :exclude-members: record_reference + :member-order: by_mro_by_source + +Part +~~~~ + +.. autoclass:: ansys.grantami.bomanalytics._item_results.PartWithSustainabilityResult + :inherited-members: + :exclude-members: record_reference + :member-order: by_mro_by_source Material ~~~~~~~~ .. autoclass:: ansys.grantami.bomanalytics._item_results.MaterialWithSustainabilityResult + :inherited-members: + :exclude-members: record_reference + :member-order: by_mro_by_source Process ~~~~~~~ .. autoclass:: ansys.grantami.bomanalytics._item_results.ProcessWithSustainabilityResult + :inherited-members: + :exclude-members: record_reference + :member-order: by_mro_by_source Specification ~~~~~~~~~~~~~ .. autoclass:: ansys.grantami.bomanalytics._item_results.SpecificationWithSustainabilityResult + :inherited-members: + :exclude-members: record_reference + :member-order: by_mro_by_source Coating ~~~~~~~ .. autoclass:: ansys.grantami.bomanalytics._item_results.CoatingResult + :inherited-members: + :exclude-members: record_reference + :member-order: by_mro_by_source Substance ~~~~~~~~~ .. autoclass:: ansys.grantami.bomanalytics._item_results.SubstanceResult + :inherited-members: + :exclude-members: record_reference + :member-order: by_mro_by_source diff --git a/src/ansys/grantami/bomanalytics/_item_results.py b/src/ansys/grantami/bomanalytics/_item_results.py index 70384de3..d5eb0f56 100644 --- a/src/ansys/grantami/bomanalytics/_item_results.py +++ b/src/ansys/grantami/bomanalytics/_item_results.py @@ -1564,7 +1564,7 @@ class SustainabilityResultMixin(mixin_base_class): A Bom-sustainability query returns a BoM-like results object, with additional sustainability information attached to each level of the BoM. - This mixin implements only the sustainability metrics and applies to most items in the BoM. + This mixin implements only the sustainability metrics. Parameters ---------- @@ -1585,8 +1585,20 @@ def __init__( **kwargs: Any, ) -> None: super().__init__(**kwargs) - self.embodied_energy = embodied_energy - self.climate_change = climate_change + self._embodied_energy = embodied_energy + self._climate_change = climate_change + + @property + def embodied_energy(self) -> ValueWithUnit: + """Represents the direct and indirect energy use. Based on cumulative energy demand method developed by + ecoinvent.""" + return self._embodied_energy + + @property + def climate_change(self) -> ValueWithUnit: + """Estimates global warming potential considering emissions of different gases reported as carbon dioxide + equivalents (CO2-eq.). Based on Intergovernmental Panel on Climate Change (IPCC) method.""" + return self._climate_change class MassResultMixin(mixin_base_class): @@ -1614,7 +1626,17 @@ def __init__( **kwargs: Any, ) -> None: super().__init__(**kwargs) - self.reported_mass = reported_mass + self._reported_mass = reported_mass + + @property + def reported_mass(self) -> ValueWithUnit: + """ + Indicates a mass value that is calculated by the analysis, that represents the total mass for the quantity of + the item specified in the BoM, taking into account the quantities of parent assemblies. For example, for a part + in the BoM, the Reported mass is for the number of parts specified in the Quantity column, multiplied by the + Quantity of its parent assembly, and similarly by the Quantity of each of its ancestors in the BoM hierarchy. + """ + return self._reported_mass class ReusabilityResultMixin(mixin_base_class): @@ -1647,9 +1669,32 @@ def __init__( **kwargs: Any, ) -> None: super().__init__(**kwargs) - self.recyclable: bool = recyclable - self.biodegradable: bool = biodegradable - self.downcycle: bool = downcycle + self._recyclable: bool = recyclable + self._biodegradable: bool = biodegradable + self._downcycle: bool = downcycle + + @property + def recyclable(self) -> bool: + """ + Indicates whether the material can be recycled, regardless of the recyclates quality. + """ + return self._recyclable + + @property + def biodegradable(self) -> bool: + """ + Indicates whether the material is biodegradable. Includes any waste that is capable of undergoing anaerobic or + aerobic decomposition. + """ + return self._biodegradable + + @property + def downcycle(self) -> bool: + """ + Indicates whether the material can be recycled into material of an equivalent quality, that can be used for the + same (or similar) applications. + """ + return self._downcycle class ChildMaterialWithSustainabilityMixin(mixin_base_class): @@ -1890,8 +1935,8 @@ def _add_child_processes(self, child_processes: List[models.CommonSustainability class MaterialWithSustainabilityResult( - ChildProcessWithSustainabilityMixin, ChildSubstanceMixin, + ChildProcessWithSustainabilityMixin, SustainabilityResultMixin, ReusabilityResultMixin, MassResultMixin, @@ -1904,41 +1949,6 @@ class MaterialWithSustainabilityResult( - The sustainability information for this material - Any process or substance objects that are a child of this material object - Attributes - ---------- - record_history_identity : int, optional - Record history identity. - material_id : str, optional - Material ID. - record_history_guid : str, optional - Record history GUID. - record_guid : str, optional - Record GUID. - - embodied_energy : :class:`~ansys.grantami.bomanalytics._item_results.ValueWithUnit` - Represents the direct and indirect energy use. Based on cumulative energy demand method developed by ecoinvent. - climate_change: :class:`~ansys.grantami.bomanalytics._item_results.ValueWithUnit` - Estimates global warming potential considering emissions of different gases reported as carbon dioxide - equivalents (CO2-eq.). Based on Intergovernmental Panel on Climate Change (IPCC) method. - recyclable : bool - Indicates whether a material can be recycled, regardless of the recyclates quality. - biodegradable : bool - Indicates whether a material is biodegradable. Includes any waste that is capable of undergoing anaerobic or - aerobic decomposition. - downcycle : bool - Indicates whether a material can be recycled into material of an equivalent quality, that can be used for the - same (or similar) applications. - reported_mass : :class:`~ansys.grantami.bomanalytics._item_results.ValueWithUnit` - Indicates a mass value that is calculated by the analysis, that represents the total mass for the quantity of - the item specified in the BoM, taking into account the quantities of parent assemblies. For example, for a part - in the BoM, the Reported mass is for the number of parts specified in the Quantity column, multiplied by the - Quantity of its parent assembly, and similarly by the Quantity of each of its ancestors in the BoM hierarchy. - - processes : list[:class:`~ansys.grantami.bomanalytics._item_results.ProcessWithSustainabilityResult`] - List of processes. - substances : list[:class:`~ansys.grantami.bomanalytics._item_results.SubstanceResult`] - List of substances. - Notes ----- With the exception of the ``record_history_identity`` parameter, record reference parameters are only populated if @@ -1950,6 +1960,8 @@ class MaterialWithSustainabilityResult( """ +# TODO: Optionally, review mixins order, so that docs list properties in a logical order: parts, materials, process, etc +# i.e the opposite of what's here. class PartWithSustainabilityResult( ChildPartWithSustainabilityMixin, ChildMaterialWithSustainabilityMixin, @@ -1967,39 +1979,6 @@ class PartWithSustainabilityResult( - The sustainability information for this part - Any part, material, process, substance, or specification objects which are a child of this part object - Attributes - ---------- - record_history_identity : int, optional - Record history identity. - part_number : str, optional - Part number. - record_history_guid : str, optional - Record history GUID. - record_guid : str, optional - Record GUID. - - embodied_energy : :class:`~ansys.grantami.bomanalytics._item_results.ValueWithUnit` - Represents the direct and indirect energy use. Based on cumulative energy demand method developed by ecoinvent. - climate_change : :class:`~ansys.grantami.bomanalytics._item_results.ValueWithUnit` - Estimates global warming potential considering emissions of different gases reported as carbon dioxide - equivalents (CO2-eq.). Based on Intergovernmental Panel on Climate Change (IPCC) method. - reported_mass : :class:`~ansys.grantami.bomanalytics._item_results.ValueWithUnit` - Indicates a mass value that is calculated by the analysis, that represents the total mass for the quantity of - the item specified in the BoM, taking into account the quantities of parent assemblies. For example, for a part - in the BoM, the Reported mass is for the number of parts specified in the Quantity column, multiplied by the - Quantity of its parent assembly, and similarly by the Quantity of each of its ancestors in the BoM hierarchy. - - parts : list[:class:`~ansys.grantami.bomanalytics._item_results.PartWithSustainabilityResult`] - List of parts. - materials : list[:class:`~ansys.grantami.bomanalytics._item_results.MaterialWithSustainabilityResult`] - List of materials. - processes : list[:class:`~ansys.grantami.bomanalytics._item_results.ProcessWithSustainabilityResult`] - List of processes. - substances : list[:class:`~ansys.grantami.bomanalytics._item_results.SubstanceResult`] - List of substances. - specifications : list[:class:`~ansys.grantami.bomanalytics._item_results.SpecificationWithSustainabilityResult`] - List of specifications. - Notes ----- With the exception of the ``record_history_identity`` parameter, record reference attributes are only populated if @@ -2027,37 +2006,6 @@ class SpecificationWithSustainabilityResult( - The sustainability information for this specification - Any specification, material, substance, or coating objects which are a child of this part object - Attributes - ---------- - record_history_identity : int, optional - Record history identity. - specification_id : str, optional - Specification ID. - record_history_guid : str, optional - Record history GUID. - record_guid : str, optional - Record GUID. - - embodied_energy : :class:`~ansys.grantami.bomanalytics._item_results.ValueWithUnit` - Represents the direct and indirect energy use. Based on cumulative energy demand method developed by ecoinvent. - climate_change : :class:`~ansys.grantami.bomanalytics._item_results.ValueWithUnit` - Estimates global warming potential considering emissions of different gases reported as carbon dioxide - equivalents (CO2-eq.). Based on Intergovernmental Panel on Climate Change (IPCC) method. - reported_mass : :class:`~ansys.grantami.bomanalytics._item_results.ValueWithUnit` - Indicates a mass value that is calculated by the analysis, that represents the total mass for the quantity of - the item specified in the BoM, taking into account the quantities of parent assemblies. For example, for a part - in the BoM, the Reported mass is for the number of parts specified in the Quantity column, multiplied by the - Quantity of its parent assembly, and similarly by the Quantity of each of its ancestors in the BoM hierarchy. - - specifications : list[:class:`~ansys.grantami.bomanalytics._item_results.SpecificationWithSustainabilityResult`] - List of specifications. - materials : list[:class:`~ansys.grantami.bomanalytics._item_results.MaterialWithSustainabilityResult`] - List of materials. - substances : list[:class:`~ansys.grantami.bomanalytics._item_results.SubstanceResult`] - List of substances. - coatings : list[:class:`~ansys.grantami.bomanalytics._item_results.CoatingResult`] - List of coatings. - Notes ----- With the exception of the ``record_history_identity`` parameter, record reference attributes are only populated if @@ -2073,21 +2021,6 @@ class SubstanceResult(BaseSubstanceReference): """Describes an individual specification included as part of a sustainability query result. This object includes only includes the reference to the part in Granta MI (if the substance references a record) - Attributes - ---------- - record_history_identity : int, optional - Record history identify. - cas_number : str, optional - CAS number. - ec_number : str, optional - EC number. - chemical_name : str, optional - Chemical name. - record_history_guid : str, optional - Record history GUID. - record_guid : str, optional - Record GUID. - Notes ----- Record reference parameters are only populated if they are specified in the original query. @@ -2097,17 +2030,13 @@ class SubstanceResult(BaseSubstanceReference): """ +# TODO: Consider documenting CoatingReference/SubstanceReference directly, since Material and PartRef need to be added anyway. +# Although having the result class means it can be extended in the future without qualifying as breaking changes. class CoatingResult(CoatingReference): """Provides an individual coating included as part of a sustainability query result. This object includes only includes the reference to the coating in Granta MI - - Attributes - ---------- - record_history_identity : int, optional - Default reference type for items returned as children of the queried item. - Notes ----- Objects of this class are only returned as the result of a query. The class is not intended to be instantiated @@ -2125,18 +2054,6 @@ class ProcessWithSustainabilityResult( - The reference to the part in Granta MI (if the process references a record) - The sustainability information for this process - - Attributes - ---------- - record_history_identity : int, optional - Default reference type for items returned as children of the queried item. - - embodied_energy : :class:`~ansys.grantami.bomanalytics._item_results.ValueWithUnit` - Represents the direct and indirect energy use. Based on cumulative energy demand method developed by ecoinvent. - climate_change : :class:`~ansys.grantami.bomanalytics._item_results.ValueWithUnit` - Estimates global warming potential considering emissions of different gases reported as carbon dioxide - equivalents (CO2-eq.). Based on Intergovernmental Panel on Climate Change (IPCC) method. - Notes ----- Record reference parameters are only populated if they are specified in the original query. @@ -2151,24 +2068,12 @@ class TransportWithSustainabilityResult( SustainabilityResultMixin, TransportReference, ): - # TODO Check Reference documentation. Should probably include guids """Describes a transport stage included as part of a sustainability query result. This object includes two categories of attributes: - The reference to the transport in Granta MI (if the part references a record) - The sustainability information for this transport stage - Attributes - ---------- - record_history_identity : int, optional - Default reference type for items returned as children of the queried item. - - embodied_energy : :class:`~ansys.grantami.bomanalytics._item_results.ValueWithUnit` - Represents the direct and indirect energy use. Based on cumulative energy demand method developed by ecoinvent. - climate_change : :class:`~ansys.grantami.bomanalytics._item_results.ValueWithUnit` - Estimates global warming potential considering emissions of different gases reported as carbon dioxide - equivalents (CO2-eq.). Based on Intergovernmental Panel on Climate Change (IPCC) method. - Notes ----- Record reference parameters are only populated if they are specified in the original query. @@ -2176,6 +2081,7 @@ class TransportWithSustainabilityResult( Objects of this class are only returned as the result of a query. The class is not intended to be instantiated directly. """ + # TODO is the record reference note relevant? class SustainabilitySummaryMixin(mixin_base_class): diff --git a/src/ansys/grantami/bomanalytics/_query_results.py b/src/ansys/grantami/bomanalytics/_query_results.py index 3d7b5551..8d631228 100644 --- a/src/ansys/grantami/bomanalytics/_query_results.py +++ b/src/ansys/grantami/bomanalytics/_query_results.py @@ -811,12 +811,6 @@ def __init__( def parts(self) -> List[PartWithSustainabilityResult]: """Sustainability information for each root part included in the BoM specified in the original query. - - Examples - -------- - >>> result: BomSustainabilityQueryResult - >>> result.parts - [] """ return self._parts @@ -824,12 +818,6 @@ def parts(self) -> List[PartWithSustainabilityResult]: def transport_stages(self) -> List[TransportWithSustainabilityResult]: """Sustainability information for each transport stage included in the BoM specified in the original query. - - Examples - -------- - >>> result: BomSustainabilityQueryResult - >>> result.transport_stages - [] """ return self._transports From 942951cfad1c992b963b6e81e8b30a0077984883 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Fri, 15 Sep 2023 14:44:36 +0200 Subject: [PATCH 040/275] Clean up custom class documenter --- doc/source/conf.py | 96 ++++++++++++++++++++++++---------------------- 1 file changed, 51 insertions(+), 45 deletions(-) diff --git a/doc/source/conf.py b/doc/source/conf.py index a56ef302..f0249056 100755 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -285,79 +285,85 @@ def _copy_examples_and_convert_to_notebooks(source_dir, output_dir): """ +class CustomOrderException(Exception): + pass + + +CUSTOM_ORDER_KEY = "by_mro_by_source" + + class ClassDocumenter(DefaultClassDocumenter): # The only customization is to intercept the sort_members method and, only if the class being documented is - # configured to use the custom member-order, to sort the member documenters by following the MRO. + # configured to use the custom member-order, to sort the member documenters according to the class MRO. def sort_members(self, documenters: list[tuple[Documenter, bool]], order: str) -> list[tuple[Documenter, bool]]: # Intercept sorting only for classes configured with the custom member-order value - if order != "by_mro_by_source": + if order != CUSTOM_ORDER_KEY: return super().sort_members(documenters, order) - # Get ordered list of parent classes. In reverse, so that the resulting documentation includes members inherited - # from the furthest ancestors first. - mro = reversed([ - {"name": c.__qualname__, "class": c} - for c in self.object.__mro__]) - sorted_documenters = [] - for parent_kls in mro: - parent_kls_name = parent_kls["name"] - parent_kls_module = getmodule(parent_kls["class"]) - - documenters_for_this_parent_kls = [] - for documenter, isattr in documenters: - if isinstance(documenter, MethodDocumenter): - documenter.parse_name() - documenter.import_object(True) - member_name = documenter.object.__qualname__ - elif isinstance(documenter, PropertyDocumenter): - documenter.parse_name() - documenter.import_object(True) - member_name = documenter.object.fget.__qualname__ - else: - raise Exception( - f"Error when processing {self.name}. Member {documenter.name} is of type {type(documenter)}, " - f"which is not supported. Supported member types are property and method." - ) - - member_kls_name, member_fn_name = member_name.split(".") - if member_kls_name == parent_kls_name: - documenters_for_this_parent_kls.append((documenter, isattr)) - if documenters_for_this_parent_kls: - # Cannot delegate to super().sort_members to sort by source, because self.analyzer.tagorder identifies - # object by `BaseClass.method`, whereas the documenters identify objects by `ConcreteClass.method` - - # Block copied from Documenter.sort_members - # sort by source order, by virtue of the module analyzer - if getmodule(self.object).__name__ == parent_kls_module.__name__: + # Traversing MRO in reverse, so that the resulting documentation includes members inherited + # from the furthest ancestors first. + for ancestor_kls in reversed([kls for kls in self.object.__mro__]): + ancestor_kls_member_documenters = [] + for documenter, _isattr in documenters: + member_fullname = self._read_documenter_object_name(documenter) + member_kls_name, member_name = member_fullname.split(".") + if member_kls_name == ancestor_kls.__qualname__: + ancestor_kls_member_documenters.append((documenter, _isattr)) + + # If any documenters have been identified for an ancestor class, sort them by the source order + if ancestor_kls_member_documenters: + # Cannot delegate to super().sort_members to sort by source, because analyzer.tagorder identifies + # object by `BaseClass.method`, whereas the documenters identify objects by `ConcreteClass.method`. + # So we re-use the `super().sort_members` logic, but substitute the class name before looking up the + # member position in the source code. + + # Block mostly copied from Documenter.sort_members + if getmodule(self.object).__name__ == getmodule(ancestor_kls).__name__: tagorder = self.analyzer.tagorder else: - # parent class not defined in current module, instantiate analyzer for parent class module - analyzer = ModuleAnalyzer.for_module(parent_kls_module.__name__) + # parent class not defined in current module, instantiate analyzer for ancestor class source module + analyzer = ModuleAnalyzer.for_module(getmodule(ancestor_kls).__name__) analyzer.analyze() tagorder = analyzer.tagorder def keyfunc(entry: tuple[Documenter, bool]) -> int: fullname = entry[0].name.split('::')[1] # Substitute the parent name with the base class name - fullname_in_mro = fullname.replace(self.object_name, parent_kls_name) + fullname_in_mro = fullname.replace(self.object_name, ancestor_kls.__qualname__) order = tagorder.get(fullname_in_mro, None) if order is None: - warnings.warn(message=f"Unable to evaluate source order for {fullname_in_mro}") - order = len(tagorder) + raise CustomOrderException( + f"Error when processing {self.name}, unable to evaluate source order for {fullname_in_mro}" + ) return order - sorted_by_parent_source = sorted(documenters_for_this_parent_kls, key=keyfunc) + sorted_by_parent_source = sorted(ancestor_kls_member_documenters, key=keyfunc) sorted_documenters.extend(sorted_by_parent_source) return sorted_documenters + def _read_documenter_object_name(self, documenter: Documenter) -> str: + if isinstance(documenter, MethodDocumenter): + documenter.parse_name() + documenter.import_object(True) + return documenter.object.__qualname__ + elif isinstance(documenter, PropertyDocumenter): + documenter.parse_name() + documenter.import_object(True) + return documenter.object.fget.__qualname__ + else: + raise CustomOrderException( + f"Error when processing {self.name}. Member {documenter.name} is of type {type(documenter)}, " + f"which is not supported. Supported member types are property and method." + ) + def wrapped_member_order_option(arg: Any) -> str | None: """Used to convert the :member-order: option to auto directives.""" # Allow extra configuration value for member order. - if arg == "by_mro_by_source": + if arg == CUSTOM_ORDER_KEY: return arg else: return member_order_option(arg) From d2babf0bf3f0f994520ebb454018bd03305bfd34 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Fri, 15 Sep 2023 16:30:57 +0200 Subject: [PATCH 041/275] Code styling and failing tests --- src/ansys/grantami/bomanalytics/_item_definitions.py | 3 ++- src/ansys/grantami/bomanalytics/_item_results.py | 9 ++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/_item_definitions.py b/src/ansys/grantami/bomanalytics/_item_definitions.py index bba45516..da4d11af 100644 --- a/src/ansys/grantami/bomanalytics/_item_definitions.py +++ b/src/ansys/grantami/bomanalytics/_item_definitions.py @@ -81,9 +81,10 @@ def record_reference(self) -> Dict[str, Optional[str]]: as the repr for this object and subobjects. """ + _reference_value = str(self._reference_value) if self._reference_value is not None else None result = { "reference_type": self._reference_type.name, - "reference_value": self._reference_value, + "reference_value": _reference_value, } return result diff --git a/src/ansys/grantami/bomanalytics/_item_results.py b/src/ansys/grantami/bomanalytics/_item_results.py index d5eb0f56..3b69789e 100644 --- a/src/ansys/grantami/bomanalytics/_item_results.py +++ b/src/ansys/grantami/bomanalytics/_item_results.py @@ -794,9 +794,6 @@ def _create_impacted_substance( reference_type=reference_type, reference_value=reference_value, ) - impacted_substance.ec_number = substance.ec_number - impacted_substance.cas_number = substance.cas_number - impacted_substance.chemical_name = substance.substance_name return impacted_substance @property @@ -2030,8 +2027,9 @@ class SubstanceResult(BaseSubstanceReference): """ -# TODO: Consider documenting CoatingReference/SubstanceReference directly, since Material and PartRef need to be added anyway. -# Although having the result class means it can be extended in the future without qualifying as breaking changes. +# TODO: Consider documenting CoatingReference/SubstanceReference directly, since Material and PartRef need to be added +# anyway. Although having the result class means it can be extended in the future without qualifying as breaking +# changes. class CoatingResult(CoatingReference): """Provides an individual coating included as part of a sustainability query result. @@ -2081,6 +2079,7 @@ class TransportWithSustainabilityResult( Objects of this class are only returned as the result of a query. The class is not intended to be instantiated directly. """ + # TODO is the record reference note relevant? From 9e693736a1f233aa9c496f513749680ab9656429 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Mon, 18 Sep 2023 09:33:41 +0200 Subject: [PATCH 042/275] Move documenter to separate module --- doc/class_documenter.py | 97 ++++++++++++++++++++++++++++++++++++++ doc/source/conf.py | 100 +--------------------------------------- 2 files changed, 99 insertions(+), 98 deletions(-) create mode 100644 doc/class_documenter.py diff --git a/doc/class_documenter.py b/doc/class_documenter.py new file mode 100644 index 00000000..a3a39435 --- /dev/null +++ b/doc/class_documenter.py @@ -0,0 +1,97 @@ +from inspect import getmodule +from typing import Any +from sphinx.ext.autodoc import ( + ClassDocumenter as DefaultClassDocumenter, + PropertyDocumenter, MethodDocumenter, + Documenter, + member_order_option, + ModuleAnalyzer, +) + + +class CustomOrderException(Exception): + pass + + +CUSTOM_ORDER_KEY = "by_mro_by_source" + + +class ClassDocumenter(DefaultClassDocumenter): + # The only customization is to intercept the sort_members method and, only if the class being documented is + # configured to use the custom member-order, to sort the member documenters according to the class MRO. + + def sort_members(self, documenters: list[tuple[Documenter, bool]], + order: str) -> list[tuple[Documenter, bool]]: + # Intercept sorting only for classes configured with the custom member-order value + if order != CUSTOM_ORDER_KEY: + return super().sort_members(documenters, order) + + sorted_documenters = [] + # Traversing MRO in reverse, so that the resulting documentation includes members inherited + # from the furthest ancestors first. + for ancestor_kls in reversed([kls for kls in self.object.__mro__]): + ancestor_kls_member_documenters = [] + for documenter, _isattr in documenters: + member_fullname = self._read_documenter_object_name(documenter) + member_kls_name, member_name = member_fullname.split(".") + if member_kls_name == ancestor_kls.__qualname__: + ancestor_kls_member_documenters.append((documenter, _isattr)) + + # If any documenters have been identified for an ancestor class, sort them by the source order + if ancestor_kls_member_documenters: + # Cannot delegate to super().sort_members to sort by source, because analyzer.tagorder identifies + # object by `BaseClass.method`, whereas the documenters identify objects by `ConcreteClass.method`. + # So we re-use the `super().sort_members` logic, but substitute the class name before looking up the + # member position in the source code. + + # Block mostly copied from Documenter.sort_members + if getmodule(self.object).__name__ == getmodule(ancestor_kls).__name__: + tagorder = self.analyzer.tagorder + else: + # parent class not defined in current module, instantiate analyzer for ancestor class source module + analyzer = ModuleAnalyzer.for_module(getmodule(ancestor_kls).__name__) + analyzer.analyze() + tagorder = analyzer.tagorder + + def keyfunc(entry: tuple[Documenter, bool]) -> int: + fullname = entry[0].name.split('::')[1] + # Substitute the parent name with the base class name + fullname_in_mro = fullname.replace(self.object_name, ancestor_kls.__qualname__) + order = tagorder.get(fullname_in_mro, None) + if order is None: + raise CustomOrderException( + f"Error when processing {self.name}, unable to evaluate source order for {fullname_in_mro}" + ) + return order + + sorted_by_parent_source = sorted(ancestor_kls_member_documenters, key=keyfunc) + sorted_documenters.extend(sorted_by_parent_source) + return sorted_documenters + + def _read_documenter_object_name(self, documenter: Documenter) -> str: + if isinstance(documenter, MethodDocumenter): + documenter.parse_name() + documenter.import_object(True) + return documenter.object.__qualname__ + elif isinstance(documenter, PropertyDocumenter): + documenter.parse_name() + documenter.import_object(True) + return documenter.object.fget.__qualname__ + else: + raise CustomOrderException( + f"Error when processing {self.name}. Member {documenter.name} is of type {type(documenter)}, " + f"which is not supported. Supported member types are property and method." + ) + + +def wrapped_member_order_option(arg: Any) -> str | None: + """Used to convert the :member-order: option to auto directives.""" + # Allow extra configuration value for member order. + if arg == CUSTOM_ORDER_KEY: + return arg + else: + return member_order_option(arg) + + +# Allow custom member-order setting +ClassDocumenter.option_spec['member-order'] = wrapped_member_order_option diff --git a/doc/source/conf.py b/doc/source/conf.py index f0249056..9d332c06 100755 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -1,23 +1,15 @@ import os import shutil import sys -import warnings from datetime import datetime -from inspect import getmodule from pathlib import Path -from typing import Any import jupytext from ansys.grantami.bomanalytics import __version__ from ansys_sphinx_theme import ansys_favicon, get_version_match, pyansys_logo_black from sphinx.application import Sphinx -from sphinx.ext.autodoc import ( - ClassDocumenter as DefaultClassDocumenter, - PropertyDocumenter, MethodDocumenter, - Documenter, - member_order_option, - ModuleAnalyzer, -) + +from doc.class_documenter import ClassDocumenter sys.path.insert(0, os.path.abspath("../../src")) @@ -285,94 +277,6 @@ def _copy_examples_and_convert_to_notebooks(source_dir, output_dir): """ -class CustomOrderException(Exception): - pass - - -CUSTOM_ORDER_KEY = "by_mro_by_source" - - -class ClassDocumenter(DefaultClassDocumenter): - # The only customization is to intercept the sort_members method and, only if the class being documented is - # configured to use the custom member-order, to sort the member documenters according to the class MRO. - - def sort_members(self, documenters: list[tuple[Documenter, bool]], - order: str) -> list[tuple[Documenter, bool]]: - # Intercept sorting only for classes configured with the custom member-order value - if order != CUSTOM_ORDER_KEY: - return super().sort_members(documenters, order) - - sorted_documenters = [] - # Traversing MRO in reverse, so that the resulting documentation includes members inherited - # from the furthest ancestors first. - for ancestor_kls in reversed([kls for kls in self.object.__mro__]): - ancestor_kls_member_documenters = [] - for documenter, _isattr in documenters: - member_fullname = self._read_documenter_object_name(documenter) - member_kls_name, member_name = member_fullname.split(".") - if member_kls_name == ancestor_kls.__qualname__: - ancestor_kls_member_documenters.append((documenter, _isattr)) - - # If any documenters have been identified for an ancestor class, sort them by the source order - if ancestor_kls_member_documenters: - # Cannot delegate to super().sort_members to sort by source, because analyzer.tagorder identifies - # object by `BaseClass.method`, whereas the documenters identify objects by `ConcreteClass.method`. - # So we re-use the `super().sort_members` logic, but substitute the class name before looking up the - # member position in the source code. - - # Block mostly copied from Documenter.sort_members - if getmodule(self.object).__name__ == getmodule(ancestor_kls).__name__: - tagorder = self.analyzer.tagorder - else: - # parent class not defined in current module, instantiate analyzer for ancestor class source module - analyzer = ModuleAnalyzer.for_module(getmodule(ancestor_kls).__name__) - analyzer.analyze() - tagorder = analyzer.tagorder - - def keyfunc(entry: tuple[Documenter, bool]) -> int: - fullname = entry[0].name.split('::')[1] - # Substitute the parent name with the base class name - fullname_in_mro = fullname.replace(self.object_name, ancestor_kls.__qualname__) - order = tagorder.get(fullname_in_mro, None) - if order is None: - raise CustomOrderException( - f"Error when processing {self.name}, unable to evaluate source order for {fullname_in_mro}" - ) - return order - - sorted_by_parent_source = sorted(ancestor_kls_member_documenters, key=keyfunc) - sorted_documenters.extend(sorted_by_parent_source) - return sorted_documenters - - def _read_documenter_object_name(self, documenter: Documenter) -> str: - if isinstance(documenter, MethodDocumenter): - documenter.parse_name() - documenter.import_object(True) - return documenter.object.__qualname__ - elif isinstance(documenter, PropertyDocumenter): - documenter.parse_name() - documenter.import_object(True) - return documenter.object.fget.__qualname__ - else: - raise CustomOrderException( - f"Error when processing {self.name}. Member {documenter.name} is of type {type(documenter)}, " - f"which is not supported. Supported member types are property and method." - ) - - -def wrapped_member_order_option(arg: Any) -> str | None: - """Used to convert the :member-order: option to auto directives.""" - # Allow extra configuration value for member order. - if arg == CUSTOM_ORDER_KEY: - return arg - else: - return member_order_option(arg) - - -# Allow custom member-order setting -ClassDocumenter.option_spec['member-order'] = wrapped_member_order_option - - def setup(app: Sphinx): # Register custom documenter as the default documenter for classes. app.add_autodocumenter(ClassDocumenter, override=True) From d1e1a442cd8f5d4263c80f02ff72afda91059955 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Mon, 18 Sep 2023 09:50:36 +0200 Subject: [PATCH 043/275] Query doc changes --- src/ansys/grantami/bomanalytics/queries.py | 32 ++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/queries.py b/src/ansys/grantami/bomanalytics/queries.py index 78b482c9..43ffa479 100644 --- a/src/ansys/grantami/bomanalytics/queries.py +++ b/src/ansys/grantami/bomanalytics/queries.py @@ -541,6 +541,30 @@ def _run_query( api_instance: Union[api.ComplianceApi, api.ImpactedSubstancesApi, api.SustainabilityApi], static_arguments: Dict, ) -> Query_Result: + """ + Abstract method. Inherited classes must pass the current state of the query as arguments to _call_api and + handle the response. + + This method should not be used by an end user. The ``BomAnalyticsClient.run()`` method should + be used instead. + + Parameters + ---------- + api_instance + Instance of the low-level ``ComplianceApi`` class. + static_arguments + Arguments set at the connection level, including the database key and any custom table names. + + Returns + ------- + Result, with the type depending on the query. + + Notes + ----- + This method gets the bound method for this particular query from the ``api_instance`` parameter and passes + it to the ``self._call_api()`` method, which performs the actual call. It then passes the result to + the ``QueryResultFactory`` class to build the corresponding result object. + """ pass @abstractmethod @@ -1524,7 +1548,8 @@ def batched_arguments(self) -> List[Dict[str, str]]: Examples -------- - >>> bom_item = _BomQueryDataManager(bom = ">> bom_item = _BomQueryDataManager("bom_xml1711") + >>> bom_item.bom = ">> bom_item.batched_arguments {"bom_xml1711": " Query_Result: - """Something""" + """Implementation of abstract method _run_query for sustainability endpoints. + + Sets the arguments ``preferred_units`` from user inputs. + """ api_method = getattr(api_instance, self._api_method) arguments = { **static_arguments, From 377c133ee4af4de9cf2da6159051eb351339d999 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Mon, 18 Sep 2023 10:03:33 +0200 Subject: [PATCH 044/275] Docstring changes --- src/ansys/grantami/bomanalytics/_item_results.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/_item_results.py b/src/ansys/grantami/bomanalytics/_item_results.py index 3b69789e..3466ade2 100644 --- a/src/ansys/grantami/bomanalytics/_item_results.py +++ b/src/ansys/grantami/bomanalytics/_item_results.py @@ -2016,7 +2016,7 @@ class SpecificationWithSustainabilityResult( class SubstanceResult(BaseSubstanceReference): """Describes an individual specification included as part of a sustainability query result. - This object includes only includes the reference to the part in Granta MI (if the substance references a record) + This object includes only includes the reference to the part in Granta MI (if the substance references a record). Notes ----- @@ -2033,7 +2033,7 @@ class SubstanceResult(BaseSubstanceReference): class CoatingResult(CoatingReference): """Provides an individual coating included as part of a sustainability query result. - This object includes only includes the reference to the coating in Granta MI + This object includes only includes the reference to the coating in Granta MI. Notes ----- From 68acbc2d730853980a0f357dc67e7e596461f730 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Mon, 18 Sep 2023 10:05:21 +0200 Subject: [PATCH 045/275] Code styling --- src/ansys/grantami/bomanalytics/queries.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/queries.py b/src/ansys/grantami/bomanalytics/queries.py index 43ffa479..82863526 100644 --- a/src/ansys/grantami/bomanalytics/queries.py +++ b/src/ansys/grantami/bomanalytics/queries.py @@ -1817,8 +1817,8 @@ def with_units( def _run_query(self, api_instance: api.SustainabilityApi, static_arguments: Dict) -> Query_Result: """Implementation of abstract method _run_query for sustainability endpoints. - Sets the arguments ``preferred_units`` from user inputs. - """ + Sets the arguments ``preferred_units`` from user inputs. + """ api_method = getattr(api_instance, self._api_method) arguments = { **static_arguments, From 8f934fb18f228a24c68c384b7f8f66007adbdf35 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Mon, 18 Sep 2023 10:22:51 +0200 Subject: [PATCH 046/275] Fix path --- doc/source/conf.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/source/conf.py b/doc/source/conf.py index 9d332c06..6ee90f9c 100755 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -9,7 +9,9 @@ from ansys_sphinx_theme import ansys_favicon, get_version_match, pyansys_logo_black from sphinx.application import Sphinx -from doc.class_documenter import ClassDocumenter +sys.path.insert(0, os.path.abspath("../")) +from class_documenter import ClassDocumenter + sys.path.insert(0, os.path.abspath("../../src")) From bd46470118d2143dab4f6f7d49be59c07ea0eb60 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Mon, 18 Sep 2023 10:25:31 +0200 Subject: [PATCH 047/275] Remove outdated TODOs --- src/ansys/grantami/bomanalytics/_item_results.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/_item_results.py b/src/ansys/grantami/bomanalytics/_item_results.py index 3466ade2..e8acfb8b 100644 --- a/src/ansys/grantami/bomanalytics/_item_results.py +++ b/src/ansys/grantami/bomanalytics/_item_results.py @@ -2061,7 +2061,6 @@ class ProcessWithSustainabilityResult( """ -# TODO: Response will include transport stage name (TransportReference -> TransportDefinition) class TransportWithSustainabilityResult( SustainabilityResultMixin, TransportReference, @@ -2301,8 +2300,6 @@ def __repr__(self) -> str: ) -# TODO has two names: breaks the NamedItemMixin approach -# TODO has two refs (process + material): breaks the Mixin approach for refs class ProcessSummaryResult(SustainabilitySummaryMixin): """ Aggregated sustainability summary for a process, applied to a unique material. From 95319f245ec494a64867ab48651ef35e06895abf Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Mon, 18 Sep 2023 10:30:17 +0200 Subject: [PATCH 048/275] Fix typing --- doc/class_documenter.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/class_documenter.py b/doc/class_documenter.py index a3a39435..0b77dcc0 100644 --- a/doc/class_documenter.py +++ b/doc/class_documenter.py @@ -1,5 +1,5 @@ from inspect import getmodule -from typing import Any +from typing import Any, Optional from sphinx.ext.autodoc import ( ClassDocumenter as DefaultClassDocumenter, PropertyDocumenter, MethodDocumenter, @@ -84,7 +84,7 @@ def _read_documenter_object_name(self, documenter: Documenter) -> str: ) -def wrapped_member_order_option(arg: Any) -> str | None: +def wrapped_member_order_option(arg: Any) -> Optional[str]: """Used to convert the :member-order: option to auto directives.""" # Allow extra configuration value for member order. if arg == CUSTOM_ORDER_KEY: From 05b4e48c443e4ed220b9e65124a3bb4f7738dde4 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Mon, 18 Sep 2023 12:41:22 +0200 Subject: [PATCH 049/275] Ci/disable server checks (#30) * Turn off server checks * Deploy dev docs without examples * Fix dependencies and disable release step --- .github/workflows/ci_cd.yml | 152 ++++++++++++++++++------------------ 1 file changed, 76 insertions(+), 76 deletions(-) diff --git a/.github/workflows/ci_cd.yml b/.github/workflows/ci_cd.yml index b6e0dc11..8b69be2b 100644 --- a/.github/workflows/ci_cd.yml +++ b/.github/workflows/ci_cd.yml @@ -25,90 +25,90 @@ jobs: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} BOM_OPENAPI_TOKEN: ${{ secrets.BOM_OPENAPI_TOKEN }} - integration_checks: - name: Integration checks - needs: local_checks - if: ${{ !startsWith( github.event.pull_request.head.ref, 'dependabot/') }} - uses: ./.github/workflows/server_checks.yml - secrets: - AZURE_APP_ID: ${{ secrets.AZURE_APP_ID }} - AZURE_SECRET: ${{ secrets.AZURE_SECRET }} - AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }} - AZURE_RESOURCE_GROUP: ${{ secrets.AZURE_RESOURCE_GROUP }} - AZURE_VM_NAME: ${{ secrets.AZURE_VM_NAME }} - TEST_SERVER_URL: ${{ secrets.TEST_SERVER_URL }} - TEST_SERVER_READ_USER: ${{ secrets.TEST_SERVER_READ_USER }} - TEST_SERVER_READ_PASS: ${{ secrets.TEST_SERVER_READ_PASS }} - TEST_SERVER_WRITE_USER: ${{ secrets.TEST_SERVER_WRITE_USER }} - TEST_SERVER_WRITE_PASS: ${{ secrets.TEST_SERVER_WRITE_PASS }} - BOM_OPENAPI_TOKEN: ${{ secrets.BOM_OPENAPI_TOKEN }} +# integration_checks: +# name: Integration checks +# needs: local_checks +# if: ${{ !startsWith( github.event.pull_request.head.ref, 'dependabot/') }} +# uses: ./.github/workflows/server_checks.yml +# secrets: +# AZURE_APP_ID: ${{ secrets.AZURE_APP_ID }} +# AZURE_SECRET: ${{ secrets.AZURE_SECRET }} +# AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }} +# AZURE_RESOURCE_GROUP: ${{ secrets.AZURE_RESOURCE_GROUP }} +# AZURE_VM_NAME: ${{ secrets.AZURE_VM_NAME }} +# TEST_SERVER_URL: ${{ secrets.TEST_SERVER_URL }} +# TEST_SERVER_READ_USER: ${{ secrets.TEST_SERVER_READ_USER }} +# TEST_SERVER_READ_PASS: ${{ secrets.TEST_SERVER_READ_PASS }} +# TEST_SERVER_WRITE_USER: ${{ secrets.TEST_SERVER_WRITE_USER }} +# TEST_SERVER_WRITE_PASS: ${{ secrets.TEST_SERVER_WRITE_PASS }} +# BOM_OPENAPI_TOKEN: ${{ secrets.BOM_OPENAPI_TOKEN }} doc-deploy-dev: name: "Deploy development documentation" runs-on: ubuntu-latest - needs: [ integration_checks ] + needs: [ local_checks ] if: github.event_name == 'push' && !contains(github.ref, 'refs/tags') steps: - uses: ansys/actions/doc-deploy-dev@v4 with: cname: ${{ env.DOCUMENTATION_CNAME }} token: ${{ secrets.GITHUB_TOKEN }} - doc-artifact-name: Documentation-html - - Release: - if: contains(github.ref, 'refs/tags') && github.event_name == 'push' - needs: integration_checks - runs-on: ubuntu-latest - steps: - - name: "Deploy stable documentation" - uses: pyansys/actions/doc-deploy-stable@v4 - with: - cname: ${{ env.DOCUMENTATION_CNAME }} - token: ${{ secrets.GITHUB_TOKEN }} - doc-artifact-name: Documentation-html - - - uses: actions/checkout@v3 - - - name: Set up Python 3.9 - uses: actions/setup-python@v4 - with: - python-version: '3.9' + doc-artifact-name: Documentation-html-no-examples - - uses: actions/download-artifact@v3 - with: - name: ansys-grantami-bomanalytics-wheel - path: dist - - - uses: actions/download-artifact@v3 - with: - name: Documentation-pdf - path: dist - - - uses: actions/download-artifact@v3 - with: - name: Documentation-html - path: dist/documentation-html/ - - - name: "Compressing HTML documentation" - uses: vimtor/action-zip@v1.1 - with: - files: dist/documentation-html/ - dest: dist/documentation-html.zip - - # note how we use the PyPI tokens -# - name: Upload to PyPI -# run: | -# pip install twine -# twine upload --non-interactive --skip-existing dist/*.whl -# env: -# TWINE_USERNAME: __token__ -# TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }} - - - name: Release - uses: softprops/action-gh-release@v1 - with: - generate_release_notes: true - files: | - dist/*.whl - dist/documentation-html.zip - dist/*.pdf +# Release: +# if: contains(github.ref, 'refs/tags') && github.event_name == 'push' +# needs: integration_checks +# runs-on: ubuntu-latest +# steps: +# - name: "Deploy stable documentation" +# uses: pyansys/actions/doc-deploy-stable@v4 +# with: +# cname: ${{ env.DOCUMENTATION_CNAME }} +# token: ${{ secrets.GITHUB_TOKEN }} +# doc-artifact-name: Documentation-html +# +# - uses: actions/checkout@v3 +# +# - name: Set up Python 3.9 +# uses: actions/setup-python@v4 +# with: +# python-version: '3.9' +# +# - uses: actions/download-artifact@v3 +# with: +# name: ansys-grantami-bomanalytics-wheel +# path: dist +# +# - uses: actions/download-artifact@v3 +# with: +# name: Documentation-pdf +# path: dist +# +# - uses: actions/download-artifact@v3 +# with: +# name: Documentation-html +# path: dist/documentation-html/ +# +# - name: "Compressing HTML documentation" +# uses: vimtor/action-zip@v1.1 +# with: +# files: dist/documentation-html/ +# dest: dist/documentation-html.zip +# +# # note how we use the PyPI tokens +## - name: Upload to PyPI +## run: | +## pip install twine +## twine upload --non-interactive --skip-existing dist/*.whl +## env: +## TWINE_USERNAME: __token__ +## TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }} +# +# - name: Release +# uses: softprops/action-gh-release@v1 +# with: +# generate_release_notes: true +# files: | +# dist/*.whl +# dist/documentation-html.zip +# dist/*.pdf From 3875acfccabd94e07339db26045d6c5bcf52ea0f Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Mon, 18 Sep 2023 14:49:18 +0200 Subject: [PATCH 050/275] Docs - Rework RS inheritance (#31) * Re-order sustainability children mixins * Compliance results documentation * Impacted substances docs * Styling * Move/remove examples * Make record_reference private * Remove BoM impacted substances note --- doc/source/api/compliance/materials.rst | 2 + doc/source/api/compliance/parts.rst | 2 + doc/source/api/compliance/specifications.rst | 6 +- doc/source/api/compliance/substances.rst | 2 + doc/source/api/impacted_substances/bom.rst | 12 - .../impacted_substances.rst | 3 +- .../api/impacted_substances/materials.rst | 2 + doc/source/api/impacted_substances/parts.rst | 2 + .../impacted_substances/specifications.rst | 2 + doc/source/api/sustainability/bom.rst | 7 - doc/source/api/sustainability/bom_summary.rst | 4 - doc/source/api/sustainability/common.rst | 2 - .../bomanalytics/_item_definitions.py | 12 +- .../grantami/bomanalytics/_item_results.py | 257 +++--------------- .../grantami/bomanalytics/_query_results.py | 18 +- src/ansys/grantami/bomanalytics/queries.py | 9 +- tests/test_argument_managers.py | 2 +- 17 files changed, 76 insertions(+), 268 deletions(-) diff --git a/doc/source/api/compliance/materials.rst b/doc/source/api/compliance/materials.rst index 54f82212..50abab28 100644 --- a/doc/source/api/compliance/materials.rst +++ b/doc/source/api/compliance/materials.rst @@ -32,3 +32,5 @@ Material result ~~~~~~~~~~~~~~~ .. autoclass:: ansys.grantami.bomanalytics._item_results.MaterialWithComplianceResult + :inherited-members: + :member-order: by_mro_by_source \ No newline at end of file diff --git a/doc/source/api/compliance/parts.rst b/doc/source/api/compliance/parts.rst index 02f2cd54..d924f994 100644 --- a/doc/source/api/compliance/parts.rst +++ b/doc/source/api/compliance/parts.rst @@ -34,3 +34,5 @@ Part result ~~~~~~~~~~~ .. autoclass:: ansys.grantami.bomanalytics._item_results.PartWithComplianceResult + :inherited-members: + :member-order: by_mro_by_source diff --git a/doc/source/api/compliance/specifications.rst b/doc/source/api/compliance/specifications.rst index 0fe240ed..78fcbc67 100644 --- a/doc/source/api/compliance/specifications.rst +++ b/doc/source/api/compliance/specifications.rst @@ -34,9 +34,13 @@ Specification result ~~~~~~~~~~~~~~~~~~~~ .. autoclass:: ansys.grantami.bomanalytics._item_results.SpecificationWithComplianceResult - + :inherited-members: + :member-order: by_mro_by_source Coating result ~~~~~~~~~~~~~~ .. autoclass:: ansys.grantami.bomanalytics._item_results.CoatingWithComplianceResult + :inherited-members: + :exclude-members: record_history_guid, record_guid + :member-order: by_mro_by_source \ No newline at end of file diff --git a/doc/source/api/compliance/substances.rst b/doc/source/api/compliance/substances.rst index f4502e11..4e1aae9c 100644 --- a/doc/source/api/compliance/substances.rst +++ b/doc/source/api/compliance/substances.rst @@ -40,3 +40,5 @@ Substance result ~~~~~~~~~~~~~~~~ .. autoclass:: ansys.grantami.bomanalytics._item_results.SubstanceWithComplianceResult + :inherited-members: + :member-order: by_mro_by_source \ No newline at end of file diff --git a/doc/source/api/impacted_substances/bom.rst b/doc/source/api/impacted_substances/bom.rst index b6ebdfd0..ff1bf2f3 100644 --- a/doc/source/api/impacted_substances/bom.rst +++ b/doc/source/api/impacted_substances/bom.rst @@ -25,15 +25,3 @@ Query result .. autoattribute:: impacted_substances_by_legislation .. autoattribute:: impacted_substances .. autoattribute:: messages - -BoM result -~~~~~~~~~~ - -The ``BoMWithImpactedSubstancesResult`` object does exist, but it is not documented because it is not exposed by any -public methods. The rationale is as follows: - -A single :ref:`ref_grantami_bomanalytics_api_impactedsubstances_bom_query` can only operate on a single BoM. -Therefore, there is no grouping of impacted substances by BoM, which is what the ``BoMWithImpactedSubstancesResult`` -object would be used for. :ref:`ref_grantami_bomanalytics_api_impactedsubstances_substances` objects are only available either -as a flat list or grouped by legislation. Both of these views are available on the -:ref:`ref_grantami_bomanalytics_api_impactedsubstances_bom_queryresult` object. diff --git a/doc/source/api/impacted_substances/impacted_substances.rst b/doc/source/api/impacted_substances/impacted_substances.rst index 21501beb..4faf0b55 100644 --- a/doc/source/api/impacted_substances/impacted_substances.rst +++ b/doc/source/api/impacted_substances/impacted_substances.rst @@ -5,4 +5,5 @@ Impacted substances .. autoclass:: ansys.grantami.bomanalytics._item_results.ImpactedSubstance - + :inherited-members: + :member-order: by_mro_by_source diff --git a/doc/source/api/impacted_substances/materials.rst b/doc/source/api/impacted_substances/materials.rst index ba03aadc..e100b95e 100644 --- a/doc/source/api/impacted_substances/materials.rst +++ b/doc/source/api/impacted_substances/materials.rst @@ -32,3 +32,5 @@ Material result ~~~~~~~~~~~~~~~ .. autoclass:: ansys.grantami.bomanalytics._item_results.MaterialWithImpactedSubstancesResult + :inherited-members: + :member-order: by_mro_by_source \ No newline at end of file diff --git a/doc/source/api/impacted_substances/parts.rst b/doc/source/api/impacted_substances/parts.rst index 50729c92..3de4d60d 100644 --- a/doc/source/api/impacted_substances/parts.rst +++ b/doc/source/api/impacted_substances/parts.rst @@ -32,3 +32,5 @@ Part result ~~~~~~~~~~~ .. autoclass:: ansys.grantami.bomanalytics._item_results.PartWithImpactedSubstancesResult + :inherited-members: + :member-order: by_mro_by_source \ No newline at end of file diff --git a/doc/source/api/impacted_substances/specifications.rst b/doc/source/api/impacted_substances/specifications.rst index 0a439faf..c963b52f 100644 --- a/doc/source/api/impacted_substances/specifications.rst +++ b/doc/source/api/impacted_substances/specifications.rst @@ -32,3 +32,5 @@ Specification result ~~~~~~~~~~~~~~~~~~~~ .. autoclass:: ansys.grantami.bomanalytics._item_results.SpecificationWithImpactedSubstancesResult + :inherited-members: + :member-order: by_mro_by_source \ No newline at end of file diff --git a/doc/source/api/sustainability/bom.rst b/doc/source/api/sustainability/bom.rst index d43d5617..3b467d4a 100644 --- a/doc/source/api/sustainability/bom.rst +++ b/doc/source/api/sustainability/bom.rst @@ -25,7 +25,6 @@ Transport .. autoclass:: ansys.grantami.bomanalytics._item_results.TransportWithSustainabilityResult :inherited-members: - :exclude-members: record_reference :member-order: by_mro_by_source Part @@ -33,7 +32,6 @@ Part .. autoclass:: ansys.grantami.bomanalytics._item_results.PartWithSustainabilityResult :inherited-members: - :exclude-members: record_reference :member-order: by_mro_by_source Material @@ -41,7 +39,6 @@ Material .. autoclass:: ansys.grantami.bomanalytics._item_results.MaterialWithSustainabilityResult :inherited-members: - :exclude-members: record_reference :member-order: by_mro_by_source Process @@ -49,7 +46,6 @@ Process .. autoclass:: ansys.grantami.bomanalytics._item_results.ProcessWithSustainabilityResult :inherited-members: - :exclude-members: record_reference :member-order: by_mro_by_source Specification @@ -57,7 +53,6 @@ Specification .. autoclass:: ansys.grantami.bomanalytics._item_results.SpecificationWithSustainabilityResult :inherited-members: - :exclude-members: record_reference :member-order: by_mro_by_source Coating @@ -65,7 +60,6 @@ Coating .. autoclass:: ansys.grantami.bomanalytics._item_results.CoatingResult :inherited-members: - :exclude-members: record_reference :member-order: by_mro_by_source Substance @@ -73,5 +67,4 @@ Substance .. autoclass:: ansys.grantami.bomanalytics._item_results.SubstanceResult :inherited-members: - :exclude-members: record_reference :member-order: by_mro_by_source diff --git a/doc/source/api/sustainability/bom_summary.rst b/doc/source/api/sustainability/bom_summary.rst index cc519f2b..b9e493a5 100644 --- a/doc/source/api/sustainability/bom_summary.rst +++ b/doc/source/api/sustainability/bom_summary.rst @@ -35,7 +35,6 @@ Transport .. autoclass:: ansys.grantami.bomanalytics._item_results.TransportSummaryResult :members: :inherited-members: - :exclude-members: record_reference :member-order: by_mro_by_source Material @@ -44,13 +43,11 @@ Material .. autoclass:: ansys.grantami.bomanalytics._item_results.MaterialSummaryResult :members: :inherited-members: - :exclude-members: record_reference :member-order: by_mro_by_source .. autoclass:: ansys.grantami.bomanalytics._item_results.ContributingComponentResult :members: :inherited-members: - :exclude-members: record_reference :member-order: by_mro_by_source Process @@ -59,5 +56,4 @@ Process .. autoclass:: ansys.grantami.bomanalytics._item_results.ProcessSummaryResult :members: :inherited-members: - :exclude-members: record_reference :member-order: by_mro_by_source diff --git a/doc/source/api/sustainability/common.rst b/doc/source/api/sustainability/common.rst index aaa00526..4acc2a89 100644 --- a/doc/source/api/sustainability/common.rst +++ b/doc/source/api/sustainability/common.rst @@ -15,11 +15,9 @@ Record references .. autoclass:: ansys.grantami.bomanalytics._item_definitions.MaterialReference :members: :inherited-members: - :exclude-members: record_reference :member-order: by_mro_by_source .. autoclass:: ansys.grantami.bomanalytics._item_definitions.ProcessReference :members: :inherited-members: - :exclude-members: record_reference :member-order: by_mro_by_source diff --git a/src/ansys/grantami/bomanalytics/_item_definitions.py b/src/ansys/grantami/bomanalytics/_item_definitions.py index da4d11af..eb59f566 100644 --- a/src/ansys/grantami/bomanalytics/_item_definitions.py +++ b/src/ansys/grantami/bomanalytics/_item_definitions.py @@ -74,7 +74,7 @@ def record_guid(self) -> Optional[str]: return None @property - def record_reference(self) -> Dict[str, Optional[str]]: + def _record_reference(self) -> Dict[str, Optional[str]]: """Converts the separate reference attributes back into a single dictionary that describes the type and value. This method is used to create the low-level API model object that references this record and is returned as-is @@ -89,7 +89,7 @@ def record_reference(self) -> Dict[str, Optional[str]]: return result def __repr__(self) -> str: - return f"<{self.__class__.__name__}({self.record_reference})>" + return f"<{self.__class__.__name__}({self._record_reference})>" class RecordDefinition(RecordReference): @@ -130,7 +130,7 @@ def _definition(self) -> models.CommonPartReference: Definition """ - result = models.CommonPartReference(**self.record_reference) + result = models.CommonPartReference(**self._record_reference) return result @@ -161,7 +161,7 @@ def _definition(self) -> models.CommonMaterialReference: Definition """ - result = models.CommonMaterialReference(**self.record_reference) + result = models.CommonMaterialReference(**self._record_reference) return result @@ -191,7 +191,7 @@ def _definition(self) -> models.CommonSpecificationReference: Definition """ - result = models.CommonSpecificationReference(**self.record_reference) + result = models.CommonSpecificationReference(**self._record_reference) return result @@ -297,7 +297,7 @@ def _definition(self) -> models.GetComplianceForSubstancesSubstanceWithAmount: """ definition = models.GetComplianceForSubstancesSubstanceWithAmount( - **self.record_reference, percentage_amount=self.percentage_amount + **self._record_reference, percentage_amount=self.percentage_amount ) return definition diff --git a/src/ansys/grantami/bomanalytics/_item_results.py b/src/ansys/grantami/bomanalytics/_item_results.py index e8acfb8b..3e2aba9a 100644 --- a/src/ansys/grantami/bomanalytics/_item_results.py +++ b/src/ansys/grantami/bomanalytics/_item_results.py @@ -647,27 +647,6 @@ class ImpactedSubstance(BaseSubstanceReference): Granta MI. - The amount of the substance in the parent item and the threshold above which it is impacted. - Attributes - ---------- - cas_number : str, optional - CAS number. - ec_number : str, optional - EC number. - chemical_name : str, optional - Chemical name. - record_history_identity : int, optional - Record history identify. - record_history_guid : str, optional - Record history GUID. - record_guid : str, optional - Record GUID. - max_percentage_amount_in_material : float, optional - Maximum percentage that this material can occur in the BoM item that it is declared against. This value - is measured in wt. % and only populated if present in the declaration in Granta MI. - legislation_threshold : float, optional - Threshold above which the substance is impacted by the legislation. This value is measured in wt. % and is only - populated if defined on the substance in Granta MI. - Examples -------- >>> result: MaterialImpactedSubstancesQueryResult @@ -701,14 +680,21 @@ def __init__( reference_type=reference_type, reference_value=reference_value, ) - self.max_percentage_amount_in_material: Optional[float] = max_percentage_amount_in_material + self._max_percentage_amount_in_material: Optional[float] = max_percentage_amount_in_material + self._legislation_threshold: Optional[float] = legislation_threshold + + @property + def max_percentage_amount_in_material(self) -> Optional[float]: """Maximum percentage of this substance that occurs in the parent material. In the case where a range is specified in the declaration, only the maximum is reported here. ``None`` means that the percentage amount has not been specified, not that the amount is 0 %.""" + return self._max_percentage_amount_in_material - self.legislation_threshold: Optional[float] = legislation_threshold + @property + def legislation_threshold(self) -> Optional[float]: """Substance concentration threshold over which the material is non-compliant with the legislation. ``None`` means that the threshold has not been specified, not that the threshold is 0 %.""" + return self._legislation_threshold def __repr__(self) -> str: return ( @@ -773,6 +759,7 @@ def _create_impacted_substance( Corresponding object in this API. """ + # TODO: check if this is necessary if substance.cas_number: reference_type = ReferenceType.CasNumber reference_value = substance.cas_number @@ -798,10 +785,13 @@ def _create_impacted_substance( @property def substances_by_legislation(self) -> Dict[str, List[ImpactedSubstance]]: + """Substances impacted for this item, grouped by legislation name.""" + # TODO: will change to legislation id, presumably return self._substances_by_legislation @property def substances(self) -> List[ImpactedSubstance]: + """Substances impacted for this item as a flattened list.""" results = [] for legislation_result in self.substances_by_legislation.values(): results.extend(legislation_result) @@ -809,7 +799,7 @@ def substances(self) -> List[ImpactedSubstance]: def __repr__(self) -> str: return ( - f"<{self.__class__.__name__}({self.record_reference}), {len(self.substances_by_legislation)} legislations>" + f"<{self.__class__.__name__}({self._record_reference}), {len(self.substances_by_legislation)} legislations>" ) @@ -822,21 +812,6 @@ class MaterialWithImpactedSubstancesResult(ImpactedSubstancesResultMixin, Materi - The reference to the material in Granta MI - The impacted substances associated with this material, both as a flat list and separated by legislation - Attributes - ---------- - record_history_identity : int, optional - Record history identify. - material_id : str, optional - Material ID. - record_history_guid : str, optional - Record history GUID. - record_guid : str, optional - Record GUID. - substances_by_legislation : dict[str, list[:class:`~ansys.grantami.bomanalytics._item_results.ImpactedSubstance`]] - Substances impacted for a particular material, grouped by legislation name. - substances : list[:class:`~ansys.grantami.bomanalytics._item_results.ImpactedSubstance`] - Substances impacted for a particular material as a flattened list. - Notes ----- With the exception of the ``record_history_identity`` parameter, record reference parameters are only populated if @@ -868,21 +843,6 @@ class PartWithImpactedSubstancesResult(ImpactedSubstancesResultMixin, PartDefini - The reference to the part in Granta MI - The impacted substances associated with this part, both as a flat list and separated by legislation - Attributes - ---------- - record_history_identity : list, optional - Record history identity. - part_number : str, optional - Part number. - record_history_guid : str, optional - Record history GUID. - record_guid : str, optional - Record GUID. - substances_by_legislation : dict[str, list[:class:`~ansys.grantami.bomanalytics._item_results.ImpactedSubstance`]] - Substances impacted for a particular part, grouped by legislation name. - substances : list[:class:`~ansys.grantami.bomanalytics._item_results.ImpactedSubstance`] - Substances impacted for a particular part as a flattened list. - Notes ----- With the exception of the ``record_history_identity`` parameter, record reference parameters are only populated if @@ -914,21 +874,6 @@ class SpecificationWithImpactedSubstancesResult(ImpactedSubstancesResultMixin, S - The reference to the specification in Granta MI - The impacted substances associated with this specification, both as a flat list and separated by legislation - Attributes - ---------- - record_history_identity : list, optional - Record history identity. - specification_id : str, optional - Specification ID. - record_history_guid : str, optional - Record history GUID. - record_guid : str, optional - Record GUID. - substances_by_legislation : dict[str, list[:class:`~ansys.grantami.bomanalytics._item_results.ImpactedSubstance`]] - Substances impacted for a particular specification, grouped by legislation name. - substances : list[:class:`~ansys.grantami.bomanalytics._item_results.ImpactedSubstance`] - Substances impacted for a particular specification as a flattened list. - Notes ----- With the exception of the ``record_history_identity`` parameter, record reference attributes are only populated if @@ -1035,13 +980,18 @@ def __init__( ) -> None: super().__init__(**kwargs) self._indicator_definitions = indicator_definitions - self.indicators: Dict[str, Union["WatchListIndicator", "RoHSIndicator"]] = deepcopy(indicator_definitions) + self._indicators: Dict[str, Union["WatchListIndicator", "RoHSIndicator"]] = deepcopy(indicator_definitions) for indicator_result in indicator_results: - self.indicators[indicator_result.name].flag = indicator_result.flag + self._indicators[indicator_result.name].flag = indicator_result.flag + + @property + def indicators(self) -> Dict[str, Union["WatchListIndicator", "RoHSIndicator"]]: + """Compliance status of this item for each indicator included in the original query.""" + return self._indicators def __repr__(self) -> str: - return f"<{self.__class__.__name__}({self.record_reference}), {len(self.indicators)} indicators>" + return f"<{self.__class__.__name__}({self._record_reference}), {len(self.indicators)} indicators>" if TYPE_CHECKING: @@ -1070,15 +1020,7 @@ def __init__(self, **kwargs: Any) -> None: @property def substances(self) -> List["SubstanceWithComplianceResult"]: - """Substance compliance result objects that are direct children of this item in the BoM. - - Examples - -------- - >>> material_result: MaterialWithComplianceResult - >>> material_result.substances - [SubstanceWithComplianceResult({"MiRecordHistoryIdentity": 77107}), - 1 indicators>, ...] - """ + """Substance compliance result objects that are direct children of this item in the BoM.""" return self._substances @@ -1121,15 +1063,7 @@ def __init__(self, **kwargs: Any) -> None: @property def materials(self) -> List["MaterialWithComplianceResult"]: - """Material compliance result objects that are direct children of this part or specification in the BoM. - - Examples - -------- - >>> part_result: PartWithComplianceResult - >>> part_result.materials - [, ...] - """ + """Material compliance result objects that are direct children of this part or specification in the BoM.""" return self._materials @@ -1179,15 +1113,7 @@ def __init__(self, **kwargs: Any) -> None: @property def specifications(self) -> List["SpecificationWithComplianceResult"]: - """Specification compliance result objects that are direct children of this item in the BoM. - - Examples - -------- - >>> part_result: PartWithComplianceResult - >>> part_result.specifications - [, ...] - """ + """Specification compliance result objects that are direct children of this item in the BoM.""" return self._specifications @@ -1240,15 +1166,7 @@ def __init__(self, **kwargs: Any) -> None: @property def parts(self) -> List["PartWithComplianceResult"]: - """Part compliance result objects that are direct children of this part in the BoM. - - Examples - -------- - >>> part_result: PartWithComplianceResult - >>> part_result.parts - [, ...] - """ + """Part compliance result objects that are direct children of this part in the BoM.""" return self._parts @@ -1301,15 +1219,7 @@ def __init__(self, **kwargs: Any) -> None: @property def coatings(self) -> List["CoatingWithComplianceResult"]: - """Coating result objects that are direct children of this specification in the BoM. - - Examples - -------- - >>> specification_results: SpecificationWithComplianceResult - >>> specification_results.coatings - [, ...] - """ + """Coating result objects that are direct children of this specification in the BoM.""" return self._coatings @@ -1346,23 +1256,6 @@ class SubstanceWithComplianceResult(ComplianceResultMixin, BaseSubstanceReferenc - The reference to the substance in Granta MI - The compliance status of this substance, stored in a dictionary of one or more indicator objects - Attributes - ---------- - record_history_identity : int, optional - Record history identify. - cas_number : str, optional - CAS number. - ec_number : str, optional - EC number. - chemical_name : str, optional - Chemical name. - record_history_guid : str, optional - Record history GUID. - record_guid : str, optional - Record GUID. - indicators : dict[str, |WatchListIndicator| | |RoHSIndicator|] - Compliance status of this item for each indicator included in the original query. - Notes ----- Record reference parameters are only populated if they are specified in the original query. @@ -1381,21 +1274,6 @@ class MaterialWithComplianceResult(ChildSubstanceWithComplianceMixin, Compliance - The compliance status of this material, stored in a dictionary of one or more indicator objects - Any substance objects that are a child of this material object - Attributes - ---------- - record_history_identity : int, optional - Record history identity. - material_id : str, optional - Material ID. - record_history_guid : str, optional - Record history GUID. - record_guid : str, optional - Record GUID. - indicators : dict[str, |WatchListIndicator| | |RoHSIndicator|] - Compliance status of this item for each indicator included in the original query. - substances : list[:class:`~ansys.grantami.bomanalytics._item_results.SubstanceWithComplianceResult`] - List of substances. - Notes ----- With the exception of the ``record_history_identity`` parameter, record reference parameters are only populated if @@ -1409,10 +1287,10 @@ class MaterialWithComplianceResult(ChildSubstanceWithComplianceMixin, Compliance @ItemResultFactory.register("PartWithCompliance") class PartWithComplianceResult( - ChildPartWithComplianceMixin, - ChildSpecificationWithComplianceMixin, - ChildMaterialWithComplianceMixin, ChildSubstanceWithComplianceMixin, + ChildMaterialWithComplianceMixin, + ChildSpecificationWithComplianceMixin, + ChildPartWithComplianceMixin, ComplianceResultMixin, PartDefinition, ): @@ -1423,27 +1301,6 @@ class PartWithComplianceResult( - The compliance status of this part, stored in a dictionary of one or more indicator objects - Any part, specification, material, or substance objects which are a child of this part object - Attributes - ---------- - record_history_identity : int, optional - Record history identity. - part_number : str, optional - Part number. - record_history_guid : str, optional - Record history GUID. - record_guid : str, optional - Record GUID. - indicators : dict[str, |WatchListIndicator| | |RoHSIndicator|] - Compliance status of this item for each indicator included in the original query. - parts : list[:class:`~ansys.grantami.bomanalytics._item_results.PartWithComplianceResult`] - List of parts. - specifications : list[:class:`~ansys.grantami.bomanalytics._item_results.SpecificationWithComplianceResult`] - List of specifications. - materials : list[:class:`~ansys.grantami.bomanalytics._item_results.MaterialWithComplianceResult`] - List of materials. - substances : list[:class:`~ansys.grantami.bomanalytics._item_results.SubstanceWithComplianceResult`] - List of substances. - Notes ----- With the exception of the ``record_history_identity`` parameter, record reference attributes are only populated if @@ -1457,10 +1314,10 @@ class PartWithComplianceResult( @ItemResultFactory.register("SpecificationWithCompliance") class SpecificationWithComplianceResult( + ChildSubstanceWithComplianceMixin, ChildCoatingWithComplianceMixin, - ChildSpecificationWithComplianceMixin, ChildMaterialWithComplianceMixin, - ChildSubstanceWithComplianceMixin, + ChildSpecificationWithComplianceMixin, ComplianceResultMixin, SpecificationDefinition, ): @@ -1471,28 +1328,6 @@ class SpecificationWithComplianceResult( - The compliance status of this specification, stored in a dictionary of one or more indicator objects - Any specification, material, coating, or substance objects which are a child of this specification object - Attributes - ---------- - record_history_identity : int, optional - Record history identity. - specification_id : str, optional - Specification ID. - record_history_guid : str, optional - Record history GUID. - record_guid : str, optional - Record GUID. - - indicators : dict[str, |WatchListIndicator| | |RoHSIndicator|] - Compliance status of this item for each indicator included in the original query. - specifications : list[:class:`~ansys.grantami.bomanalytics._item_results.SpecificationWithComplianceResult`] - List of specifications. - materials : list[:class:`~ansys.grantami.bomanalytics._item_results.MaterialWithComplianceResult`] - List of materials. - coatings : list[:class:`~ansys.grantami.bomanalytics._item_results.CoatingWithComplianceResult`] - List of coatings. - substances : list[:class:`~ansys.grantami.bomanalytics._item_results.SubstanceWithComplianceResult`] - List of substances. - Notes ----- With the exception of the ``record_history_identity`` parameter, record reference attributes are only populated if @@ -1514,21 +1349,15 @@ class CoatingWithComplianceResult(ChildSubstanceWithComplianceMixin, ComplianceR - The compliance status of this coating, stored in one or more indicator objects - Any substance objects which are a child of this coating object - Attributes - ---------- - record_history_identity : int, optional - Default reference type for compliance items returned as children of the queried item. - indicators : dict[str, |WatchListIndicator| | |RoHSIndicator|] - Compliance status of this item for each indicator included in the original query. - substances : list[:class:`~ansys.grantami.bomanalytics._item_results.SubstanceWithComplianceResult`] - List of substances. - Notes ----- Objects of this class are only returned as the result of a query. The class is not intended to be instantiated directly. """ + record_history_identity: Optional[int] + """Default reference type for compliance items returned as children of the queried item.""" + class ValueWithUnit: """Describes a value obtained from the API""" @@ -1957,14 +1786,12 @@ class MaterialWithSustainabilityResult( """ -# TODO: Optionally, review mixins order, so that docs list properties in a logical order: parts, materials, process, etc -# i.e the opposite of what's here. class PartWithSustainabilityResult( - ChildPartWithSustainabilityMixin, - ChildMaterialWithSustainabilityMixin, - ChildProcessWithSustainabilityMixin, - ChildSubstanceMixin, ChildSpecificationWithSustainabilityMixin, + ChildSubstanceMixin, + ChildProcessWithSustainabilityMixin, + ChildMaterialWithSustainabilityMixin, + ChildPartWithSustainabilityMixin, SustainabilityResultMixin, MassResultMixin, PartReference, @@ -1988,10 +1815,10 @@ class PartWithSustainabilityResult( class SpecificationWithSustainabilityResult( - ChildSpecificationWithSustainabilityMixin, - ChildMaterialWithSustainabilityMixin, + ChildCoatingMixin, ChildSubstanceMixin, - ChildCoatingWithComplianceMixin, + ChildMaterialWithSustainabilityMixin, + ChildSpecificationWithSustainabilityMixin, SustainabilityResultMixin, MassResultMixin, SpecificationReference, diff --git a/src/ansys/grantami/bomanalytics/_query_results.py b/src/ansys/grantami/bomanalytics/_query_results.py index 8d631228..567931b5 100644 --- a/src/ansys/grantami/bomanalytics/_query_results.py +++ b/src/ansys/grantami/bomanalytics/_query_results.py @@ -136,17 +136,6 @@ def messages(self) -> List[LogMessage]: Messages are also logged using the Python ``logging`` module to the ``ansys.grantami.bomanalytics`` logger. By default, messages with a severity of ``"warning"`` or higher are printed on stderr. - - Returns - ------- - list[:class:`~ansys.grantami.bomanalytics._query_results.LogMessage`] - - Examples - -------- - >>> result: MaterialImpactedSubstancesQueryResult - >>> result.messages - [LogMessage(severity='warning', message='Material "ABS+PVC (flame retarded)" has - 2 substance row(s) with missing substance links.')] """ return self._messages @@ -279,6 +268,13 @@ class MaterialImpactedSubstancesQueryResult(ImpactedSubstancesBaseClass): ----- Objects of this class are only returned as the result of a query. The class is not intended to be instantiated directly. + + Examples + -------- + >>> result: MaterialImpactedSubstancesQueryResult + >>> result.messages + [LogMessage(severity='warning', message='Material "ABS+PVC (flame retarded)" has + 2 substance row(s) with missing substance links.')] """ def __init__( diff --git a/src/ansys/grantami/bomanalytics/queries.py b/src/ansys/grantami/bomanalytics/queries.py index 82863526..2260d102 100644 --- a/src/ansys/grantami/bomanalytics/queries.py +++ b/src/ansys/grantami/bomanalytics/queries.py @@ -213,7 +213,7 @@ def append_record_definition(self, item: RecordDefinition) -> None: >>> items = _RecordQueryDataManager(item_type_name = "parts", batch_size = 100) >>> items.append_record_definition(part_definition) """ - if not all(item.record_reference.values()): + if not all(item._record_reference.values()): raise TypeError( "Attempted to add a RecordDefinition-derived object with a null record reference to a" " query. This is not supported; RecordDefinition-derived objects without record references" @@ -743,13 +743,6 @@ def with_legislations(self: Query_Builder, legislation_names: List[str]) -> Quer ------ TypeError Error to raise if the method is called with values that do not match the types described earlier. - - Examples - -------- - >>> query = MaterialImpactedSubstancesQuery() - >>> query = query.with_legislations(["California Proposition 65 List", - >>> "EU REACH - The Candidate List"]) - """ self._legislations.extend(legislation_names) diff --git a/tests/test_argument_managers.py b/tests/test_argument_managers.py index 715be9e8..23ae5a00 100644 --- a/tests/test_argument_managers.py +++ b/tests/test_argument_managers.py @@ -14,7 +14,7 @@ def __init__(self, reference_type: str, reference_value: str): self._definition = self.Definition(reference_type, reference_value) @property - def record_reference(self) -> str: + def _record_reference(self) -> str: return {"reference_type": self._definition.reference_type, "reference_value": self._definition.reference_value} From b1951371c48a8cc750d5653524877e8e8268da65 Mon Sep 17 00:00:00 2001 From: Doug Addy Date: Wed, 20 Sep 2023 11:01:26 +0100 Subject: [PATCH 051/275] Add a bom builder --- poetry.lock | 48 +- pyproject.toml | 1 + src/ansys/grantami/bomanalytics/__init__.py | 1 + .../grantami/bomanalytics/_bom_helper.py | 87 + .../bomanalytics/bom_types/__init__.py | 4 + .../bomanalytics/bom_types/_bom_reader.py | 138 + .../bomanalytics/bom_types/_bom_types.py | 2694 ++ .../bomanalytics/bom_types/_bom_writer.py | 81 + .../bomanalytics/bom_types/_builders.py | 108 + .../schemas/BillOfMaterialsEco2301.xsd | 740 + .../bomanalytics/schemas/grantarecord1205.xsd | 292 + tests/inputs/bom-complex.xml | 416 +- tests/inputs/bom.xml | 24 +- tests/inputs/medium-test-bom.xml | 26496 ++++++++++++++++ tests/test_bom_handler.py | 142 + 15 files changed, 31036 insertions(+), 236 deletions(-) create mode 100644 src/ansys/grantami/bomanalytics/_bom_helper.py create mode 100644 src/ansys/grantami/bomanalytics/bom_types/__init__.py create mode 100644 src/ansys/grantami/bomanalytics/bom_types/_bom_reader.py create mode 100644 src/ansys/grantami/bomanalytics/bom_types/_bom_types.py create mode 100644 src/ansys/grantami/bomanalytics/bom_types/_bom_writer.py create mode 100644 src/ansys/grantami/bomanalytics/bom_types/_builders.py create mode 100644 src/ansys/grantami/bomanalytics/schemas/BillOfMaterialsEco2301.xsd create mode 100644 src/ansys/grantami/bomanalytics/schemas/grantarecord1205.xsd create mode 100644 tests/inputs/medium-test-bom.xml create mode 100644 tests/test_bom_handler.py diff --git a/poetry.lock b/poetry.lock index 47809b2c..8478f52f 100644 --- a/poetry.lock +++ b/poetry.lock @@ -796,6 +796,20 @@ typing-extensions = ">=3.7.4.1" all = ["pytz (>=2019.1)"] dates = ["pytz (>=2019.1)"] +[[package]] +name = "elementpath" +version = "4.1.5" +description = "XPath 1.0/2.0/3.0/3.1 parsers and selectors for ElementTree and lxml" +optional = false +python-versions = ">=3.7" +files = [ + {file = "elementpath-4.1.5-py3-none-any.whl", hash = "sha256:2ac1a2fb31eb22bbbf817f8cf6752f844513216263f0e3892c8e79782fe4bb55"}, + {file = "elementpath-4.1.5.tar.gz", hash = "sha256:c2d6dc524b29ef751ecfc416b0627668119d8812441c555d7471da41d4bacb8d"}, +] + +[package.extras] +dev = ["Sphinx", "coverage", "flake8", "lxml", "lxml-stubs", "memory-profiler", "memray", "mypy", "tox", "xmlschema (>=2.0.0)"] + [[package]] name = "entrypoints" version = "0.4" @@ -2461,7 +2475,6 @@ files = [ {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, - {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, @@ -2469,15 +2482,8 @@ files = [ {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, - {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, - {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, - {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, - {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, - {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, - {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, - {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, @@ -2494,7 +2500,6 @@ files = [ {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, - {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, @@ -2502,7 +2507,6 @@ files = [ {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, - {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, @@ -2846,7 +2850,8 @@ files = [ {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-win32.whl", hash = "sha256:763d65baa3b952479c4e972669f679fe490eee058d5aa85da483ebae2009d231"}, {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-win_amd64.whl", hash = "sha256:d000f258cf42fec2b1bbf2863c61d7b8918d31ffee905da62dede869254d3b8a"}, {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:045e0626baf1c52e5527bd5db361bc83180faaba2ff586e763d3d5982a876a9e"}, - {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-macosx_12_6_arm64.whl", hash = "sha256:721bc4ba4525f53f6a611ec0967bdcee61b31df5a56801281027a3a6d1c2daf5"}, + {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:1a6391a7cabb7641c32517539ca42cf84b87b667bad38b78d4d42dd23e957c81"}, + {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:9c7617df90c1365638916b98cdd9be833d31d337dbcd722485597b43c4a215bf"}, {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:41d0f1fa4c6830176eef5b276af04c89320ea616655d01327d5ce65e50575c94"}, {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-win32.whl", hash = "sha256:f6d3d39611ac2e4f62c3128a9eed45f19a6608670c5a2f4f07f24e8de3441d38"}, {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-win_amd64.whl", hash = "sha256:da538167284de58a52109a9b89b8f6a53ff8437dd6dc26d33b57bf6699153122"}, @@ -3433,6 +3438,25 @@ docs = ["Sphinx (>=6.0)", "sphinx-rtd-theme (>=1.1.0)"] optional = ["python-socks", "wsaccel"] test = ["websockets"] +[[package]] +name = "xmlschema" +version = "2.4.0" +description = "An XML Schema validator and decoder" +optional = false +python-versions = ">=3.7" +files = [ + {file = "xmlschema-2.4.0-py3-none-any.whl", hash = "sha256:dc87be0caaa61f42649899189aab2fd8e0d567f2cf548433ba7b79278d231a4a"}, + {file = "xmlschema-2.4.0.tar.gz", hash = "sha256:d74cd0c10866ac609e1ef94a5a69b018ad16e39077bc6393408b40c6babee793"}, +] + +[package.dependencies] +elementpath = ">=4.1.5,<5.0.0" + +[package.extras] +codegen = ["elementpath (>=4.1.5,<5.0.0)", "jinja2"] +dev = ["Sphinx", "coverage", "elementpath (>=4.1.5,<5.0.0)", "flake8", "jinja2", "lxml", "lxml-stubs", "memory-profiler", "mypy", "sphinx-rtd-theme", "tox"] +docs = ["Sphinx", "elementpath (>=4.1.5,<5.0.0)", "jinja2", "sphinx-rtd-theme"] + [[package]] name = "zipp" version = "3.16.2" @@ -3454,4 +3478,4 @@ examples = ["jupyterlab", "lxml", "pandas", "tabulate"] [metadata] lock-version = "2.0" python-versions = "^3.8.0" -content-hash = "9b9de963ae528aa9fd3ea802867d4dab9b28f9b17988da90d2b66e1a8d9b5f68" +content-hash = "0763b4c8a0c6062988aa1246ed72e7722ceb3ad71de12806d23f88a4a34253f6" diff --git a/pyproject.toml b/pyproject.toml index e37c427d..aa6118e2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -47,6 +47,7 @@ jupyterlab = { version = ">=3,<5", optional = true } lxml = { version = "^4", optional = true } pandas = { version = "^2.0", optional = true } tabulate = { version = "^0.9", optional = true } +xmlschema = "^2.4.0" [tool.poetry.group.dev.dependencies] # Common packages for test, examples, and docs diff --git a/src/ansys/grantami/bomanalytics/__init__.py b/src/ansys/grantami/bomanalytics/__init__.py index 66f4deaf..02d8881d 100644 --- a/src/ansys/grantami/bomanalytics/__init__.py +++ b/src/ansys/grantami/bomanalytics/__init__.py @@ -1,5 +1,6 @@ from ._connection import Connection from ._exceptions import GrantaMIException +from ._bom_helper import BoMHandler from importlib import metadata as metadata diff --git a/src/ansys/grantami/bomanalytics/_bom_helper.py b/src/ansys/grantami/bomanalytics/_bom_helper.py new file mode 100644 index 00000000..611daf51 --- /dev/null +++ b/src/ansys/grantami/bomanalytics/_bom_helper.py @@ -0,0 +1,87 @@ +from pathlib import Path +from typing import TYPE_CHECKING +import xmlschema +from xmlschema import XMLSchema +from ansys.grantami.bomanalytics.bom_types import BoMReader, BoMWriter + +if TYPE_CHECKING: + from ansys.grantami.bomanalytics.bom_types._bom_types import BillOfMaterials + +class BoMHandler: + _schema_path: Path = Path(__file__).parent / "schemas" / "BillOfMaterialsEco2301.xsd" + _schema: XMLSchema + + def __init__(self): + """ + Handler for XML formatted BoMs, supports reading from files and strings, and serializing to string format. + """ + self._schema = XMLSchema(self._schema_path) + self._schema.namespaces[""] = self._schema.namespaces["eco"] + self._reader = BoMReader(self._schema) + self._writer = BoMWriter(self._schema) + + def load_bom_from_file(self, file_path: Path) -> "BillOfMaterials": + """ + Read a BoM from a file and return the corresponding BillOfMaterials object for use + + Parameters + ---------- + file_path: Path + Location of the BoM XML file + + Returns + ------- + BillOfMaterials + """ + with open(file_path, "r", encoding="utf8") as fp: + obj, errors = self._schema.decode(fp, validation="lax") + + if len(errors) > 0: + newline = "\n" + raise ValueError(f"Invalid BoM:\n{newline.join([error.msg for error in errors])}") + print(obj) + + return self._reader.read_bom(obj) + + def load_bom_from_text(self, bom_text: str) -> "BillOfMaterials": + """ + Read a BoM from a string and return the corresponding BillOfMaterials object for use + + Parameters + ---------- + bom_text: str + String object containing an XML representation of a BoM + + Returns + ------- + BillOfMaterials + """ + obj, errors = self._schema.decode(bom_text, validation="lax", keep_empty=True) + + if len(errors) > 0: + newline = "\n" + raise ValueError(f"Invalid BoM:\n{newline.join([error.msg for error in errors])}") + + return self._reader.read_bom(obj) + + def dump_bom(self, bom: "BillOfMaterials") -> str: + """ + Convert a BillOfMaterials object into a string XML representation + + Parameters + ---------- + bom: BillOfMaterials + + Returns + ------- + str + Serialized representation of the BoM + """ + bom_dict = self._writer.convert_bom_to_dict(bom) + obj, errors = self._schema.encode(bom_dict, validation="lax", unordered=True) + + if len(errors) > 0: + newline = "\n" + raise ValueError(f"Invalid BoM object:\n{newline.join([error.msg for error in errors])}") + + return xmlschema.etree_tostring(obj) diff --git a/src/ansys/grantami/bomanalytics/bom_types/__init__.py b/src/ansys/grantami/bomanalytics/bom_types/__init__.py new file mode 100644 index 00000000..4fd7bff1 --- /dev/null +++ b/src/ansys/grantami/bomanalytics/bom_types/__init__.py @@ -0,0 +1,4 @@ +from ._bom_types import * +from ._builders import * +from ._bom_writer import BoMWriter +from ._bom_reader import BoMReader diff --git a/src/ansys/grantami/bomanalytics/bom_types/_bom_reader.py b/src/ansys/grantami/bomanalytics/bom_types/_bom_reader.py new file mode 100644 index 00000000..610b6b93 --- /dev/null +++ b/src/ansys/grantami/bomanalytics/bom_types/_bom_reader.py @@ -0,0 +1,138 @@ +import inspect +from typing import Dict, Optional, Any, TYPE_CHECKING, cast, Iterable + +from xmlschema import XMLSchema + +import ansys.grantami.bomanalytics.bom_types._bom_types as bom_types + + +if TYPE_CHECKING: + from ansys.grantami.bomanalytics.bom_types import BillOfMaterials, BaseType + +class BoMReader: + _schema: XMLSchema + _namespaces = {} + _class_members = {} + _field_reader = None + + def __init__(self, schema: XMLSchema): + """ + Reader to convert a JSON formatted BoM, created by xmlschema, into populated BillOfMaterials object. + + Parameters + ---------- + schema: XMLSchema + Parsed XMLSchema representing the 2301 Eco BoM format + """ + self._schema = schema + + def read_bom(self, obj: Dict) -> "BillOfMaterials": + """ + Convert a BoM object from xmlschema JSON format into a BillOfMaterials object. + + Parameters + ---------- + obj: Dict + Source xmlschema JSON format object + + Returns + ------- + BillOfMaterials + """ + namespaces = {} + for k, v in obj.items(): + if k == "@xmlns": + namespaces[""] = v + elif k.startswith("@xmlns"): + _, prefix = k.split(":") + namespaces[prefix] = v + + class_members = {k: v for k, v in inspect.getmembers(bom_types, inspect.isclass)} + self._namespaces = namespaces + self._class_members = class_members + self._field_reader = NamespaceFieldReader(self._namespaces) + + return cast("BillOfMaterials", self._create_type("BillOfMaterials", obj)) + + def _create_type(self, type_name: str, obj: Dict) -> "BaseType": + type_: BaseType = self._class_members[type_name] + kwargs = {} + for target_type, target_property_name, field_name in type_._props: + kwargs.update(self._deserialize_single_type(type_, obj, target_type, target_property_name, field_name)) + for target_type, target_property_name, container_name, container_namespace, field_name in type_._list_props: + kwargs.update(self._deserialize_list_type( + type_, obj, target_type, target_property_name, container_name, container_namespace, field_name + )) + for target, source in type_._simple_values: + field_obj = self._field_reader.get_field(type_, obj, source) + kwargs[target] = field_obj + kwargs.update(type_._process_custom_fields(obj, self._field_reader)) + instance = self._class_members[type_name](**kwargs) + return instance + + def _deserialize_list_type( + self, instance: "BaseType", obj: Dict, target_type: str, target_property_name: str, container_name: str, container_namespace: str, item_name: str + ) -> Dict[str, Iterable]: + container_obj = self._field_reader.get_field(instance, obj, container_name) + if container_obj is not None: + items_obj = self._field_reader.get_field(instance, container_obj, item_name, container_namespace) + if items_obj is not None and len(items_obj) > 0: + return {target_property_name: [self._create_type(target_type, item_dict) for item_dict in items_obj]} + return {} + + def _deserialize_single_type(self, instance: "BaseType", obj: Dict, target_type: str, target_property_name: str, field_name: str) -> Dict[str, Any]: + field_obj = self._field_reader.get_field(instance, obj, field_name) + if field_obj is not None: + return {target_property_name: self._create_type(target_type, field_obj)} + return {} + +class NamespaceFieldReader: + def __init__(self, namespaces: Dict[str, str]): + """ + Helper class to map local names to qualified names based on the document's defined namespace prefixes. + + Parameters + ---------- + namespaces: Dict[str, str] + Mapping from namespace prefix to namespace URL as defined in the source BoM XML document. + """ + self._namespaces = namespaces + + def get_field(self, instance: "BaseType", obj: Dict, field_name: str, namespace_url: Optional[str] = None) -> Any: + """ + Given an object and a local name, determines the qualified field name to fetch based on the document namespace + tags. + + Parameters + ---------- + instance: BaseType + The object being deserialized into, the namespace will be used from this object by default + obj: Dict + The source dictionary with the data to be deserialized. + field_name: str + Local name of the target field. + namespace_url: Optional[str] + If the target namespace is different from that of the target object, for example if the type defines an + anonymous complex type, it can be overridden here. + """ + if namespace_url is None: + namespace_url = instance._namespace + for k, v in obj.items(): + if k.startswith("@xmlns"): + continue + if ":" not in k: + if "" in self._namespaces and namespace_url == self._namespaces[""] and k == field_name: + return v + else: + is_attribute = False + item_name = k + if item_name.startswith("@"): + item_name = item_name[1:] + is_attribute = True + namespace_prefix, stripped_name = item_name.split(":") + if is_attribute: + stripped_name = f"@{stripped_name}" + field_namespace_url = self._namespaces[namespace_prefix] + if namespace_url == field_namespace_url and stripped_name == field_name: + return v + return None diff --git a/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py b/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py new file mode 100644 index 00000000..bcd3e986 --- /dev/null +++ b/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py @@ -0,0 +1,2694 @@ +from typing import Optional, List, Union, Any, Dict, Tuple, cast + +from enum import Enum + +from ansys.grantami.bomanalytics.bom_types._bom_reader import BoMReader, NamespaceFieldReader +from ansys.grantami.bomanalytics.bom_types._bom_writer import BoMWriter + + +class BaseType: + """Base type from which all XML DTOs inherit. + Handles conversion from python properties to xmlschema objects. + + Attributes + ---------- + _props : List[Tuple[str, str, str]] + Properties that map to complex types in XML. The entries are the type target, the python attribute name + and the XML element name. + _list_props : List[Tuple[str, str, str, str]] + Properties that map to sequences of complex types in XML. The entries are the type target for each entry, the + python property name, the container XML element name, and the item XML element name. + _simple_values : List[Tuple[str, str]] + Properties that map to simple types in XML. The entries are the python property name and the item XML element + name. + """ + + _props: "List[Tuple[str, str, str]]" = [] + _list_props: "List[Tuple[str, str, str, str, str]]" = [] + _simple_values: "List[Tuple[str, str]]" = [] + + _namespaces = {} + + _namespace = "http://www.grantadesign.com/23/01/BillOfMaterialsEco" + + def __init__(self, *args, **kwargs) -> None: + pass + + @classmethod + def _process_custom_fields(cls, obj: Dict, field_reader: NamespaceFieldReader) -> Dict[str, Any]: + """ + Populates any fields on the object that are in a nonstandard configuration. This can anonymous complex types, + Sequences of simple types and similar. This is called after the standard deserialization occurs, and should + return a dictionary mapping constructor argument names to values. + + Parameters + ---------- + obj: Dict + The json representation of the source XML BoM to be parsed + field_reader: NamespaceFieldReader + Helper object that maintains information about the global namespaces + + Returns + ------- + Dict[str, Any] + Dictionary mapping constructor argument names to values for this type. + """ + return {} + + def _write_custom_fields(self, obj: Dict, bom_writer: BoMWriter) -> None: + """ + Writes any fields on the serialized object that are in a nonstandard configuration. This can anonymous complex + types, Sequences of simple types and similar. This is called after the standard serialization occurs, and + should modify in place the ``obj`` argument. + + Parameters + ---------- + obj: Dict + Dictionary representing the current state of the serialization of self. Modified in place by this method. + bom_writer: BoMWriter + Helper object that maintains information about the global namespaces + """ + pass + + +class DimensionType(Enum): + Mass = 0 # If the process affects the bulk of the material or part (e.g. it is a shaping process) then + # the amount of material affected by the process should be specified. The amount may be + # specified as a percentage by weight or an absolute value. + MassRemoved = 1 # Specifying the mass in this way allows one to specify processes that may have removed material + # (e.g. milling or turning). + Volume = 2 + Area = 3 # Some joining processes can have an associated area. + Length = 4 # If the process is an edge joining process (e.g. welding) then the BOM must specify the length + # of material affected by the process. + Count = 5 # Certain fastening processes are quantified by the number of fasteners (e.g. the number of hot + # rivets holding two plates together). + Time = 6 + + @classmethod + def from_string(cls, value: str) -> "DimensionType": + """ + Convert string representation of this object into an instance of this object. + + Parameters + ---------- + value: str + String representation of this object + """ + return DimensionType[value] + + def to_string(self) -> str: + """ + Convert this Enum object to its string representation. + + Returns + ------- + str + String representation of this object + """ + return self.name + + +class PseudoAttribute(Enum): + Name = 0 + ShortName = 1 + Subsets = 2 + ReleasedDate = 3 + ModifiedDate = 4 + RecordType = 5 + RecordHistoryIdentity = 6 + RecordColor = 7 + LinkedRecords = 8 + VersionState = 9 + RecordGUID = 10 + RecordHistoryGUID = 11 + RecordVersionNumber = 12 + TableName = 13 + ChildRecords = 14 + TableFilters = 15 + + @classmethod + def from_string(cls, value: str): + """ + Convert string representation of this object into an instance of this object. + + Parameters + ---------- + value: str + String representation of this object + """ + return PseudoAttribute[f"{value[0].upper()}{value[1:]}"] + + def to_string(self): + """ + Convert this Enum object to its string representation. + + Returns + ------- + str + String representation of this object + """ + return f"{self.name[0].lower()}{self.name[1:]}" + + +class PartialTableReference(BaseType): + _table_identity: Optional[int] = None + _table_guid: Optional[str] = None + _table_name: Optional[str] = None + + _simple_values = [("table_identity", "tableIdentity"), ("table_guid", "tableGuid"), ("table_name", "tableName")] + + _namespace = "http://www.grantadesign.com/12/05/GrantaBaseTypes" + + def __init__(self, *, table_identity: Optional[int] = None, table_guid: Optional[str] = None, table_name: Optional[str] = None, **kwargs): + """ + A type that partially identifies a Table, but does not specify the MI Database. Usually, just one of the several + optional fields should be provided; where more than one is provided, the highest priority one is used, where the + descending priority order is: tableIdentity, tableGUID, tableName. + + Parameters + ---------- + table_identity: Optional[int] + The identity of the table, this is the fastest way to reference a table. + table_guid: Optional[str] + The GUID of the table, this is likely to be a persistent way to refer to a table. + table_name: Optional[str] + The name of the table, note that table names can vary between localisations of a database, so this may not + be a safe way to refer to a table if the MI Database supports multiple locales. + """ + super().__init__(**kwargs) + self.table_identity = table_identity + self.table_guid = table_guid + self.table_name = table_name + + @property + def table_identity(self) -> Optional[int]: + """ + The identity of the table, this is the fastest way to reference a table. + + Returns + ------- + Optional[int] + """ + return self._table_identity + + @table_identity.setter + def table_identity(self, value): + self._table_identity = value + + @property + def table_guid(self) -> Optional[str]: + """ + The GUID of the table, this is likely to be a persistent way to refer to a table. + + Returns + ------- + Optional[str] + """ + return self._table_guid + + @table_guid.setter + def table_guid(self, value): + self._table_guid = value + + @property + def table_name(self) -> Optional[str]: + """ + The name of the table, note that table names can vary between localisations of a database, so this may not be a + safe way to refer to a table if the MI Database supports multiple locales. + + Returns + ------- + Optional[str] + """ + return self._table_name + + @table_name.setter + def table_name(self, value): + self._table_name = value + + +class MIAttributeReference(BaseType): + _db_key: str + _attribute_identity: Optional[int] = None + _table_reference: Optional[PartialTableReference] = None + _attribute_name: Optional[str] = None + _pseudo: Optional[PseudoAttribute] = None + _is_standard: Optional[bool] = None + + _simple_values = [("db_key", "dbKey"), ("attribute_identity", "attributeIdentity")] + + _namespace = "http://www.grantadesign.com/12/05/GrantaBaseTypes" + + def __init__(self, *, db_key: str, attribute_identity: Optional[int] = None, table_reference: Optional[PartialTableReference] = None, attribute_name: Optional[str] = None, + pseudo: Optional[PseudoAttribute] = None, is_standard: Optional[bool] = None, **kwargs): + """A type that allows identification of a particular Attribute in an MI Database. This may be done directly by + specifying the Identity of the Attribute, or indirectly by specifying a lookup that will match (only) the + Attribute. + + Note: in certain cases, an MIAttributeReference may match more than one Attribute in + the MI Database; depending on the operation, this may be legal or may result in + a Fault. + + Parameters + ---------- + db_key: str + The key that uniquely identifies a particular Database on the MI Server. + attribute_identity: Optional[int] + The identity of the attribute within the MI Database. + table_reference: Optional[PartialTableReference] + A reference to the table hosting the attribute. Required if ``attribute_name`` is specified and + ``is_standard`` is not True. + attribute_name: Optional[str] + Name of the Attribute. + pseudo: Optional[PseudoAttribute] + The Pseudoattribute type if referring to a Pseudoattribute. + is_standard: Optional[bool] + If True indicates that the provided ``attribute_name`` is a Standard Name. + """ + super().__init__(**kwargs) + self.db_key = db_key + self.attribute_identity = attribute_identity + self.table_reference = table_reference + self.attribute_name = attribute_name + self.pseudo = pseudo + self.is_standard = is_standard + + @classmethod + def _process_custom_fields(cls, obj: Dict, field_reader: NamespaceFieldReader) -> Dict[str, Any]: + props = super()._process_custom_fields(obj, field_reader) + name_obj = field_reader.get_field(MIAttributeReference, obj, "name") + if name_obj is not None: + props["table_reference"] = cast(PartialTableReference, field_reader.create_type("PartialTableReference", name_obj)) + attribute_name_obj = field_reader.get_field(MIAttributeReference, name_obj, "attributeName") + if attribute_name_obj is not None: + props["attribute_name"] = attribute_name_obj + pseudo_obj = field_reader.get_field(MIAttributeReference, name_obj, "pseudo") + if pseudo_obj is not None: + props["pseudo"] = pseudo_obj + is_standard_obj = field_reader.get_field(MIAttributeReference, name_obj, "@isStandard") + if is_standard_obj is not None: + props["is_standard"] = is_standard_obj + return props + + @property + def db_key(self) -> str: + """ + The key that uniquely identifies a particular Database on the MI Server. + + Returns + ------- + str + """ + return self._db_key + + @db_key.setter + def db_key(self, value): + self._db_key = value + + @property + def attribute_identity(self) -> Optional[int]: + """ + The identity of the attribute within the MI Database. + + Returns + ------- + Optional[int] + """ + return self._attribute_identity + + @attribute_identity.setter + def attribute_identity(self, value): + self._attribute_identity = value + + @property + def table_reference(self) -> Optional[PartialTableReference]: + """ + A reference to the table hosting the attribute. Required if ``attribute_name`` is specified and ``is_standard`` + is not True. + + Returns + ------- + Optional[PartialTableReference] + """ + return self._table_reference + + @table_reference.setter + def table_reference(self, value): + self._table_reference = value + + @property + def attribute_name(self) -> Optional[str]: + """ + Name of the Attribute. + + Returns + ------- + str + """ + return self._attribute_name + + @attribute_name.setter + def attribute_name(self, value): + self._attribute_name = value + + @property + def pseudo(self) -> Optional[PseudoAttribute]: + """ + The Pseudoattribute type if referring to a Pseudoattribute. + + Returns + ------- + Optional[PseudoAttribute] + """ + return self._pseudo + + @pseudo.setter + def pseudo(self, value): + self._pseudo = value + + @property + def is_standard(self) -> Optional[bool]: + """ + If True indicates that the provided ``attribute_name`` is a Standard Name. + + Returns + ------- + Optional[bool] + """ + return self._is_standard + + @is_standard.setter + def is_standard(self, value): + self._is_standard = value + + +class MIRecordReference(BaseType): + _db_key: str + _record_history_identity: Optional[int] = None + _record_version_number: Optional[int] = None + _record_guid: Optional[str] = None + _record_history_guid: Optional[str] = None + _lookup_attribute_reference: "Optional[MIAttributeReference]" = None + _lookup_value: Optional[str] = None + _record_uid: Optional[str] = None + + _simple_values = [ + ("db_key", "dbKey"), + ("record_guid", "recordGUID"), + ("record_history_guid", "recordHistoryGUID"), + ("record_uid", "@recordUID"), + ] + + _namespace = "http://www.grantadesign.com/12/05/GrantaBaseTypes" + + def __init__(self, *, db_key: str, record_history_identity: Optional[int] = None, record_version_number: Optional[int] = None, + record_guid: Optional[str] = None, record_history_guid: Optional[str] = None, lookup_attribute_reference: "Optional[MIAttributeReference]" = None, + lookup_value: Optional[str] = None, record_uid: Optional[str] = None, **kwargs): + """A type that allows identification of a particular Record in an + MI Database. This may be done directly by specifying the Identity or GUID of the Record, or + indirectly by specifying a lookup that will match (only) the Record. + + For input, you should provide exactly one of either identity, recordGUID, recordHistoryGUID + or lookupValue. If more than one element identifying the record is given, only one is used; the descending + order of priority is: identity, recordGUID, recordHistoryGUID, lookupValue. The Service Layer does not + check that the several elements identifying the record are all referencing the same record, it just picks the + highest-priority one and uses that. + + Parameters + ---------- + db_key: str + The key that uniquely identifies a particular Database on the MI Server. + record_history_identity: Optional[int] + This is the best-performing and highest-priority way to reference a record; however, identities might not + be suitable for long-term persistence. + record_version_number: Optional[int] + If omitted, this means the latest version visible to the user. + record_guid: Optional[str] + Identifies a particular version of a record by its GUID, this is a more persistent way to refer to a record. + record_history_guid: Optional[str] + Identifies a record history, the latest visible version will be returned. ``record_version_number`` has no + effect on references that use ``record_history_guid`` + lookup_attribute_reference: Optional[MIAttributeReference] + When provided in combination with ``lookup_value`` identifies a record by a unique short-text attribute. + Specifies the attribute to be used for the lookup operation. + lookup_value: Optional[str] + When provided in combination with ``lookup_attribute_reference`` identifies a record by a unique short-text + attribute. Specifies the value to be used for the lookup operation. If this is not unique an error will be + returned. + record_uid: Optional[str] + The recordUID may be used to identify a particular XML element representing a record. It does not represent + any property or attribute of an actual MI Record. + """ + super().__init__(**kwargs) + self.db_key = db_key + self.record_history_identity = record_history_identity + self.record_version_number = record_version_number + self.record_guid = record_guid + self.record_history_guid = record_history_guid + self.lookup_attribute_reference = lookup_attribute_reference + self.lookup_value = lookup_value + self.record_uid = record_uid + + @classmethod + def _process_custom_fields(cls, obj: Dict, field_reader: NamespaceFieldReader) -> Dict[str, Any]: + props = super()._process_custom_fields(obj, field_reader) + identity_obj = field_reader.get_field(MIRecordReference, obj, "identity") + if identity_obj is not None: + props["record_history_identity"] = field_reader.get_field(MIRecordReference, identity_obj, "recordHistoryIdentity") + version_obj = field_reader.get_field(MIRecordReference, identity_obj, "version") + if version_obj is not None: + props["record_version_number"] = version_obj + lookup_obj = field_reader.get_field(MIRecordReference, obj, "lookupValue") + if lookup_obj is not None: + props["lookup_attribute_reference"] = field_reader.get_field(MIRecordReference, lookup_obj, "attributeReference") + props["lookup_value"] = field_reader.get_field(MIRecordReference, lookup_obj, "attributeValue") + return props + + @property + def db_key(self) -> str: + """ + Identifies the database to which this record belongs + + Returns + ------- + str + """ + return self._db_key + + @db_key.setter + def db_key(self, value): + self._db_key = value + + @property + def record_history_identity(self) -> Optional[int]: + """ + Identifies a record by its history identity + + Returns + ------- + Optional[int] + """ + return self._record_history_identity + + @record_history_identity.setter + def record_history_identity(self, value): + self._record_history_identity = value + + @property + def record_version_number(self) -> Optional[int]: + """ + If ``record_history_identity`` is provided, identifies a specific version of that record history. + + Returns + ------- + Optional[int] + """ + return self._record_version_number + + @record_version_number.setter + def record_version_number(self, value): + self._record_version_number = value + + @property + def record_guid(self) -> Optional[str]: + """ + Identifies a record by its GUID, gets a specific version. + + Returns + ------- + Optional[str] + """ + return self._record_guid + + @record_guid.setter + def record_guid(self, value): + self._record_guid = value + + @property + def record_history_guid(self) -> Optional[str]: + """ + Identifies a record by its history GUID, returns the latest released version of the record the user can see. + + Returns + ------- + Optional[str] + """ + return self._record_history_guid + + @record_history_guid.setter + def record_history_guid(self, value): + self._record_history_guid = value + + @property + def lookup_attribute_reference(self) -> "Optional[MIAttributeReference]": + """ + Identifies a record by a short-text attribute value. Specifies which attribute should be used to perform this + lookup. This should be either a Short-Text Attribute, or a compatible Pseudo-Attribute. + + Returns + ------- + Optional[MIAttributeReference] + """ + return self._lookup_attribute_reference + + @lookup_attribute_reference.setter + def lookup_attribute_reference(self, value): + self._lookup_attribute_reference = value + + @property + def lookup_value(self) -> Optional[str]: + """ + Identifies a record by a short-text attribute value. Specifies the value of the attribute should be used to + perform this lookup. + + Returns + ------- + Optional[str] + """ + return self._lookup_value + + @lookup_value.setter + def lookup_value(self, value): + self._lookup_value = value + + @property + def record_uid(self) -> Optional[str]: + """ + Identifies a record with an additional identifier, this is not used by the database, but will be returned + in any response unchanged. Used to correlate requests with responses from the server. + + Returns + ------- + Optional[str] + """ + return self._record_uid + + @record_uid.setter + def record_uid(self, value): + self._record_uid = value + + +# TODO - I don't like having a nice method to add props then replicating it here, can we do something better with +# inheritance? +class InternalIdentifierMixin: + _internal_id: Optional[str] = None + + def __init__(self, *, internal_id: Optional[str] = None, **kwargs): + """A unique identity for this object in this BoM. This identity is only for internal use, allowing other + elements to reference this element. + + Parameters + ---------- + internal_id: Optional[str] + The identifier to assign to this object + """ + super().__init__(**kwargs) + self.internal_id = internal_id + + @classmethod + def _process_custom_fields(cls, obj: Dict, bom_reader: BoMReader) -> None: + props = super()._process_custom_fields(obj, bom_reader) + id_obj = bom_reader.get_field(cls, obj, "@id") + if id_obj is not None: + props["internal_id"] = id_obj + return props + + def _write_custom_fields(self, obj: Dict, bom_writer: BoMWriter) -> None: + super()._write_custom_fields(obj, bom_writer) + if self._internal_id is not None: + field_name = bom_writer._get_qualified_name(self, "@id") + obj[field_name] = self._internal_id + + @property + def internal_id(self) -> Optional[str]: + """ + Internal identity used to refer to this object in references. + + Returns + ------- + str + """ + return self._internal_id + + @internal_id.setter + def internal_id(self, value: Optional[str]) -> None: + self._internal_id = value + + +class CommonIdentifiersMixin: + _identity: Optional[str] = None + _name: Optional[str] = None + _external_identity: Optional[str] = None + + def __init__(self, *, identity: Optional[str] = None, name: Optional[str] = None, external_identity: Optional[str] = None, **kwargs): + """ + A set of identifiers used by external applications to reference and display parts of the BoM. + + Parameters + ---------- + identity: Optional[str] + A display identity for the object. + name: Optional[str] + A display name for the object. + external_identity: Optional[str] + A temporary reference populated and used by applications to refer to the item within the BoM. + """ + super().__init__(**kwargs) + self.identity = identity + self.name = name + self.external_identity = external_identity + + def _write_custom_fields(self, obj: Dict, bom_writer: BoMWriter) -> None: + super()._write_custom_fields(obj, bom_writer) + if self._identity is not None: + field_name = bom_writer._get_qualified_name(self, "Identity") + obj[field_name] = self._identity + if self._name is not None: + field_name = bom_writer._get_qualified_name(self, "Name") + obj[field_name] = self._name + if self._external_identity is not None: + field_name = bom_writer._get_qualified_name(self, "ExternalIdentity") + obj[field_name] = self._external_identity + + @classmethod + def _process_custom_fields(cls, obj: Dict, bom_reader: BoMReader) -> Dict[str, Any]: + props = super()._process_custom_fields(obj, bom_reader) + identity_obj = bom_reader.get_field(cls, obj, "Identity") + if identity_obj is not None: + props["identity"] = identity_obj + name_obj = bom_reader.get_field(cls, obj, "Name") + if name_obj is not None: + props["name"] = name_obj + external_identity_obj = bom_reader.get_field(cls, obj, "ExternalIdentity") + if external_identity_obj is not None: + props["external_identity"] = external_identity_obj + return props + + @property + def identity(self) -> Optional[str]: + """ + A display identity for this object. + + Returns + ------- + Optional[str] + """ + return self._identity + + @identity.setter + def identity(self, value: Optional[str]) -> None: + self._identity = value + + @property + def name(self) -> Optional[str]: + """ + A display name for this object. + + Returns + ------- + Optional[str] + """ + return self._name + + @name.setter + def name(self, value: Optional[str]) -> None: + self._name = value + + @property + def external_identity(self) -> Optional[str]: + """ + A temporary reference populated and used by applications to refer to this object within the BoM. + + Returns + ------- + Optional[str] + """ + return self._external_identity + + @external_identity.setter + def external_identity(self, value: Optional[str]) -> None: + self._external_identity = value + + +class EndOfLifeFate(BaseType): + _mi_end_of_life_reference: "MIRecordReference" + _fraction: float + + _simple_values = [("fraction", "Fraction")] + + _props = [("MIRecordReference", "mi_end_of_life_reference", "MIEndOfLifeReference")] + + def __init__(self, * mi_end_of_life_reference: "MIRecordReference", fraction: float, **kwargs) -> None: + super().__init__(**kwargs) + self.mi_end_of_life_reference = mi_end_of_life_reference + self.fraction = fraction + + @property + def mi_end_of_life_reference(self) -> "MIRecordReference": + return self._mi_end_of_life_reference + + @mi_end_of_life_reference.setter + def mi_end_of_life_reference(self, value: MIRecordReference) -> None: + self._mi_end_of_life_reference = value + + @property + def fraction(self) -> float: + return self._fraction + + @fraction.setter + def fraction(self, value: float) -> None: + self._fraction = value + + +class UnittedValue(BaseType): + _value: float + _unit: Optional[str] = None + + _simple_values = [("value", "$"), ("unit", "@Unit")] + + def __init__(self, *, value: float, unit: Optional[str] = None, **kwargs) -> None: + """ + A physical quantity with a unit. If provided in a input then the unit should exist within the MI database, + otherwise an error will be raised. + + Parameters + ---------- + value: float + The value of the quantity in specified units + unit: Optional[str] + If provided, specifies the unit symbol applying to the quantity. If absent the quantity will be treated as + dimensionless. + """ + super().__init__(**kwargs) + self.value = value + self.unit = unit + + def __repr__(self) -> str: + if self._unit is None: + return f"" + else: + return f"" + + @property + def value(self) -> float: + """ + The value of the quantity in the provided unit. + + Returns + ------- + float + """ + return self._value + + @value.setter + def value(self, value: float) -> None: + self._value = value + + @property + def unit(self) -> Optional[str]: + """ + The unit symbol applying to the quantity. + + Returns + ------- + Optional[str] + """ + return self._unit + + @unit.setter + def unit(self, value: Optional[str]) -> None: + self._unit = value + + +class Location(CommonIdentifiersMixin, InternalIdentifierMixin, BaseType): + _mi_location_reference: "Optional[MIRecordReference]" + + _props = [("MIRecordReference", "mi_location_reference", "MILocationReference")] + + def __init__(self, *, mi_location_reference: "Optional[MIRecordReference]" = None, **kwargs) -> None: + """ + Defines the manufacturing location for the BoM for use in process calculations. + + Parameters + ---------- + mi_location_reference: Optional[MIRecordReference] + Reference to a record in the MI database representing the manufacturing location. + """ + super().__init__(**kwargs) + self.mi_location_reference = mi_location_reference + + @property + def mi_location_reference(self) -> "Optional[MIRecordReference]": + """ + Reference to a record in the MI database representing the manufacturing location. + + Returns + ------- + Optional[MIRecordReference] + """ + return self._mi_location_reference + + @mi_location_reference.setter + def mi_location_reference(self, value): + self._mi_location_reference = value + + +class ElectricityMix(BaseType): + _mi_region_reference: "Optional[MIRecordReference]" = None + _percentage_fossil_fuels: Optional[float] = None + + _props = [("MIRecordReference", "mi_region_reference", "MIRegionReference")] + _simple_values = [("percentage_fossil_fuels", "PercentageFossilFuels")] + + def __init__(self, *, mi_region_reference: "Optional[MIRecordReference]" = None, percentage_fossil_fuels: Optional[float] = None, **kwargs) -> None: + """ + If the product consumes electrical power, then the amount of CO2 produced to generate depends upon the mix of + fossil fuel burning power stations in the region of use. This type lets you specify the electrical generation + mix by either specifying the region or country of use or by specifying the percentage of power that comes from + fossil fuel sources. + + Parameters + ---------- + mi_region_reference: Optional[MIRecordReference] + Reference to a record in the MI database representing the electricity mix for the destination country. + percentage_fossil_fuels: Optional[float] + The percentage of electrical power production within the destination country that comes from fossil fuels. + """ + super().__init__(**kwargs) + self.mi_region_reference = mi_region_reference + self.percentage_fossil_fuels = percentage_fossil_fuels + + @property + def mi_region_reference(self) -> "Optional[MIRecordReference]": + """ + Reference to a record in the MI database representing the electricity mix for the destination country. + + Returns + ------- + Optional[MIRecordReference] + """ + return self._mi_region_reference + + @mi_region_reference.setter + def mi_region_reference(self, value): + self._mi_region_reference = value + + @property + def percentage_fossil_fuels(self) -> Optional[float]: + """ + The percentage of electrical power production within the destination country that comes from fossil fuels. + + Returns + ------- + Optional[float] + """ + return self._percentage_fossil_fuels + + @percentage_fossil_fuels.setter + def percentage_fossil_fuels(self, value): + self._percentage_fossil_fuels = value + + +class MobileMode(BaseType): + _mi_transport_reference: "MIRecordReference" + _days_used_per_year: float + _distance_travelled_per_day: "UnittedValue" + + _props = [ + ("MIRecordReference", "mi_transport_reference", "MITransportReference"), + ("UnittedValue", "distance_travelled_per_day", "DistanceTravelledPerDay"), + ] + _simple_values = [("days_user_per_year", "DaysUsedPerYear")] + + def __init__(self, *, mi_transport_reference: "MIRecordReference", days_used_per_year: float, distance_travelled_per_day: "UnittedValue", **kwargs) -> None: + """ + If the product is transported as part of its use then this type contains details about the way in which it is + transported. + + Parameters + ---------- + mi_transport_reference: MIRecordReference + Reference to a record in the MI database representing the means of transport for this product during use. + days_used_per_year: float + The number of days in a year the product will be transported during use. + distance_travelled_per_day: UnittedValue + The distance the product will be transported each day as part of its use. + """ + super().__init__(**kwargs) + self.mi_transport_reference = mi_transport_reference + self.days_used_per_year = days_used_per_year + self.distance_travelled_per_day = distance_travelled_per_day + + @property + def mi_transport_reference(self) -> MIRecordReference: + """ + Reference to a record in the MI database representing the means of transport for this product during use. + + Returns + ------- + MIRecordReference + """ + return self._mi_transport_reference + + @mi_transport_reference.setter + def mi_transport_reference(self, value): + self._mi_transport_reference = value + + @property + def days_used_per_year(self) -> float: + """ + The number of days in a year the product will be transported during use. + + Returns + ------- + float + """ + return self._days_used_per_year + + @days_used_per_year.setter + def days_used_per_year(self, value): + self._days_used_per_year = value + + @property + def distance_travelled_per_day(self) -> "UnittedValue": + """ + The distance the product will be transported each day as part of its use. + + Returns + ------- + UnittedValue + """ + return self._distance_travelled_per_day + + @distance_travelled_per_day.setter + def distance_travelled_per_day(self, value): + self._distance_travelled_per_day = value + + +class StaticMode(BaseType): + _mi_energy_conversion_reference: "MIRecordReference" + _power_rating: "UnittedValue" + _days_used_per_year: float + _hours_used_per_day: float + + _props = [ + ("MIRecordReference", "mi_energy_conversion_reference", "MIEnergyConversionReference"), + ("UnittedValue", "power_rating", "PowerRating"), + ] + _simple_values = [("days_used_per_year", "DaysUsedPerYear"), ("hours_used_per_day", "HoursUsedPerDay")] + + def __init__(self, *, mi_energy_conversion_reference: "MIRecordReference", power_rating: "UnittedValue", days_used_per_year: float, hours_used_per_day: float, **kwargs) -> None: + """ + Specifies the primary energy conversion that occurs during the product's use. + + Parameters + ---------- + mi_energy_conversion_reference: MIRecordReference + Reference to a record in the MI database representing the primary energy conversion taking place when the + product is in use. + power_rating: UnittedValue + The power rating of the product whilst in use + days_used_per_year: float + The number of days per year that the product will be used + hours_used_per_day: float + The number of hours per day of use that the product will be used + """ + super().__init__(**kwargs) + self.mi_energy_conversion_reference = mi_energy_conversion_reference + self.power_rating = power_rating + self.days_used_per_year = days_used_per_year + self.hours_used_per_day = hours_used_per_day + + @property + def mi_energy_conversion_reference(self) -> "MIRecordReference": + """ + Reference to a record in the MI database representing the primary energy conversion taking place when the + product is in use. + + Returns + ------- + MIRecordReference + """ + return self._mi_energy_conversion_reference + + @mi_energy_conversion_reference.setter + def mi_energy_conversion_reference(self, value): + self._mi_energy_conversion_reference = value + + @property + def power_rating(self) -> "UnittedValue": + """ + The power rating of the product whilst in use + + Returns + ------- + UnittedValue + """ + return self._power_rating + + @power_rating.setter + def power_rating(self, value): + self._power_rating = value + + @property + def days_used_per_year(self) -> float: + """ + The number of days per year that the product will be used + + Returns + ------- + float + """ + return self._days_used_per_year + + @days_used_per_year.setter + def days_used_per_year(self, value): + self._days_used_per_year = value + + @property + def hours_used_per_day(self) -> float: + """ + The number of hours per day of use that the product will be used + + Returns + ------- + float + """ + return self._hours_used_per_day + + @hours_used_per_day.setter + def hours_used_per_day(self, value): + self._hours_used_per_day = value + + +class UtilitySpecification(BaseType): + _industry_average_duration_years: Optional[float] = None + _industry_average_number_of_functional_units: Optional[float] = None + _utility: Optional[float] = None + + _simple_values = [ + ("industry_average_duration_years", "IndustryAverageDurationYears"), + ("industry_average_number_of_functional_units", "IndustryAverageNumberOfFunctionalUnits"), + ("utility", "Utility"), + ] + + def __init__(self, *, industry_average_duration_years: Optional[float] = None, industry_average_number_of_functional_units: Optional[float] = None, utility: Optional[float] = None, **kwargs) -> None: + """ + Specifies how much use can be obtained from the product represented by this BoM in comparison to a + representative industry average. + + Parameters + ---------- + industry_average_duration_years: Optional[float] + The average lifespan of all examples, throughout the industry, of the kind of product described herein. + industry_average_number_of_functional_units: Optional[float] + The average number of functional units delivered, in their lifespan, by all examples, throughout the + industry, of the kind of product represented by this object. + utility: Optional[float] + Directly specifies the utility. + """ + super().__init__(**kwargs) + self.industry_average_duration_years = industry_average_duration_years + self.industry_average_number_of_functional_units = industry_average_number_of_functional_units + self.utility = utility + + @property + def industry_average_duration_years(self) -> Optional[float]: + """ + The average lifespan of all examples, throughout the industry, of the kind of product described herein. + + Returns + ------- + Optional[float] + """ + return self._industry_average_duration_years + + @industry_average_duration_years.setter + def industry_average_duration_years(self, value): + self._industry_average_duration_years = value + + @property + def industry_average_number_of_functional_units(self) -> Optional[float]: + """ + The average number of functional units delivered, in their lifespan, by all examples, throughout the industry, + of the kind of product represented by this object. + + Returns + ------- + Optional[float] + """ + return self._industry_average_number_of_functional_units + + @industry_average_number_of_functional_units.setter + def industry_average_number_of_functional_units(self, value): + self._industry_average_number_of_functional_units = value + + @property + def utility(self) -> Optional[float]: + """ + Directly specifies the utility. + + Returns + ------- + float + """ + return self._utility + + @utility.setter + def utility(self, value): + self._utility = value + + +class ProductLifeSpan(BaseType): + _duration_years: float + _number_of_functional_units: Optional[float] = None + _functional_unit_description: Optional[str] = None + _utility: "Optional[UtilitySpecification]" = None + + _props = [("UtilitySpecification", "utility", "Utility")] + _simple_values = [ + ("duration_years", "DurationYears"), + ("number_of_functional_units", "NumberOfFunctionalUnits"), + ("functional_unit_description", "FunctionalUnitDescription"), + ] + + def __init__(self, *, duration_years: float, number_of_functional_units: Optional[float] = None, + functional_unit_description: Optional[str] = None, utility: Optional[UtilitySpecification] = None, **kwargs) -> None: + """ + Specifies the average life span for the product represented by the BoM. + + Parameters + ---------- + duration_years: float + The product lifespan in years. + number_of_functional_units: Optional[float] + The number of functional units delivered in the lifespan of the product represented by the BoM. + functional_unit_description: Optional[str] + A short (ideally one-word) description of a single functional unit. + utility: Optional[UtilitySpecification] + Indicates how much use can be obtained from the product represented by the BoM, compared to an + industry-average example + """ + super().__init__(**kwargs) + self.duration_years = duration_years + self.number_of_functional_units = number_of_functional_units + self.functional_unit_description = functional_unit_description + self.utility = utility + + @property + def duration_years(self) -> float: + """ + The product lifespan in years. + + Returns + ------- + float + """ + return self._duration_years + + @duration_years.setter + def duration_years(self, value): + self._duration_years = value + + @property + def number_of_functional_units(self) -> Optional[float]: + """ + The number of functional units delivered in the lifespan of the product represented by the BoM. + + Returns + ------- + Optional[float] + """ + return self._number_of_functional_units + + @number_of_functional_units.setter + def number_of_functional_units(self, value): + self._number_of_functional_units = value + + @property + def functional_unit_description(self) -> Optional[str]: + """ + A short (ideally one-word) description of a single functional unit. + + Returns + ------- + Optional[str] + """ + return self._functional_unit_description + + @functional_unit_description.setter + def functional_unit_description(self, value): + self._functional_unit_description = value + + @property + def utility(self) -> "Optional[UtilitySpecification]": + """ + Indicates how much use can be obtained from the product represented by the BoM, compared to an industry-average + example + + Returns + ------- + Optional[UtilitySpecification] + """ + return self._utility + + @utility.setter + def utility(self, value): + self._utility = value + + +class UsePhase(BaseType): + _product_life_span: "ProductLifeSpan" + _electricity_mix: "Optional[ElectricityMix]" = None + _static_mode: "Optional[StaticMode]" = None + _mobile_mode: "Optional[MobileMode]" = None + + _props = [ + ("ProductLifeSpan", "product_life_span", "ProductLifeSpan"), + ("ElectricityMix", "electricity_mix", "ElectricityMix"), + ("StaticMode", "static_mode", "StaticMode"), + ("MobileMode", "mobile_mode", "MobileMode"), + ] + + def __init__(self, *, product_life_span: "ProductLifeSpan", electricity_mix: "Optional[ElectricityMix]" = None, + static_mode: "Optional[StaticMode]" = None, mobile_mode: "Optional[MobileMode]" = None, **kwargs) -> None: + """ + Provides information about the sustainability of the product whilst in use, including electricity use, emissions + due to transport, emissions due to electricity consumption, and the expected life span of the product. + + Parameters + ---------- + product_life_span: ProductLifeSpan + Specifies the expected life span of the product. + electricity_mix: Optional[ElectricityMix] + Specifies the proportion of electricity within the destination country that comes from fossil fuels. + static_mode: Optional[StaticMode] + Provides information about the expected static use of the product. + mobile_mode: Optional[MobileMode] + Provides information about the expected mobile use of the product. + """ + super().__init__(**kwargs) + self.product_life_span = product_life_span + self.electricity_mix = electricity_mix + self.static_mode = static_mode + self.mobile_mode = mobile_mode + + @property + def product_life_span(self) -> "ProductLifeSpan": + """ + Specifies the expected life span of the product. + + Returns + ------- + ProductLifeSpan + """ + return self._product_life_span + + @product_life_span.setter + def product_life_span(self, value): + self._product_life_span = value + + @property + def electricity_mix(self) -> "Optional[ElectricityMix]": + """ + Specifies the proportion of electricity within the destination country that comes from fossil fuels. + + Returns + ------- + Optional[ElectricityMix] + """ + return self._electricity_mix + + @electricity_mix.setter + def electricity_mix(self, value): + self._electricity_mix = value + + @property + def static_mode(self) -> "Optional[StaticMode]": + """ + Provides information about the expected static use of the product. + + Returns + ------- + Optional[StaticMode] + """ + return self._static_mode + + @static_mode.setter + def static_mode(self, value): + self._static_mode = value + + @property + def mobile_mode(self) -> "Optional[MobileMode]": + """ + Provides information about the expected mobile use of the product. + + Returns + ------- + Optional[MobileMode] + """ + return self._mobile_mode + + @mobile_mode.setter + def mobile_mode(self, value): + self._mobile_mode = value + + +class BoMDetails(BaseType): + _notes: Optional[str] = None + _picture_url: Optional[str] = None + _product_name: Optional[str] = None + + _simple_values = [("notes", "Notes"), ("picture_url", "PictureUrl"), ("product_name", "ProductName")] + + def __init__(self, *, notes: Optional[str] = None, picture_url: Optional[str] = None, product_name: Optional[str] = None, **kwargs) -> None: + """ + Explanatory information about a BoM. + + Parameters + ---------- + notes: Optional[str] + General notes for the BoM object + picture_url: Optional[str] + The URL of an image to include at the top of the report. This URL must be accessible from the reporting + services server. + product_name: Optional[str] + The product name. + """ + super().__init__(**kwargs) + self.notes = notes + self.picture_url = picture_url + self.product_name = product_name + + @property + def notes(self) -> Optional[str]: + """ + General notes for the BoM object + + Returns + ------- + Optional[str] + """ + return self._notes + + @notes.setter + def notes(self, value): + self._notes = value + + @property + def picture_url(self) -> Optional[str]: + """ + The URL of an image to include at the top of the report. This URL must be accessible from the reporting + services server. + + Returns + ------- + Optional[str] + """ + return self._picture_url + + @picture_url.setter + def picture_url(self, value): + self._picture_url = value + + @property + def product_name(self) -> Optional[str]: + """ + The product name. + + Returns + ------- + Optional[str] + """ + return self._product_name + + @product_name.setter + def product_name(self, value): + self._product_name = value + + +class TransportStage(InternalIdentifierMixin, BaseType): + _name: str + _mi_transport_reference: "MIRecordReference" + _distance: "UnittedValue" + + _props = [ + ("MIRecordReference", "mi_transport_reference", "MITransportReference"), + ("UnittedValue", "distance", "Distance"), + ] + _simple_values = [("name", "Name")] + + def __init__(self, *, name: str, mi_transport_reference: "MIRecordReference", distance: "UnittedValue", **kwargs) -> None: + """ + Defines the transportation applied to an object, in terms of the generic transportation type (stored in the + Database) and the amount of that transport used in this instance. + + Parameters + ---------- + name: str + Name of this transportation stage, used only to identify the stage within the BoM. + mi_transport_reference: MIRecordReference + Reference to a record in the MI Database representing the means of transportation for this stage. + distance: UnittedValue + The distance covered by this transportation stage. + + """ + super().__init__(**kwargs) + self.name = name + self.mi_transport_reference = mi_transport_reference + self.distance = distance + + @property + def name(self) -> str: + """ + Name of this transportation stage, used only to identify the stage within the BoM. + + Returns + ------- + str + """ + return self._name + + @name.setter + def name(self, value): + self._name = value + + @property + def mi_transport_reference(self) -> "MIRecordReference": + """ + Reference to a record in the MI Database representing the means of transportation for this stage. + + Returns + ------- + MIRecordReference + """ + return self._mi_transport_reference + + @mi_transport_reference.setter + def mi_transport_reference(self, value): + self._mi_transport_reference = value + + @property + def distance(self) -> "UnittedValue": + """ + The distance covered by this transportation stage. + + Returns + ------- + UnittedValue + """ + return self._distance + + @distance.setter + def distance(self, value): + self._distance = value + + +class Specification(CommonIdentifiersMixin, InternalIdentifierMixin, BaseType): + _mi_specification_reference: "MIRecordReference" + _quantity: "Optional[UnittedValue]" = None + + _props = [ + ("MIRecordReference", "mi_specification_reference", "MISpecificationReference"), + ("UnittedValue", "quantity", "Quantity"), + ] + + def __init__(self, *, mi_specification_reference: "MIRecordReference", quantity: "Optional[UnittedValue]" = None, **kwargs) -> None: + """ + A specification for a part, process, or material. Refers to a record with the MI Database storing the details + of the specification and its impact. + + Parameters + ---------- + mi_specification_reference: MIRecordReference + Reference identifying the record representing this specification in the MI Database. + quantity: Optional[UnittedValue] + A quantification of the specification, if applicable. + """ + super().__init__(**kwargs) + self.mi_specification_reference = mi_specification_reference + self.quantity = quantity + + @property + def mi_specification_reference(self) -> "MIRecordReference": + """ + Reference identifying the record representing this specification in the MI Database. + + Returns + ------- + MIRecordReference + """ + return self._mi_specification_reference + + @mi_specification_reference.setter + def mi_specification_reference(self, value): + self._mi_specification_reference = value + + @property + def quantity(self) -> "Optional[UnittedValue]": + """ + A quantification of the specification, if applicable. + + Returns + ------- + Optional[UnittedValue] + """ + return self._quantity + + @quantity.setter + def quantity(self, value): + self._quantity = value + + +class Substance(CommonIdentifiersMixin, InternalIdentifierMixin, BaseType): + _percentage: Optional[float] = None + _category: Optional[str] = None + _mi_substance_reference: "MIRecordReference" + + _simple_values = [("percentage", "Percentage"), ("category", "Category")] + + _props = [("MIRecordReference", "mi_substance_reference", "MISubstanceReference")] + + def __init__(self, *, mi_substance_reference: "MIRecordReference", percentage: Optional[float] = None, category: Optional[str] = None, **kwargs) -> None: + """ + A substance within a part, semi-finished part, material or specification. The substance is stored in the + Database. + + Parameters + ---------- + mi_substance_reference: MIRecordReference + Reference identifying the record representing the substance in the MI Database. + percentage: Optional[Float] + If the parent object consists of more than one substance, this defines the percentage of this + substance. + category: Optional[str] + TODO - What is this? + """ + super().__init__(**kwargs) + self.mi_substance_reference = mi_substance_reference + self.percentage = percentage + self.category = category + + @property + def mi_substance_reference(self) -> "MIRecordReference": + """ + Reference identifying the record representing the substance in the MI Database. + + Returns + ------- + MIRecordReference + """ + return self._mi_substance_reference + + @mi_substance_reference.setter + def mi_substance_reference(self, value: "MIRecordReference"): + self._mi_substance_reference = value + + @property + def percentage(self) -> Optional[float]: + """ + If the parent object consists of more than one substance, this defines the percentage of this substance. + + Returns + ------- + Optional[float] + """ + return self._percentage + + @percentage.setter + def percentage(self, value: Optional[float]): + self._percentage = value + + @property + def category(self) -> Optional[str]: + """ + TODO - Who can say? + + Returns + ------- + Optional[str] + """ + return self._category + + @category.setter + def category(self, value: Optional[str]): + self._category = value + + +class Process(CommonIdentifiersMixin, InternalIdentifierMixin, BaseType): + _mi_process_reference: "MIRecordReference" + _dimension_type: DimensionType + _percentage_of_part_affected: Optional[float] = None + _quantity_affected: "Optional[UnittedValue]" = None + + _simple_values = [("percentage_of_part_affected", "Percentage")] + + _props = [ + ("MIRecordReference", "mi_process_reference", "MIProcessReference"), + ("UnittedValue", "quantity_affected", "Quantity"), + ] + + def __init__(self, *, mi_process_reference: "MIRecordReference", dimension_type: "DimensionType", + percentage_of_part_affected: Optional[float] = None, quantity_affected: "Optional[UnittedValue]" = None, **kwargs) -> None: + """ + A process that is applied to a subassembly, part, semi-finished part or material. The process is stored in the + Database. + + Parameters + ---------- + mi_process_reference: MIRecordReference + Reference identifying a record in the MI Database containing information about this process. + dimension_type: DimensionType + Object defining the dimension affected by the process, for example area for coatings, or volume for + rough machining operations. + percentage_of_part_affected: Optional[float] + Fraction of the object affected by the process, with basis specified by ``dimension_type`` + quantity_affected: Optional[UnittedValue] + Number of items affected by the process, if applicable. For example 17 fasteners are galvanized out of 24 + total. + """ + super().__init__(**kwargs) + self.mi_process_reference = mi_process_reference + self.dimension_type = dimension_type + self.percentage_of_part_affected = percentage_of_part_affected + self.quantity_affected = quantity_affected + + @classmethod + def _process_custom_fields(cls, obj: Dict, field_reader: NamespaceFieldReader) -> Dict[str, Any]: + props = super()._process_custom_fields(obj, field_reader) + + dimension_type_obj = field_reader.get_field(Process, obj, "DimensionType") + props["dimension_type"] = DimensionType.from_string(dimension_type_obj) + return props + + def _write_custom_fields(self, obj: Dict, bom_writer: BoMWriter) -> None: + super()._write_custom_fields(obj, bom_writer) + + dimension_field_name = bom_writer._get_qualified_name(self, "DimensionType") + obj[dimension_field_name] = self.dimension_type.to_string() + + @property + def mi_process_reference(self) -> "MIRecordReference": + """ + Reference identifying a record in the MI Database containing information about this process. + + Returns + ------- + MIRecordReference + """ + return self._mi_process_reference + + @mi_process_reference.setter + def mi_process_reference(self, value): + self._mi_process_reference = value + + @property + def dimension_type(self) -> DimensionType: + """ + Object defining the dimension affected by the process, for example area for coatings, or volume for rough + machining operations. + + Returns + ------- + DimensionType + """ + return self._dimension_type + + @dimension_type.setter + def dimension_type(self, value): + self._dimension_type = value + + @property + def percentage_of_part_affected(self) -> Optional[float]: + """ + Fraction of the object affected by the process, with basis specified by ``dimension_type``. + + Returns + ------- + Optional[float] + """ + return self._percentage_of_part_affected + + @percentage_of_part_affected.setter + def percentage_of_part_affected(self, value): + self._percentage_of_part_affected = value + + @property + def quantity_affected(self) -> "Optional[UnittedValue]": + """ + Number of items affected by the process, if applicable. For example 17 fasteners are galvanized out of 24 total. + + Returns + ------- + Optional[UnittedValue] + """ + return self._quantity_affected + + @quantity_affected.setter + def quantity_affected(self, value): + self._quantity_affected = value + + +class Material(CommonIdentifiersMixin, InternalIdentifierMixin, BaseType): + """A Material within a part or semi-finished part. The material is stored in the Database.""" + + _percentage: Optional[float] = None + _mass: "Optional[UnittedValue]" = None + _mi_material_reference: "MIRecordReference" + _recycle_content_is_typical: Optional[bool] = None + _recycle_content_percentage: Optional[float] = None + _processes: "List[Process]" = [] + _end_of_life_fates: "List[EndOfLifeFate]" = [] + + _simple_values = [("percentage", "Percentage")] + + _props = [("UnittedValue", "mass", "Mass"), ("MIRecordReference", "mi_material_reference", "MIMaterialReference")] + + _list_props = [ + ("Process", "processes", "Processes", "http://www.grantadesign.com/23/01/BillOfMaterialsEco", "Process"), + ("EndOfLifeFate", "end_of_life_fates", "EndOfLifeFates", "http://www.grantadesign.com/23/01/BillOfMaterialsEco", "EndOfLifeFate"), + ] + + def __init__(self, *, mi_material_reference: "MIRecordReference", percentage: Optional[float] = None, + mass: "Optional[UnittedValue]" = None, recycle_content_is_typical: Optional[bool] = None, recycle_content_percentage: Optional[float] = None, + processes: "List[Process]" = None, end_of_life_fates: "List[EndOfLifeFate]" = None, **kwargs) -> None: + """ + A Material within a part or semi-finished part. The material is stored in the Database. + + Parameters + ---------- + mi_material_reference: MIRecordReference + Reference identifying the material record within the MI Database. + percentage: Optional[float] + The fraction of the part consisting of this material. Provide either this or ``mass``. + mass: Optional[UnittedValue] + The mass of this material present within the part. Provide either this or ``percentage``. + recycle_content_is_typical: Optional[bool] + If True, indicates that the material's recyclability is typical, the value in the MI record will be used. + recycle_content_percentage: Optional[float] + If the recyclability is not typical for this material, or no typical value is available in the MI Database, + this value indicates which percentage of this material can be recycled. + processes: List[Process] + Any processes associated with the production and preparation of this material. + end_of_life_fates: List[EndOfLifeFate] + The fates of this material once the product is disposed of. + """ + super().__init__(**kwargs) + self.percentage = percentage + self.mass = mass + self.mi_material_reference = mi_material_reference + self.recycle_content_is_typical = recycle_content_is_typical + self.recycle_content_percentage = recycle_content_percentage + if processes is None: + processes = [] + self.processes = processes + if end_of_life_fates is None: + end_of_life_fates = [] + self.end_of_life_fates = end_of_life_fates + + def __repr__(self) -> str: + if self._percentage is not None: + return f" Dict[str, Any]: + props = super()._process_custom_fields(obj, field_reader) + + recycle_content_obj = field_reader.get_field(Material, obj, "RecycleContent") + if recycle_content_obj is not None: + typical_obj = field_reader.get_field(Material, recycle_content_obj, "Typical") + if typical_obj is not None: + props["recycle_content_is_typical"] = typical_obj + percentage_obj = field_reader.get_field(Material, recycle_content_obj, "Percentage") + if percentage_obj is not None: + props["recycle_content_percentage"] = percentage_obj + return props + + def _write_custom_fields(self, obj: Dict, bom_writer: BoMWriter) -> None: + super()._write_custom_fields(obj, bom_writer) + recycle_content_name = bom_writer._get_qualified_name(self, "RecycleContent") + recycle_element = {} + if self._recycle_content_is_typical is not None: + typical_name = bom_writer._get_qualified_name(self, "Typical") + recycle_element[typical_name] = self._recycle_content_is_typical + elif self._recycle_content_is_typical is not None: + percentage_name = bom_writer._get_qualified_name(self, "Percentage") + recycle_element[percentage_name] = self._recycle_content_percentage + else: + return + obj[recycle_content_name] = recycle_element + + @property + def mi_material_reference(self) -> MIRecordReference: + """ + Reference identifying the material record within the MI Database. + + Returns + ------- + MIRecordReference + """ + return self._mi_material_reference + + @mi_material_reference.setter + def mi_material_reference(self, value): + self._mi_material_reference = value + + @property + def percentage(self) -> Optional[float]: + """ + The fraction of the part consisting of this material. Provide either this or ``mass``. + + Returns + ------- + Optional[float] + """ + return self._percentage + + @percentage.setter + def percentage(self, value): + self._percentage = value + + @property + def mass(self) -> "Optional[UnittedValue]": + """ + The mass of this material present within the part. Provide either this or ``percentage``. + + Returns + ------- + Optional[UnittedValue] + """ + return self._mass + + @mass.setter + def mass(self, value): + self._mass = value + + @property + def recycle_content_is_typical(self) -> Optional[bool]: + """ + If True, indicates that the material's recyclability is typical, the value in the MI record will be used. If + False or not provided then you must provide the ``recycle_content_percentage`` value to manually specify what + fraction of the material is recyclable. + + Returns + ------- + Optional[bool] + """ + return self._recycle_content_is_typical + + @recycle_content_is_typical.setter + def recycle_content_is_typical(self, value): + self._recycle_content_is_typical = value + + @property + def recycle_content_percentage(self) -> Optional[float]: + """ + If the recyclability is not typical for this material, or no typical value is available in the MI Database, this + value indicates which percentage of this material can be recycled. + + Returns + ------- + Optional[float] + """ + return self._recycle_content_percentage + + @recycle_content_percentage.setter + def recycle_content_percentage(self, value): + self._recycle_content_percentage = value + + @property + def processes(self) -> List[Process]: + """ + Any processes associated with the production and preparation of this material. + + Returns + ------- + List[Process] + """ + return self._processes + + @processes.setter + def processes(self, value): + self._processes = value + + @property + def end_of_life_fates(self) -> List[EndOfLifeFate]: + """ + The fates of this material once the product is disposed of. + + Returns + ------- + List[EndOfLifeFate] + """ + return self._end_of_life_fates + + @end_of_life_fates.setter + def end_of_life_fates(self, value): + self._end_of_life_fates = value + + +class Part(InternalIdentifierMixin, BaseType): + """A single part which may or may not be stored in the MI Database.""" + + _quantity: "Optional[UnittedValue]" = None + _mass_per_unit_of_measure: "Optional[UnittedValue]" = None + _volume_per_unit_of_measure: "Optional[UnittedValue]" = None + _mi_part_reference: "Optional[MIRecordReference]" = None + _non_mi_part_reference: "Optional[Union[str, int]]" = None + _part_number: str + _name: Optional[str] = None + _external_id: Optional[str] = None + _components: "List[Part]" = [] + _specifications: "List[Specification]" = [] + _materials: "List[Material]" = [] + _substances: "List[Substance]" = [] + _processes: "List[Process]" = [] + _rohs_exemptions: "List[str]" = [] + _end_of_life_fates: "List[EndOfLifeFate]" = [] + + _props = [ + ("UnittedValue", "quantity", "Quantity"), + ("UnittedValue", "mass_per_unit_of_measure", "MassPerUom"), + ("UnittedValue", "volume_per_unit_of_measure", "VolumePerUom"), + ("MIRecordReference", "mi_part_reference", "MIPartReference"), + ] + + _simple_values = [("part_number", "PartNumber"), ("part_name", "Name"), ("external_id", "ExternalIdentity")] + + _list_props = [ + ("Part", "components", "Components", "http://www.grantadesign.com/23/01/BillOfMaterialsEco", "Part"), + ("Specification", "specifications", "Specifications", "http://www.grantadesign.com/23/01/BillOfMaterialsEco", "Specification"), + ("Material", "materials", "Materials", "http://www.grantadesign.com/23/01/BillOfMaterialsEco", "Material"), + ("Substance", "substances", "Substances", "http://www.grantadesign.com/23/01/BillOfMaterialsEco", "Substance"), + ("Process", "processes", "Processes", "http://www.grantadesign.com/23/01/BillOfMaterialsEco", "Process"), + ("EndOfLifeFate", "end_of_life_fates", "EndOfLifeFates", "http://www.grantadesign.com/23/01/BillOfMaterialsEco", "EndOfLifeFate"), + ] + + def __init__(self, *, part_number: str, quantity: "Optional[UnittedValue]" = None, mass_per_unit_of_measure: "Optional[UnittedValue]" = None, + volume_per_unit_of_measure: "Optional[UnittedValue]" = None, mi_part_reference: "Optional[MIRecordReference]" = None, + non_mi_part_reference: "Optional[Union[str, int]]" = None, part_name: Optional[str] = None, external_id: Optional[str] = None, + components: "List[Part]" = None, specifications: "List[Specification]" = None, materials: "List[Material]" = None, substances: "List[Substance]" = None, + processes: "List[Process]" = None, rohs_exemptions: List[str] = None, end_of_life_fates: "List[EndOfLifeFate]" = None, **kwargs): + """ + A single part which may or may not be stored in the MI Database. + + Parameters + ---------- + part_number: str + The Part Number associated with this part. + quantity: Optional[UnittedValue] + The quantity of part(s) used in the parent part. For discrete parts, this will be the part count - an + integer with a blank unit (or "Each"). For continuous parts, it will be a mass, length, area or volume - a + float value with an appropriate units. + mass_per_unit_of_measure: Optional[UnittedValue] + The mass of the part, after processing, relative to the unit that Quantity is given in. If MassPerUom is + specified and VolumePerUom is not, then specifying materials within this part is interpreted to be + percentage by mass. + volume_per_unit_of_measure: Optional[UnittedValue] + The volume of the part, after processing, relative to the unit that Quantity is given in. If VolumePerUom + is specified and MassPerUom is not, then specifying materials within this part is interpreted to be + percentage by volume. + mi_part_reference: Optional[MIRecordReference] + A reference identifying a part stored in the MI Database. + non_mi_part_reference: Optional[Union[str, int]] + A reference to a part stored in another system, for informational purposes only. + part_name: Optional[str] + Display name for the part. + external_id: Optional[str] + A temporary reference populated and used by applications to refer to the item within the BoM. + components: List[Part] + List of subcomponents for this part. + specifications: List[Specification] + List of specifications applying to this part. + materials: List[Material] + List of constituent materials making up this part. + substances: List[Substances] + List of substances contained within this part. + processes: List[Process] + List of processes used in the manufacture of this part. + rohs_exemptions: List[str] + If the part has a RoHS exemption, provide one or more justifications for the exemptions here. If the part is + analyzed as **Non-Compliant** then the RoHS indicator will return **Compliant with Exemptions** instead. + end_of_life_fates: List[EndOfLifeFate] + The fate(s) of the part, at the end-of-life of the product. + """ + + super().__init__(**kwargs) + self.quantity = quantity + self.mass_per_unit_of_measure = mass_per_unit_of_measure + self.volume_per_unit_of_measure = volume_per_unit_of_measure + self.mi_part_reference = mi_part_reference + self.non_mi_part_reference = non_mi_part_reference + self.part_number = part_number + self.part_name = part_name + self.external_id = external_id + if components is None: + components = [] + self.components = components + if specifications is None: + specifications = [] + self.specifications = specifications + if materials is None: + materials = [] + self.materials = materials + if substances is None: + substances = [] + self.substances = substances + if processes is None: + processes = [] + self.processes = processes + if rohs_exemptions is None: + rohs_exemptions = [] + self.rohs_exemptions = rohs_exemptions + if end_of_life_fates is None: + end_of_life_fates = [] + self.end_of_life_fates = end_of_life_fates + + def __repr__(self) -> str: + if len(self._components) == 0: + return f"" + return f"" + + @classmethod + def _process_custom_fields(cls, obj: Dict, field_reader: NamespaceFieldReader) -> Dict[str, Any]: + props = super()._process_custom_fields(obj, field_reader) + + non_mi_part_ref_obj = field_reader.get_field(Part, obj, "NonMIPartReference") + if non_mi_part_ref_obj is not None: + props["non_mi_part_reference"] = non_mi_part_ref_obj + rohs_exemptions_obj = field_reader.get_field(Part, obj, "RohsExemptions") + if rohs_exemptions_obj is not None: + rohs_exemption_obj = field_reader.get_field(Part, rohs_exemptions_obj, "RohsExemption", "http://www.grantadesign.com/23/01/BillOfMaterialsEco") + if rohs_exemption_obj is not None: + props["rohs_exemptions"] = rohs_exemption_obj + return props + + def _write_custom_fields(self, obj: Dict, bom_writer: BoMWriter) -> None: + super()._write_custom_fields(obj, bom_writer) + if self._non_mi_part_reference is not None: + non_mi_field_name = bom_writer._get_qualified_name(self, "NonMIPartReference") + obj[non_mi_field_name] = self._non_mi_part_reference + if len(self._rohs_exemptions) > 0: + rohs_exemptions_field_name = bom_writer._get_qualified_name(self, "RohsExemptions") + rohs_exemption_field_name = bom_writer._get_qualified_name(self, "RohsExemption") + rohs_exemptions = {rohs_exemption_field_name: self._rohs_exemptions} + obj[rohs_exemptions_field_name] = rohs_exemptions + + @property + def quantity(self) -> "Optional[UnittedValue]": + """ + The quantity of part(s) used in the parent part. For discrete parts, this will be the part count - an integer + with a blank unit (or "Each"). For continuous parts, it will be a mass, length, area or volume - a float value + with appropriate units. + + Returns + ------- + Optional[UnittedValue] + """ + return self._quantity + + @quantity.setter + def quantity(self, value): + self._quantity = value + + @property + def mass_per_unit_of_measure(self) -> "Optional[UnittedValue]": + """ + The mass of the part, after processing, relative to the unit that Quantity is given in. If MassPerUom is + specified and VolumePerUom is not, then specifying materials within this part is interpreted to be percentage + by mass. + + Returns + ------- + Optional[UnittedValue] + """ + return self._mass_per_unit_of_measure + + @mass_per_unit_of_measure.setter + def mass_per_unit_of_measure(self, value): + self._mass_per_unit_of_measure = value + + @property + def volume_per_unit_of_measure(self) -> "Optional[UnittedValue]": + """ + The volume of the part, after processing, relative to the unit that Quantity is given in. If VolumePerUom is + specified and MassPerUom is not, then specifying materials within this part is interpreted to be percentage by + volume. + + Returns + ------- + Optional[UnittedValue] + """ + return self._volume_per_unit_of_measure + + @volume_per_unit_of_measure.setter + def volume_per_unit_of_measure(self, value): + self._volume_per_unit_of_measure = value + + @property + def mi_part_reference(self) -> "Optional[MIRecordReference]": + """ + A reference identifying a part stored in the MI Database. + + Returns + ------- + Optional[MIRecordReference] + """ + return self._mi_part_reference + + @mi_part_reference.setter + def mi_part_reference(self, value): + self._mi_part_reference = value + + @property + def non_mi_part_reference(self) -> Optional[Union[str, int]]: + """ + A reference to a part stored in another system, for informational purposes only. + + Returns + ------- + Optional[Union[str, int]] + """ + return self._non_mi_part_reference + + @non_mi_part_reference.setter + def non_mi_part_reference(self, value): + self._non_mi_part_reference = value + + @property + def part_number(self) -> str: + """ + The Part Number associated with this part. + + Returns + ------- + str + """ + return self._part_number + + @part_number.setter + def part_number(self, value): + self._part_number = value + + @property + def part_name(self) -> Optional[str]: + """ + Display name for the part. + + Returns + ------- + Optional[str] + """ + return self._name + + @part_name.setter + def part_name(self, value): + self._name = value + + @property + def external_id(self) -> Optional[str]: + """ + A temporary reference populated and used by applications to refer to the item within the BoM. + + Returns + ------- + Optional[str] + """ + return self._external_id + + @external_id.setter + def external_id(self, value): + self._external_id = value + + @property + def components(self) -> "List[Part]": + """ + List of subcomponents for this part. + + Returns + ------- + List[Part] + """ + return self._components + + @components.setter + def components(self, value): + self._components = value + + @property + def specifications(self) -> "List[Specification]": + """ + List of substances contained within this part. + + Returns + ------- + List[Specification] + """ + + return self._specifications + + @specifications.setter + def specifications(self, value): + self._specifications = value + + @property + def materials(self) -> "List[Material]": + """ + List of constituent materials making up this part. + + Returns + ------- + List[Material] + """ + return self._materials + + @materials.setter + def materials(self, value): + self._materials = value + + @property + def substances(self) -> "List[Substance]": + """ + List of substances contained within this part. + + Returns + ------- + List[Substance] + """ + return self._substances + + @substances.setter + def substances(self, value): + self._substances = value + + @property + def processes(self) -> "List[Process]": + """ + List of processes used in the manufacture of this part. + + Returns + ------- + List[Process] + """ + return self._processes + + @processes.setter + def processes(self, value): + self._processes = value + + @property + def rohs_exemptions(self) -> List[str]: + """ + If the part has a RoHS exemption, provide one or more justifications for the exemptions here. If the part is + analyzed as **Non-Compliant** then the RoHS indicator will return **Compliant with Exemptions** instead. + + Returns + ------- + List[str] + """ + return self._rohs_exemptions + + @rohs_exemptions.setter + def rohs_exemptions(self, value): + self._rohs_exemptions = value + + @property + def end_of_life_fates(self) -> "List[EndOfLifeFate]": + """ + The fate(s) of the part, at the end-of-life of the product. + + Returns + ------- + List[EndOfLifeFate] + """ + return self._end_of_life_fates + + @end_of_life_fates.setter + def end_of_life_fates(self, value): + self._end_of_life_fates = value + + +class AnnotationSource(InternalIdentifierMixin, BaseType): + _name: str + _method: Optional[str] = None + _data: List[Any] = [] + + _simple_values = [("name", "Name"), ("method", "Method")] + + def __init__(self, *, name: str, method: Optional[str] = None, data: List[Any] = None, **kwargs) -> None: + """ + An element indicating the source of annotations in the BoM. Each source may be + referenced by zero or more annotations. The producer and consumer(s) of the BoM must agree the + understood annotation source semantics, particularly regarding the untyped data therein. When a tool consumes + and re-produces BoMs, it should generally retain any annotation sources that it does not understand (of course, + it can also decide whether to keep, modify or discard those annotation sources that it does understand). + + The parameter documentation below is the suggested convention. + + Parameters + ---------- + name: str + The name of the software package that generated this annotation. + method: Optional[str] + The calculation method used to generate this annotation. + data: List[Any] + Data that the consumer of the BoM may require. + """ + super().__init__(**kwargs) + self.name = name + self.method = method + if data is None: + data = [] + self.data = data + + @classmethod + def _process_custom_fields(cls, obj: Dict, field_reader: NamespaceFieldReader) -> Dict[str, Any]: + props = super()._process_custom_fields(cls, obj, field_reader) + + data_obj = field_reader.get_field(AnnotationSource, obj, "Data") + if data_obj is not None: + props["data"] = data_obj + return props + + def _write_custom_fields(self, obj: Dict, bom_writer: BoMWriter) -> None: + if len(self._data) > 0: + data_field_name = bom_writer._get_qualified_name(self, "Data") + obj[data_field_name] = self._data + + @property + def name(self) -> str: + """ + The name of the software package that generated this annotation. + + Returns + ------- + str + """ + return self._name + + @name.setter + def name(self, value): + self._name = value + + @property + def method(self) -> Optional[str]: + """ + The calculation method used to generate this annotation. + + Returns + ------- + Optional[str] + """ + return self._method + + @method.setter + def method(self, value): + self._method = value + + @property + def data(self) -> List[Any]: + """ + Data that the consumer of the BoM may require. + + Returns + ------- + List[Any] + """ + return self._data + + @data.setter + def data(self, value): + self._data = value + + +class Annotation(BaseType): + _target_id: str + _source_id: Optional[str] + _type: str + _value: "Union[str, UnittedValue]" + + _props = [("UnittedValue", "value", "Value")] + + _simple_values = [("type", "type"), ("target_id", "targetId"), ("source_id", "sourceId")] + + def __init__(self, *, target_id: str, source_id: Optional[str] = None, type_: str, value: "Union[str, UnittedValue]", **kwargs) -> None: + """ + An annotation that can be attached to objects within a BoM. The understood annotation types must be agreed + between the producer and consumer(s) of the BoM. The producer and consumer(s) must also agree whether a + particular type of annotation is allowed to have multiple instances assigned to a single element, or whether + only a single annotation of that type per element is allowed. When a tool consumes and re-produces BoMs, it + should generally retain any annotations that it does not understand (of course, it can also decide whether to + keep, modify or discard those annotations that it does understand). + + Annotations can either be pure textual data, providing additional data or context for an object, or they can + provide additional indicators, for example Embodied Energy of Production, or Cost of Raw Materials. + + Parameters + ---------- + target_id: str + The ``internal_identity`` of exactly one element to which the annotation applies + source_id: Optional[str] + If provided, is the ``internal_identity`` of exactly one ``AnnotationSource`` object describing the source + of the annotation. If absent, no source information is provided. + type_: str + A string value indicating the type of the annotation, the accepted values for this parameter must be agreed + between the produced and consumer(s) of the BoM. + value: Union[str, UnittedValue] + The content of this annotation. + """ + super().__init__(**kwargs) + self.target_id = target_id + self.source_id = source_id + self.type_ = type_ + self.value = value + + @property + def target_id(self) -> str: + """ + The ``internal_identity`` of exactly one element to which the annotation applies + + Returns + ------- + str + """ + return self._target_id + + @target_id.setter + def target_id(self, value): + self._target_id = value + + @property + def source_id(self) -> str: + """ + If provided, is the ``internal_identity`` of exactly one ``AnnotationSource`` object describing the source of + the annotation. If absent, no source information is provided. + + Returns + ------- + str + """ + return self.source_id + + @source_id.setter + def source_id(self, value): + self._source_id = value + + @property + def type_(self) -> str: + """ + A string value indicating the type of the annotation, the accepted values for this parameter must be agreed + between the produced and consumer(s) of the BoM. + + Returns + ------- + str + """ + return self._type + + @type_.setter + def type_(self, value): + self._type_ = value + + @property + def value(self) -> "Union[str, UnittedValue]": + """ + The content of this annotation + + Returns + ------- + Union[str, UnittedValue] + """ + return self._value + + @value.setter + def value(self, value): + self._value = value + + +class BillOfMaterials(InternalIdentifierMixin, BaseType): + """Type for the root node of an Eco Bill of Materials (BoM)""" + + _components: "List[Part]" + _transport_phase: "List[TransportStage]" = [] + _use_phase: "Optional[UsePhase]" = None + _location: "Optional[Location]" = None + _notes: "Optional[BoMDetails]" = None + _annotations: "List[Annotation]" = [] + _annotation_sources: "List[AnnotationSource]" = [] + + _props = [ + ("UsePhase", "use_phase", "UsePhase"), + ("Location", "location", "Location"), + ("BoMDetails", "notes", "Notes"), + ] + _list_props = [ + ("Part", "components", "Components", "http://www.grantadesign.com/23/01/BillOfMaterialsEco", "Part"), + ("TransportStage", "transport_phase", "TransportPhase", "http://www.grantadesign.com/23/01/BillOfMaterialsEco", "TransportStage"), + ] + + def __init__(self, *, components: "List[Part]", transport_phase: "List[TransportStage]" = None, use_phase: "Optional[UsePhase]" = None, + location: "Optional[Location]" = None, notes: "Optional[BoMDetails]" = None, annotations: "List[Annotation]" = None, + annotation_sources: "List[AnnotationSource]" = None, **kwargs) -> None: + """ + Type representing the root Bill of Materials object. + + Parameters + ---------- + components: List[Part] + The parts contained within this BoM + transport_phase: List[TransportStage] + The different forms of transport to which the parts are subject. + use_phase: Optional[UsePhase] + The type of use to which this product is subject. + location: Optional[Location] + The location in which the object represented by the BoM is assembled. + notes: Optional[BoMDetails] + Any optional notes about this BoM + annotations: List[Annotation] + Any annotations that are associated with objects within the BoM + annotation_sources: List[AnnotationSource] + Sources for annotations present within the BoM + """ + super().__init__(**kwargs) + self.components = components + if transport_phase is None: + transport_phase = [] + self.transport_phase = transport_phase + self.use_phase = use_phase + self.location = location + self.notes = notes + if annotations is None: + annotations = [] + self.annotations = annotations + if annotation_sources is None: + annotation_sources = [] + self.annotation_sources = annotation_sources + + def __repr__(self) -> str: + return f"" + + @property + def components(self) -> "List[Part]": + """ + The parts contained within this BoM. + + Returns + ------- + List[Part] + """ + return self._components + + @components.setter + def components(self, value): + self._components = value + + @property + def transport_phase(self) -> "List[TransportStage]": + """ + The different forms of transport to which the parts are subject. + + Returns + ------- + List[TransportStage] + """ + return self._transport_phase + + @transport_phase.setter + def transport_phase(self, value): + self._transport_phase = value + + @property + def use_phase(self) -> "Optional[UsePhase]": + """ + The type of use to which this product is subject. + + Returns + ------- + Optional[UsePhase] + """ + return self._use_phase + + @use_phase.setter + def use_phase(self, value): + self._use_phase = value + + @property + def location(self) -> "Optional[Location]": + """ + The location in which the object represented by the BoM is assembled. + + Returns + ------- + Optional[Location] + """ + return self._location + + @location.setter + def location(self, value): + self._location = value + + @property + def notes(self) -> "Optional[BoMDetails]": + """ + Any optional notes about this BoM. + + Returns + ------- + Optional[BoMDetails] + """ + return self._notes + + @notes.setter + def notes(self, value): + self._notes = value + + @property + def annotations(self) -> "List[Annotation]": + """ + Any annotations that are associated with objects within the BoM + + Returns + ------- + List[Annotation] + """ + return self._annotations + + @annotations.setter + def annotations(self, value): + self._annotations = value + + @property + def annotation_sources(self) -> "List[AnnotationSource]": + """ + Sources for annotations present within the BoM + + Returns + ------- + List[AnnotationSource] + """ + return self._annotation_sources + + @annotation_sources.setter + def annotation_sources(self, value): + self._annotation_sources = value diff --git a/src/ansys/grantami/bomanalytics/bom_types/_bom_writer.py b/src/ansys/grantami/bomanalytics/bom_types/_bom_writer.py new file mode 100644 index 00000000..24ca25e3 --- /dev/null +++ b/src/ansys/grantami/bomanalytics/bom_types/_bom_writer.py @@ -0,0 +1,81 @@ +from typing import Dict, cast, TYPE_CHECKING + +from xmlschema import XMLSchema + +if TYPE_CHECKING: + from ansys.grantami.bomanalytics.bom_types import BaseType, BillOfMaterials + + +class BoMWriter: + _schema: XMLSchema + _class_members = {} + + def __init__(self, schema: XMLSchema): + """ + Writer to convert BillOfMaterials objects into the format ready for XML serialization. + + Parameters + ---------- + schema: XMLSchema + Parsed XMLSchema representing the 2301 Eco BoM format + """ + self._schema = schema + + def _get_qualified_name(self, obj: "BaseType", field_name: str) -> str: + namespace_prefix = [k for k, v in self._schema.namespaces.items() if v == obj._namespace] + if len(namespace_prefix) == 1: + namespace_prefix = namespace_prefix[0] + elif len(namespace_prefix) == 0: + raise KeyError(f"Namespace {obj._namespace} does not exist in schema for object {type(obj)}") + elif "" in namespace_prefix: + return field_name + else: + namespace_prefix = namespace_prefix[0] + if field_name[0] == "@": + return f"@{namespace_prefix}:{field_name[1:]}" + return f"{namespace_prefix}:{field_name}" + + def _convert_to_dict(self, obj: "BaseType") -> Dict: + value = {} + + for prop, field_name in obj._simple_values: + prop_value = getattr(obj, prop) + if prop_value is not None: + value[self._get_qualified_name(obj, field_name)] = prop_value + for _, prop, field_name in obj._props: + prop_value = getattr(obj, prop) + if prop_value is not None: + prop_value = self._convert_to_dict(cast("BaseType", prop_value)) + value[self._get_qualified_name(obj, field_name)] = prop_value + for _, prop, container_name, _, field_name in obj._list_props: + prop_value = getattr(obj, prop) + if prop_value is not None and len(prop_value) > 0: + prop_value = { + self._get_qualified_name(obj, field_name): [ + self._convert_to_dict(item_obj) for item_obj in prop_value + ] + } + value[self._get_qualified_name(obj, container_name)] = prop_value + obj._write_custom_fields(value, self) + return value + + def convert_bom_to_dict(self, obj: "BillOfMaterials") -> Dict: + """ + Convert a BillOfMaterials object into its xmlschema dictionary form for serialization to XML. + + Parameters + ---------- + obj: BillOfMaterials + + Returns + ------- + Dict + xmlschema formatted object for serialization + """ + raw_obj = self._convert_to_dict(obj) + for k, v in self._schema.namespaces.items(): + if k != "": + raw_obj[f"@xmlns:{k}"] = v + else: + raw_obj[f"@xmlns"] = v + return raw_obj \ No newline at end of file diff --git a/src/ansys/grantami/bomanalytics/bom_types/_builders.py b/src/ansys/grantami/bomanalytics/bom_types/_builders.py new file mode 100644 index 00000000..5d5917f8 --- /dev/null +++ b/src/ansys/grantami/bomanalytics/bom_types/_builders.py @@ -0,0 +1,108 @@ +from typing import Optional + +from ansys.grantami.bomanalytics.bom_types import PartialTableReference, MIAttributeReference, PseudoAttribute, MIRecordReference + + +class _AttributeReferenceByNameBuilder: + _parent: "AttributeReferenceBuilder" + + def __init__(self, root_builder: "AttributeReferenceBuilder") -> None: + self._parent = root_builder + + def with_table_name(self, table_name: str) -> "AttributeReferenceBuilder": + table_reference = PartialTableReference() + table_reference.table_name = table_name + self._set_table_reference(table_reference) + return self._parent + + def with_table_identity(self, table_identity: int) -> "AttributeReferenceBuilder": + table_reference = PartialTableReference() + table_reference.table_identity = table_identity + self._set_table_reference(table_reference) + return self._parent + + def with_table_guid(self, table_guid: str) -> "AttributeReferenceBuilder": + table_reference = PartialTableReference() + table_reference.table_guid = table_guid + self._set_table_reference(table_reference) + return self._parent + + def _set_table_reference(self, table_reference: "PartialTableReference") -> None: + self._parent._build.table_reference = table_reference + self._parent._is_complete = True + + +class _FinalAttributeReferenceBuilder: + _source: "AttributeReferenceBuilder" + + def __init__(self, source: "AttributeReferenceBuilder") -> None: + self._source = source + + def build(self) -> "MIAttributeReference": + return self._source._build + + +class AttributeReferenceBuilder: + _build: "MIAttributeReference" + _is_complete: bool + + def __init__(self, *, db_key: str) -> None: + self._build = MIAttributeReference() + self._build.db_key = db_key + self._is_complete = False + + def with_attribute_identity(self, attribute_identity: int) -> "AttributeReferenceBuilder": + self._build.attribute_identity = attribute_identity + self._is_complete = True + return self + + def as_pseudo_attribute(self, pseudo_attribute: PseudoAttribute) -> "AttributeReferenceBuilder": + self._build.pseudo = pseudo_attribute + self._is_complete = True + return self + + def with_attribute_name(self, attribute_name: str, is_standard_name: bool = False): + self._build.attribute_name = attribute_name + self._build.is_standard = is_standard_name + return _AttributeReferenceByNameBuilder(self) + + +class RecordReferenceBuilder: + _build: "MIRecordReference" + + def __init__(self, *, db_key: str, record_uid: Optional[str] = None) -> None: + self._build = MIRecordReference() + self._build.db_key = db_key + self._build.record_uid = record_uid + + def with_record_history_id( + self, record_history_id: int, *, record_version_number: Optional[int] = None + ) -> "_FinalRecordReferenceBuilder": + self._build.record_history_identity = record_history_id + self._build.record_version_number = record_version_number + return _FinalRecordReferenceBuilder(self) + + def with_record_guid(self, record_guid: str) -> "_FinalRecordReferenceBuilder": + self._build.record_guid = record_guid + return _FinalRecordReferenceBuilder(self) + + def with_record_history_guid(self, record_history_guid: str) -> "_FinalRecordReferenceBuilder": + self._build.record_history_guid = record_history_guid + return _FinalRecordReferenceBuilder(self) + + def with_lookup_value( + self, *, lookup_value: str, lookup_attribute_reference: MIAttributeReference + ) -> "_FinalRecordReferenceBuilder": + self._build.lookup_value = lookup_value + self._build.lookup_attribute_reference = lookup_attribute_reference + return _FinalRecordReferenceBuilder(self) + + +class _FinalRecordReferenceBuilder: + _source: "RecordReferenceBuilder" + + def __init__(self, source: "RecordReferenceBuilder") -> None: + self._source = source + + def build(self) -> "MIRecordReference": + return self._source._build diff --git a/src/ansys/grantami/bomanalytics/schemas/BillOfMaterialsEco2301.xsd b/src/ansys/grantami/bomanalytics/schemas/BillOfMaterialsEco2301.xsd new file mode 100644 index 00000000..f3a678fb --- /dev/null +++ b/src/ansys/grantami/bomanalytics/schemas/BillOfMaterialsEco2301.xsd @@ -0,0 +1,740 @@ + + + + + + + + + Root node of an Eco Bill of Materials (BoM). + + + + + + Type for the root node of an Eco Bill of Materials (BoM). + + + + + + + + + + + + + The Transports to which the contained Parts are subject. + + + + + + The Use to which the contained Parts are subject. + + + + + + The Location in which the BoM is manufactured. + + + + + + This defines optional notes about the BoM. + + + + + + Optional annotations to the BoM. + + + + + + + Information about the sources of annotations to the BoM. Only useful when there are + some annotations. Even when annotations are present, it is optional whether to provide information about their sources. + + + + + + + + + + A single part which may or may not be stored in the MI Database. + + + + + + + The quantity of part(s) used in the parent part. + + For discrete parts, this will be the part count - an integer with a blank unit (or "Each"). + + For continuous parts, it will be a mass, length, area or volume - a decimal value with an appropriate units. + + + + + + + + The mass of the part, after processing, relative to the unit that Quantity is given in. + + If MassPerUom is specified and VolumePerUom is not, then specifying materials within this part is interpreted to be + percentage by mass. + + + + + + + + The volume of the part, after processing, relative to the unit that Quantity is given in. + + If VolumePerUom is specified and MassPerUom is not, then specifying materials within this part is interpreted to be + percentage by volume. + + + + + + + + A reference to a part stored in MI. + + + + + + A reference to a part stored in another system, for informational purposes only. + + + + + + + + + + + + The Part Number associated with this part. External applications may treat this analogously to Identity from the CommonIdentifiers group. + + + + + + See CommonIdentifiers group. + + + + + + See CommonIdentifiers group. + + + + + + + + + + + + + + + + + + + + Specify the fate(s) of the part, at end-of-life of the product. + + + + + + + + + + + The list of materials within a part or semi-finished part. Materials can also be part of a specification. + + + + + + + + + + A Material within a part or semi-finished part. The material is stored in the Database. + + + + + + + + + + + + + + The recycle content of Parts. That is, Mc/(Mc + Mv), where Mc is the mass of recycled material in Parts, and Mv is the mass of virgin material in Parts. If omitted then 0% is assumed. + + + + + + Indicates that the recycle content is to be obtained from the materials datasheet. + + + + + The actual content, as a percentage. + + + + + + + + Specify processes that are applied to the material. + + + + + Specify the fate(s) of the material, at end-of-life of the product. + + + + + + + + + + All the processes that are applied to a subassembly, part, semi-finished part or material. A process chain may also be part of a specification. + + + + + + + + + + A process that is applied to a subassembly, part, semi-finished part or material. The process is stored in the Database. + + + + + + + + + + + + + If the process affects the bulk of the material or part (e.g. it is a shaping process) then the amount of material affected by the process should be specifed. The amount may be specified as a percentage by weight or an absolute value. + + + + + Specifying the mass in this way allows one to specify processes that may have removed material (e.g. milling or turning). + + + + + + Some joining processes can have an associated area. + + + + + If the process is an edge joining process (e.g. welding) then the BOM must specify the length of material affected by the process. + + + + + Certain fastening processes are quantified by the number of fasteners (e.g. the number of hot rivets holding two plates together). + + + + + + + + + + + + The percentage of the material mass in this part affected by the process. Specifying a percentage may be useful in scenarios where we do not know the actual material mass + but we know that the process affects all the material. + + Percentage is only supported for dimension types "Mass" and "Mass removed". + + + + + + A quantification of the process according to its dimension type. + + + + + + + + + + + + + + + + + A substance within a part, semi-finished part, material or specification. The substance is stored in the Database. + + + + + + + + + + + + + + + + + + + + + + + + + + + + A quantification of the specification, if applicable. + + + + + + + + + + + + + + + + + + + + + Defines the transportation applied to a BoM node, in terms of the generic transportation type (stored in the Database) and the amount of that transport used in this instance. + + + + + + + + + + + + + + + + + + + All the the transportation applied to a BoM node. + + + + + + + + + + Explanatory information about a BoM. + + + + + + Add any notes about the bill of materials here. These notes will be included in the report. + + + + + The URL of an image to include at the top of the report. This URL must be accessible from the reporting services server. + + + + + The product name + + + + + + + + Defines the usage of Parts in the BoM. + + + + + + + + + + + + + + + The product lifetime in years. Must be strictly positive. + + + + + The number of functional units delivered, in the lifespan of the product described herein. If provided, must be strictly positive. + + + + + A very short (ideally one-word) description of a single functional unit. E.g. "trips", "cups", "cuts", "metres". + + + + + Indicates how much use can be obtained from the product described herein, compared to an industry-average example. If this element is absent, utility is assume to be unity. + + + + + + + + + + The average lifespan of all examples, throughout the industry, of the kind of product described herein. + + + + + The average number of functional units delivered, in their lifespan, by all examples, throughout the industry, of the kind of product described herein. Must be strictly positive. + + + + + Directly specifies the utility. + + + + + + + + + + This record specifies the primary energy conversion that occurs during the product's use. + + + + + + + + + + + + + + + + + If the product is transported as part of its use then this type contains details about the way in which it is transported. + + + + + We can specify the mode of transport here + + + + The mode of transport. + + + + + + + + + + If the product consumes electrical power, then the amount of CO2 produced to generate depends upon the mix of fossil fuel burning power stations in the region of use. This type lets you specify the electrical generation mix by either specifying the region or country of use or by specifying the percentage of power that comes from fossil fuel sources. + + + + + + This record reference will point to a record in some electricity mix table. + + + + + If a specific country is not specified, then the proportion of electricity generated by fossil fuels can be given instead. + + + + + + + + Defines the manufacturing location for the BoM for use in process calculations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A unique identity for this XML element in a document of this schema. This identity is + ONLY for internal use within the document, allowing other elements to reference this element. Consumers + of this document should not assume any other semantics for this identity. + + + + + + + + + A value corresponding to some InternalIdentification ID within this XML document, used + only to indicate a one-way link between XML elements. + + + + + + + + + + + + + + + + + + Base type for all BoM annotations, which are pieces of information that + can be indirectly attached, via XML attributes of ID and IDREF types, to specific XML elements within + the main body of the BoM. The understood annotation types must be agreed between the producer and consumer(s) + of the BoM. The producer and consumer(s) must also agree whether a particular type of annotation is allowed + to have multiple instances assigned to a single element, or whether only a single annotation + of that type per element is allowed. When a tool consumes and re-produces BoMs, it should generally retain + any annotations that it does not understand (of course, it can also decide whether to keep, modify or discard + those annotations that it does understand). + + + + + + The XML element identity of the exactly one element, in this BoM document, to which this annotation applies. No + further meaning should be applied to this identity. + + + + + + + If specified, this is the XML element identity of the exactly one element, in this BoM document, that + describes the source of this annotation. If no value is specified, it means that there is no information about the source + of this annotation. No further meaning should be applied to this identity, or to its absence. + + + + + + + A textual value that identifies the type of this annotation. It is suggested that types + should comprise camel-cased English strings, with optional use of period (.) as a separator. + + + + + + + + An annotation that is purely textual data. + + + + + + + + + + + + + + An annotation that gives the value of an indicator for the target. The understood indicators + need to be agreed between the producer and consumer(s) of the BoM, but examples might include embodied energy + of production or cost of raw materials. + + + + + + + + + + + + + + + + + + + + + An element indicating the source of annotations in the BoM. Each source may be + referenced by zero or more annotations. The producer and consumer(s) of the BoM must agree the + understood annotation source semantics, particularly regarding the untyped data therein. When a tool consumes and + re-produces BoMs, it should generally retain any annotation sources that it does not understand (of course, it + can also decide whether to keep, modify or discard those annotation sources that it does understand). + + + + + + + Producer and consumer(s) must agree the semantics of this element, but it is + suggested that it should identify the software package that generated the annotation. + + + + + + + Producer and consumer(s) must agree the semantics of this optional element, but it is + suggested that it should identify the calculation method used, for numeric annotations. + + + + + + Optional untyped data that some consumer(s) of the BoM will find useful in understanding the annotation. + + + + + + + + + + + + + + A set of identifiers used by external applications to reference and display parts of the BoM. + + + + + + A display identity for the item. + + + + + + A display name for the item. + + + + + + A temporary reference populated and used by applications to refer to the item within the BoM. + + + + + + \ No newline at end of file diff --git a/src/ansys/grantami/bomanalytics/schemas/grantarecord1205.xsd b/src/ansys/grantami/bomanalytics/schemas/grantarecord1205.xsd new file mode 100644 index 00000000..900147e4 --- /dev/null +++ b/src/ansys/grantami/bomanalytics/schemas/grantarecord1205.xsd @@ -0,0 +1,292 @@ + + + + + A base type for types that identify entities in an MI Database. The details of how entities are identified differ between concrete sub-types. + + + + + The key that uniquely identifies a particular Database on the MI Server. Though this element is defined as optional, a + database key is required in almost all references; only a few specialised usages will accept a reference without database key. + + + + + + + + Attributes for referencing an item by name, where the name may, or may not, be a Standard Name. + + + + + + Element for referencing an item by name, where the name may, or may not, be a Standard Name. + + + + + + + + + + A type that allows identification of a particular Record in an + MI Database. This may be done directly by specifying the Identity or GUID of the Record, or + indirectly by specifying a lookup that will match (only) the Record. + + + + + + + For input you should provide exactly one of either identity, recordGUID, recordHistoryGUID + or lookupValue. If more than one element identifying the record is given, only one is used; the descending + order of priority is: identity, recordGUID, recordHistoryGUID, lookupValue. The Service Layer does not + check that the several elements identifying the record are all referencing the same record, it just picks the highest-priority + one and uses that. + + + + This element will always be present if service layer has generated this reference. + If used as an input to the service layer, then this element is optional. This is the best-performing and + highest-priority way to reference a record; however, identities might not be suitable for long-term + persistence. + + + + + + + If omitted, this means the latest version visible to the user. + + + + + + + + This element will usually be present if service layer has generated this reference. If used as an input to the service layer, then this element is optional. + + + + + This element will usually be present if service layer has generated this reference. If used as an input to the service layer, then this element is optional. + + + + + This element is optional - the service layer may return this element if this element was specified in the input of the data export. + + + + Instead of by identity or GUID, records may also be + looked up by an attribute value or pseudo-attribute value. Only + a small number of simple attribute types and simple pseudo-attributes + are supported for this lookup. In addition, the looked-up + value must be unique; behaviour is undefined if it is not unique. + + + + + + + + + + + + The recordUID may be used to identify a particular XML element + representing a record. Generally, it will be set by the caller and its value + will simply be retained by the Service Layer, as the element is passed around. + It does NOT represent any property or attribute of an actual MI Record. + + + + + + + + + + + + + + + A type that may be used in some places where an Attribute is required, to + describe some information about a Record that is not stored in an actual Attribute. This + is sometimes referred to as a Record Property. Not a real attribute and hence only + applicable to certain operations; others may fail. + + + + + The full name of the Record + + + + + The short or "tree" name of the Record + + + + + Comma-separated list of names of Subsets to which this Record belongs. + + + + + The date at which this Record was Released, in a Version-Controlled database. + + + + + The date at which this Record was last modified. Note that not all changes that conceptually + appear to modify the Record actually result in this date being updated, because MI considers them to be + changes to related objects, rather than to the Record itself. + + + + + Indicates whether the node is a plain Record, a Folder etc. + + + + + The identity, in the MI Database, of the Record History that owns all versions of the Record. + + + + + The colour that should be used to render the Record, for display. + + + + + The Records that are linked to this Record, via static RecordLinkGroups. This pseudo-attribute has been deprecated because it + returns all links for a potentially large number of record link groups. Please use GetLinkedRecords or DataExport to get the linked records. + + + + + + The GUID of the specific version of the Record. + + + + + The GUID of the Record History, which is shared by all versions of the Record. + + + + + The Version Number of the Record. For a non-version-controlled table, NotApplicable is set to true. + + + + + The Name of the Table containing the Record. + + + + + All direct child records the Record. Does not include the children of those children; it is not recursive. + + + + + The zero or more table filters matched by the Table from which the Record came. + + + + + + + A type that allows identification of a particular Attribute in an + MI Database. This may be done directly by specifying the Identity of the Attribute, or + indirectly by specifying a lookup that will match (only) the Attribute. + Note: in certain cases, an MIAttributeReference may match more than one Attribute in + the MI Database; depending on the operation, this may be legal or may result in + a Fault. + + + + + + + + + + + + Required for plain attribute name. Optional for standard attribute name. + + + + + + + + + + + + + + + + + + + A type that partially identifies a Table, but does not specify the + MI Database. Usually, just one of the several optional fields should be provided; where + more than one is provided, the highest priority one is used, where the descending + priority order is: tableIdentity, tableGUID, tableName. + + + + + The table identity is the fastest and highest-priority way to reference a table. However, table + identities might not be a good choice for long-lived references to tables. + + + + + A table GUID is a good choice for long-lived references to tables. + + + + + Table name. Note that table names vary between localisations of databases, so + may not be a good choice for long-lived references to tables. + + + + + + + A type that allows identification of a particular Table in a particular MI Database. + + + + + + + The key that uniquely identifies a particular Database on the MI Server + + + + + + + + + A string representation of a Globally Unique IDentifier (GUID). + + + + + + \ No newline at end of file diff --git a/tests/inputs/bom-complex.xml b/tests/inputs/bom-complex.xml index 07fa78e9..642be713 100644 --- a/tests/inputs/bom-complex.xml +++ b/tests/inputs/bom-complex.xml @@ -1,218 +1,210 @@ - - - - - 1 - Part 1 - 1635969933169|97 - - - 1 - Child 1 - - 1635969933169|98 - - - 1 - 10.2 - - MI_Restricted_Substances - d00873c5-9544-48c5-8de2-2e2b00893db4 - - Fire Distinguisher - - 1635969933169|21 - - - - MI_Restricted_Substances - 9b5b2172-da97-4ffa-9bd4-e57309be5641 - - AMS2420,Class1 - AMS®2420™, Class 1 - 1635969933169|25 - - - - - 1 - - MI_Restricted_Substances - 90ed0f8c-1fb0-47bc-89e0-0c2380d7976c - - mid_frame - mid_frame - 1635969933169|14 - - - 1 - 13.7651193872285 - - MI_Restricted_Substances - ad3cae1e-6ad6-4800-96bc-bec6cc0e4e59 - - mid_frame: Body 1 - mid_frame: Body 1 - 1635969933169|15 - - - - MI_Restricted_Substances - 44b976f9-1c1b-4187-a9dc-9ec88bf40c38 - - MIL-A-8625,TypeIII,Class1 - MIL-A-8625, Type III, Class 1 (Hardcoat sulfuric) - 1635969933169|16 - 238064.510108457 - - - - - 100 - - MI_Restricted_Substances - 5a4d882d-789b-4c94-8af4-fd3527845849 - - aluminum-2024-t6 - Aluminum, 2024, T6 - 1635969933169|17 - - + + + + 1.0 + Part 1 + 1635969933169|97 + + + 1.0 + Child 1 + 1635969933169|98 + + + 1.0 + 10.2 + + MI_Restricted_Substances + d00873c5-9544-48c5-8de2-2e2b00893db4 + + Fire Distinguisher + 1635969933169|21 + + + + MI_Restricted_Substances + 9b5b2172-da97-4ffa-9bd4-e57309be5641 + + AMS2420,Class1 + AMS®2420™, Class 1 + 1635969933169|25 + + + + + 1.0 + + MI_Restricted_Substances + 90ed0f8c-1fb0-47bc-89e0-0c2380d7976c + + mid_frame + mid_frame + 1635969933169|14 + + + 1.0 + 13.7651193872285 + + MI_Restricted_Substances + ad3cae1e-6ad6-4800-96bc-bec6cc0e4e59 + + mid_frame: Body 1 + mid_frame: Body 1 + 1635969933169|15 + + + + MI_Restricted_Substances + 44b976f9-1c1b-4187-a9dc-9ec88bf40c38 + + MIL-A-8625,TypeIII,Class1 + MIL-A-8625, Type III, Class 1 (Hardcoat sulfuric) + 1635969933169|16 + 238064.510108457 + + + + + 100.0 + + MI_Restricted_Substances + 5a4d882d-789b-4c94-8af4-fd3527845849 + + aluminum-2024-t6 + Aluminum, 2024, T6 + 1635969933169|17 + + + + + 1.0 + 0.0788292499952808 + + MI_Restricted_Substances + 2c50aee4-7a5b-4d49-b27d-a7bc184167fb + + mid_frame: Body 2 + mid_frame: Body 2 + 1635969933169|18 + + + + MI_Restricted_Substances + 44b976f9-1c1b-4187-a9dc-9ec88bf40c38 + + MIL-A-8625,TypeIII,Class1 + MIL-A-8625, Type III, Class 1 (Hardcoat sulfuric) + 1635969933169|19 + 36908.3727431303 + + + + + 100.0 + + MI_Restricted_Substances + 5a4d882d-789b-4c94-8af4-fd3527845849 + + aluminum-2024-t6 + Aluminum, 2024, T6 + 1635969933169|20 + + + + + + + 1.0 + Substance Component + 1635969933169|31 + + + + MI_Restricted_Substances + b3ed7838-15c5-4bb2-874b-a112d2201914 + + 143-50-0 + Kepone [143-50-0] + 1635969933169|29 + + + + - - 1 - 0.0788292499952808 - - MI_Restricted_Substances - 2c50aee4-7a5b-4d49-b27d-a7bc184167fb - - mid_frame: Body 2 - mid_frame: Body 2 - 1635969933169|18 - - - - MI_Restricted_Substances - 44b976f9-1c1b-4187-a9dc-9ec88bf40c38 - - MIL-A-8625,TypeIII,Class1 - MIL-A-8625, Type III, Class 1 (Hardcoat sulfuric) - 1635969933169|19 - 36908.3727431303 - - - - - 100 - - MI_Restricted_Substances - 5a4d882d-789b-4c94-8af4-fd3527845849 - - aluminum-2024-t6 - Aluminum, 2024, T6 - 1635969933169|20 - - + + 1.0 + Child 2 + 1635969933169|101 + + + 1.0 + Material Component + 1635969933169|131 + + + + MI_Restricted_Substances + 2ce26bf2-ea34-4e0c-af77-a8424252a079 + + mmc-aluminum-polyethylenesandwich + Aluminum-polyethylene sandwich + 1635969933169|132 + + + + MI_Restricted_Substances + 40cc6742-ca1f-4e00-a39a-d4cb01842658 + + plastic-pe-hd-20-30longglassfiber + PE-HD (20-30% long glass fiber) + 1635969933169|142 + + + + - - - - 1 - Substance Component - - 1635969933169|31 - - - - MI_Restricted_Substances - b3ed7838-15c5-4bb2-874b-a112d2201914 - - 143-50-0 - Kepone [143-50-0] - 1635969933169|29 - - - - + - - 1 - Child 2 - - 1635969933169|101 - - - 1 - Material Component - - 1635969933169|131 - - - - MI_Restricted_Substances - 2ce26bf2-ea34-4e0c-af77-a8424252a079 - - mmc-aluminum-polyethylenesandwich - Aluminum-polyethylene sandwich - 1635969933169|132 - - - - MI_Restricted_Substances - 40cc6742-ca1f-4e00-a39a-d4cb01842658 - - plastic-pe-hd-20-30longglassfiber - PE-HD (20-30% long glass fiber) - 1635969933169|142 + + 1.0 + Part 2 + 1635969933169|181 + + + + MI_Restricted_Substances + ad7a7965-8f48-4250-9e09-f1062b50cf9e + + AMS2404,Class1 + AMS®2404™, Class 1 + 1635969933169|185 + + + + + + MI_Restricted_Substances + 1b7932f7-c3c2-4228-8b51-f7fabee7de4e + + plastic-cap-13-18plasticizer + CAP (13-18% plasticizer) + 1635969933169|183 - - - - - - - - 1 - Part 2 - - 1635969933169|181 - - - - MI_Restricted_Substances - ad7a7965-8f48-4250-9e09-f1062b50cf9e - - AMS2404,Class1 - AMS®2404™, Class 1 - 1635969933169|185 - - - - - - MI_Restricted_Substances - 1b7932f7-c3c2-4228-8b51-f7fabee7de4e - - plastic-cap-13-18plasticizer - CAP (13-18% plasticizer) - 1635969933169|183 - - - - - - MI_Restricted_Substances - 5286d5c7-393f-4ea4-876e-1f716b555dac - - 68476-30-2 - Fuel oil, No 2 [68476-30-2] - 1635969933169|187 - - + + + + + MI_Restricted_Substances + 5286d5c7-393f-4ea4-876e-1f716b555dac + + 68476-30-2 + Fuel oil, No 2 [68476-30-2] + 1635969933169|187 + + - - - Complex Bom - - + + + Complex Bom + \ No newline at end of file diff --git a/tests/inputs/bom.xml b/tests/inputs/bom.xml index 7643b710..6e4fd7aa 100644 --- a/tests/inputs/bom.xml +++ b/tests/inputs/bom.xml @@ -1,37 +1,37 @@ - + - 2 + 2.0 123456789 Part One - 1 - 2 + 1.0 + 2.0 987654321 New Part One - 66 + 66.0 - MI_Restricted_Substances - af1cb650-6db5-49d6-b4a2-0eee9a090207 + MI_Restricted_Substances + af1cb650-6db5-49d6-b4a2-0eee9a090207 Lead oxide - 1 - 2 + 1.0 + 2.0 3333 Part Two - 80 + 80.0 - MI_Restricted_Substances - ab4147f6-0e97-47f0-be53-cb5d17dfa82b + MI_Restricted_Substances + ab4147f6-0e97-47f0-be53-cb5d17dfa82b diff --git a/tests/inputs/medium-test-bom.xml b/tests/inputs/medium-test-bom.xml new file mode 100644 index 00000000..ee79f777 --- /dev/null +++ b/tests/inputs/medium-test-bom.xml @@ -0,0 +1,26496 @@ + + + + 1.0 + 69.514788766165 + 2edd8862 + part_2edd8862-ace1-4911-87c8-70c3c78b52d4 + 2edd8862-ace1-4911-87c8-70c3c78b52d4 + + + 9.0 + 99.975266819808 + 767e11c2 + part_767e11c2-8ed5-4348-b3a2-3595f3a20fae + 767e11c2-8ed5-4348-b3a2-3595f3a20fae + + + 1.0 + 54.003711349332 + a0f7f357 + part_a0f7f357-2e54-4f03-9187-b15cc3836f14 + a0f7f357-2e54-4f03-9187-b15cc3836f14 + + + 8.0 + 5.184954360679 + 16b848a3 + part_16b848a3-e1f1-4b92-9532-ba54b8ac2457 + 16b848a3-e1f1-4b92-9532-ba54b8ac2457 + + + 20.920569738801 + + MI_Restricted_Substances + 71a3cd24-5128-46e5-8ef8-9ca8b5ed9892 + + 50% glass and mineral filled + PA46 (50% glass and mineral filled) + 064e366e-d6a5-46c9-879f-c9a410ede6dc + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 10263c71-b6d0-4cbf-b766-87587f080397 + MassRemoved + 10.9378889254 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + ffb05405-d056-41b4-a383-b9cce86f751e + Mass + 100.0 + + + + + 9.884928782649 + + MI_Restricted_Substances + 1a9ca626-1709-4d7b-954c-65aa69bf6536 + + YS300, cold rolled + High strength low alloy steel, YS300, cold rolled + d0024420-607f-4df3-bc95-a54d8d229458 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + e2cddf27-4ea2-463e-b282-13eaeca17fbb + Mass + 100.0 + + + + + 9.884928782649 + + MI_Restricted_Substances + dce2dc34-54db-4d0a-bab0-85d4e6e08d8e + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 6150, oil quenched & tempered at 650°C + + 0765cf01-c96b-45ed-9122-69a5a248d1c2 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + e97413f5-f82c-4427-ba8a-b8b5e88b9ff4 + MassRemoved + 44.45124903901 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 9b96d8f5-da0d-4177-9266-1eb3a6d7e3f7 + Mass + 100.0 + + + + + 9.884928782649 + + MI_Restricted_Substances + 2b606408-37c3-4801-a307-dda7384ff7cc + + Glass/phenolic honeycomb, 0°/90° fabric (0.072) + Glass/phenolic honeycomb, 0°/90° fabric (0.072), W Direction + ff90d60e-13d4-4c5a-919f-ab1031be0717 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + d78d10a0-f89a-4089-84e9-d64e97e93e5c + Mass + 100.0 + + + + + 9.884928782649 + + MI_Restricted_Substances + e721d8b7-256a-4b7b-af09-6b40d8309979 + + water quenched & tempered at 425°C + Carbon steel, AISI 1040, water quenched & tempered at 425°C + 8d73a9ca-bb77-43e4-8fa4-8946507c3096 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + a341e1db-07ff-416c-a5c6-d24c5a231984 + Mass + 100.0 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + 9c61bce8-ca3e-4abf-9c83-a3f216749256 + Mass + 100.0 + + + + + 9.884928782649 + + MI_Restricted_Substances + 5303364c-b06b-40d9-bca9-e0e2cd1d682c + + Normalized + Low alloy steel, AISI 8740, normalized + 6cf0a04f-e4ae-4fca-8562-dc1371963383 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 105fe4b9-ad2a-4d32-ab6f-bfa023a68b63 + Mass + 100.0 + + + + + 9.884928782649 + + MI_Restricted_Substances + 817b973c-3e12-4b5f-96b3-89b05d14d76c + + ASTM A500 Grade C + Structural steel, ASTM A500 Grade C + f7778c27-d8c0-4a32-b08f-454c5183182a + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 6933fd5a-02a4-4af0-a422-d49aff160f77 + Mass + 100.0 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + c08d5b0f-ccac-498b-b52f-396787c0a6c5 + Mass + 100.0 + + + + + 9.884928782649 + + MI_Restricted_Substances + 3f3508d4-1ff6-40ea-a45f-04de1cb740f7 + + 300M (low carbon), quenched & tempered + Low alloy steel, 300M (low carbon), quenched & tempered + a749da65-2c9c-422c-90b7-22ee8412334e + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 04911b2a-f9e3-494a-bbe0-60c75b8b2d24 + Mass + 100.0 + + + + + 9.884928782649 + + MI_Restricted_Substances + a403e867-5052-44f9-b24b-5b11a3860cf4 + + Glass/polyimide honeycomb, ±45° fabric (0.051) + Glass/polyimide honeycomb, ±45° fabric (0.051), W Direction + 91962407-dccf-4f25-a1cd-f0ae3a85a62e + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 54c1f697-44bb-4b4a-a2b2-02864c24a2fe + Mass + 100.0 + + + + + + + 3.0 + 96.109122408604 + 72362b93 + part_72362b93-bb7a-40f6-a225-4c78654ccc16 + 72362b93-bb7a-40f6-a225-4c78654ccc16 + + + 74.637706798798 + + MI_Restricted_Substances + 93e14fb3-4376-4df5-9d31-299bee56ea49 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 4340, oil quenched & tempered at 540°C + + 3cc47072-1ea4-4d94-94a0-59687596368f + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 2008c572-5a8f-42f2-8aa1-7fe8164b9264 + Area + 75.707705028219 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + b5c8e19d-9b00-4a92-a45a-2a64e07f2ebc + Mass + 100.0 + + + + + 6.3405733003 + + MI_Restricted_Substances + b872537b-c0a0-4c3e-8388-e5544183cdd3 + + water quenched & tempered at 425°C + Carbon steel, AISI 1030, water quenched & tempered at 425°C + 81a776a8-6893-44b3-9a12-42398e147b6e + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 0588f4d7-f328-45b6-bd55-912e0f26452c + Length + 74.041760467943 + + + + + 6.3405733003 + + MI_Restricted_Substances + a6b1ab49-1d3b-4551-9345-3bf24da33ec1 + + As rolled + Carbon steel, AISI 1144, as rolled + 0559b5da-6817-4676-8058-8375c6a6be10 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + a2b0bdd8-dd12-4b7f-b778-4e0649297d12 + Mass + 100.0 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 16b6404c-7eec-40ae-b4f9-3d3c9cd6f5e9 + Mass + 100.0 + + + + + 6.3405733003 + + MI_Restricted_Substances + 09469002-6519-4b02-bdd9-f385d0a44d2f + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 9260, oil quenched & tempered at 540°C + + 77d49906-e661-4a85-8156-d8f3d73a92dc + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 46f5cd87-7e01-45cf-b6f5-860967d7589d + MassRemoved + 16.564626766631 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 1f8d1845-5df3-44bf-9c93-6537b540b155 + Mass + 100.0 + + + + + 6.3405733003 + + MI_Restricted_Substances + e62ec0fe-66ca-4b17-88d1-609c5568e318 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 4340, oil quenched & tempered at 650°C + + 9d559c57-5793-4793-bd28-ed84fb779ea0 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 1bd74c29-bc15-4b36-a47d-8fdb63b109e2 + Mass + 100.0 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 317bf483-7b41-4304-9448-09649ebf64f2 + Mass + 100.0 + + + + + + + 5.0 + 81.586109232896 + 08d30467 + part_08d30467-d47a-48ad-8369-2ae0fd4a610a + 08d30467-d47a-48ad-8369-2ae0fd4a610a + + + 7.0 + 58.340847286554 + 5afcdec3 + part_5afcdec3-66ab-4879-be37-65cdd51b3869 + 5afcdec3-66ab-4879-be37-65cdd51b3869 + + + 6.0 + 77.608761087809 + 5df40cce + part_5df40cce-ebd8-405e-87b9-bc32fb7bcb9f + 5df40cce-ebd8-405e-87b9-bc32fb7bcb9f + + + 86.334570211514 + + MI_Restricted_Substances + 2017a3b5-88e7-473f-b7c9-1ab8afe722fe + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 5160, oil quenched & + tempered at 540°C + + 3b23bf68-8640-40ed-a435-afdff06555ec + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + + 37108ceb-3daa-40b1-a5b6-569d95423517 + + Mass + 100.0 + + + + + 1.952204255497 + + MI_Restricted_Substances + 33160988-8422-40e2-93d1-e3e7467eafe9 + + Normalized + Carbon steel, AISI 1030, normalized + f28cde90-f4f6-447e-a172-155b0de30e10 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + + 91fa5230-7620-4fa4-baab-2f5d1c016d8f + + Mass + 100.0 + + + + + 1.952204255497 + + MI_Restricted_Substances + 5ed89a0b-5f7a-43b7-b9cb-3db4035f942f + + Glass/phenolic honeycomb, 0°/90° fabric (0.072) + + Glass/phenolic honeycomb, 0°/90° fabric (0.072), L + Direction + + 4bde2a84-4758-4c2b-b06d-2c0688011310 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + + 0fa2b71b-f530-4884-a8de-b25713b85054 + + MassRemoved + 64.461322484752 + + + + + 1.952204255497 + + MI_Restricted_Substances + a01be0be-96e7-4123-b061-dfdbba1f1748 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 4037, oil quenched & + tempered at 315°C + + 1f200c4e-66c9-41a9-94cc-67a0fac88829 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + + 8f8d0342-3ef2-4965-8f76-a154e1a45705 + + Mass + 100.0 + + + + + 1.952204255497 + + MI_Restricted_Substances + 496cca2a-43ad-4943-9e9b-23076f2e3a5c + + Glass/polyimide honeycomb, ±45° fabric (0.128) + + Glass/polyimide honeycomb, ±45° fabric (0.128), L + Direction + + a386b2fd-bc60-4cdf-a33f-e69c5a75539e + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + + e69b87a3-49c0-42e5-81e8-73bc9a5ba208 + + Mass + 100.0 + + + + + 1.952204255497 + + MI_Restricted_Substances + 3b122722-399e-43ad-bc30-86f556db96e7 + + Stainless steel, terne coated + Coated steel, stainless steel, terne coated + 07d04467-4714-4163-834b-1a149cde2fef + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + + 5704161a-a022-4303-b808-ab16fba90bdb + + Mass + 100.0 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + + b2cda790-0c8a-4dd2-ab76-f0d2540c8cfa + + Mass + 72.57710787122 + + + + + 1.952204255497 + + MI_Restricted_Substances + 2017a3b5-88e7-473f-b7c9-1ab8afe722fe + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 5160, oil quenched & + tempered at 540°C + + c3a81cf6-3677-4edf-8d88-2da112b80d69 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + + 99b9a1db-9782-4890-a5b9-bad13fbf8714 + + Mass + 100.0 + + + + + 1.952204255497 + + MI_Restricted_Substances + b01d2f15-7182-442c-ac97-e7c259e8169d + + Annealed + Low alloy steel, AISI 9310, annealed + bbfa5ab2-b25b-4911-a0be-e0d8e01f1e8e + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + + Vacuum assisted resin infusion (VARI) + + def28e40-fc5e-4ecb-830b-b79d3207a90a + + Mass + 100.0 + + + + + + + 2.0 + 74.089762882371 + b9eb4836 + part_b9eb4836-f811-41e9-ad40-7f8fcc7c64e1 + b9eb4836-f811-41e9-ad40-7f8fcc7c64e1 + + + 86.285464179835 + + MI_Restricted_Substances + 9cae15c6-b5b6-4ab9-9008-d962bee0e662 + + Glass/phenolic honeycomb, 0°/90° fabric (0.128) + + Glass/phenolic honeycomb, 0°/90° fabric (0.128), L + Direction + + 966a9201-5491-4807-9abf-b884b78c31c9 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + + 96d371e7-648d-4ded-9ba8-ab2ffd4b9f9d + + Area + 66.479203880987 + + + + + 4.571511940054 + + MI_Restricted_Substances + dc5a66d7-3ba8-4879-b455-ac29d54cbf17 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 5150, oil quenched & + tempered at 315°C + + 20436c9f-d0c6-47b0-987f-cd98e65dfb36 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + + 2d1baf08-df85-4e41-b6e6-11becfd02d68 + + Mass + 91.22655349375 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + + 19cb429e-34eb-4a9a-b08a-b4dd94736fab + + Mass + 100.0 + + + + + 4.571511940054 + + MI_Restricted_Substances + 88943d73-219a-4090-93e9-c0454a8b5ad5 + + FR-4.0 (Df < 0.015 at 10GHz), Epoxy/Glass + fiber, PCB laminate + + FR-4.0 (Df < 0.015 at 10GHz), Epoxy/Glass fiber, + PCB laminate + + d8fe04e2-9546-49c9-a7a7-363a17eb7c9f + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + + 45ca39ef-f00c-4e3c-8624-eb50a185f9f4 + + Mass + 100.0 + + + + + 4.571511940054 + + MI_Restricted_Substances + b85ebb9e-b198-4497-ae8e-b9b61ecde102 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 5160, oil quenched & + tempered at 315°C + + 73bd3313-2941-4b17-a1ea-4f3f91438e52 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + + 893e1329-2a02-4d98-bc21-9b74ce683a30 + + Length + 66.154401593913 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + + 9fa58166-cf72-41d9-9a2c-caa998091110 + + MassRemoved + 35.587200073333 + + + + + + + 3.0 + 29.269366026515 + 862f58e7 + part_862f58e7-67aa-42a2-87c3-516640f3d8f3 + 862f58e7-67aa-42a2-87c3-516640f3d8f3 + + + 31.686386993008 + + MI_Restricted_Substances + 034898f1-834f-4079-a0d3-65fffc17cb4d + + Silica (quartz fused) + Silica (quartz fused) + a3e3a1db-cb4e-438b-940e-faa5eedb5dda + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + + 8af392e4-7d44-4f7d-8842-b4bbafcf94d5 + + MassRemoved + 49.642271944155 + + + + + 11.385602167831 + + MI_Restricted_Substances + 2befe0b1-24d6-401d-9a98-97e6fe8668bb + + Annealed + Low alloy steel, AISI 9255, annealed + 5fb97d30-7560-4200-891e-c5ec639bc300 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + + 2963e8a2-6456-4d71-bb03-9bca208dcdd9 + + Mass + 14.288251527719 + + + + + 11.385602167831 + + MI_Restricted_Substances + 6d658600-d198-46ed-bcca-cd0e3e2f5f4d + + Oil quenched & tempered at 425°C + Carbon steel, AISI 1060, oil quenched & tempered + at 425°C + + fdd7f75c-224f-49fd-ae6c-99c47d60353a + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + + afc22575-39ad-439f-bd40-0e3f938417fe + + Area + 93.197569946384 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + + 4b0ec717-4d41-4cc1-a951-c1a8c8f7c068 + + Area + 63.146052492384 + + + + + 11.385602167831 + + MI_Restricted_Substances + 6e6b280b-c24a-40b9-a181-4586c4b341c2 + + SAE 4335M, cast, quenched & tempered + + Low alloy steel, SAE 4335M, cast, quenched & + tempered + + af2d314f-1fb4-41c4-aea0-7d2cf06fc241 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + + 77617534-de47-403a-80e1-676aff0839f6 + + Mass + 100.0 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + + b56d23f0-f522-47e7-83af-7d376b81216a + + Mass + 100.0 + + + + + 11.385602167831 + + MI_Restricted_Substances + 2096ca77-9981-4fd5-9bc6-afe56b3bbbd4 + + Glass/phenolic honeycomb, 0°/90° fabric (0.096) + + Glass/phenolic honeycomb, 0°/90° fabric (0.096), W + Direction + + 1077ef3b-714e-45d4-a5d7-85269fab040b + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + + 86ca949d-a134-4ef1-abd8-e2704ae62c38 + + Mass + 100.0 + + + + + 11.385602167831 + + MI_Restricted_Substances + af0c74e2-f44f-4698-a194-c3f6496a73fa + + Quenched & tempered + Low alloy steel, AISI 4135, air melted, quenched & + tempered + + 135bdc9a-42cb-4cbb-8904-6663153b3a1d + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + + a7e5e15b-2672-4d54-b6a8-e37d01edd6b8 + + Length + 92.914500363596 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + + 0934bebd-6784-4368-a792-3d6cf632bd1e + + MassRemoved + 96.551685964945 + + + + + 11.385602167831 + + MI_Restricted_Substances + 90514ab4-75b3-48a9-9a07-98eb8f83ef81 + + As rolled + Carbon steel, AISI 1015, as rolled + fef0eedb-3e60-4db6-b002-21aa58a8daf7 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + + 87322eda-6234-471b-8bb6-ad0b0223439b + + Mass + 100.0 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + + e56d3e3a-cbb1-4fe9-8bc8-db7afc99adc6 + + Mass + 100.0 + + + + + + + 5.0 + 62.366695032625 + fd8d642b + part_fd8d642b-af21-46e6-afc1-f2f8b0e21b43 + fd8d642b-af21-46e6-afc1-f2f8b0e21b43 + + + 45.501643580152 + + MI_Restricted_Substances + b3d89bcf-5e9a-4fe8-a953-98ceb384b8a3 + + water quenched & tempered at 650°C + Carbon steel, AISI 1030, water quenched & tempered + at 650°C + + 9b8384ef-1579-4b88-b189-215e3d38d262 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + + 8e326262-e605-41e3-87f6-5a0f717e2347 + + Mass + 100.0 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + + eb1f17a9-42d9-47d6-a277-6d478a4dd7e2 + + Length + 18.67924147224 + + + + + 18.166118806615 + + MI_Restricted_Substances + 55c8dd10-b62f-4136-b1c8-6260fcec05cc + + Annealed + Carbon steel, AISI 1040, annealed + 411ce775-02cf-481d-b199-97032ed29d4f + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + + 6f9878f7-4b1e-483e-a855-e06ac6b01914 + + Area + 70.615824763949 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + + 14c8e637-d272-4179-bcba-5b835682e9d7 + + Mass + 100.0 + + + + + 18.166118806615 + + MI_Restricted_Substances + 924b3986-e315-4b28-9daa-56a075aa18e9 + + Annealed + Low alloy steel, AISI 52100, annealed + 431c8143-a497-47c1-85e0-ffffa2053e8b + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + + f447c5c2-b1d4-49a9-b6b8-09ad043dfc9e + + Area + 37.985985371277 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + + 7e7ae2be-fcf4-4959-b548-d0086e941ca1 + + Mass + 100.0 + + + + + 18.166118806615 + + MI_Restricted_Substances + 7bb749f5-f155-4528-bd9b-59c2c0796b40 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 4140, oil quenched & + tempered at 650°C + + f5eb794e-27b9-4ddc-b870-db994c597db4 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + + 60aaea04-97ed-404a-8fbc-38943d3d5474 + + Length + 54.648982432973 + + + + + + + 7.0 + 2.435012814791 + 7975cf31 + part_7975cf31-1767-4df5-9f29-aa34a15f7cce + 7975cf31-1767-4df5-9f29-aa34a15f7cce + + + 55.304021088082 + + MI_Restricted_Substances + 190cf17e-dbc1-40c7-a3d1-cc776977cb47 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 50B46, oil quenched & + tempered at 650°C + + ba83beb2-043a-40b2-8d3f-d0ae0fec847a + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + + 9b19dea1-9ffb-40e5-bba1-982ad7a4bc39 + + MassRemoved + 63.368757983375 + + + + + 11.173994727979 + + MI_Restricted_Substances + daa4f620-4e8c-4670-b517-9cbca2154c44 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 5130, oil quenched & + tempered at 315°C + + be7599d8-421d-4054-b5dc-fe7be813aca1 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + + c4c67b2f-7b8f-4989-bcd4-ccc2166fd211 + + Area + 40.54536532636 + + + + + 11.173994727979 + + MI_Restricted_Substances + 8ef69f01-44dd-4b96-ac5c-731bff7ceb6c + + Glass ceramic - 9606 + Glass ceramic - 9606 + 966349fa-ddb8-4eea-bae6-e85f731ce179 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + + c20a9763-e8a7-46a7-ba02-d7e92f319231 + + Mass + 100.0 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + + 0ced7fbc-5ef4-409f-822b-08ce98d0dc83 + + MassRemoved + 66.840701441672 + + + + + 11.173994727979 + + MI_Restricted_Substances + 6ee51b17-7fe0-46fd-8e32-a71585a34000 + + 40-45% glass and mineral + PBT (40-45% glass and mineral) + eef55f76-06b8-4345-baaa-b63d6726e571 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + + a7848db7-c57e-4c94-9aa6-3a2916b19738 + + Mass + 100.0 + + + + + 11.173994727979 + + MI_Restricted_Substances + 0a203f13-4112-4c7b-8d17-bd9ce600f647 + + YS350, cold rolled + Dual phase steel, YS350, cold rolled + f0898add-5dbb-4f37-b205-3d06ebbc5d0b + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + + 60a689e4-7b96-4f29-be3e-4a47c344b98b + + Mass + 100.0 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + + 5db7413f-3be8-49db-a34e-5a3270934554 + + Mass + 24.11155524855 + + + + + + + 2.0 + 0.118387024904 + 5bcd7ed0 + part_5bcd7ed0-2e39-42ff-a746-c455faca941d + 5bcd7ed0-2e39-42ff-a746-c455faca941d + + + 31.809815034181 + + MI_Restricted_Substances + 9a48479a-292f-4bdd-aab5-0ad0835d7480 + + Oil quenched & tempered at 205°C + Carbon steel, AISI 1095, oil quenched & tempered + at 205°C + + 9a15c711-a161-42a2-a9b1-b26fe16575a0 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + + 8a3a5758-48b7-40d6-818f-703ec1cd289f + + MassRemoved + 6.979874059082 + + + + + 9.741454995116 + + MI_Restricted_Substances + 0a203f13-4112-4c7b-8d17-bd9ce600f647 + + YS350, cold rolled + Dual phase steel, YS350, cold rolled + b35d0c2b-2dc1-44f8-8a66-8dc93bc65bac + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + + 900e5516-afde-47e5-a410-07ea20aab158 + + Mass + 100.0 + + + + + 9.741454995116 + + MI_Restricted_Substances + 2ab1643a-3aff-46c7-a249-21c58b33f214 + + Annealed + Carbon steel, AISI 1144, annealed + 6858c273-5411-40f7-99d5-1fa003402096 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + + 5611fa6a-e4f6-4072-81b1-78c3440a1324 + + Mass + 100.0 + + + + + 9.741454995116 + + MI_Restricted_Substances + 29d2e9de-9de0-4ea9-9bff-3a1cee0c26e3 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 4037, oil quenched & + tempered at 205°C + + 911ed045-63a1-4f2e-a700-554eadbcc264 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + + 00fe288c-fad6-4303-a1e5-4f3d065f2d2b + + Length + 35.872498031646 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + + a563c236-fd40-472d-a6d3-81debb12cb46 + + Mass + 100.0 + + + + + 9.741454995116 + + MI_Restricted_Substances + 80d691ec-471b-4ef6-9060-a0e5cc0c1a91 + + Annealed + Carbon steel, AISI 1340, annealed + 9250893c-69f0-40bb-8668-efba7d2bfe6f + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + + b10e57a9-906d-45e7-ad95-31cb30e993a3 + + Length + 48.371697100052 + + + + + 9.741454995116 + + MI_Restricted_Substances + 3e7feb56-09b4-498c-9966-c13b33dedccd + + water quenched & tempered at 205°C + Carbon steel, AISI 1137, water quenched & tempered + at 205°C + + 064ed8a8-2f06-4180-896d-8d850d1ca883 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + + cadc9afd-fe49-4df7-8098-a4ddc0f4be4f + + Mass + 100.0 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + + f79dd6d1-4b2c-4708-9b6e-7dd40097d339 + + MassRemoved + 42.443724462037 + + + + + 9.741454995116 + + MI_Restricted_Substances + 9e11a8f7-0b35-4610-aee9-557a236bbe5c + + Soda borosilicate + Soda borosilicate + 40d9f571-bb28-47ec-a850-08b3ecb865ef + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + + 9ab5e351-8a29-4780-9b16-8c27d5c6fa07 + + Mass + 100.0 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + + 345503aa-c7f0-4221-9ce8-0eafddd4e4c2 + + Length + 97.597338304667 + + + + + 9.741454995116 + + MI_Restricted_Substances + 9d224642-fb07-41ce-8191-c9b152122364 + + Quenched & tempered + Intermediate alloy, Fe-9Ni-4Co-0.30C steel, quenched + & tempered + + cb3739a0-3d30-46d6-92f5-084983867378 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + + 50e8ccbc-6981-4512-a86c-56ac38788a3d + + Mass + 100.0 + + + + + + + 9.0 + 49.67689893659 + ebb8ffdf + part_ebb8ffdf-686d-41d7-9d9e-e9005283b434 + ebb8ffdf-686d-41d7-9d9e-e9005283b434 + + + 8.751986459247 + + MI_Restricted_Substances + 45a257d5-da48-4520-9174-ffe7bbadcd1c + + Glass/phenolic honeycomb, ±45° fabric (0.088) + + Glass/phenolic honeycomb, ±45° fabric (0.088), L + Direction + + f01c60bb-f680-45c1-85cd-acbd6e7c0e95 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + + ab126da3-5938-4d75-bd59-964cdca979c8 + + Mass + 100.0 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + + 4cea0757-a34b-4b3c-aa34-5b0686e2814b + + Mass + 100.0 + + + + + 91.248013540752 + + MI_Restricted_Substances + 827c892c-b90a-4b05-a8c4-ef1c047d8859 + + Glass/polyimide honeycomb, ±45° fabric (0.112) + + Glass/polyimide honeycomb, ±45° fabric (0.112), W + Direction + + 70910778-cb6b-4d23-baba-c89dbff3ba59 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + + 5aac6bef-0c6b-4d84-bb59-584f21b02395 + + Mass + 44.036692075448 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + + 79f9f625-1e57-4d90-b886-ccc120129152 + + Mass + 100.0 + + + + + + + 9.0 + 32.165753390717 + 1d1de73b + part_1d1de73b-1743-4079-9578-1cf97e7becd8 + 1d1de73b-1743-4079-9578-1cf97e7becd8 + + + 79.606629293228 + + MI_Restricted_Substances + b228f0f2-a947-4ee3-bdb9-00fdb153caff + + Glass ceramic (FC) + Glass ceramic (FC) + 8abd286f-4a84-4f43-b1be-46822033789e + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + + 5dcdd898-398d-489a-b0a1-c783342ddb2f + + Mass + 100.0 + + + + + 2.913338672395 + + MI_Restricted_Substances + f8d1136f-3c1a-41e2-8b78-cf5f3965cba2 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 6150, oil quenched & + tempered at 205°C + + 3c55eb1b-5950-40e0-bb06-5647255227dc + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + + 0a89705d-324f-471c-9755-d476521034ab + + Mass + 100.0 + + + + + 2.913338672395 + + MI_Restricted_Substances + 827c892c-b90a-4b05-a8c4-ef1c047d8859 + + Glass/polyimide honeycomb, ±45° fabric (0.112) + + Glass/polyimide honeycomb, ±45° fabric (0.112), W + Direction + + 6d01f042-4095-4b85-8eaf-8c8dbfcf8153 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + + 283d3bd7-bf80-470a-bf3a-cbcff32f7d28 + + Area + 43.611333120433 + + + + + 2.913338672395 + + MI_Restricted_Substances + b879bb01-8648-4b5b-8159-d591cb251ca8 + + Normalized + Carbon steel, AISI 1080, normalized + 1d048369-92f6-44e8-84f2-30278212856b + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + + 731a4ba2-d31e-4db1-8793-9324b3e237b7 + + Length + 15.022519796631 + + + + + 2.913338672395 + + MI_Restricted_Substances + ccc92e6a-14f4-4ec6-9c3a-35ef3d6c9d8e + + Annealed + Carbon steel, AISI 1025, annealed + 2b009d89-e163-4adf-9bf9-8afb678c2a48 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + + 62c79bd0-ae11-422c-90f1-fa594571e903 + + Mass + 100.0 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + + a2fcb803-add8-49a0-900b-3703f84244d9 + + Length + 53.292736063381 + + + + + 2.913338672395 + + MI_Restricted_Substances + 034898f1-834f-4079-a0d3-65fffc17cb4d + + Silica (quartz fused) + Silica (quartz fused) + 835299c6-a6b5-43a8-aa88-f284052171cc + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + + 855bee01-9184-47d2-8581-76e01886ea0b + + Mass + 100.0 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + + 12eabb99-224c-43ea-a98d-bb596ecee29f + + Length + 16.264227552462 + + + + + 2.913338672395 + + MI_Restricted_Substances + 4a35d8d1-5fb1-47e9-a669-37204ae732dc + + ASTM A500 Grade A + Structural steel, ASTM A500 Grade A + 638823b6-f9d3-46bb-8a05-0db107889b22 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + + Vacuum assisted resin infusion (VARI) + + 0c0f61c2-70c2-4f98-ac5a-7f9df5ecc483 + + Mass + 100.0 + + + + + 2.913338672395 + + MI_Restricted_Substances + 55a81649-3016-4213-a621-af408fcdc777 + + Annealed + Carbon steel, AISI 1080, annealed + 1a6d6276-4d4a-427a-a4b4-6f2e620db768 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + + 97cbf528-7960-4df3-9374-18f69b658e42 + + Mass + 100.0 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + + 1bc461bc-ed33-486d-a70d-de4a056b9240 + + Length + 80.371818589219 + + + + + + + 2.0 + 36.111349117062 + 8c7e1228 + part_8c7e1228-bf08-4749-97f1-a110415528b4 + 8c7e1228-bf08-4749-97f1-a110415528b4 + + + 84.024188054736 + + MI_Restricted_Substances + 92565d61-24fc-4880-9be5-0faeb9a8a3e8 + + Titanium silicate + Titanium silicate + e7ec98ac-e273-46ab-9474-ea04a3890a5e + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + + 9762f77c-d28f-4826-9540-79879aa0b386 + + Mass + 100.0 + + + + + 3.195162389052 + + MI_Restricted_Substances + 109eaa8c-e01c-4663-8802-f7dd1f10d61b + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 8630, oil quenched & + tempered at 205°C + + 9f70bd1c-4fd9-4e12-b6cd-b24ec8e36b3a + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + + b3367ef8-54f4-4af1-ae6f-0471c59b1e3f + + Mass + 100.0 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + + 1892cc1f-2ea4-4542-84fa-734a1738d47d + + Mass + 32.105234513108 + + + + + 3.195162389052 + + MI_Restricted_Substances + 9cde0ddf-b39b-4eba-9ca0-333508cee034 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 86B45, oil quenched & + tempered at 540°C + + e9a533e7-8687-4edb-8b8c-b598338050b2 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + + 69388365-f692-4ca3-be8f-c29f6a11512d + + Mass + 100.0 + + + + + 3.195162389052 + + MI_Restricted_Substances + ae5812e1-18fd-4a4d-aaa2-a04ca5e84b7a + + YS400, hot rolled + Dual phase steel, YS400, hot rolled + 3faedb49-7a6d-4c00-9c9e-39a7ef664e21 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + + f210d48f-623d-4898-aa23-ebacd6a343c0 + + Mass + 100.0 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + + d6908901-bc8f-4702-ba84-a02927d44d92 + + Length + 75.519944948852 + + + + + 3.195162389052 + + MI_Restricted_Substances + e8c6d73a-bd7a-4ef3-ae11-48e45d4a5515 + + Glass, E grade (0.4-12 micron monofilament, f) + + Glass, E grade (0.4-12 micron monofilament, f) + ac819a8f-9291-46bd-9a24-39b6ae982568 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + + 31211b96-96bc-4c45-a8a1-5b02eb5b9885 + + Mass + 100.0 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + + bbc5fe2a-94ea-40ef-86a7-942a40cc05b2 + + MassRemoved + 34.487242034863 + + + + + 3.195162389052 + + MI_Restricted_Substances + 1d24ecfa-ec45-4a74-9ad7-ceac6eef8ad3 + + Annealed + Low alloy steel, AISI 41L40, annealed + 8ea00983-914a-498b-94fa-1c042eac5ea4 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + + 2b02ebe7-5e6e-491c-a82b-5a11d3505560 + + Mass + 100.0 + + + + + + + 9.0 + 9.449126063589 + bfd7768c + part_bfd7768c-8123-46d9-ac11-f0c6afcabb52 + bfd7768c-8123-46d9-ac11-f0c6afcabb52 + + + 65.30195230865 + + MI_Restricted_Substances + 01f21cc5-bbad-4a5d-875d-c626eabc11c8 + + water quenched & tempered at 425°C + Carbon steel, AISI 1137, water quenched & tempered + at 425°C + + c320bf61-1e2b-4df3-b206-058e077ab81e + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + + 20f242e5-4016-4a57-adc9-37f1bf901366 + + Mass + 100.0 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + + d34384d5-e48e-43bf-8930-94889569b199 + + Length + 95.754908535515 + + + + + 11.566015897116 + + MI_Restricted_Substances + 88943d73-219a-4090-93e9-c0454a8b5ad5 + + FR-4.0 (Df < 0.015 at 10GHz), Epoxy/Glass + fiber, PCB laminate + + FR-4.0 (Df < 0.015 at 10GHz), Epoxy/Glass fiber, + PCB laminate + + bf27755b-7cec-4ae3-b621-6d307b6bbf64 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + + 68a06571-548b-4a4a-a436-d8dd70d4df06 + + Mass + 100.0 + + + + + 11.566015897116 + + MI_Restricted_Substances + ab895171-8c16-4056-9062-78f7516be1b0 + + Borosilicate - 7050 + Borosilicate - 7050 + a08c1674-4940-40a7-94fc-c3d9d183a7f0 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + + 7d76a166-c302-4db8-abb1-f8be6336b506 + + Area + 75.846491277146 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + + 4a1655e1-c1f6-4b1a-96f7-58405a76625b + + MassRemoved + 92.341727061356 + + + + + 11.566015897116 + + MI_Restricted_Substances + a1a73282-61fc-4ecd-9e82-a15e366f99bc + + Low-e glass + Low-e glass + c1bd4e16-ddfd-4e33-9ea0-9f71d3f3fac8 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + + 27d68193-6372-43ef-85c5-2a05dea773bf + + Mass + 100.0 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + + 9185ca4f-d644-478a-b1d3-accea6fd78f8 + + Mass + 100.0 + + + + + + + 2.0 + 96.541203882797 + d4ad1b0c + part_d4ad1b0c-b83c-4a72-8d37-353582787606 + d4ad1b0c-b83c-4a72-8d37-353582787606 + + + 86.57915442557 + + MI_Restricted_Substances + a6078356-e79c-4ddd-86ef-a3f01680dd35 + + As rolled + Carbon steel, AISI 1020, as rolled + 8f185b5c-7663-4004-babc-399eafd054fc + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + + a1312113-8da3-4855-9e62-082d236a73e8 + + Mass + 3.278747761286 + + + + + 6.710422787214 + + MI_Restricted_Substances + 52906b79-1e89-49de-b2cf-c09d53f34f92 + + Borosilicate - N16B + Borosilicate - N16B + e9f58e88-6551-4b55-826e-7a6719f7d8c1 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + + 3b3e32a9-86ca-4102-910a-96fb55997319 + + Mass + 100.0 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + + b15c2027-79ed-47aa-b2e3-c4c7c63d4fcb + + Mass + 100.0 + + + + + 6.710422787214 + + MI_Restricted_Substances + 00268f25-08c7-4add-91f3-3cc4ed1d7e34 + + Oil quenched & tempered at 425°C + Carbon steel, AISI 1141, oil quenched & tempered + at 425°C + + 9309dcdb-9e9a-476b-af68-bf11e4429595 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + + a514f8bf-7700-46fa-b19a-e2847e4bbe19 + + Mass + 100.0 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + + be8949b8-400f-46e3-ad5b-c128b25d09ae + + Mass + 100.0 + + + + + + + 5.0 + 46.461982394783 + bec3a206 + part_bec3a206-acc2-47e0-9d06-bef2d678f4b1 + bec3a206-acc2-47e0-9d06-bef2d678f4b1 + + + 66.977899226815 + + MI_Restricted_Substances + 8dbb57f2-b225-4f57-9a5a-c25a03292d6e + + Annealed + Low alloy steel, AISI 6150, annealed + 3377d345-91c4-4b3c-aaa0-d63d7218b1ac + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + + 3688e835-1b68-4603-b5b9-a819a57502a7 + + Mass + 100.0 + + + + + 5.503683462197 + + MI_Restricted_Substances + a583e694-02c0-408e-9af4-6fbee856b58f + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 9260, oil quenched & + tempered at 650°C + + 1abd8f9a-0b92-427e-9717-6c09ce13dc00 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + + Vacuum assisted resin infusion (VARI) + + 2c5d44c6-e3bd-4ec6-ad22-b11d3649ed17 + + Mass + 100.0 + + + + + 5.503683462197 + + MI_Restricted_Substances + 1d55049a-3c25-4c8c-9125-70fd014c2a1e + + Normalized + Low alloy steel, AISI 8735, normalized + 66c4fad4-af15-4672-9943-9425e4c0e0a8 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + + 826a9d5a-36ba-4609-b926-7000913958f2 + + Mass + 100.0 + + + + + 5.503683462197 + + MI_Restricted_Substances + aa4540cb-3277-459f-a69a-ca324ddd0125 + + Glass ceramic (N0) + Glass ceramic (N0) + 06b90bd7-bfac-4f73-824f-f416b61e79b4 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + + 10cc87fa-8688-4a93-be50-8cb08c6545cf + + Mass + 30.995388017499 + + + + + 5.503683462197 + + MI_Restricted_Substances + 6f7c4754-84f7-46f0-873a-ec2e9f29e345 + + Glass/phenolic honeycomb, ±45° fabric (0.088) + + Glass/phenolic honeycomb, ±45° fabric (0.088), W + Direction + + 5cdefe18-ca24-4c8e-87dd-e422cbafad17 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + + 3d241091-1a8c-472a-988b-46aff0cc1c3d + + Length + 27.586282942251 + + + + + 5.503683462197 + + MI_Restricted_Substances + ca72e2f5-a1d0-4bb0-b612-ed5bc26a4f70 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 9255, oil quenched & + tempered at 205°C + + c32929c3-9ade-4355-892f-28ddb0c5e1f8 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + + f1960bc6-4caf-450d-bb34-5f45dbb2034c + + Length + 15.925735009799 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + + 9224038e-b0d7-42bd-9b97-6478c055cc71 + + Mass + 100.0 + + + + + 5.503683462197 + + MI_Restricted_Substances + 3427457c-2b3d-4a7e-adbc-40fddd4c1f0e + + Normalized + Carbon steel, AISI 1020, normalized + e4212f84-23c9-4e24-86a9-2c480a88575c + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + + 6ab49720-c919-4711-9306-ebc18eea494b + + Mass + 100.0 + + + + + + + 7.0 + 6.365679812787 + + MI_Restricted_Substances + 2fcb534e-37c5-4b25-add8-ff02d2541953 + + 19e9d742 + part_19e9d742-08ce-4539-bce0-4d8df1627884 + 19e9d742-08ce-4539-bce0-4d8df1627884 + + + 4.0 + 14.785726468444 + 8274b460 + part_8274b460-c082-4717-ab9e-9920ef0ff3d2 + 8274b460-c082-4717-ab9e-9920ef0ff3d2 + + + 29.591850298266 + + MI_Restricted_Substances + 8be87fd7-f406-4a50-9150-2a29e4a26bfa + + Aluminoborosilicate - N51a + Aluminoborosilicate - N51a + 38f43e87-1708-47f1-a30c-59a2cbb7cf94 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + + 4b410e14-b7b7-4433-857e-8db7dea9b5aa + + Mass + 100.0 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + + 4488c58c-5812-4e2c-beca-734bdb61837f + + Length + 51.941912086653 + + + + + 35.204074850866 + + MI_Restricted_Substances + cfb19c31-b156-4a8d-854c-f264975539e1 + + water quenched & tempered at 205°C + Carbon steel, AISI 1095, water quenched & tempered + at 205°C + + 3e49ad92-4885-477d-8acf-bfbc5c7e2611 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + + 5ec6e628-d313-42c1-a5cd-138d782e3063 + + Mass + 100.0 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + + 877d894a-0761-45cd-b67a-f0a004becbd1 + + Mass + 100.0 + + + + + 35.204074850866 + + MI_Restricted_Substances + d50d4fb1-e03a-43e7-b96d-6e8947848f36 + + Borosilicate - 7760 + Borosilicate - 7760 + 18d13a6a-8fff-4cd4-9df8-9fcfd052e5f7 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + + 5538fe15-9297-4520-9024-6283734a17df + + Mass + 100.0 + + + + + + + 8.0 + 3.462790932256 + 41fcfe96 + part_41fcfe96-0cb7-459b-990e-0a9cf466b84e + 41fcfe96-0cb7-459b-990e-0a9cf466b84e + + + 46.123585592081 + + MI_Restricted_Substances + bbe3f98a-e574-482b-99cc-74e13b224dd3 + + Normalized + Low alloy steel, AISI 5160, normalized + 0d3845c5-34d7-400a-bee3-80981f3a9c22 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + + 155c8b69-3aec-488c-9e84-81ec2a967947 + + Mass + 100.0 + + + + + 7.696630629702 + + MI_Restricted_Substances + d42eaa02-9811-4935-b9cd-652adc845e8c + + Oil quenched & tempered at 650°C + Carbon steel, AISI 1050, oil quenched & tempered + at 650°C + + 4f4d69c6-1bbc-4f09-ab53-60a95498a714 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + + 1cc110c5-64f2-4880-b63a-3312b46119e4 + + Mass + 100.0 + + + + + 7.696630629702 + + MI_Restricted_Substances + 90b2285b-4295-429d-beb8-90d9f5df0101 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 5046, oil quenched & + tempered at 315°C + + 475c1813-eff4-4d7f-aa34-21a625870575 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + + 5c3292e1-9cf2-405f-9958-bbbb7740198e + + Mass + 100.0 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + + b2a90408-ff4a-4255-a4da-7c2f1daa045c + + Mass + 100.0 + + + + + 7.696630629702 + + MI_Restricted_Substances + 0ff273b3-9539-465b-9d91-21fc52f8e16c + + Lithium aluminosilicate + Lithium aluminosilicate + 46737ede-6178-4dee-a3a4-e68cffa11485 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + + Vacuum assisted resin infusion (VARI) + + cc4b5ba7-e4ba-4408-a75a-4e70b9a2b97c + + Mass + 100.0 + + + + + 7.696630629702 + + MI_Restricted_Substances + 9b08ec7e-e481-47fa-a36b-849db7ef2432 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 8640, oil quenched & + tempered at 425°C + + a7ae4f2b-6b9a-4a32-a9a5-55fb9d080317 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + + e05cb907-5ab8-4186-b865-5206ef069385 + + Area + 96.172547990536 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + + 89f28aa9-fc07-4ac9-8788-58ac8ea3c3bc + + Length + 70.023122695285 + + + + + 7.696630629702 + + MI_Restricted_Substances + 2839a622-af73-4a9f-90fa-0f3498243808 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 4042, oil quenched & + tempered at 425°C + + aeb72541-06c9-445d-a583-d17e4b217af3 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + + 2e21bc42-8482-4b45-8cdf-9cc033838ded + + Mass + 100.0 + + + + + 7.696630629702 + + MI_Restricted_Substances + 7a62318a-eff2-4f36-9925-ee919c5b4369 + + S235J + Structural steel, S235J + 51fa18b8-ed5b-4e70-9a85-926d20aff4d3 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + + 599dc39e-fbe9-4918-903c-201f8fafd517 + + Mass + 100.0 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + + 444c53a5-922f-42ca-8e27-4250419a6c82 + + MassRemoved + 76.338229131111 + + + + + 7.696630629702 + + MI_Restricted_Substances + 8b442749-964a-49d6-be5c-9a55c81d85f8 + + Annealed + Carbon steel, AISI 1137, annealed + c71f0b62-bad3-4169-b642-97466bac096c + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + + 5c175ac7-6633-426d-b196-43311b19d2d6 + + Mass + 100.0 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + + 80d9c995-9272-4b42-bcdb-da53a364eb1e + + MassRemoved + 79.855570327423 + + + + + + + 5.0 + 42.080670568198 + b577fb1d + part_b577fb1d-285b-409e-9c73-c4c67aef072f + b577fb1d-285b-409e-9c73-c4c67aef072f + + + 24.339083220967 + + MI_Restricted_Substances + aa963e30-fca0-439d-bee2-ff48daa946f3 + + As rolled + Carbon steel, AISI 1095, as rolled + 18de39e1-efa3-416c-8305-820c511d7755 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + + fdc3ff67-af49-4e3f-ab5a-5ae7dbc8aea3 + + Length + 34.568402978856 + + + + + 18.915229194758 + + MI_Restricted_Substances + 33160988-8422-40e2-93d1-e3e7467eafe9 + + Normalized + Carbon steel, AISI 1030, normalized + e6b8c0f4-9881-4c32-b3c1-f2c03707a676 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + + b74da865-8a31-4d41-b8a8-8883acb68bf3 + + Length + 50.007607950832 + + + + + 18.915229194758 + + MI_Restricted_Substances + 9966da3f-c3f0-414e-9bce-4211a9eca2c3 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 8650, oil quenched & + tempered at 425°C + + 51209b86-7420-495a-9ae3-2917c45bb6d5 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + + 376fbb2f-af03-4c94-bbdd-fb020dd33243 + + Mass + 100.0 + + + + + 18.915229194758 + + MI_Restricted_Substances + 0840d007-df07-4e12-bda5-bfc060fb15e6 + + Annealed + Low alloy steel, AISI 4320, annealed + d026b0f7-b323-4658-b701-dd5b9ef0642b + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + + b90ce3a2-6d75-4559-9ea6-6d7d03afe3d8 + + Mass + 100.0 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + + e59147df-ab41-4304-beda-98aa64536cf5 + + Mass + 100.0 + + + + + 18.915229194758 + + MI_Restricted_Substances + db238d75-fcb8-41f5-9289-83a352fa83a6 + + Annealed + Carbon steel, AISI 1015, annealed + 10de9487-5e02-4fd3-9e50-cf813f9100e3 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + + 4d3e67b7-82de-46e0-9939-d476f85856d6 + + Mass + 100.0 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + + 4f80d53e-42d7-4017-a30c-e81cb7c4723f + + Length + 56.079032065383 + + + + + + + 7.0 + 25.021038448913 + 98aa21d0 + part_98aa21d0-06fc-44b1-8fe5-2e59b4c5bb01 + 98aa21d0-06fc-44b1-8fe5-2e59b4c5bb01 + + + 82.307474120663 + + MI_Restricted_Substances + bbe3f98a-e574-482b-99cc-74e13b224dd3 + + Normalized + Low alloy steel, AISI 5160, normalized + 66055c02-c174-48cf-a93b-b2a1caa95b51 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + + d269bdba-90f7-4b96-9e75-6df612bf51a3 + + Length + 50.763146835734 + + + + + 5.897508626445 + + MI_Restricted_Substances + 9ce914d8-75c1-4c5f-8c57-11c0e62b2cfa + + ASTM A299 Grade A + Structural steel, ASTM A299 Grade A + 5f3b5299-698b-4670-9ff2-02b9eb219537 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + + 90dd5b2e-8f4d-46f0-add5-99ff1689d833 + + Area + 67.009077857718 + + + + + 5.897508626445 + + MI_Restricted_Substances + c15a44c3-d8be-4ae8-9a58-281f13b731cd + + YS420, cold rolled + High strength low alloy steel, YS420, cold rolled + + a0ee3dee-d81a-48de-b448-54d0cfebab12 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + + 0e1f1be9-bef9-43ba-9414-e54b8d4b254f + + Mass + 100.0 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + + 289c98e6-f616-4f8e-9ef9-324927836d0d + + Mass + 100.0 + + + + + 5.897508626445 + + MI_Restricted_Substances + 55eaa961-cbe2-4f0a-9531-ec40dc32555a + + YS260, cold rolled + Interstitial free steel, YS260, cold rolled + c5ed30f9-03dd-4053-8b5b-c4e1a60cfe8e + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + + 70d819c9-38b0-4d64-a6e0-bfd003d04728 + + Area + 52.558756737298 + + + + + + + 8.0 + 32.507933179153 + + MI_Restricted_Substances + 4a2d9161-0f0a-46c5-91c5-ecc05f02ab7d + + 910f76f0 + part_910f76f0-66f9-452f-8090-72c07bb16e3f + 910f76f0-66f9-452f-8090-72c07bb16e3f + + + 3.0 + 67.537282578431 + 6c0e2111 + part_6c0e2111-9a45-49b2-89f9-e75b9236807b + 6c0e2111-9a45-49b2-89f9-e75b9236807b + + + 18.611537766927 + + MI_Restricted_Substances + 1a2673ec-4671-4e9c-a73b-2fef7045fb02 + + Aluminoborosilicate - G20 + Aluminoborosilicate - G20 + ad5ea6d8-bd5e-4129-8ecf-54d9e5e5f38e + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + + 73960487-6fc0-4df7-b3e3-7e034b13713c + + Mass + 100.0 + + + + + 20.347115558268 + + MI_Restricted_Substances + e678781a-1b38-4709-816b-9db609651db6 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 50B60, oil quenched & + tempered at 425°C + + f6b11b46-7824-436b-bcd0-0c4f7072fcf2 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + + e2857007-525e-42e0-856d-ea8e587e1af9 + + Mass + 100.0 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + + 1cd84982-979f-476d-9569-a73014bd478d + + Mass + 64.810556343202 + + + + + 20.347115558268 + + MI_Restricted_Substances + 0ff3d25e-2024-43a5-9654-bb095ad302ce + + YS260, cold rolled + Bake hardening steel, YS260, cold rolled + e1c23815-ad33-4f51-97b0-6f79b533359c + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + + 0a7ced6d-460a-4301-b350-afa4640aef30 + + Area + 88.82514708155 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + + 59aef919-4ba8-4fad-bc83-f909df5bb444 + + Length + 90.453469562555 + + + + + 20.347115558268 + + MI_Restricted_Substances + 93e14fb3-4376-4df5-9d31-299bee56ea49 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 4340, oil quenched & + tempered at 540°C + + 0fc7dbac-bf70-45c7-90e8-3bd27a45fc1f + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + + 0c1a5db1-afbb-4a9b-b9da-d5f3c050426d + + MassRemoved + 59.387153973517 + + + + + 20.347115558268 + + MI_Restricted_Substances + 3fd6cebb-a683-45be-b014-7c3fb617c3e7 + + Glass/polyimide honeycomb, ±45° fabric (0.064) + + Glass/polyimide honeycomb, ±45° fabric (0.064), L + Direction + + d5016dee-0d50-4fb4-abc4-ff412b6567a2 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + + 8daed5ae-3333-47bf-963f-5693dfe3963e + + Mass + 100.0 + + + + + + + 1.0 + 76.934856305334 + 637e0437 + part_637e0437-da8d-40d6-b882-cabd56acb117 + 637e0437-da8d-40d6-b882-cabd56acb117 + + + 45.937840801634 + + MI_Restricted_Substances + d50d4fb1-e03a-43e7-b96d-6e8947848f36 + + Borosilicate - 7760 + Borosilicate - 7760 + 41aa4011-d38d-40e0-82e6-eefa8d9d6860 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + + 18e019cd-e438-4439-aba5-793bfff432df + + Area + 36.649968399037 + + + + + 18.020719732788 + + MI_Restricted_Substances + 6d658600-d198-46ed-bcca-cd0e3e2f5f4d + + Oil quenched & tempered at 425°C + Carbon steel, AISI 1060, oil quenched & tempered + at 425°C + + 09dddbfa-2400-4660-93fc-d0c784324731 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + + 4f40fad3-7ce7-40f8-bd4d-0940db95abc6 + + Mass + 67.778658060253 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + + Vacuum assisted resin infusion (VARI) + + 52e9ddf8-90c1-4f1b-9003-eb8de3f2a997 + + Mass + 100.0 + + + + + 18.020719732788 + + MI_Restricted_Substances + 00268f25-08c7-4add-91f3-3cc4ed1d7e34 + + Oil quenched & tempered at 425°C + Carbon steel, AISI 1141, oil quenched & tempered + at 425°C + + 244a218d-da02-4600-901f-3c795a8ed628 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + + 0c7a49f5-6aa3-4cf2-9870-f8b97e7d9e9e + + Mass + 100.0 + + + + + 18.020719732788 + + MI_Restricted_Substances + 034898f1-834f-4079-a0d3-65fffc17cb4d + + Silica (quartz fused) + Silica (quartz fused) + cc1dcc59-58ce-4ad0-b222-a342e392f666 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + + 02a20918-409d-4751-a8c1-d14dafa88081 + + Mass + 100.0 + + + + + + + 5.0 + 11.677817353828 + f8a14e94 + part_f8a14e94-a386-4489-9648-e6082d18b30c + f8a14e94-a386-4489-9648-e6082d18b30c + + + 13.875720144191 + + MI_Restricted_Substances + 0d45da58-d026-4a44-b2b5-3109fe88f824 + + Annealed + Carbon steel, AISI 1022, annealed + 65ec6136-26bc-442d-9570-1ce48f7690c7 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + + bd16cf39-76af-43f8-b198-aeb8ad7be932 + + Mass + 59.984697243191 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + + e6bb7f1e-7071-4e1d-a373-45ffe368eadc + + Mass + 100.0 + + + + + 86.124279855808 + + MI_Restricted_Substances + c60fa280-eb24-4c9a-b6cf-a8304e0eb1b5 + + YS500, hot rolled + High strength low alloy steel, YS500, hot rolled + + 5aa8cb62-04fb-411f-9001-dec103cb7f1f + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + + d42f33b8-5c49-477c-af67-ecb132d88eae + + Mass + 100.0 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + + e4979d16-32cf-4bb4-93a5-fa69b3693f69 + + Mass + 100.0 + + + + + + + 6.0 + 86.295804049026 + + MI_Restricted_Substances + 022614af-ecf8-4797-af86-25b711d65e30 + + c36583cf + part_c36583cf-709d-4e48-bcfa-afb789e667d9 + c36583cf-709d-4e48-bcfa-afb789e667d9 + + + 6.0 + 67.963392039743 + b786aa15 + part_b786aa15-0e95-4b0a-82e6-923db26e9143 + b786aa15-0e95-4b0a-82e6-923db26e9143 + + + 28.160587944165 + + MI_Restricted_Substances + 8c7579d0-7b78-40f6-a9e7-d11eea746c1f + + Uncoated + Press hardening steel, 22MnB5, austenized & H20 + quenched, uncoated + + f0f45be9-288d-4aa4-989b-0e8bfa87419b + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + + a485a8f2-d7fc-4bc3-988b-da33a5828f70 + + Length + 21.046489021296 + + + + + 10.262773150833 + + MI_Restricted_Substances + 8643d806-94c5-42f9-9ffc-4c21a6e16bd0 + + Annealed + Carbon steel, AISI 1141, annealed + b5578b36-590a-4ff3-9586-de0bc55d7ca5 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + + 9c75e21c-d10b-44e9-bfdb-16d235fd0245 + + Area + 33.543377664658 + + + + + 10.262773150833 + + MI_Restricted_Substances + e6b45bea-dec9-4b91-996a-885bb0c31f8d + + Glass, S grade (10 micron monofilament, f) + + Glass, S grade (10 micron monofilament, f) + da3524da-b989-495a-80bc-6a03e4dff35a + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + + 208aabda-3a37-4f4f-9759-695034f23d93 + + Mass + 100.0 + + + + + 10.262773150833 + + MI_Restricted_Substances + 82880431-c70c-4df9-856a-d5e00671a184 + + Annealed + Carbon steel, AISI 1020, annealed + f5c11d3d-e942-460a-a6e6-88d85c845501 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + + bb96f553-a236-4770-9e20-ccbd1709d75c + + Length + 16.778927397345 + + + + + 10.262773150833 + + MI_Restricted_Substances + 9052201a-a41d-4b86-8c7c-2e80163afd47 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 9255, oil quenched & + tempered at 425°C + + 259dbdfd-48fd-490b-b87e-c1a2e85fc26e + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + + a36cc3bf-3a2e-4f6d-92bd-1ce74df99da7 + + Length + 13.066051906471 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + + c12a6707-fd5a-4b34-8443-ab1cd3886c62 + + Area + 17.750812423299 + + + + + 10.262773150833 + + MI_Restricted_Substances + 356303d7-c574-4db7-80f9-427e176a5308 + + 40CrMoV13-9, quenched & tempered + Low alloy steel, 40CrMoV13-9, quenched & + tempered + + 9f92067c-64e2-43cd-a019-67fcbd40b9d4 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + + c4afe641-9b45-4754-ba04-d0f4d10a862c + + Mass + 100.0 + + + + + 10.262773150833 + + MI_Restricted_Substances + b85ebb9e-b198-4497-ae8e-b9b61ecde102 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 5160, oil quenched & + tempered at 315°C + + ff3c1af1-7726-48cf-9111-2405634e69c8 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + + 4c4e97c0-8d3f-43e2-b07b-3dc30b243b4b + + Mass + 100.0 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + + d091f519-b7d6-4d1d-9425-5fc6116d2bcf + + Mass + 100.0 + + + + + 10.262773150833 + + MI_Restricted_Substances + 30d9edb0-09d2-4270-b4f5-8dceb44a6bd6 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1137, oil quenched & tempered + at 540°C + + 5ec4816a-1e17-49e3-87f2-7045ba08b4a6 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + + c43d69af-0147-4859-b393-3a06d193be25 + + Mass + 100.0 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + + 9e5c4c82-e18a-4143-b951-79a464daa2ee + + Mass + 100.0 + + + + + + + 8.0 + 55.561721490491 + 7f1ea467 + part_7f1ea467-91f8-4023-8fd4-a144cdab337e + 7f1ea467-91f8-4023-8fd4-a144cdab337e + + + 54.561538321227 + + MI_Restricted_Substances + c87d2bef-0549-4a3b-b699-3ad17b079fa1 + + YS355, hot rolled + High strength low alloy steel, YS355, hot rolled + + 7ac8785d-6c83-4f8f-90de-933949972289 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + + 26432953-6f0e-4d93-96c7-bd5fcf6379f2 + + Mass + 100.0 + + + + + 9.087692335754 + + MI_Restricted_Substances + 21dcdeeb-524a-488e-b332-fcd4e1caf6f7 + + water quenched & tempered at 650°C + Carbon steel, AISI 1095, water quenched & tempered + at 650°C + + a790407d-9ced-4977-a510-4e069d78d746 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + + 03eb66c3-f545-462f-9769-f86b3dd6affc + + Mass + 100.0 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + + b61ec8b9-64a3-446e-b1ca-34ec20bca0ed + + Mass + 100.0 + + + + + 9.087692335754 + + MI_Restricted_Substances + a8f02f5c-c80e-446f-92f4-0046f3d093fc + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 8630, oil quenched & + tempered at 425°C + + 07fde33a-6f9f-45f7-a3ea-e654b0ce2405 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + + 442eafc3-87b0-40ac-b29e-e5250db24a9e + + Length + 51.495316788319 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + + 2e2d0c69-7030-4356-9abd-21c9a343f13f + + Length + 33.97501107956 + + + + + 9.087692335754 + + MI_Restricted_Substances + af4f67b9-f5a7-4fc3-9f1d-da3309e4b19a + + Solution treated & aged + Iron-base-superalloy, Cr-Ni alloy, A-286, solution + treated & aged + + 50b835ed-171b-447e-bd43-b8458edb8a36 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + + bb3d5628-9b59-4a22-a339-57214c20ae1d + + Mass + 100.0 + + + + + 9.087692335754 + + MI_Restricted_Substances + 8dbb57f2-b225-4f57-9a5a-c25a03292d6e + + Annealed + Low alloy steel, AISI 6150, annealed + 0f20032f-64dd-4407-a483-f204c69438fb + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + + b2907993-60fd-4b39-9d19-a6320539f3ff + + Mass + 100.0 + + + + + 9.087692335754 + + MI_Restricted_Substances + 9ecfadb9-f61f-48b3-81b1-bcac80eb164f + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 4150, oil quenched & + tempered at 315°C + + 8a787e70-737e-46e6-8dab-306d179ef24a + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + + 203cae3c-c8ea-468a-b0c2-1a2f1dba8083 + + Mass + 100.0 + + + + + + + 9.0 + 10.829968196726 + f5dacbb9 + part_f5dacbb9-c1f8-419a-9053-2a4d2c9d18a8 + f5dacbb9-c1f8-419a-9053-2a4d2c9d18a8 + + + 39.232889534548 + + MI_Restricted_Substances + c62d668e-5411-4845-b19c-3a0c4eedf872 + + 10CrMo9-10, normalized & tempered + Low alloy steel, 10CrMo9-10, normalized & + tempered + + 33d3df79-d373-4b94-b3a6-660eb38c7e27 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + + 8314c26c-a7ee-4c74-bb24-5fd5a019029a + + Mass + 50.223951577313 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + + 29e7d889-d958-4cf6-a9e9-4f530b87ea79 + + Area + 5.869946398711 + + + + + 10.127851744241 + + MI_Restricted_Substances + 0afa77bf-df9b-456c-8c48-3c84b1ccd2e0 + + Low density glass-sphere filled + Bisphenol molding compound (low density glass-sphere + filled) + + 31c5fa38-c9cb-4a05-82b0-b841e128dbcf + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + + 2f9ef32d-cf41-40d8-b44e-1b8261e8da15 + + Mass + 100.0 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + + 5fad0148-6141-4b01-bc17-321eb4744943 + + MassRemoved + 76.215430803697 + + + + + 10.127851744241 + + MI_Restricted_Substances + ee5b018e-8d7f-4fb1-bad0-c73e871592bc + + 16Mo3, normalized + Low alloy steel, 16Mo3, normalized + a529dc2e-5812-49a2-95b6-6dd4275ccfaf + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + + f7aaf415-d27b-4f53-bb9d-8395e0f29297 + + Mass + 100.0 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + + df76aa4d-4723-48c9-a1ae-f9609cf40fa4 + + Mass + 100.0 + + + + + 10.127851744241 + + MI_Restricted_Substances + a583e694-02c0-408e-9af4-6fbee856b58f + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 9260, oil quenched & + tempered at 650°C + + a71e7f88-dd9f-4bd5-97c5-ba0e454c8a86 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + + 25e57cf3-f067-4f6d-8227-81f597c51a51 + + Mass + 100.0 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + + 60c7a5c7-b458-4867-bc66-6a7b7cf161e4 + + MassRemoved + 51.182567910841 + + + + + 10.127851744241 + + MI_Restricted_Substances + 8ef69f01-44dd-4b96-ac5c-731bff7ceb6c + + Glass ceramic - 9606 + Glass ceramic - 9606 + ac8979df-ffa0-4867-92bd-4f50e905e723 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + + dc7fe693-f05f-4a56-a129-0f668f88f684 + + Mass + 100.0 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + + d3632ca9-6bb1-4658-a277-3ecec3de1232 + + Mass + 100.0 + + + + + 10.127851744241 + + MI_Restricted_Substances + a583e694-02c0-408e-9af4-6fbee856b58f + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 9260, oil quenched & + tempered at 650°C + + beaa77bc-aa95-48b4-a090-f8d2d782206a + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + + d42538b4-5ecd-43e4-8fe5-566b54d31b2f + + Mass + 100.0 + + + + + 10.127851744241 + + MI_Restricted_Substances + bac6ffd4-6d83-432c-90f4-de9606502589 + + Alkali barium glass + Alkali barium glass + c6e0f32c-d30b-482b-ae39-6a157d6c056b + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + + c199a1d4-2aa7-4696-b556-67be5a32877e + + Mass + 100.0 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + + 143e76aa-6810-4714-9c4b-0df021ee35c0 + + Mass + 100.0 + + + + + + + 8.0 + 56.751658514492 + bbcf0cb7 + part_bbcf0cb7-3799-419c-bb91-69efc6a773a2 + bbcf0cb7-3799-419c-bb91-69efc6a773a2 + + + 39.582895319714 + + MI_Restricted_Substances + ac1b4f23-a357-459b-bfeb-deabffbc7020 + + Oil quenched & tempered at 315°C + Carbon steel, AISI 1050, oil quenched & tempered + at 315°C + + 75e963b5-5092-420b-8f67-36bb94675137 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + + 25d88b7e-7987-4bcd-9d04-0a59ca932205 + + Length + 67.657515344981 + + + + + 12.083420936057 + + MI_Restricted_Substances + bfd46ac9-4021-49b6-9656-d1e426bd1c79 + + Oil quenched & tempered at 205°C + Carbon steel, AISI 1340, oil quenched & tempered + at 205°C + + cc19f7cb-4027-4c5e-a5db-2dd7a7559226 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + + d7ecc6bf-c407-41c3-8b1a-6ba1b26dd902 + + Area + 38.52274936555 + + + + + 12.083420936057 + + MI_Restricted_Substances + e06fc27c-5e39-4218-a5ca-6927af12a511 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 4140, oil quenched & + tempered at 205°C + + 9420bb2f-2d32-4cfe-a1f6-2ee9dc88147e + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + + 8baa897b-6b55-43c3-a1bf-76df9b858209 + + MassRemoved + 54.654524267955 + + + + + 12.083420936057 + + MI_Restricted_Substances + d53daeda-87b2-4ade-a7a2-1ebe84e7e3ef + + Annealed + Low alloy steel, AISI 5115, annealed + ba3706f1-d63d-4915-aaf4-64fbbb441514 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + + be2a3e2b-dc24-46df-b793-11fdbaf7a046 + + Mass + 100.0 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + + 8992ea99-439f-4945-8d59-7b1da55af53c + + Mass + 100.0 + + + + + 12.083420936057 + + MI_Restricted_Substances + 6ee51b17-7fe0-46fd-8e32-a71585a34000 + + 40-45% glass and mineral + PBT (40-45% glass and mineral) + c5e03d92-c8bb-4bd6-8807-22324b49bdd8 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + + ef746a79-0608-45eb-9625-1009cad3791e + + Mass + 100.0 + + + + + 12.083420936057 + + MI_Restricted_Substances + f8d1136f-3c1a-41e2-8b78-cf5f3965cba2 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 6150, oil quenched & + tempered at 205°C + + 66478372-76a4-407e-b812-4526b76fe9ef + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + + e6b23627-745a-46ec-849e-ddfb9fb69ff9 + + Mass + 100.0 + + + + + + + 3.0 + 47.096223126676 + f6fbbc6b + part_f6fbbc6b-42d8-4d0f-8b82-95595f7cfc97 + f6fbbc6b-42d8-4d0f-8b82-95595f7cfc97 + + + 11.825464205735 + + MI_Restricted_Substances + dec2859d-9573-49bd-846a-5e2a288c063f + + Soda barium glass + Soda barium glass + 8d38f1ad-6599-48e2-b23c-68fc43a64acf + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + + e4279d68-ed80-4c1b-bd24-575b9cceb825 + + Mass + 100.0 + + + + + 22.043633948566 + + MI_Restricted_Substances + dec2859d-9573-49bd-846a-5e2a288c063f + + Soda barium glass + Soda barium glass + f0390429-7c94-4cb2-9d6d-61f157e52841 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + + c6db4588-d5e0-4219-968b-eed84cd89885 + + Length + 4.217553839188 + + + + + 22.043633948566 + + MI_Restricted_Substances + 6f7c4754-84f7-46f0-873a-ec2e9f29e345 + + Glass/phenolic honeycomb, ±45° fabric (0.088) + + Glass/phenolic honeycomb, ±45° fabric (0.088), W + Direction + + 252842a8-fb2a-4c4f-8d28-41739c6318dc + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + + ec951dd2-d457-4e17-8988-b99dc3b2c87d + + Mass + 100.0 + + + + + 22.043633948566 + + MI_Restricted_Substances + c3e12411-ba5c-485f-b516-f489b95e8233 + + FR-4.1 (Df < 0.005 at 10GHz), Epoxy/Glass + fiber, PCB laminate + + FR-4.1 (Df < 0.005 at 10GHz), Epoxy/Glass fiber, + PCB laminate + + b39e6f9f-e41f-4cdd-b189-87298b42a606 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + + 789840db-daaa-4de1-b9a3-bc19836d8c37 + + Mass + 100.0 + + + + + 22.043633948566 + + MI_Restricted_Substances + 8245dc6c-3d61-4f18-82c8-6fb946e1582c + + Glass foam (0.13) + Glass foam (0.13) + a9e396af-a85b-416d-a610-0c044c88995e + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + + f55d8028-28c0-40be-80f8-3ca1f420e68b + + Mass + 100.0 + + + + + + + 6.0 + 55.608829974946 + 7d472c22 + part_7d472c22-d1df-40ef-a113-6c4122effb2e + 7d472c22-d1df-40ef-a113-6c4122effb2e + + + 74.368146841585 + + MI_Restricted_Substances + afc85ad6-9e99-44a7-a959-f75ddbacff15 + + FR-5, Epoxy/Glass fiber, PCB laminate + FR-5, Epoxy/Glass fiber, PCB laminate + 4bc44872-9a5d-495a-9caf-980d43e66b11 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + + 21ec7642-fe81-4c1c-a592-fabcaeff2b6b + + Mass + 4.40019215662 + + + + + 4.271975526402 + + MI_Restricted_Substances + 63d5d6b5-3b52-4cd9-a56f-6e7c5c945139 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 81B45, oil quenched & + tempered at 315°C + + 74879e4c-7f99-47b3-b943-54b7b54f6222 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + + 20c2c644-69b9-4aa2-a360-e60e64f749e6 + + Mass + 100.0 + + + + + 4.271975526402 + + MI_Restricted_Substances + 00268f25-08c7-4add-91f3-3cc4ed1d7e34 + + Oil quenched & tempered at 425°C + Carbon steel, AISI 1141, oil quenched & tempered + at 425°C + + d69c5639-1b8b-4737-907f-ed4d5be46e4d + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + + 7cec420e-96c3-4ebc-b0da-625f9feb724e + + Mass + 100.0 + + + + + 4.271975526402 + + MI_Restricted_Substances + 9c1918f9-aa9f-4078-93df-23539c8df8a8 + + Soda-lime - 0091 + Soda-lime - 0091 + 4fa78796-c5a9-46ca-86ce-f88f8a01b793 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + + d3fb1692-a0d2-4ed7-8e3b-4933bb09a70f + + Mass + 100.0 + + + + + 4.271975526402 + + MI_Restricted_Substances + 8349c912-772a-4fd7-90a5-7d52aa9c9448 + + Oil quenched & tempered at 425°C + Carbon steel, AISI 1137, oil quenched & tempered + at 425°C + + 1953f7e4-c39f-492a-a1b5-b6ed45c83f9a + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + + 91cc33c3-fc0c-480d-a407-b205ddbe1ea2 + + Area + 16.662223412032 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + + Vacuum assisted resin infusion (VARI) + + a6a67b54-a11a-4abe-b5b1-ea66d74709ca + + Mass + 100.0 + + + + + 4.271975526402 + + MI_Restricted_Substances + 9cae15c6-b5b6-4ab9-9008-d962bee0e662 + + Glass/phenolic honeycomb, 0°/90° fabric (0.128) + + Glass/phenolic honeycomb, 0°/90° fabric (0.128), L + Direction + + 9b7e2cfc-3307-431d-b34d-7003cac18824 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + + 73658f79-c750-4cd8-8eef-ee903cddc232 + + Mass + 10.390798426415 + + + + + 4.271975526402 + + MI_Restricted_Substances + a22f3160-83fe-4a55-8459-26e3f8647523 + + 55% glass and mineral filled + PARA (55% glass and mineral filled) + 950e232a-586e-4d42-9a1f-7b9733ef890a + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + + 1575dd40-f600-4bc4-a88a-c598678257de + + Area + 64.6812817383 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + + 929cc29c-e0e8-4022-b2a6-01a952031a69 + + Mass + 100.0 + + + + + + + 2.0 + 14.808066661845 + b1cb8514 + part_b1cb8514-070c-4d62-9ef5-4c49c90bc898 + b1cb8514-070c-4d62-9ef5-4c49c90bc898 + + + 97.051029278454 + + MI_Restricted_Substances + 8dbb57f2-b225-4f57-9a5a-c25a03292d6e + + Annealed + Low alloy steel, AISI 6150, annealed + 86c67d23-08be-4393-9d92-495098f61f07 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + + 80c605e4-edf1-4cd5-bf78-a206557fc22f + + Mass + 100.0 + + + + + 0.737242680386 + + MI_Restricted_Substances + a83cb894-badf-47de-8aff-fe75bbb39ecd + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 81B45, oil quenched & + tempered at 540°C + + 61cdd020-4268-4783-9885-d40cb0c8d22a + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + + a83e56d7-ae09-4e6f-924d-f26157e38358 + + Mass + 100.0 + + + + + 0.737242680386 + + MI_Restricted_Substances + ecee7ab4-461f-42e0-9b52-d03ea031201c + + Normalized + Carbon steel, AISI 1144, normalized + 06df061e-da0a-4d4c-9d3d-f6e18221e033 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + + eace4d01-c48e-4b1e-8e22-15225c63f9bf + + Area + 55.080296590495 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + + 41aaa4b3-1aaa-4dc8-9fa7-f19ff45a83ae + + Mass + 100.0 + + + + + 0.737242680386 + + MI_Restricted_Substances + 66ed26ec-15e8-47d9-a7dc-140271411c07 + + Quenched & tempered + Low alloy steel, AISI 4130, air melted, quenched & + tempered + + 45b2ca44-3955-48b5-8eac-b98cec5366f3 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + + 4513f058-b7a2-4702-aa6e-decfec920a1a + + Mass + 100.0 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + + a960eb1f-91b4-4d76-af51-3b97a0c3bf8c + + Mass + 39.232257026821 + + + + + 0.737242680386 + + MI_Restricted_Substances + af4f67b9-f5a7-4fc3-9f1d-da3309e4b19a + + Solution treated & aged + Iron-base-superalloy, Cr-Ni alloy, A-286, solution + treated & aged + + 1916a851-ca70-4761-a100-5a0fd2c7ee5d + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + + b3ac55f8-96d0-436e-bd89-27d480e45e0a + + Mass + 100.0 + + + + + + + 6.0 + 7.051080422034 + b6c22120 + part_b6c22120-5e85-4ed0-92c7-590b9eb9ac7a + b6c22120-5e85-4ed0-92c7-590b9eb9ac7a + + + 92.895007782101 + + MI_Restricted_Substances + 81ce98b3-d459-4695-9dd9-d53244be47ed + + Annealed + Carbon steel, SA216 (Type WCC), cast, annealed + 12376dff-8e97-4e2c-9f52-fcca2e966de3 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + + 5054c941-f1fc-4991-864b-06f9400d43ae + + Area + 43.140955894785 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + + aeb8805c-e856-4dcb-bbab-e379818c0478 + + Length + 35.583568054988 + + + + + 2.368330739299 + + MI_Restricted_Substances + 00fe5279-94a1-43fd-8b88-d83679a1bdce + + Normalized + Low alloy steel, AISI 8650, normalized + 94527534-0ff8-4ec1-aa02-5fd4dd86cbca + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + + 79ad3c95-21f4-429e-95e5-8dfa2f5be558 + + Mass + 100.0 + + + + + 2.368330739299 + + MI_Restricted_Substances + 2fca0cda-4548-4601-ade6-49478da1542f + + Potash soda lead glass - 0120 + Potash soda lead glass - 0120 + eef4536e-0d78-4abf-adbf-f27a06ee9cf7 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + + 0b44e966-c220-49a6-b05f-8644b6e5bdb5 + + Mass + 100.0 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + + fdeac97c-9a5b-41d0-baad-81336f423d96 + + Area + 77.518048313221 + + + + + 2.368330739299 + + MI_Restricted_Substances + 4ad00a9e-92b5-4e28-92a0-409da4495c54 + + Oil quenched & tempered at 205°C + Carbon steel, AISI 1060, oil quenched & tempered + at 205°C + + fafbc500-8dbb-4e8f-af0c-bfc59a8b2bb3 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + + 76bb9be2-bf69-4a02-8cb3-42b6d3246859 + + Length + 71.418723078173 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + + f6122a10-907d-4619-a69b-847a1fa3368f + + Mass + 100.0 + + + + + + + 3.0 + 13.140361995035 + + MI_Restricted_Substances + 0dedeb55-6f6f-42f9-b703-5225f1cab2fb + + f0a7ab1b + part_f0a7ab1b-d6f5-4f47-ad8e-12d3e43d65a5 + f0a7ab1b-d6f5-4f47-ad8e-12d3e43d65a5 + + + 3.0 + 41.464385502722 + 2c988253 + part_2c988253-cf8f-45cd-b7c4-cd4903dcd49c + 2c988253-cf8f-45cd-b7c4-cd4903dcd49c + + + 9.230083836815 + + MI_Restricted_Substances + 4cea2241-b602-4843-a983-45b33e64af05 + + YS600, cold rolled + Dual phase steel, YS600, cold rolled + 524819a4-baa5-40eb-b5a5-2e131ebfeeee + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + + e7708b91-0bf6-46c6-a0f5-a5915cce29ef + + Mass + 100.0 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + + Vacuum assisted resin infusion (VARI) + + 3c055067-1d8e-4d09-9eba-aabe150346f3 + + Mass + 100.0 + + + + + 30.256638721061 + + MI_Restricted_Substances + a89802d6-13c5-496d-b139-57ae43e6591c + + As rolled + Carbon steel, AISI 1022, as rolled + 953dc823-906a-4e1b-af55-24208c11831c + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + + 40b06799-47a2-4ac4-a84d-f17e31b3b432 + + Mass + 40.874037770961 + + + + + 30.256638721061 + + MI_Restricted_Substances + 59ed9004-2126-437f-aa61-b8a0189e69d3 + + Oil quenched & tempered at 650°C + Carbon steel, AISI 1095, oil quenched & tempered + at 650°C + + f496a5a7-129c-4e5d-9a3e-9be489e5d6b0 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + + bc3e2ee0-f497-4f79-ac4f-f2f0366a4837 + + Mass + 100.0 + + + + + 30.256638721061 + + MI_Restricted_Substances + 9e4a9338-5342-488e-ba70-770407c295f3 + + Oil quenched & tempered at 315°C + Carbon steel, AISI 1040, oil quenched & tempered + at 315°C + + 4d0995c4-f147-4654-acba-39954f9a5d93 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + + 378919a5-f10e-482c-b0bf-3a0f529ee29e + + Mass + 100.0 + + + + + + + 5.0 + 28.705036979496 + 4bf6e986 + part_4bf6e986-258f-4be2-975a-b61b454fd036 + 4bf6e986-258f-4be2-975a-b61b454fd036 + + + 89.111171192075 + + MI_Restricted_Substances + b22c05ba-b0f7-4e07-890d-c5066c0db098 + + 40% glass and mineral + PPA (40% glass and mineral) + d02fd096-bc39-4e63-8595-cabbda073d3f + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + + a8915a7a-54fe-4180-9b14-2cd502ef844a + + Mass + 100.0 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + + 5e09828c-7dc7-4c3d-a3de-81c97726afa3 + + Mass + 100.0 + + + + + 2.722207201981 + + MI_Restricted_Substances + aa4ba2ad-ff11-448b-90e3-477f9a5f41fb + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 5150, oil quenched & + tempered at 205°C + + 8919da4a-bff7-471b-92d4-6e480aedd51b + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + + 22a1af61-950f-4631-8e36-09b8b226cfcd + + MassRemoved + 76.78646700307 + + + + + 2.722207201981 + + MI_Restricted_Substances + 5b4ea232-c032-4f8d-a633-3b059e93651a + + 36%Co steel + Hard magnetic alloy, 36%Co steel + 937c119a-d8ab-4f2a-bfe6-527ed53f36e4 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + + b5585cab-ca53-42ae-893b-438529c3cc6b + + Mass + 100.0 + + + + + 2.722207201981 + + MI_Restricted_Substances + 508489f2-cc48-4f0a-a6ee-482bb89a0386 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 5160, oil quenched & + tempered at 205°C + + a772bd14-162d-4be6-8c68-3a6257195aa9 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + + Vacuum assisted resin infusion (VARI) + + 2d8ffac5-4ca4-43ff-b862-abe7c992dea2 + + Mass + 100.0 + + + + + 2.722207201981 + + MI_Restricted_Substances + 439e62b9-4268-44c6-a084-695412628448 + + water quenched & tempered at 425°C + Carbon steel, AISI 1095, water quenched & tempered + at 425°C + + 23ad95e3-9da9-4b3b-9a12-086d4e3782dc + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + + 79ab9f32-6fa4-4744-8404-a78e113343ca + + Mass + 100.0 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + + Vacuum assisted resin infusion (VARI) + + 0fb5239f-3ffd-4eff-b115-ae18c7b5476a + + Mass + 100.0 + + + + + + + 7.0 + 86.955840786432 + 8850405f + part_8850405f-1bc8-4ee1-9e75-adcb828b2794 + 8850405f-1bc8-4ee1-9e75-adcb828b2794 + + + 59.761244738363 + + MI_Restricted_Substances + b3c74dfc-9d72-4938-89cb-1a49ce0fdb80 + + Normalized + Carbon steel, AISI 1137, normalized + bef17b43-13e6-42d3-940e-9b453e4a92f6 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + + b7684e39-7e3b-4dab-98cd-c9fd75c80e82 + + Mass + 100.0 + + + + + 13.412918420545 + + MI_Restricted_Substances + c80cfa14-8e35-42c8-a52d-d52864a3e2ea + + water quenched & tempered at 315°C + Carbon steel, AISI 1137, water quenched & tempered + at 315°C + + 11476ef8-d73f-4799-9563-3adac3b7fcf0 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + + 1a829ca7-bbba-41e3-9e71-73e060cff916 + + Mass + 100.0 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + + 44697ca4-97e9-4840-9a94-831c57ced065 + + Mass + 100.0 + + + + + 13.412918420545 + + MI_Restricted_Substances + 9baf14a0-efff-4bce-9674-553db30bee1b + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 9255, oil quenched & + tempered at 650°C + + 070a8f49-a62c-48f5-8327-c2839138305a + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + + f859aad7-e597-4c0f-8ee3-dbf8db722210 + + Area + 56.935925575409 + + + + + 13.412918420545 + + MI_Restricted_Substances + d56a3593-45b4-418e-8f28-3fde55e8479f + + Homopolymer, 40% glass and mineral + PP (homopolymer, 40% glass and mineral) + a48ba86f-ca66-471e-99a7-11b96d16d089 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + + 928af391-7b14-4095-b310-7a0d4fb50d8b + + Mass + 100.0 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + + 94837ed6-4763-4188-bcb2-f9d76fec1148 + + Area + 93.143244317333 + + + + + + + 5.0 + 58.993422267489 + + MI_Restricted_Substances + a78dcd3a-f108-4fdb-857e-e2d00ed319d4 + + 09350fa0 + part_09350fa0-964d-456a-875c-2355638255a2 + 09350fa0-964d-456a-875c-2355638255a2 + + + 2.0 + 26.622188196807 + + MI_Restricted_Substances + 3d4d35cd-1db3-477c-8f3f-b90800ea1c4d + + 0d5094b9 + part_0d5094b9-448f-4311-96e4-6355b5ea980e + 0d5094b9-448f-4311-96e4-6355b5ea980e + + + 1.0 + 42.121123961229 + 1d364f95 + part_1d364f95-3b32-4f32-aed1-367c536a532f + 1d364f95-3b32-4f32-aed1-367c536a532f + + + 48.239205613843 + + MI_Restricted_Substances + 7c0b2792-bc51-4837-a380-6cdb1c2fba31 + + water quenched & tempered at 205°C + Carbon steel, AISI 1030, water quenched & tempered + at 205°C + + f8179b44-4bf0-491c-876d-0a6302555b8e + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + + ae31d735-5ef4-4561-bf00-7c41b089d9dd + + Mass + 100.0 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + + cc5b04e5-eddd-4572-abff-9cc328602f24 + + MassRemoved + 56.827286843595 + + + + + 6.470099298269 + + MI_Restricted_Substances + 6ad963b9-76ae-4d8e-be3b-12ec82c47054 + + Normalized + Carbon steel, AISI 1060, normalized + 1b3b78c7-840c-4991-945a-88510fccafa2 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + + 1a66aa79-8651-4c8e-9c86-a52ef36c31d5 + + Mass + 100.0 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + + d4f821e2-4a23-4cf2-8926-65786d7012f9 + + Length + 55.494785101849 + + + + + 6.470099298269 + + MI_Restricted_Substances + 3bed321b-712b-4769-ba8b-7297fb3569a7 + + Quenched & tempered + Low alloy steel, AISI 4340, quenched & tempered + + 33a3eff2-e1e4-4c21-8ac7-9a905e1e862e + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + + 20fe4340-06c7-41b8-81d6-ca1340e1c90a + + MassRemoved + 24.66429799081 + + + + + 6.470099298269 + + MI_Restricted_Substances + eb2b811b-1da6-465a-857f-6d14b372a38b + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 50B60, oil quenched & + tempered at 650°C + + 68c27c37-385d-499b-930c-b78158169706 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + + 3f7cff83-2617-42ca-8868-574296edf06c + + MassRemoved + 95.203585547955 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + + 0a3118ff-9aae-4571-8895-a58ba84e33c9 + + Length + 23.362058039457 + + + + + 6.470099298269 + + MI_Restricted_Substances + bbe0765c-012b-434e-878b-b40ad692b373 + + YS550, hot rolled + High strength low alloy steel, YS550, hot rolled + + c3492580-102d-4f91-8dfd-26db637181af + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + + 0c776f58-0051-4cb9-bb26-9be1e376bc3f + + Area + 45.541906378018 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + + 58f68306-3ccd-4ebf-b67f-0ae0f313ceec + + Length + 40.215967567738 + + + + + 6.470099298269 + + MI_Restricted_Substances + ee08f647-79af-49f3-98c5-043480a0fed4 + + Quenched & tempered + Low alloy steel, 4330V, quenched & tempered + 99290faa-a92c-4583-9b0d-32539e92b2d6 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + + d0100540-dda2-4a97-bd09-1427497475ed + + Length + 9.728546584829 + + + + + 6.470099298269 + + MI_Restricted_Substances + 356303d7-c574-4db7-80f9-427e176a5308 + + 40CrMoV13-9, quenched & tempered + Low alloy steel, 40CrMoV13-9, quenched & + tempered + + 74840c65-ae0a-441a-b6d8-05e21554527f + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + + 66e4f09a-f36b-4510-8f50-40a22c2eb3e7 + + Length + 43.417602844265 + + + + + 6.470099298269 + + MI_Restricted_Substances + bbe3f98a-e574-482b-99cc-74e13b224dd3 + + Normalized + Low alloy steel, AISI 5160, normalized + 4e5bd8ab-b97d-437f-ab80-0c5670286203 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + + 51a5107c-bc3c-47c7-b6b2-23d2c8dcacec + + Mass + 100.0 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + + 2c1e3bc7-75c6-4638-9130-f90efe2c2d5c + + Mass + 100.0 + + + + + 6.470099298269 + + MI_Restricted_Substances + 1b3f17f9-2754-4fc4-bfa2-75ff0df55185 + + Polytetrafluoroethylene (PTFE)/Glass fiber, PCB + laminate + + Polytetrafluoroethylene (PTFE)/Glass fiber, PCB + laminate + + 4bfe58f3-cbc1-453e-92e9-688613f20f8f + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + + c037fd34-47c3-445e-87e8-1c86512d3786 + + Mass + 100.0 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + + 3e213698-14d3-42a2-9989-af8aa3312172 + + Mass + 100.0 + + + + + + + 5.0 + 85.955296636538 + 7ec3a18c + part_7ec3a18c-ffff-439f-9305-d9748487b66a + 7ec3a18c-ffff-439f-9305-d9748487b66a + + + 33.465488456872 + + MI_Restricted_Substances + 9a48479a-292f-4bdd-aab5-0ad0835d7480 + + Oil quenched & tempered at 205°C + Carbon steel, AISI 1095, oil quenched & tempered + at 205°C + + 643411c0-010a-4d78-907b-49a80a3e41e3 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + + 7e66d1e3-6dba-410f-aa77-dc1022601c9c + + Area + 5.785553485986 + + + + + 13.306902308625 + + MI_Restricted_Substances + 5dbabc2e-4263-4458-abe1-31a2ece9e122 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 5160, oil quenched & + tempered at 425°C + + 4a10af13-f6ee-4995-8344-1ce2bad199ca + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + + 1a8fbc41-1827-4377-bb92-afb85abba9f9 + + Length + 69.058964759604 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + + 488d255d-4e2b-46af-9be2-a1ce70d1e17d + + Mass + 100.0 + + + + + 13.306902308625 + + MI_Restricted_Substances + ef0841e5-8fb9-46b4-aebb-deda5cb684ec + + SAE 8630, cast, quenched & tempered + Low alloy steel, SAE 8630, cast, quenched & + tempered + + 56a154cf-def2-47ce-ba1e-484564e1d13b + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + + 8935f69d-9e5d-4df9-8a90-62331e6f350c + + MassRemoved + 54.872865860756 + + + + + 13.306902308625 + + MI_Restricted_Substances + 87e1a3cd-fd79-4013-b5f8-56d6f28bef34 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1144, oil quenched & tempered + at 540°C + + 426844c2-8310-476f-9003-ddaa939ef946 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + + 42356d23-a1bc-4085-918b-bcbb85dac7ce + + Area + 52.543598111972 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + + 0be48a8b-c143-4f2c-bc8a-1758c2e59f2e + + Mass + 100.0 + + + + + 13.306902308625 + + MI_Restricted_Substances + a22f3160-83fe-4a55-8459-26e3f8647523 + + 55% glass and mineral filled + PARA (55% glass and mineral filled) + c0f5f88d-93d8-43a3-a832-ac7880083a80 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + + c53b58fa-c2ae-4d10-ab66-8ab56b237087 + + Mass + 100.0 + + + + + 13.306902308625 + + MI_Restricted_Substances + 90b2285b-4295-429d-beb8-90d9f5df0101 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 5046, oil quenched & + tempered at 315°C + + 0fa102a1-3015-4fd7-b13a-b44d6884f7b5 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + + 4d590157-848b-4d72-a031-b06cdb939687 + + Mass + 100.0 + + + + + + + + + 4.0 + 3.076370993198 + 70f8232a + part_70f8232a-26b1-483d-adaf-c07e456b7752 + 70f8232a-26b1-483d-adaf-c07e456b7752 + + + 55.761856239178 + + MI_Restricted_Substances + e8c6d73a-bd7a-4ef3-ae11-48e45d4a5515 + + Glass, E grade (0.4-12 micron monofilament, f) + Glass, E grade (0.4-12 micron monofilament, f) + b9ee7aab-1861-48b9-a1a2-1e4bdefc22ec + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 8d8d943a-0d46-40ba-bb6a-93f0a1dd920c + Mass + 100.0 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + e149f253-572a-4bc6-83d2-bf194e5708e1 + Mass + 100.0 + + + + + 8.847628752164 + + MI_Restricted_Substances + 5169a157-0d18-4d45-b197-799e06aa00bc + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 9255, oil quenched & tempered at + 315°C + + a3bb3af9-27e6-46ca-bb64-6a2a0623375e + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 3f5ff23d-4c89-4dab-8f73-bd7fd2175a77 + Mass + 100.0 + + + + + 8.847628752164 + + MI_Restricted_Substances + 6fa5237c-2f5c-4220-941e-b19cd18ec544 + + Normalized + Low alloy steel, AISI 6150, normalized + 21276669-329f-4952-91ad-c2f79f3ce717 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 7c6466b4-6d98-4968-9b81-d26df9d89279 + Length + 0.817750767254 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 373fe6b4-5498-48a5-8d41-e8b382c1feb0 + Mass + 100.0 + + + + + 8.847628752164 + + MI_Restricted_Substances + b1fc58b3-1acb-4c8b-9974-7c4692ec32d0 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 8650, oil quenched & tempered at + 650°C + + 6c87c1c2-8743-45ad-9362-0f5eeac27b1b + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + fe5fb621-4a55-4fcc-80f4-aadc5cfcb7e4 + MassRemoved + 1.948785223974 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + b6f0f8ac-a0d0-4381-88f3-1863b47446ca + Mass + 100.0 + + + + + 8.847628752164 + + MI_Restricted_Substances + d50ee383-7a44-463f-b42b-c38a6c6bb6d3 + + Oil quenched & tempered at 425°C + Carbon steel, AISI 1040, oil quenched & tempered at + 425°C + + 1e5cd8b2-d920-4941-8f4e-7b859656f987 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + 9b183e4f-7788-4a74-a9e0-805a3aa2c821 + Mass + 100.0 + + + + + 8.847628752164 + + MI_Restricted_Substances + 6ad310ec-db2b-43b1-afa1-9b6ddae5880c + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 94B30, oil quenched & tempered at + 425°C + + fcc06535-6584-46b3-85f4-06d2a1ca8b03 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + db527b24-9abe-4698-aae4-4a48e47960da + Mass + 100.0 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 7b80ef3d-93d3-4c79-a573-357a2a358a6b + Mass + 100.0 + + + + + + + 9.0 + 89.669350529866 + 195a024b + part_195a024b-3e4f-4b19-bbad-f089cd62b2bf + 195a024b-3e4f-4b19-bbad-f089cd62b2bf + + + 76.578830078513 + + MI_Restricted_Substances + 439e62b9-4268-44c6-a084-695412628448 + + water quenched & tempered at 425°C + Carbon steel, AISI 1095, water quenched & tempered at + 425°C + + 67b10f59-fbbc-4c3b-8944-0ef9570b59db + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 2d6d5a93-a89c-4d00-b5b8-db49fa9ebc05 + Mass + 100.0 + + + + + 4.684233984297 + + MI_Restricted_Substances + ee5b018e-8d7f-4fb1-bad0-c73e871592bc + + 16Mo3, normalized + Low alloy steel, 16Mo3, normalized + 32a07b48-d0be-45e3-8e51-0f34a1c5907e + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 784bc120-d206-407b-b38f-31adfa10df74 + Length + 35.619115752921 + + + + + 4.684233984297 + + MI_Restricted_Substances + d50ee383-7a44-463f-b42b-c38a6c6bb6d3 + + Oil quenched & tempered at 425°C + Carbon steel, AISI 1040, oil quenched & tempered at + 425°C + + e39e44b3-6e2f-4be5-ae25-ad420f1a6299 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 3ce2aaba-d58e-48ba-8e89-c26b8897924a + Mass + 100.0 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 9f669457-a33c-4f78-8bb6-1841e5c149d6 + Mass + 57.056501999989 + + + + + 4.684233984297 + + MI_Restricted_Substances + fef7ffc8-9e47-4d80-abd6-138167e14e08 + + Oil quenched & tempered at 650°C + Carbon steel, AISI 1141, oil quenched & tempered at + 650°C + + e66aee7e-347b-4988-9e0b-bfcdc3a83dbe + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 27c37fbc-313f-483d-8e63-f496eb533762 + Mass + 100.0 + + + + + 4.684233984297 + + MI_Restricted_Substances + ef0841e5-8fb9-46b4-aebb-deda5cb684ec + + SAE 8630, cast, quenched & tempered + Low alloy steel, SAE 8630, cast, quenched & tempered + + 7b7fb783-ed2c-4847-b99e-daeb6d988eda + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + c031e592-e0e0-4af9-8fc3-9de1734131b7 + Mass + 18.838563151116 + + + + + 4.684233984297 + + MI_Restricted_Substances + 30d9edb0-09d2-4270-b4f5-8dceb44a6bd6 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1137, oil quenched & tempered at + 540°C + + 20ee1902-c282-4a50-92f6-2c9eacb73737 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 7e9cba50-9b50-439e-b58a-a458daa1e0d9 + MassRemoved + 97.325158676749 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 5aa5f843-256e-4b4f-80aa-dd2b4e23e01a + MassRemoved + 3.297125503093 + + + + + + + 6.0 + 23.241366503406 + 14f0e1e4 + part_14f0e1e4-6765-4893-b03e-d2d1c17b8c71 + 14f0e1e4-6765-4893-b03e-d2d1c17b8c71 + + + 80.530636562281 + + MI_Restricted_Substances + 90514ab4-75b3-48a9-9a07-98eb8f83ef81 + + As rolled + Carbon steel, AISI 1015, as rolled + 8e890dd5-0db6-4029-9435-1419f60aaa4f + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + f503fe00-672f-4ab5-82f5-a2aa8e08a5f9 + Mass + 100.0 + + + + + 2.781337633959 + + MI_Restricted_Substances + d02817f7-7500-4fcb-8c34-40927da681a5 + + Quenched & tempered + Carbon steel, SA216 (Type WCC), cast, quenched & + tempered + + 514c71a8-0111-45cc-bdcc-522dee776a2d + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + f2e8ca05-a474-49f3-a82c-c093fe13ba1b + Mass + 100.0 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 3452d23d-9d95-4467-9863-c68df83acf57 + Mass + 100.0 + + + + + 2.781337633959 + + MI_Restricted_Substances + 2a840794-eac4-4f77-90ba-f84bce518c0f + + Glass/phenolic honeycomb, 0°/90° fabric (0.055) + Glass/phenolic honeycomb, 0°/90° fabric (0.055), L Direction + + bed81f2c-30e8-4eac-89b1-b4124a045c14 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + a8a45f5a-eead-4c40-b962-b6f711d06505 + Mass + 100.0 + + + + + 2.781337633959 + + MI_Restricted_Substances + 853c3077-4ccc-4b2e-a5dd-86833072391f + + Borosilicate - 7040 + Borosilicate - 7040 + 225f24ae-df65-45e5-8d8a-1a0f2838f5e9 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 6ebce5ce-d522-424a-9f65-be0123e5b12c + Mass + 100.0 + + + + + 2.781337633959 + + MI_Restricted_Substances + db238d75-fcb8-41f5-9289-83a352fa83a6 + + Annealed + Carbon steel, AISI 1015, annealed + b062ad8c-661d-447d-9ae2-5cc335062018 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 7160180b-1ce7-4223-b42c-2ba3efd257a9 + Mass + 100.0 + + + + + 2.781337633959 + + MI_Restricted_Substances + fc29cc59-a670-4ad6-85a0-eb07bf011f1a + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 6150, oil quenched & tempered at + 425°C + + 79c6cff6-2005-4f5e-9970-4ecdabcdba03 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 7fa9eff0-d7d6-4027-8ae5-e9553d3961dc + Mass + 100.0 + + + + + 2.781337633959 + + MI_Restricted_Substances + 9966da3f-c3f0-414e-9bce-4211a9eca2c3 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 8650, oil quenched & tempered at + 425°C + + 432ed0ab-8b6f-4207-855c-18fee527464a + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + c741e169-ad19-4998-9a3d-5b145647b204 + Mass + 100.0 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 47b4f5f2-84cd-4710-af7b-781e8cbb2468 + Mass + 100.0 + + + + + 2.781337633959 + + MI_Restricted_Substances + 644fc87d-87f3-468c-9a88-b8e2db43ae6b + + water quenched & tempered at 650°C + Low alloy steel, AISI 4130, water quenched & tempered at + 650°C + + 183ed598-d9ff-459c-9384-b0d45dd21779 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + a030dd08-4257-44c8-b5bc-ae9bc3d431ca + Mass + 100.0 + + + + + + + 9.0 + 32.967550322864 + + MI_Restricted_Substances + d89d67b6-c08f-47cb-b03a-4203cebfdf32 + + 00221385.0 + part_00221385-b3a7-46f9-aebd-3087369e83b7 + 00221385-b3a7-46f9-aebd-3087369e83b7 + + + 6.0 + 21.742705498702 + 6c5f74ba + part_6c5f74ba-0b4a-4905-96ff-2ca89616bb58 + 6c5f74ba-0b4a-4905-96ff-2ca89616bb58 + + + 100.0 + + MI_Restricted_Substances + ddefbfb8-3b97-480b-887d-0ddadf161d95 + + YS350, cold rolled + High strength low alloy steel, YS350, cold rolled + d1fbfd45-2c54-40a3-bc7d-de35f6f526c6 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 49ae8788-cf29-4a3f-a545-16d8ae62529a + Area + 28.950212769652 + + + + + + + 9.0 + 75.268144381823 + e0926bb0 + part_e0926bb0-dc65-4c45-9456-7801829e6348 + e0926bb0-dc65-4c45-9456-7801829e6348 + + + 8.029567593722 + + MI_Restricted_Substances + 29b76cdc-672e-4a1f-8f6e-a5644857c880 + + Normalized + Low alloy steel, AISI 4135, normalized + 0625ef7f-e6ef-4910-9974-14d8e7ffbf87 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + 567d9e98-4502-4648-b8b3-ef082fc0e233 + Length + 55.245141896999 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 424ee1ae-6beb-4d22-b51e-e53b6159a395 + Length + 65.763432004378 + + + + + 91.970432406277 + + MI_Restricted_Substances + 7b330562-a44d-4de7-8944-99c0b7b0d3e1 + + Quenched & tempered + Low alloy steel, AISI 8630, air melted, quenched & + tempered + + ee66e643-60b1-4a36-b83e-c56f8a3ac3b2 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 361bf8c7-4339-43e9-870e-3f0320c7f1ea + Mass + 100.0 + + + + + + + 4.0 + 25.96684085483 + + MI_Restricted_Substances + a0987114-e9d2-4390-9d0f-e47283d2f4d0 + + f45dac5d + part_f45dac5d-02aa-4f5f-bfa7-35598d01e8f9 + f45dac5d-02aa-4f5f-bfa7-35598d01e8f9 + + + 1.0 + 65.162508639117 + + MI_Restricted_Substances + 80083213-3621-42c0-9e23-cdaa30c759e6 + + 24a1ba54 + part_24a1ba54-01ac-4d58-936c-e842059a983c + 24a1ba54-01ac-4d58-936c-e842059a983c + + + 7.0 + 53.298955947765 + b780524b + part_b780524b-e786-4e66-be8b-6fbbafc3f87a + b780524b-e786-4e66-be8b-6fbbafc3f87a + + + 92.576923776686 + + MI_Restricted_Substances + 475d8bcb-500e-44b5-90be-8a095f5ab07a + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 4140, oil quenched & tempered at + 425°C + + 9d572329-af29-4a6d-ac29-60fa58766512 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 0a91caa4-8765-4ece-b073-d8f1f6ab1cb1 + Mass + 100.0 + + + + + 3.711538111656 + + MI_Restricted_Substances + 1556b3f0-3dc4-44ab-83b2-87712f9bfa12 + + Oil quenched & tempered at 650°C + Carbon steel, AISI 1080, oil quenched & tempered at + 650°C + + cf52a155-53ef-451c-8360-0d869f854d6e + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + a6929cda-f7db-4523-ac1f-1ddbb79f43a2 + Mass + 100.0 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 05e0caa4-c084-44cd-be3b-4843a77b771e + Mass + 100.0 + + + + + 3.711538111656 + + MI_Restricted_Substances + b10ab099-72fd-4e47-9274-015a08f619c2 + + Annealed + Low alloy steel, AISI 5160, annealed + de9272d8-4023-4cff-ade0-8b878a046467 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 8f56072b-43c9-400b-8c5b-e67d98543ea7 + Mass + 100.0 + + + + + + + 8.0 + 89.323968900984 + e32026d2 + part_e32026d2-7426-453f-9f94-00e6a7129fb9 + e32026d2-7426-453f-9f94-00e6a7129fb9 + + + 63.923723187262 + + MI_Restricted_Substances + a7ada434-62e4-411d-9c85-56dd9d44f094 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 4037, oil quenched & tempered at + 425°C + + 1591d1c1-f69a-4920-b545-e756b25efa02 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + b4d92019-dff1-4dd2-983f-4245e08b6729 + MassRemoved + 15.28163995374 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 141a817e-ba3d-48a5-a2a1-6b2aeb1dd775 + MassRemoved + 97.204909938017 + + + + + 18.038138406368 + + MI_Restricted_Substances + 1a53b354-59b1-4129-a78d-0bfe95923541 + + Normalized + Carbon steel, AISI 1117, normalized + 54a22a08-9d3d-41be-a178-7bfea1c0def2 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + a580dffc-d62a-4f65-8eca-1a96dc2bab28 + Mass + 100.0 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 65585d20-e1c8-4fc2-adb5-23241e9f0c2c + MassRemoved + 75.326681684389 + + + + + 18.038138406368 + + MI_Restricted_Substances + af4f67b9-f5a7-4fc3-9f1d-da3309e4b19a + + Solution treated & aged + Iron-base-superalloy, Cr-Ni alloy, A-286, solution treated + & aged + + f7524499-f199-4c35-acee-8b946572cba5 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + 340f4f86-69e5-4f05-8788-2b0869a01cd2 + Area + 12.006861675533 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + 6fef669b-ccb3-43cf-9954-02254a164867 + Mass + 100.0 + + + + + + + 3.0 + 38.096549659081 + e9e99fb0 + part_e9e99fb0-50c3-47a8-adb5-23809d70c70d + e9e99fb0-50c3-47a8-adb5-23809d70c70d + + + 87.232606991768 + + MI_Restricted_Substances + ca72e2f5-a1d0-4bb0-b612-ed5bc26a4f70 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 9255, oil quenched & tempered at + 205°C + + 47e5ed4b-71bd-44d3-b97d-2a1dbe69dfcc + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + e0ef29af-af9e-4bd7-944e-f5b0b133a5a0 + Mass + 100.0 + + + + + 1.82391328689 + + MI_Restricted_Substances + ce68d49d-fe57-4723-8f98-557cd3558504 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 5130, oil quenched & tempered at + 205°C + + e618c697-f36c-4e11-84d4-e85497c3688c + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 7e30a310-fa69-4545-ab39-35fc44b41dcd + Mass + 100.0 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + 8797b082-90f7-4d9e-8019-de8abe847279 + Mass + 100.0 + + + + + 1.82391328689 + + MI_Restricted_Substances + a8bcc71d-ff19-40c8-9520-f11553c604d2 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 5140, oil quenched & tempered at + 650°C + + c94214b9-09c7-4c4f-b9c4-afe7d09b77e1 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 874b120c-0b48-493a-b02d-e92c3b98d73b + Mass + 100.0 + + + + + 1.82391328689 + + MI_Restricted_Substances + 63d5d6b5-3b52-4cd9-a56f-6e7c5c945139 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 81B45, oil quenched & tempered at + 315°C + + e2fe75b0-1acc-4f11-a21b-311175a51273 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + c568c62a-1fec-4afc-b7de-314cd0c0d04a + Area + 57.159808816928 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 30220a65-a1b4-4785-b503-01ba788bc54c + Mass + 100.0 + + + + + 1.82391328689 + + MI_Restricted_Substances + 00268f25-08c7-4add-91f3-3cc4ed1d7e34 + + Oil quenched & tempered at 425°C + Carbon steel, AISI 1141, oil quenched & tempered at + 425°C + + 7270e0db-6963-46f6-aa14-2d3bf76e8e14 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + f85671b9-370d-4034-bc4f-91e9b2645d55 + Mass + 100.0 + + + + + 1.82391328689 + + MI_Restricted_Substances + 31098687-aa58-4d56-99a0-f005a0258573 + + Glass/phenolic honeycomb, 0°/90° fabric (0.192) + Glass/phenolic honeycomb, 0°/90° fabric (0.192), L Direction + + 458fc706-f4c8-4840-bc3b-a6e5de550e85 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + c838b879-07b5-4680-9e88-603b597a4539 + Mass + 100.0 + + + + + 1.82391328689 + + MI_Restricted_Substances + d7980de6-355d-48d2-93d7-471e3ef3b2cf + + Glass/phenolic honeycomb, ±45° fabric (0.032) + Glass/phenolic honeycomb, ±45° fabric (0.032), L Direction + + 844def21-3a0f-425a-8e15-cf610855ec9e + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 62e6ab6e-6064-4c9c-ba09-ae7d2b2e3592 + Mass + 100.0 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 34028294-f961-400d-953c-7f2540574fe2 + Length + 76.691116195493 + + + + + 1.82391328689 + + MI_Restricted_Substances + b4c065d7-6405-44fb-82cf-24ca2072f5c9 + + 300M (high carbon), quenched & tempered + Low alloy steel, 300M (high carbon), quenched & tempered + + f1e42820-36e3-45dc-8a88-377a62883605 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 574de17d-5db5-4608-a946-68638b80c028 + Mass + 100.0 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 0506eeaf-1da0-44f5-9afa-4c873de9c3e6 + Length + 27.848751157451 + + + + + + + 5.0 + 11.748979292693 + 3e10fad4 + part_3e10fad4-becd-452d-847f-d3d359bca87f + 3e10fad4-becd-452d-847f-d3d359bca87f + + + 90.280809668023 + + MI_Restricted_Substances + 9d224642-fb07-41ce-8191-c9b152122364 + + Quenched & tempered + Intermediate alloy, Fe-9Ni-4Co-0.30C steel, quenched & + tempered + + f4e5f17e-5646-404e-8cad-9fb8b98b4b1f + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + b2f45626-87b6-4f1b-b78e-7fe6cd1b992b + Mass + 100.0 + + + + + 3.239730110658 + + MI_Restricted_Substances + 8dc38bb5-eff9-4c60-9233-271a3c8f6270 + + Kovar, annealed + High alloy steel, Kovar, annealed + 19f5d901-382d-4eb3-a83e-a22dc1973b31 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + b80711d1-5204-4ad6-8a75-c7faf5917347 + Length + 31.375387511856 + + + + + 3.239730110658 + + MI_Restricted_Substances + 1d9c8629-4a1d-4aaf-bb7c-ba7a97eef5f5 + + Normalized + Carbon steel, AISI 1340, normalized + e1c1b24a-48a4-4be7-8924-fd96253f0c4f + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 897bd7db-049a-4516-8474-7114d5eb7c5b + Mass + 100.0 + + + + + 3.239730110658 + + MI_Restricted_Substances + b35cf8d2-52a2-4761-b692-efabffabb0a6 + + As rolled + Carbon steel, AISI 12L14, as rolled + b4fc954b-520d-40b3-a2ef-6129530dc340 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 3e166ff8-b82b-45fc-bc26-05adf6858d0c + Mass + 100.0 + + + + + + + 4.0 + 18.434632624701 + a493414a + part_a493414a-2c8e-457d-9c57-94cadceaacd5 + a493414a-2c8e-457d-9c57-94cadceaacd5 + + + 21.460491847926 + + MI_Restricted_Substances + a01be0be-96e7-4123-b061-dfdbba1f1748 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 4037, oil quenched & tempered at + 315°C + + 6f490b8a-1bb1-4ed9-9273-2535d138e992 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + fb0c9722-d432-4d8e-8b46-eeb9a90400ae + Mass + 100.0 + + + + + 39.269754076036 + + MI_Restricted_Substances + db7d255c-6269-4097-a5aa-e18a13019915 + + FR-4.0 (Df < 0.01 at 10GHz), Epoxy/Glass fiber, PCB + laminate + + FR-4.0 (Df < 0.01 at 10GHz), Epoxy/Glass fiber, PCB + laminate + + 6205bae6-cadd-45e7-aba1-c3f660389d5c + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 4c328ecd-d9fb-45aa-bff7-f8f8563c873c + Mass + 100.0 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 0da2f37f-a727-4c85-ac8e-52bde6211587 + Mass + 100.0 + + + + + 39.269754076036 + + MI_Restricted_Substances + f65c5c4d-fbd1-4a54-8172-d3aba34c4c3a + + Annealed + Low alloy steel, AISI 4340, annealed + a1d20d36-f931-429d-a4f7-9a53c6acfd09 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 210b2098-6b44-467e-bb47-1f6d51c42e8b + Mass + 100.0 + + + + + + + 5.0 + 63.519481505974 + b74fe856 + part_b74fe856-1cfa-4217-a3ac-a311a27d7aa9 + b74fe856-1cfa-4217-a3ac-a311a27d7aa9 + + + 94.424766904872 + + MI_Restricted_Substances + 3e7feb56-09b4-498c-9966-c13b33dedccd + + water quenched & tempered at 205°C + Carbon steel, AISI 1137, water quenched & tempered at + 205°C + + fdc736a6-eeed-4531-b299-b3286941f188 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + 49206114-ba04-4d29-9247-c0a62fb3da8b + Mass + 100.0 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + be9698e6-9653-4c5d-a642-b120dd4d8fc2 + Mass + 100.0 + + + + + 1.858411031709 + + MI_Restricted_Substances + f65c5c4d-fbd1-4a54-8172-d3aba34c4c3a + + Annealed + Low alloy steel, AISI 4340, annealed + afa33e0e-ea40-434d-9e1e-e027575a3962 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + e8633a1f-f4b1-4273-86a1-c1abfaa2169b + Mass + 100.0 + + + + + 1.858411031709 + + MI_Restricted_Substances + 6d658600-d198-46ed-bcca-cd0e3e2f5f4d + + Oil quenched & tempered at 425°C + Carbon steel, AISI 1060, oil quenched & tempered at + 425°C + + fd950d24-e9d5-49ba-88b2-2eab4f6676fc + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 5200ca4d-b9a1-4b75-b110-d3e6bbcfc2e9 + Mass + 100.0 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 0c8c7d8c-abef-45ba-b45d-9d46600da479 + Area + 4.663237698685 + + + + + 1.858411031709 + + MI_Restricted_Substances + aec2777b-f126-4f12-b748-b94bf7393f2a + + Oil quenched & tempered at 650°C + Carbon steel, AISI 1060, oil quenched & tempered at + 650°C + + 79efa484-5232-4d43-89cc-4df07b2f7710 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + f2b9be9c-065a-4cb7-bb3a-91d15c0da6a2 + Mass + 100.0 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 59d4441e-0d49-454f-8792-5ed9e1077e55 + Mass + 100.0 + + + + + + + 4.0 + 77.08067888258 + e4846aaa + part_e4846aaa-7030-44d8-86a2-6d16f9870dfe + e4846aaa-7030-44d8-86a2-6d16f9870dfe + + + 22.162508648895 + + MI_Restricted_Substances + 5dbabc2e-4263-4458-abe1-31a2ece9e122 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 5160, oil quenched & tempered at + 425°C + + a85e8b0c-629b-492f-9e8f-b722a47356bb + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 468a3b3e-a3a3-4eb3-b340-f061f8c02506 + Area + 97.576662151877 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 29b6840a-3421-4551-a038-0d4c71805cb8 + MassRemoved + 31.978028655041 + + + + + 15.56749827022 + + MI_Restricted_Substances + 9d224642-fb07-41ce-8191-c9b152122364 + + Quenched & tempered + Intermediate alloy, Fe-9Ni-4Co-0.30C steel, quenched & + tempered + + 4d3f486c-0f70-4522-9fbe-098b92bb9fbd + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + a54b7ead-0c88-4e24-9b62-d62c7fff051f + Mass + 100.0 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 5c11af00-f631-4998-ba25-9f61da956951 + Mass + 100.0 + + + + + 15.56749827022 + + MI_Restricted_Substances + 3427457c-2b3d-4a7e-adbc-40fddd4c1f0e + + Normalized + Carbon steel, AISI 1020, normalized + d8bb7304-72ad-4659-a203-bb9538a5f4c2 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 4c4b4778-7bc0-4218-a370-1e68bd6124d9 + MassRemoved + 22.082696818785 + + + + + 15.56749827022 + + MI_Restricted_Substances + ddefbfb8-3b97-480b-887d-0ddadf161d95 + + YS350, cold rolled + High strength low alloy steel, YS350, cold rolled + d97b1f11-dbd3-4d5b-adc3-7a341c0102e2 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 47bbacde-0746-4420-bcb2-0868ce452618 + Mass + 100.0 + + + + + 15.56749827022 + + MI_Restricted_Substances + b0c0246d-7238-46e4-9081-5bad34efbbdb + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 5140, oil quenched & tempered at + 205°C + + 6286beb2-d177-41cb-ba24-9907a04f02f7 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + eeae8e7f-b263-4993-bace-18b73e205c15 + Mass + 100.0 + + + + + 15.56749827022 + + MI_Restricted_Substances + 0c172430-369d-48ad-910e-69fe1451a36e + + Normalized + Carbon steel, AISI 1095, normalized + a73f6675-eaa3-4004-9b77-6c49339c9ff3 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + e81a0263-0def-4aea-a0d6-e90ab2aa8b88 + Mass + 100.0 + + + + + + + 8.0 + 81.068579610934 + + MI_Restricted_Substances + 2c677abc-5da2-4b21-9ce7-1d4e1cc0fb1c + + b5bf3503 + part_b5bf3503-c2cb-4a72-9c0f-7376cb2517d4 + b5bf3503-c2cb-4a72-9c0f-7376cb2517d4 + + + 3.0 + 15.700913181389 + 8210398c + part_8210398c-aaf0-43f7-a5ff-df80e79cf3ee + 8210398c-aaf0-43f7-a5ff-df80e79cf3ee + + + 69.632973461241 + + MI_Restricted_Substances + 546a4247-5e3b-4adb-bc7e-3fc87f992447 + + Glass/phenolic honeycomb, 0°/90° fabric (0.055) + Glass/phenolic honeycomb, 0°/90° fabric (0.055), W Direction + + 44a3e2c7-4127-4455-8f81-cde7273288ee + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 77287849-ec77-4920-b347-7256e0fafd43 + Mass + 100.0 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 5595bcbe-fef5-422e-81b1-22d819f4917e + Mass + 100.0 + + + + + 3.795878317344 + + MI_Restricted_Substances + 4b01d1e1-0f4c-4861-a797-7ea504ca38c4 + + Annealed + Low alloy steel, AISI 5150, annealed + 0cbaebc3-d894-4c2c-a8b7-fe3550381f20 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 08103bd5-a39d-4af5-9831-86999d865808 + Mass + 100.0 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + a8f6049b-2e2c-4238-b19a-d60b2fe5cbea + Mass + 100.0 + + + + + 3.795878317344 + + MI_Restricted_Substances + 6f9ce415-05a1-4774-bf1d-8952ab0f7306 + + Annealed + Low alloy steel, AISI 3140, annealed + b0d2f6dc-8f7c-4edc-b53f-1b3e2483b7eb + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 1b54f288-298c-4025-834a-c8f51d922266 + Area + 48.800121363624 + + + + + 3.795878317344 + + MI_Restricted_Substances + 75a1c963-399c-444d-a38f-1929c00d15b7 + + Normalized + Low alloy steel, AISI 4150, normalized + 6de439af-fed7-4b77-973f-6ea42f142d38 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + a802bf5c-7424-4c38-82ee-265472c023c5 + Mass + 100.0 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + b84fda56-2306-4a38-96bd-24cce1cc5d42 + Mass + 100.0 + + + + + 3.795878317344 + + MI_Restricted_Substances + c2db0402-57c5-422f-b8c1-470fc9c6a9c8 + + Glass/phenolic honeycomb, 0°/90° fabric (0.112) + Glass/phenolic honeycomb, 0°/90° fabric (0.112), W Direction + + ecb55168-b41b-43ca-9618-4429d50c25eb + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 469406a2-91cb-4ab4-b28a-c67acccb0730 + Mass + 100.0 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 8a073186-2e0a-4fe8-9785-facda396fce6 + Area + 11.150030517554 + + + + + 3.795878317344 + + MI_Restricted_Substances + f931cdfe-568b-40b5-b238-ea22a815f312 + + ASTM A537 Class 1, normalized + Structural steel, ASTM A537 Class 1, normalized + 9adb933b-500f-4d0d-b6a8-36e2d08596a6 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + e4ec61b6-3156-44e2-b462-3b57835e8327 + MassRemoved + 7.836389778105 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + bc141ac6-6115-40a5-a0a9-188282d60cd2 + Mass + 100.0 + + + + + 3.795878317344 + + MI_Restricted_Substances + 04970b9b-7242-4f31-9a78-dee5e31ed341 + + As rolled + Carbon steel, AISI 1030, as rolled + 088be378-469c-495e-9909-523886534fef + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 21d7fd53-6d96-42d6-84e1-abb6c2c4e829 + Mass + 10.230569779048 + + + + + 3.795878317344 + + MI_Restricted_Substances + 1a90238a-48c1-429a-83fc-e88d2c04dd94 + + Normalized + Low alloy steel, AISI 4140, normalized + 5048e052-f782-4b3a-b448-7bd7f648ea89 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + e170480f-259c-4407-a309-b0ea170503e1 + Mass + 100.0 + + + + + 3.795878317344 + + MI_Restricted_Substances + 79e715fe-fa1c-4bd9-9c99-83e41d74d87d + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 8630, oil quenched & tempered at + 650°C + + ed498724-7704-41fb-b943-86037c9ed2bb + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 02e846ea-584c-4a29-a82e-9067a7f01c9d + Area + 73.96861280965 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + e46e3ef9-69c9-44a0-bce9-87b1a96ceb91 + Mass + 100.0 + + + + + + + 3.0 + 65.04590705272 + a457a7d2 + part_a457a7d2-a39c-4699-b2c4-cbc0fbaef423 + a457a7d2-a39c-4699-b2c4-cbc0fbaef423 + + + 89.822766925125 + + MI_Restricted_Substances + 9c05e644-9257-4778-9c68-be0cff6f58b5 + + Annealed + Low alloy steel, AISI 8620, annealed + 94841a1a-6b1f-4db6-89c7-16a566c68bb2 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 7b18f2a9-1949-42ad-9001-8f14be8f579b + Mass + 100.0 + + + + + 2.544308268718 + + MI_Restricted_Substances + df40828d-d5c3-4a43-9f00-5de867f4f406 + + Normalized + Low alloy steel, AISI 4320, normalized + c5185d73-1569-4b14-a7f9-fdf4ff504f2b + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 8f29bf51-4fa8-4e4f-bb35-c49d08a40800 + Mass + 100.0 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + a15f246e-0d91-4685-9f92-365acfcd9c75 + Mass + 100.0 + + + + + 2.544308268718 + + MI_Restricted_Substances + ef4e19ac-4c9c-4fc1-b971-3ce21de330a2 + + Glass/polyimide honeycomb, ±45° fabric (0.128) + Glass/polyimide honeycomb, ±45° fabric (0.128), W Direction + + 1605cb26-7283-4069-a6ac-a5dade1e63ae + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + b5855ad8-769a-40f5-8bba-1ee6824f19a3 + Mass + 100.0 + + + + + 2.544308268718 + + MI_Restricted_Substances + a6ee4feb-80c5-43a7-b3ee-a1423218f502 + + AF1410 + High alloy steel, AF1410, solution treated & overaged + + 671a69d9-6c2b-409c-8196-30e3e97636d1 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 461f3020-5fe4-4eeb-a2ac-359a8eea06a1 + Mass + 100.0 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 75de2e44-2518-4212-b68b-cd5f68eb0842 + Mass + 100.0 + + + + + 2.544308268718 + + MI_Restricted_Substances + 33160988-8422-40e2-93d1-e3e7467eafe9 + + Normalized + Carbon steel, AISI 1030, normalized + 65ec1327-8d01-4d68-a55c-a5f04b293114 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 4d03e670-e7b0-4ca6-8f6f-509eb916e02a + Mass + 100.0 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 5d9e5486-9b0c-460d-8224-e9c25d8a2b17 + Mass + 100.0 + + + + + + + 9.0 + 95.032587971087 + c931aa13 + part_c931aa13-732d-4318-bed3-68ce005aee06 + c931aa13-732d-4318-bed3-68ce005aee06 + + + 16.335706839494 + + MI_Restricted_Substances + b869cbb1-f68c-4d4a-ba09-c5ac060f1e31 + + Normalized + Low alloy steel, AISI 4620, normalized + ff67b556-303c-40af-a97f-17331d556521 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + ee824d43-d43c-4944-a23f-5a21aab9e2ca + MassRemoved + 19.787212749844 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 07ea8c41-6dc7-427b-929a-e9c0956b9886 + Mass + 100.0 + + + + + 13.944048860084 + + MI_Restricted_Substances + aa963e30-fca0-439d-bee2-ff48daa946f3 + + As rolled + Carbon steel, AISI 1095, as rolled + 8016f162-1c68-443a-b881-717f1e33eda2 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + 2d8fc038-9b33-406e-91f0-54703ecdfe0f + Mass + 100.0 + + + + + 13.944048860084 + + MI_Restricted_Substances + 7a62318a-eff2-4f36-9925-ee919c5b4369 + + S235J + Structural steel, S235J + ccd91f23-7ae8-4927-be26-8bebe007d4e3 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + aa58fc1a-fd0d-402f-848b-01fe8c32e24f + Mass + 100.0 + + + + + 13.944048860084 + + MI_Restricted_Substances + 3b818b25-e6de-4e5c-b546-e97c68e10225 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 5046, oil quenched & tempered at + 650°C + + 43af60f5-260b-44d2-92a1-87f7febe4590 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + e441cf67-84b9-4aa5-9ffa-b4bbd7081a53 + Mass + 100.0 + + + + + 13.944048860084 + + MI_Restricted_Substances + c372db87-c3ae-4ef1-a9e5-defa1160f895 + + Glass/phenolic honeycomb, 0°/90° fabric (0.112) + Glass/phenolic honeycomb, 0°/90° fabric (0.112), L Direction + + e95ea201-68e6-41af-80fd-7d9a92ae3f6d + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + c2368517-a0cf-417c-b548-107832a0178e + MassRemoved + 7.371408309494 + + + + + 13.944048860084 + + MI_Restricted_Substances + 3e7feb56-09b4-498c-9966-c13b33dedccd + + water quenched & tempered at 205°C + Carbon steel, AISI 1137, water quenched & tempered at + 205°C + + 87ec12a7-8cdd-4174-90ae-31a82bfce945 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + bb565928-1afb-49e8-8d4d-ee54fa3bd189 + Mass + 100.0 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + a889bc2d-0015-4165-a4fb-e5d1d837966f + Length + 15.515472188366 + + + + + 13.944048860084 + + MI_Restricted_Substances + 0840d007-df07-4e12-bda5-bfc060fb15e6 + + Annealed + Low alloy steel, AISI 4320, annealed + e94f9a80-5706-448a-846d-d6055c096ce5 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 5a324b5b-9b75-422b-badd-c6f6addc1fdd + Mass + 100.0 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 6456b4f8-63df-4346-b43a-d5904364e259 + Mass + 100.0 + + + + + + + 8.0 + 41.166951945594 + + MI_Restricted_Substances + 3d4d35cd-1db3-477c-8f3f-b90800ea1c4d + + d98fa79d + part_d98fa79d-9a65-4010-8c95-627aef9463a7 + d98fa79d-9a65-4010-8c95-627aef9463a7 + + + 9.0 + 45.09621748938 + 4c6fcfd8 + part_4c6fcfd8-27aa-418b-bc49-d1829aac31f2 + 4c6fcfd8-27aa-418b-bc49-d1829aac31f2 + + + 33.186481629119 + + MI_Restricted_Substances + d7980de6-355d-48d2-93d7-471e3ef3b2cf + + Glass/phenolic honeycomb, ±45° fabric (0.032) + Glass/phenolic honeycomb, ±45° fabric (0.032), L Direction + + b921b8b4-2c86-4bee-a0b7-c67d943ab3e9 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + baa7ae9f-bf5f-4b8d-b3da-a2eb6dabbffb + Mass + 77.401227959152 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 8ccf56ed-6624-4eeb-a014-3496d03c4eea + Mass + 39.094396838496 + + + + + 9.544788338697 + + MI_Restricted_Substances + ab895171-8c16-4056-9062-78f7516be1b0 + + Borosilicate - 7050 + Borosilicate - 7050 + ca2ea373-9e27-4b69-aef4-519281dce6c9 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + f4f5493c-af77-431e-84b8-dc5839542adc + Area + 57.213367594971 + + + + + 9.544788338697 + + MI_Restricted_Substances + 53268754-75cd-4016-8ed0-2577d32f766e + + As rolled + Carbon steel, AISI 1060, as rolled + 100eb4bb-59fd-4daf-8719-c5616d4e2aa5 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 4687d55a-1e3d-4a18-b3d9-5aa80b0df836 + Mass + 100.0 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 780cc4b7-361a-46e6-8119-4a016124f789 + Area + 17.550300861499 + + + + + 9.544788338697 + + MI_Restricted_Substances + a22f3160-83fe-4a55-8459-26e3f8647523 + + 55% glass and mineral filled + PARA (55% glass and mineral filled) + 5f210b37-d70c-42ae-81ef-8eee2decaa73 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 5b2b9ce6-2c6a-4041-904f-9d8860044acd + Mass + 100.0 + + + + + 9.544788338697 + + MI_Restricted_Substances + c372db87-c3ae-4ef1-a9e5-defa1160f895 + + Glass/phenolic honeycomb, 0°/90° fabric (0.112) + Glass/phenolic honeycomb, 0°/90° fabric (0.112), L Direction + + e0ec696c-370a-4840-b698-797569a24214 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 12522387-7f5d-429f-b2e3-2800e05fe4f9 + Mass + 100.0 + + + + + 9.544788338697 + + MI_Restricted_Substances + f508194e-6de7-4b6d-9f6f-7edb9addb85e + + Normalized + Carbon steel, AISI 1025, normalized + 7d6d4b93-fe09-48f6-90ca-06060782d354 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 7415b6b0-5d98-44a7-83f1-e6ac5e820c5c + Length + 25.469624449251 + + + + + 9.544788338697 + + MI_Restricted_Substances + bb5f06fe-89ba-4708-8639-2e15c5c1cc4c + + Glass ceramic - 0330 + Glass ceramic - 0330 + 61a17a52-00f5-49ea-a68c-201eee68b1e8 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 4dd9c8a6-a70c-4b6a-a543-ba7104ade0ff + Mass + 100.0 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 75680045-166d-4bf3-8184-e7f46c3f2eb5 + Mass + 100.0 + + + + + 9.544788338697 + + MI_Restricted_Substances + f05d84ea-b8e2-46d1-83a4-577038c5ed32 + + As rolled + Carbon steel, AISI 1040, as rolled + c74fc6fa-d1f5-4e4c-9807-045bd5eb53ac + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 726ff067-da3a-4633-83eb-03a663c2431d + Length + 29.970180350341 + + + + + + + 1.0 + 94.821921267929 + 45c3c5aa + part_45c3c5aa-ca54-4e38-8b94-588d5d0dba7a + 45c3c5aa-ca54-4e38-8b94-588d5d0dba7a + + + 55.938318677217 + + MI_Restricted_Substances + b1b14aff-8354-447c-9883-df4969a517a3 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 86B45, oil quenched & tempered at + 315°C + + d662fd50-7be2-4186-b04a-5c25a06b3e1f + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 6a575f86-25e6-4e12-ac46-c5e557ade046 + Mass + 11.892100801641 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 06b27a1d-2427-43cd-a637-13aa583eb8f8 + Area + 94.382777528084 + + + + + 11.015420330695 + + MI_Restricted_Substances + b47d0104-e07a-4ebb-a481-18bc330d2ace + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 4340, oil quenched & tempered at + 205°C + + 9f48b8cd-31f7-4443-be9d-59b42767a0cf + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + b6d56b98-fc3d-4922-908c-8f0d147ce118 + Mass + 100.0 + + + + + 11.015420330695 + + MI_Restricted_Substances + aa4540cb-3277-459f-a69a-ca324ddd0125 + + Glass ceramic (N0) + Glass ceramic (N0) + 700295de-ff35-4c30-8b51-085ebb8b4c7c + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 7febd832-fac7-41a3-9812-b041b38cdbad + Area + 39.837708016781 + + + + + 11.015420330695 + + MI_Restricted_Substances + a68201e5-218b-4387-9e30-d1332ccfa44f + + Oil quenched & tempered at 315°C + Carbon steel, AISI 1340, oil quenched & tempered at + 315°C + + baa90fa4-3ffb-45e4-b9f9-237e6a8d2c65 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + 21872dd4-8a64-40a3-931b-85ded9a7a9a7 + Length + 69.831599420789 + + + + + 11.015420330695 + + MI_Restricted_Substances + 9c05e644-9257-4778-9c68-be0cff6f58b5 + + Annealed + Low alloy steel, AISI 8620, annealed + 23bf3ceb-5f97-4862-bc95-47d220e98e6a + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + e6cce66e-28ef-43e1-88c4-c5573ee824d5 + Mass + 100.0 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + aca5a0a2-aea6-4028-b812-8e0953fad5f7 + MassRemoved + 42.472574786503 + + + + + + + 4.0 + 22.143999031811 + 36c649b1 + part_36c649b1-a957-4f0a-ba12-f99623733e3b + 36c649b1-a957-4f0a-ba12-f99623733e3b + + + 75.292657117961 + + MI_Restricted_Substances + 9ecfadb9-f61f-48b3-81b1-bcac80eb164f + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 4150, oil quenched & tempered at + 315°C + + 6de93e26-7f8a-4644-9ff1-d3ba8341b247 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + d84d74df-f777-4b5b-834a-08953934bece + Area + 68.684520185312 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 78c6e9f8-ae12-46bf-93bf-b26034c025d5 + MassRemoved + 39.263671701431 + + + + + 4.941468576407 + + MI_Restricted_Substances + 1851a6ff-c2e6-4bc6-ab7a-a0eae431e281 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 5140, oil quenched & tempered at + 540°C + + 9dd9ceb8-e619-481b-8f99-076e8df0fa8f + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 677be290-d4e2-4ccc-b422-8e3e88169e90 + Mass + 100.0 + + + + + 4.941468576407 + + MI_Restricted_Substances + 192eb301-460f-4dc8-82ec-d451fef09827 + + Glass/polyimide honeycomb, ±45° fabric (0.064) + Glass/polyimide honeycomb, ±45° fabric (0.064), W Direction + + ab9dfcac-de94-44b3-9b12-2a3ef82ccdef + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 6f8a024d-ef38-4303-b6f9-898348a5e05a + Mass + 100.0 + + + + + 4.941468576407 + + MI_Restricted_Substances + 0afa77bf-df9b-456c-8c48-3c84b1ccd2e0 + + Low density glass-sphere filled + Bisphenol molding compound (low density glass-sphere filled) + + 4287941f-36b4-4feb-a928-4d8803bacdc4 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + a16d8051-7432-4c1f-92db-6407d3666b77 + Mass + 100.0 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 00e31473-0e80-4da8-98cc-86c07e300c50 + Mass + 100.0 + + + + + 4.941468576407 + + MI_Restricted_Substances + 8db72069-1e87-4b0f-84bc-cddf9ad19b4b + + water quenched & tempered at 540°C + Carbon steel, AISI 1050, water quenched & tempered at + 540°C + + 95c74639-f319-44b9-a88a-f3f6689e01d9 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + df367a5b-4d55-4e42-854c-1713dbee2576 + Area + 84.977147208981 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + d459c727-3664-4f98-be9b-a715dba56277 + Mass + 100.0 + + + + + 4.941468576407 + + MI_Restricted_Substances + 2ad846d3-e112-42bc-bee5-4ac11e7492ba + + 250, maraged + Maraging steel, 250, maraged at 482°C + ccb33e25-61bc-43fc-87e2-1f5b739229c5 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + ab68e333-a7ab-46fc-8e66-623bbce05a06 + Mass + 100.0 + + + + + + + 7.0 + 41.7487342105 + + MI_Restricted_Substances + 3d4d35cd-1db3-477c-8f3f-b90800ea1c4d + + 412e9d69 + part_412e9d69-8ccd-4db8-8d6e-0a19595b0ff3 + 412e9d69-8ccd-4db8-8d6e-0a19595b0ff3 + + + 1.0 + 11.777195852146 + 4e07a4e4 + part_4e07a4e4-4b6b-4ab0-8a9a-85018488472c + 4e07a4e4-4b6b-4ab0-8a9a-85018488472c + + + 12.891453836528 + + MI_Restricted_Substances + a83cb894-badf-47de-8aff-fe75bbb39ecd + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 81B45, oil quenched & tempered at + 540°C + + eada61b3-01ac-4ca6-96e6-99432b545b10 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 6c78e14e-8ba5-42ff-9feb-31af60a6ea6b + Mass + 100.0 + + + + + 87.108546163471 + + MI_Restricted_Substances + b10ab099-72fd-4e47-9274-015a08f619c2 + + Annealed + Low alloy steel, AISI 5160, annealed + 9b3c225b-6927-4dab-a909-c0e78ab38bc5 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 2aafe353-9cdf-4ae7-81e7-c845c22c7730 + Mass + 100.0 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 7d9c749c-032c-4014-aee3-a19dc9c8a2a1 + Length + 65.222523484948 + + + + + + + 7.0 + 65.298063245275 + 02b9158f + part_02b9158f-ac57-451b-9ddc-59cd2a3d09f2 + 02b9158f-ac57-451b-9ddc-59cd2a3d09f2 + + + 86.083201126234 + + MI_Restricted_Substances + 1f39574e-b571-4f15-b7c2-4e54411e3fb3 + + water quenched & tempered at 650°C + Carbon steel, AISI 1137, water quenched & tempered at + 650°C + + b2f3992f-70f4-4393-9844-f9be4fcc6328 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + a84924f5-ad44-40e5-a1f3-40b87133ee26 + Mass + 100.0 + + + + + 1.988114124823 + + MI_Restricted_Substances + bf6aa85b-3059-4b2c-86af-6bcb1996d5b9 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1340, oil quenched & tempered at + 540°C + + 4df2873d-97ea-482c-be3b-979c3995435f + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 3727beb1-0b8c-4891-af51-a924119ec964 + Mass + 100.0 + + + + + 1.988114124823 + + MI_Restricted_Substances + e5cb0b28-b074-4eb6-95ab-12e8692a87ea + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 50B60, oil quenched & tempered at + 540°C + + d17ef8cd-535b-498b-b313-5cac5ec78787 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + 6c3f805b-239f-4836-a730-a6ce31a6bd49 + Mass + 100.0 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 1bfc3801-dd97-4bdb-bba3-5e0eef8601ab + Mass + 100.0 + + + + + 1.988114124823 + + MI_Restricted_Substances + 72799627-a7c0-4df4-8250-e2be8538565f + + Glass ceramic (N11) + Glass ceramic (N11) + 5e286efa-b710-4d5b-b2c2-2f397ab0e46b + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 51f4a553-0c62-4c9f-9522-dd1f3853dbd4 + Mass + 100.0 + + + + + 1.988114124823 + + MI_Restricted_Substances + 8cd50236-3f00-4460-9e77-bc85138f34c4 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 51B60, oil quenched & tempered at + 425°C + + 32c4e3ad-6c13-40b8-b0cd-bc939c807c5f + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + e4dab1ed-d5a8-43d4-b4a5-f1dbf2d7a376 + Mass + 100.0 + + + + + 1.988114124823 + + MI_Restricted_Substances + 8be87fd7-f406-4a50-9150-2a29e4a26bfa + + Aluminoborosilicate - N51a + Aluminoborosilicate - N51a + bfa70fef-d853-42a4-b83d-73289e70c987 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + ce19d434-3eee-4e4b-9a47-ee280c1b7c83 + Mass + 100.0 + + + + + 1.988114124823 + + MI_Restricted_Substances + 7c0b2792-bc51-4837-a380-6cdb1c2fba31 + + water quenched & tempered at 205°C + Carbon steel, AISI 1030, water quenched & tempered at + 205°C + + ad90b266-4478-48aa-88ef-c2693d8d4463 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + 9281d347-54f6-4ccc-8f00-8f66f263ec35 + Mass + 100.0 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + be1e5cc6-8037-4091-bd75-8fb87907f926 + Mass + 100.0 + + + + + 1.988114124823 + + MI_Restricted_Substances + 48753642-e968-4a1f-92a1-c7b2e10c3fa0 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1060, oil quenched & tempered at + 540°C + + 8d4bbf76-e11e-42bb-abd5-c589e48cede2 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 67a63d46-dbdc-4e8a-b57d-9be080e27fca + Mass + 100.0 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 75e4a0db-0f3a-4dc7-b9f7-53c7cf5cf484 + Mass + 3.363746499346 + + + + + + + 7.0 + 1.618049713605 + 2ccb1d17 + part_2ccb1d17-f935-416e-afca-53702412172d + 2ccb1d17-f935-416e-afca-53702412172d + + + 14.568241738978 + + MI_Restricted_Substances + be0bbb94-0c22-4276-9615-902f13ee0363 + + Oil quenched & tempered at 315°C + Carbon steel, AISI 1144, oil quenched & tempered at + 315°C + + 8ea4c0fd-a002-451c-a6e8-6924341889a3 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + bd3522ba-4106-4b60-8fc3-1abb38df1b09 + Mass + 100.0 + + + + + 85.431758261021 + + MI_Restricted_Substances + db238d75-fcb8-41f5-9289-83a352fa83a6 + + Annealed + Carbon steel, AISI 1015, annealed + 6ea66f6d-ac3e-4179-ac62-13ff1764797d + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 33691a0b-11a2-43ee-850e-46683e369779 + Mass + 100.0 + + + + + + + 7.0 + 35.786516236041 + adc60ac2 + part_adc60ac2-0b8f-41fa-a011-25ed79762bb7 + adc60ac2-0b8f-41fa-a011-25ed79762bb7 + + + 88.524026837443 + + MI_Restricted_Substances + 06a05a3e-1419-430e-bd94-120296b4c49e + + Normalized + Low alloy steel, AISI 9255, normalized + 31740ff9-d5f1-40b6-bfa4-1cda064e0303 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + e89b9709-f53e-4b57-8f30-b76bbf4bb88b + Mass + 100.0 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + b6868b7b-8e92-487d-8852-cb0acb2c1eaa + Mass + 100.0 + + + + + 2.295194632511 + + MI_Restricted_Substances + a84110a5-15ac-4560-8e1e-642b3441da3c + + water quenched & tempered at 540°C + Low alloy steel, AISI 4130, water quenched & tempered at + 540°C + + 8e599c94-c6f9-41bf-8f5f-9ce12eec2739 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + a14aadca-2540-42e7-a9c1-6b4591e730cc + Length + 50.149607355776 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 50ad3d84-915f-40c0-9339-52ccd33ed213 + Mass + 100.0 + + + + + 2.295194632511 + + MI_Restricted_Substances + b4c065d7-6405-44fb-82cf-24ca2072f5c9 + + 300M (high carbon), quenched & tempered + Low alloy steel, 300M (high carbon), quenched & tempered + + d5fddba9-d61c-43d2-b3b9-0035f3b78fdd + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 66666fe5-dd7b-44ca-a1b0-4f912f48bc1f + Mass + 100.0 + + + + + 2.295194632511 + + MI_Restricted_Substances + fbdbafa4-b1a5-410d-a3f0-0b7077b0d7be + + Glass/polyimide honeycomb, ±45° fabric (0.112) + Glass/polyimide honeycomb, ±45° fabric (0.112), L Direction + + 46d7d2d9-5bf6-43e2-ab8f-dd4723f36336 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 8442fdab-d90d-4f7e-833a-62e518b5aff9 + Mass + 100.0 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + fc2508fb-3e4b-4314-92b2-06692e1d2bf2 + MassRemoved + 41.762321787775 + + + + + 2.295194632511 + + MI_Restricted_Substances + a1ecb25a-cbfa-484f-8221-3c08313c0d09 + + Glass/polyimide honeycomb, ±45° fabric (0.051) + Glass/polyimide honeycomb, ±45° fabric (0.051), L Direction + + d3910f5c-5814-4376-90d5-1c3d8bac180e + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + e547c588-2953-4e9d-9329-8c14922fad6d + Mass + 100.0 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 8640ec1e-9f72-483a-85e4-efa340ebc4f3 + Mass + 100.0 + + + + + 2.295194632511 + + MI_Restricted_Substances + f7a5d844-1935-486f-adbe-99917b26b44b + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 4340, oil quenched & tempered at + 315°C + + 48e66c16-d6ab-4b09-9d94-975d8f246d90 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + f5ee22f3-bf2a-4273-ba68-2792bcecd1cf + Mass + 100.0 + + + + + + + 4.0 + 25.260202598413 + 26bd8e2c + part_26bd8e2c-1a75-41d0-ac98-46b9b5e34dd5 + 26bd8e2c-1a75-41d0-ac98-46b9b5e34dd5 + + + 94.470490559223 + + MI_Restricted_Substances + 6134776a-9764-4c71-b7a7-d2f9b7549541 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 8650, oil quenched & tempered at + 315°C + + 26d8597c-d71b-4049-abac-0827d97f1099 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 8a84d84b-218a-424f-99de-bd6715fee8b7 + Mass + 100.0 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 8644ce93-7a6d-44b1-90ee-9f78e593fb64 + Mass + 100.0 + + + + + 2.764754720388 + + MI_Restricted_Substances + 29b76cdc-672e-4a1f-8f6e-a5644857c880 + + Normalized + Low alloy steel, AISI 4135, normalized + 5c791230-b424-4b95-8e77-433b9965e61e + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 05d2de98-77cd-4e15-8cb2-648e45a14d4b + Mass + 100.0 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 2ff312c0-e0fd-4795-9f1b-6adb5f2745e8 + Mass + 100.0 + + + + + 2.764754720388 + + MI_Restricted_Substances + 55eaa961-cbe2-4f0a-9531-ec40dc32555a + + YS260, cold rolled + Interstitial free steel, YS260, cold rolled + f5b9069a-21f2-4805-9fa6-10bbfe2d8798 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + e6c4dde9-c580-45a7-940d-64a332b46231 + MassRemoved + 54.093045487111 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + f8de7007-93b1-4c16-a4df-9817e25e0d4a + Mass + 100.0 + + + + + + + 9.0 + 71.677626376821 + ca19d9ea + part_ca19d9ea-8ca0-484c-81db-f0bd52142b9f + ca19d9ea-8ca0-484c-81db-f0bd52142b9f + + + 59.690446201567 + + MI_Restricted_Substances + 1d0ad45b-4da7-4c47-9850-754d0f67c02a + + Glass/polyimide honeycomb, ±45° fabric (0.096) + Glass/polyimide honeycomb, ±45° fabric (0.096), W Direction + + 6c8308a1-a083-4648-828d-85cc00bd926f + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 2805da0d-1cd9-4846-917f-0eeddb1f2eee + Mass + 100.0 + + + + + 5.038694224804 + + MI_Restricted_Substances + 87e1a3cd-fd79-4013-b5f8-56d6f28bef34 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1144, oil quenched & tempered at + 540°C + + bd45b7c3-53dd-4545-a818-9e8a14433718 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 829287dd-168b-4894-b384-cf9c564e5eb5 + Mass + 100.0 + + + + + 5.038694224804 + + MI_Restricted_Substances + c87d2bef-0549-4a3b-b699-3ad17b079fa1 + + YS355, hot rolled + High strength low alloy steel, YS355, hot rolled + 3f725bb6-02ef-4193-b8d3-3dbc9c54e9ff + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + 6c48f731-cf08-4179-a64a-6bebca0e91e0 + Area + 40.897892015472 + + + + + 5.038694224804 + + MI_Restricted_Substances + 50342378-5548-45ea-9a21-c0f16c6dcb1a + + Steel, terne coated + Coated steel, steel, terne coated + 0593fce9-6880-4931-804c-66c8741c542b + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + b3d8351c-fed0-4c9d-ae1b-748247fc6a80 + Mass + 100.0 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 411fd344-6411-4706-b6e6-2dcfd232887e + Mass + 100.0 + + + + + 5.038694224804 + + MI_Restricted_Substances + f76f3301-2bc9-4ad6-b438-b97cf4ca70b5 + + Silica (96%) + Silica (96%) + 3005609b-3b36-4665-b4c0-91998ffc4396 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 2ee50bf8-af5f-465c-ae27-71d171943cb4 + Area + 25.511942396644 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 3c3be329-3045-4c83-9708-467b04bf44ac + MassRemoved + 54.940783397732 + + + + + 5.038694224804 + + MI_Restricted_Substances + 1d24ecfa-ec45-4a74-9ad7-ceac6eef8ad3 + + Annealed + Low alloy steel, AISI 41L40, annealed + e41ace63-fc60-496d-8403-f0dc6caf2b90 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 112f8740-ae3f-42b5-b224-0cfb3785655d + Area + 52.699277760786 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 23357b86-0f63-4693-9d68-ca2d8dbaeb0e + MassRemoved + 77.168476990036 + + + + + 5.038694224804 + + MI_Restricted_Substances + c07a0ada-0510-4f27-be52-15e07d6c70c5 + + Soda-zinc glass - 6720 + Soda-zinc glass - 6720 + 6d479a4a-03a5-4fb8-a01a-7de8b71d93ed + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 5706ab2a-ad0e-401f-962c-8401cf83b454 + Mass + 100.0 + + + + + 5.038694224804 + + MI_Restricted_Substances + 91d7e1bd-d353-4eb1-9634-286e8e69d0d5 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1141, oil quenched & tempered at + 540°C + + ef0c00a2-9910-468c-abac-f671ea564dea + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + bc86342b-e9e2-4534-86c3-0356f4c8737e + Length + 64.861482551722 + + + + + 5.038694224804 + + MI_Restricted_Substances + 5d611e30-0b00-4036-a656-f5fdc5bd2a52 + + Glass ceramic - slipcast + Glass ceramic - slipcast + 65a55aa8-7075-4c37-86b9-ad3c62c09b71 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 08cee76c-595b-49ce-8374-ce3d50474ad9 + Mass + 100.0 + + + + + + + 8.0 + 1.598513546212 + 1aa2360a + part_1aa2360a-be13-4479-acee-f78fd0ff0a78 + 1aa2360a-be13-4479-acee-f78fd0ff0a78 + + + 91.048070271987 + + MI_Restricted_Substances + 0831e2e1-6d31-4532-8a04-eea412061805 + + Annealed + Low alloy steel, AISI 4140, annealed + 35bbc52d-b4ff-48e0-bf2d-8d97aeacfb51 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + ff0b079c-2c49-45c5-90ae-14ed0fd7236e + Mass + 100.0 + + + + + 8.951929728012 + + MI_Restricted_Substances + f8d1136f-3c1a-41e2-8b78-cf5f3965cba2 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 6150, oil quenched & tempered at + 205°C + + b4b703fb-eb23-4611-a8c2-07bfcf6cad8f + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 338c5266-1ede-466b-914f-711cd2523894 + Mass + 100.0 + + + + + + + 8.0 + 22.379741315906 + + MI_Restricted_Substances + a78dcd3a-f108-4fdb-857e-e2d00ed319d4 + + a6821688 + part_a6821688-dd2f-4560-a927-8ce07f150ed2 + a6821688-dd2f-4560-a927-8ce07f150ed2 + + + 9.0 + 76.275390934327 + ea0dfdcd + part_ea0dfdcd-e44a-4374-bf87-bc831dc41a05 + ea0dfdcd-e44a-4374-bf87-bc831dc41a05 + + + 80.670208661197 + + MI_Restricted_Substances + 9e4c9bc1-b3b6-42dd-a32f-7af4e3190d72 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 86B45, oil quenched & tempered at + 205°C + + e21a7caa-7b95-4fd1-9b5c-4ea5de8d25c0 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + 9d6358ac-f6b0-4663-b181-eb854ccee899 + Length + 69.388320841541 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + bb16eb8f-75a7-4f24-b751-3fca8fd7b6ce + Mass + 100.0 + + + + + 4.8324478347 + + MI_Restricted_Substances + ac1b4f23-a357-459b-bfeb-deabffbc7020 + + Oil quenched & tempered at 315°C + Carbon steel, AISI 1050, oil quenched & tempered at + 315°C + + b83b515c-473a-4076-96d9-38387cdc136a + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + f513bbeb-274d-4646-b8ed-2147c9592c95 + Area + 83.372145790314 + + + + + 4.8324478347 + + MI_Restricted_Substances + 8349c912-772a-4fd7-90a5-7d52aa9c9448 + + Oil quenched & tempered at 425°C + Carbon steel, AISI 1137, oil quenched & tempered at + 425°C + + c0a9996c-0626-44be-b07f-e87b4f93e421 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + d01b9c5e-b734-49c0-841e-3cbfa92433b1 + Length + 69.282415820882 + + + + + 4.8324478347 + + MI_Restricted_Substances + 2a840794-eac4-4f77-90ba-f84bce518c0f + + Glass/phenolic honeycomb, 0°/90° fabric (0.055) + Glass/phenolic honeycomb, 0°/90° fabric (0.055), L Direction + + 110ae29e-9ac2-44f9-aba7-c1ccb4a27438 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + f3372e2c-73c8-42aa-bc02-6572ad5fbc51 + MassRemoved + 43.454528387381 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + c561d0b5-9ee2-4284-bf6a-b46260454e8f + Mass + 100.0 + + + + + 4.8324478347 + + MI_Restricted_Substances + b17713f9-59e9-48f4-8bb3-27c72b0884b2 + + water quenched & tempered at 540°C + Carbon steel, AISI 1137, water quenched & tempered at + 540°C + + a647882e-2b40-4400-943c-0da1d9be57ea + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 8bbe6b83-92cb-4b0e-b49a-0c797d713f5b + Mass + 100.0 + + + + + + + 9.0 + 82.023425205621 + + MI_Restricted_Substances + aeabeea6-e528-4e56-8247-0aeb8841d9de + + 9438eb43 + part_9438eb43-1eee-4cff-9d70-62c5bb89c32a + 9438eb43-1eee-4cff-9d70-62c5bb89c32a + + + 4.0 + 72.353651827365 + 184b1ab4 + part_184b1ab4-9f2b-4154-bc06-b8b474d19fd7 + 184b1ab4-9f2b-4154-bc06-b8b474d19fd7 + + + 60.849965950869 + + MI_Restricted_Substances + 278c6b66-fb3e-4e2d-b915-df6a231b2342 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1080, oil quenched & tempered at + 540°C + + 4f8dabc3-4b4f-4511-a439-029bfedcc353 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + fee9befe-d44a-4412-bf3b-51a47282a443 + Mass + 100.0 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + ad08b701-b6a5-48cf-ae9b-b35f7bf697cd + Area + 98.920964728538 + + + + + 4.893754256141 + + MI_Restricted_Substances + aa963e30-fca0-439d-bee2-ff48daa946f3 + + As rolled + Carbon steel, AISI 1095, as rolled + 7dcd1b01-ad72-4233-bb61-b06115c241bd + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + ad815955-2ea1-4810-bd9f-e0807ef38e3a + Mass + 100.0 + + + + + 4.893754256141 + + MI_Restricted_Substances + a403e867-5052-44f9-b24b-5b11a3860cf4 + + Glass/polyimide honeycomb, ±45° fabric (0.051) + Glass/polyimide honeycomb, ±45° fabric (0.051), W Direction + + ab7e0983-57d9-4403-87c7-2bba8ff091d3 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + a8d4437c-ca53-49f3-89ab-6f97f764defd + Length + 4.346819130865 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + d9034901-0090-4e0a-a31a-bed850729cd0 + Mass + 100.0 + + + + + 4.893754256141 + + MI_Restricted_Substances + 109eaa8c-e01c-4663-8802-f7dd1f10d61b + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 8630, oil quenched & tempered at + 205°C + + 3758b153-7456-4598-b41b-c53921a08384 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 61055064-79d2-46eb-9266-65253cdb2511 + Length + 93.752556896653 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + 772bd1ed-edad-4c73-9949-13006f3b1dcf + Mass + 100.0 + + + + + 4.893754256141 + + MI_Restricted_Substances + ee3c0238-df7d-426d-90f6-c073cddea37b + + Oil quenched & tempered at 425°C + Carbon steel, AISI 1340, oil quenched & tempered at + 425°C + + 3efcc781-9e69-4f6f-82e3-fc6cc6a137d0 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + ebd5fdc0-5126-4b32-b4ee-23fd2c6147b4 + Area + 16.777495535452 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 3a6dafa6-ec47-4b1c-a67b-2de364a10ca4 + Mass + 100.0 + + + + + 4.893754256141 + + MI_Restricted_Substances + e62ec0fe-66ca-4b17-88d1-609c5568e318 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 4340, oil quenched & tempered at + 650°C + + a02fee99-5c91-4df9-a446-8a6da1b9d9db + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 5861f36e-aa3e-4358-b32d-8e558fb5586b + Mass + 100.0 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + f928ee5f-60be-4f4f-bb08-ad8423b00867 + Mass + 100.0 + + + + + 4.893754256141 + + MI_Restricted_Substances + c62d668e-5411-4845-b19c-3a0c4eedf872 + + 10CrMo9-10, normalized & tempered + Low alloy steel, 10CrMo9-10, normalized & tempered + 81e18383-3a45-4ba3-9bfc-7c36e2f23521 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + ef654035-33a9-4daf-8115-2cada5ba7c41 + Length + 25.672625389728 + + + + + 4.893754256141 + + MI_Restricted_Substances + 8245dc6c-3d61-4f18-82c8-6fb946e1582c + + Glass foam (0.13) + Glass foam (0.13) + 85aa7086-4a24-4732-9d0c-288fae52b970 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + cdda3e82-ef97-4ea2-a6a4-b4e96d2ff278 + Mass + 100.0 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 4c8fbc06-e918-4dd4-b0f0-40a9f037aa05 + Mass + 100.0 + + + + + 4.893754256141 + + MI_Restricted_Substances + 71a3cd24-5128-46e5-8ef8-9ca8b5ed9892 + + 50% glass and mineral filled + PA46 (50% glass and mineral filled) + 066fdc49-0e2a-450e-b40e-f4f71e33a67d + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 8f98f3c3-3955-4b09-832c-7c8c1eeeb9b3 + Mass + 100.0 + + + + + + + 5.0 + 8.880512793027 + 4b2adbeb + part_4b2adbeb-72da-44b5-8bf9-697c3b7db31b + 4b2adbeb-72da-44b5-8bf9-697c3b7db31b + + + 65.331763338917 + + MI_Restricted_Substances + 0f2ac0c2-16b0-422e-9f3c-48efb1a11594 + + Hardened and tempered + Low alloy steel, AISI 8620H, hardened and tempered + 966a2d0c-b2a1-4cff-b09e-70af1c7feafa + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + d3f2b6bf-5dc3-4af1-97e4-655b745bec8d + Area + 67.572932628715 + + + + + 4.952605237297 + + MI_Restricted_Substances + 28d51559-b49b-4a2b-9f09-9a198db03164 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 4340, oil quenched & tempered at + 425°C + + 0a0484e4-e4d6-46a3-8a89-980d72ee02e1 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + fd9523ae-9d66-44e6-88e5-e699e4bb6710 + Mass + 100.0 + + + + + 4.952605237297 + + MI_Restricted_Substances + d53daeda-87b2-4ade-a7a2-1ebe84e7e3ef + + Annealed + Low alloy steel, AISI 5115, annealed + 65f38ac2-4598-4986-a161-fa9d2f9befa8 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 5ebf42e6-45c0-4782-bae6-f26fbb9c608f + Mass + 100.0 + + + + + 4.952605237297 + + MI_Restricted_Substances + 50c388cf-bb91-442a-9b62-8d34f7822f13 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1040, oil quenched & tempered at + 540°C + + 208eed49-b80a-4f9c-8d52-57ea802dbcfe + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + a3504bc5-92e6-4d45-869d-c64cd77071af + Mass + 100.0 + + + + + 4.952605237297 + + MI_Restricted_Substances + a84110a5-15ac-4560-8e1e-642b3441da3c + + water quenched & tempered at 540°C + Low alloy steel, AISI 4130, water quenched & tempered at + 540°C + + 954b9af8-ad49-400a-ba3d-c054db41c64c + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 46cd55fe-643e-4274-bc72-6eb959283ea8 + Mass + 100.0 + + + + + 4.952605237297 + + MI_Restricted_Substances + 5303364c-b06b-40d9-bca9-e0e2cd1d682c + + Normalized + Low alloy steel, AISI 8740, normalized + 39b96e26-6d23-44f6-83b7-884409172eab + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 6d9de306-4aae-485e-8018-527f177f25c0 + Length + 6.1955351877 + + + + + 4.952605237297 + + MI_Restricted_Substances + a83cb894-badf-47de-8aff-fe75bbb39ecd + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 81B45, oil quenched & tempered at + 540°C + + cd5f8484-59ff-40c1-8867-292095d1b9c6 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 75aaabe7-2e82-4bec-b265-80f2beb2a4fe + Mass + 100.0 + + + + + 4.952605237297 + + MI_Restricted_Substances + ac1b4f23-a357-459b-bfeb-deabffbc7020 + + Oil quenched & tempered at 315°C + Carbon steel, AISI 1050, oil quenched & tempered at + 315°C + + d23864dc-a8f2-4660-8e78-9ec574d6be3b + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 612bfbb6-4eb3-4282-8c9d-7332de9801b1 + Length + 92.551196689042 + + + + + + + 1.0 + 26.153060247261 + 45b2723f + part_45b2723f-b76c-4076-81bb-f3aecd32b356 + 45b2723f-b76c-4076-81bb-f3aecd32b356 + + + 100.0 + + MI_Restricted_Substances + 50ad77de-f231-48a8-a909-3dc689e19ac8 + + YS500, cold rolled + TWIP steel, YS500, cold rolled + cb2f5fa4-88c1-4234-9c99-c073df19e86a + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 45b62425-e6d6-4621-b79d-16266a05e004 + Mass + 100.0 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + c7722ec0-5403-4eab-9421-4aaf19d9aef2 + Mass + 100.0 + + + + + + + 4.0 + 40.539438203228 + bab849e1 + part_bab849e1-aa58-4769-acc9-be284f83a250 + bab849e1-aa58-4769-acc9-be284f83a250 + + + 100.0 + + MI_Restricted_Substances + 48753642-e968-4a1f-92a1-c7b2e10c3fa0 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1060, oil quenched & tempered at + 540°C + + e9ca9bfc-2ac6-4e0a-b295-5ffa707baf1a + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 24532770-7d53-47c3-b1ed-27abd0be182b + Mass + 100.0 + + + + + + + 1.0 + 36.071550304103 + 3a1c477f + part_3a1c477f-440a-4b0a-a064-a4487adefde0 + 3a1c477f-440a-4b0a-a064-a4487adefde0 + + + 94.927668010316 + + MI_Restricted_Substances + cdb1bf9d-b906-4bef-afbf-7bb9f67e9562 + + Galvanized + Coated steel, steel, galvanized + c245e82a-cc15-44f5-a687-2be0187ef917 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + 47c269e2-54b2-4e47-a0b5-12bc0cf26ae0 + Area + 39.427965804668 + + + + + 1.26808299742 + + MI_Restricted_Substances + a89802d6-13c5-496d-b139-57ae43e6591c + + As rolled + Carbon steel, AISI 1022, as rolled + 45169ece-d893-442d-bc03-57139b6d4d7a + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 3cfa5e61-937e-456d-a331-3e0ced1fae00 + Mass + 100.0 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 87f279ae-53fb-4ded-9910-3634fe179af4 + MassRemoved + 97.750562568079 + + + + + 1.26808299742 + + MI_Restricted_Substances + 2ab1643a-3aff-46c7-a249-21c58b33f214 + + Annealed + Carbon steel, AISI 1144, annealed + 2edfdc17-8e02-4060-a0f4-e754d3c2d653 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 684f35b5-f8bb-4a0f-957d-4c58d08c32b2 + Mass + 60.250060800579 + + + + + 1.26808299742 + + MI_Restricted_Substances + 0e008ce6-63df-4b25-81d6-02398cb9cc62 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 8660, oil quenched & tempered at + 540°C + + 68cbe79e-e13e-44d6-9573-7f9e77f22cd1 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + 8bf277bf-f275-4e32-9bf4-1fe49fafb994 + Mass + 100.0 + + + + + 1.26808299742 + + MI_Restricted_Substances + 6134776a-9764-4c71-b7a7-d2f9b7549541 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 8650, oil quenched & tempered at + 315°C + + e1b57077-4f40-4da6-977e-c67e9e778639 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 0e3a51c9-09b0-45a2-aedf-34ea1d17a8bd + Length + 40.742407339039 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + b729456a-04c5-4c5a-a8d2-3196ce5464f9 + Length + 99.61028662492 + + + + + + + 7.0 + 29.038112717232 + ac3877a8 + part_ac3877a8-bab4-4a77-9d83-086ae6c8c1be + ac3877a8-bab4-4a77-9d83-086ae6c8c1be + + + 2.889816464339 + + MI_Restricted_Substances + 8ef69f01-44dd-4b96-ac5c-731bff7ceb6c + + Glass ceramic - 9606 + Glass ceramic - 9606 + a6ef08ec-0069-4005-bbe1-b41dd44704c0 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 6af6b4b1-5bf5-471c-b6e1-a54b3d4d2085 + Area + 54.022601784217 + + + + + 32.370061178553 + + MI_Restricted_Substances + 2096ca77-9981-4fd5-9bc6-afe56b3bbbd4 + + Glass/phenolic honeycomb, 0°/90° fabric (0.096) + Glass/phenolic honeycomb, 0°/90° fabric (0.096), W Direction + + 9d3b8e4d-c4de-4b15-98cc-e3c0dba146de + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + a680b387-9a93-4d57-bf18-ce9452a624cb + Mass + 100.0 + + + + + 32.370061178553 + + MI_Restricted_Substances + 158e73a4-18c6-4e1a-b5d8-57669c377335 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 8740, oil quenched & tempered at + 650°C + + c58ebde6-692b-44ad-a160-2185520c1fb7 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + b6344a2b-56f2-4386-87df-767576302146 + Mass + 100.0 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 3a0745ff-06f7-4320-9acb-a29e3fe1d090 + Length + 8.736669555649 + + + + + 32.370061178553 + + MI_Restricted_Substances + fc7fda6b-9d56-4e1f-b472-a664568c1169 + + Annealed + Carbon steel, AISI 1095, annealed + 001626e3-6549-4ddc-8cce-b828f12624fd + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + ffbb984e-4730-4035-9061-803e32f97eb7 + Mass + 100.0 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 20b0fdd3-f25d-4e84-928a-caa2749e5be5 + Length + 11.594373598505 + + + + + + + 8.0 + 92.475714205054 + 4a5223eb + part_4a5223eb-b35f-4b2c-bf59-4f7b81e6e11f + 4a5223eb-b35f-4b2c-bf59-4f7b81e6e11f + + + 21.060252525406 + + MI_Restricted_Substances + b879bb01-8648-4b5b-8159-d591cb251ca8 + + Normalized + Carbon steel, AISI 1080, normalized + 297897c7-4c4a-45cc-8d61-44600c915c0c + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 0c515822-13ff-4c07-9bb2-de14104f8980 + Mass + 100.0 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + 1d490bb8-6f77-4a2f-b71d-6f3b66e60dc8 + Length + 71.967992266625 + + + + + 11.277106782084 + + MI_Restricted_Substances + d7980de6-355d-48d2-93d7-471e3ef3b2cf + + Glass/phenolic honeycomb, ±45° fabric (0.032) + Glass/phenolic honeycomb, ±45° fabric (0.032), L Direction + + fb82fa0f-c0f9-4569-90b6-a0592ffa029b + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + 54981275-6cda-4f6e-bd84-3d665c863111 + Area + 77.647445713005 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + a9374b93-9dce-47dd-9652-158248388b3c + Mass + 100.0 + + + + + 11.277106782084 + + MI_Restricted_Substances + a6ee4feb-80c5-43a7-b3ee-a1423218f502 + + AF1410 + High alloy steel, AF1410, solution treated & overaged + + 2edf1e77-1033-4b37-a10a-dd1ca6f9a9c7 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 5f14dda3-a81a-4378-9843-67d10402440b + Length + 11.76017276559 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 2d1547ac-de50-4aa9-a2b7-dbe536b42c1e + Mass + 100.0 + + + + + 11.277106782084 + + MI_Restricted_Substances + 82880431-c70c-4df9-856a-d5e00671a184 + + Annealed + Carbon steel, AISI 1020, annealed + 126da0ae-9ad2-4d46-8712-87716360c682 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 4e259791-dfc8-44ff-be04-a437f2945a23 + Mass + 37.620758003378 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 946d277f-7c61-48a2-a0fa-e4b871588d2d + Mass + 100.0 + + + + + 11.277106782084 + + MI_Restricted_Substances + 00cd78de-6c78-46f3-81b3-ec03803fa034 + + Glass/phenolic honeycomb, ±45° fabric (0.048) + Glass/phenolic honeycomb, ±45° fabric (0.048), W Direction + + 56afd2d4-eed8-4d8e-ad4e-bd5029463b6a + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + e35e60e0-ca24-4c0a-86ab-29db1b5f185c + Area + 39.506165003174 + + + + + 11.277106782084 + + MI_Restricted_Substances + ab732b70-3546-4a94-b914-643f38c2443f + + 24CrMo13-6, quenched & tempered + Low alloy steel, 24CrMo13-6, quenched & tempered + 40dd174d-6d19-4fd9-abe0-1055299bef5f + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 3f980ef4-aa91-4002-8694-15f8c4c9caf3 + Mass + 100.0 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 379bb0ec-69dc-4fec-82c8-a9ffaff56261 + MassRemoved + 27.657357849021 + + + + + 11.277106782084 + + MI_Restricted_Substances + 496cca2a-43ad-4943-9e9b-23076f2e3a5c + + Glass/polyimide honeycomb, ±45° fabric (0.128) + Glass/polyimide honeycomb, ±45° fabric (0.128), L Direction + + 5bfc5037-9bf2-43ba-ab06-5bb5ad11de76 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 75945f4f-fdd8-47bb-969c-bc07e382e033 + Mass + 100.0 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 09d7e6b4-4b3c-4784-a62d-908036e510d0 + Mass + 100.0 + + + + + 11.277106782084 + + MI_Restricted_Substances + 439e62b9-4268-44c6-a084-695412628448 + + water quenched & tempered at 425°C + Carbon steel, AISI 1095, water quenched & tempered at + 425°C + + b5a24b72-e09d-4fc4-8bdc-93b928e91fff + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + b173992a-931e-49bb-99cb-284c471d0437 + Mass + 100.0 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 91e8113c-bb59-487e-97ee-2142e2ec1a71 + MassRemoved + 72.03360654974 + + + + + + + 7.0 + 37.364186037967 + + MI_Restricted_Substances + 47392269-2164-43ef-9890-518e6ea446fc + + c4b720bf + part_c4b720bf-7152-4199-ba3a-0beb9c811ddc + c4b720bf-7152-4199-ba3a-0beb9c811ddc + + + 1.0 + 75.039481220319 + 5d1b372e + part_5d1b372e-556f-4e07-9c99-4d1973e0956b + 5d1b372e-556f-4e07-9c99-4d1973e0956b + + + 38.582426513816 + + MI_Restricted_Substances + 190cf17e-dbc1-40c7-a3d1-cc776977cb47 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 50B46, oil quenched & tempered at + 650°C + + 6d8ea439-0bcd-4357-bc2c-4f5f7b539cd1 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + b717c6e1-b356-4193-a09a-779833a5491d + Mass + 100.0 + + + + + 61.417573486183 + + MI_Restricted_Substances + 0ff273b3-9539-465b-9d91-21fc52f8e16c + + Lithium aluminosilicate + Lithium aluminosilicate + 968b3dec-5e80-492f-a30d-ecdf1a74c80d + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + c7f0dc2f-fe5e-43de-b9ba-1f0ad322866e + Area + 64.574601857259 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + 00a56e08-69f5-474a-867f-187d3480a611 + Mass + 100.0 + + + + + + + 4.0 + 79.432184099886 + 84fa7b6b + part_84fa7b6b-dcb3-42a7-9a11-df90dc8813bd + 84fa7b6b-dcb3-42a7-9a11-df90dc8813bd + + + 100.0 + + MI_Restricted_Substances + 940150b6-2d2e-4762-b1a0-6f354a75d95b + + Potash lead glass + Potash lead glass + 45d577fa-9e98-4254-b369-b09d9ae34dea + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + ddf7abd7-804d-47cd-838b-5d6e5758f5bc + MassRemoved + 41.91323963083 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 5c3ae651-26b4-4c94-a704-c181b75171df + Length + 4.941282889312 + + + + + + + 9.0 + 93.358766843266 + e72320dd + part_e72320dd-1afd-432f-bd03-eefddd678339 + e72320dd-1afd-432f-bd03-eefddd678339 + + + 80.444691600485 + + MI_Restricted_Substances + 3fc5450b-689d-4ced-bf3d-c91f339a95da + + Normalized + Low alloy steel, AISI 5150, normalized + 46179b7b-bc34-4765-88c5-494383858dd6 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 62efad99-f536-4714-be22-b9a5e4462cff + Mass + 31.524746227788 + + + + + 2.444413549939 + + MI_Restricted_Substances + 408a337f-8eb7-4225-96bd-1225da437143 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 5140, oil quenched & tempered at + 315°C + + 1909b1f4-ede3-443c-a8e1-b7df1425057a + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + cc5799ab-1216-495a-964f-ed77c8c9ef20 + Mass + 100.0 + + + + + 2.444413549939 + + MI_Restricted_Substances + 75a1c963-399c-444d-a38f-1929c00d15b7 + + Normalized + Low alloy steel, AISI 4150, normalized + e5f13a79-e874-4575-8e7b-0f680c91c464 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 4229b4ae-cfe2-42c1-8696-47fe938b7892 + MassRemoved + 46.88324795425 + + + + + 2.444413549939 + + MI_Restricted_Substances + 158e73a4-18c6-4e1a-b5d8-57669c377335 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 8740, oil quenched & tempered at + 650°C + + c8f26e0c-6f90-4518-9399-b2419ed7b03e + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 3bd0f0cb-124b-4c07-8983-fc20d22303a7 + Mass + 100.0 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 4ac89751-c8c9-44cd-a879-3bd567445c4d + Mass + 100.0 + + + + + 2.444413549939 + + MI_Restricted_Substances + 181f9596-7516-43ca-b989-8284ee056051 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 8630, oil quenched & tempered at + 315°C + + 824e264c-aa4f-4814-9514-7dbc00187a63 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + c860ca6f-6794-4288-a09b-6d5b1706b068 + Mass + 100.0 + + + + + 2.444413549939 + + MI_Restricted_Substances + 0ff273b3-9539-465b-9d91-21fc52f8e16c + + Lithium aluminosilicate + Lithium aluminosilicate + 4f8c8192-bfd6-420f-9006-52ae67d51144 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 3f54437c-f9be-482e-ac61-7f158845e71d + MassRemoved + 7.420723050563 + + + + + 2.444413549939 + + MI_Restricted_Substances + 3fc5450b-689d-4ced-bf3d-c91f339a95da + + Normalized + Low alloy steel, AISI 5150, normalized + e91f49be-553e-44e4-84d6-d794788dd34e + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + ca1138c5-5460-4fec-9558-cb346771a9a6 + Mass + 40.548966145398 + + + + + 2.444413549939 + + MI_Restricted_Substances + 7c0b2792-bc51-4837-a380-6cdb1c2fba31 + + water quenched & tempered at 205°C + Carbon steel, AISI 1030, water quenched & tempered at + 205°C + + 009eb512-a2c6-4f54-9d2f-ee7e522cc525 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 7d963a71-ad65-49d7-87cf-1d526d17ecf8 + Mass + 100.0 + + + + + 2.444413549939 + + MI_Restricted_Substances + e9388a2e-df9f-4ef4-8f47-d4cc5a94b8e7 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 50B46, oil quenched & tempered at + 425°C + + ca917412-77c1-42a2-9559-f5ce8b14380e + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 9bf7f8ea-70f7-4df8-9d42-cfa787bb92ef + Mass + 58.372439890342 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 11f586e0-0d5a-4108-a4e0-dec1a10ed8f1 + Mass + 100.0 + + + + + + + 6.0 + 98.910817736252 + fc8daa76 + part_fc8daa76-313f-4416-91dc-f4184b57ac71 + fc8daa76-313f-4416-91dc-f4184b57ac71 + + + 11.365721426608 + + MI_Restricted_Substances + 3fd6cebb-a683-45be-b014-7c3fb617c3e7 + + Glass/polyimide honeycomb, ±45° fabric (0.064) + Glass/polyimide honeycomb, ±45° fabric (0.064), L Direction + + 43ac285d-b87c-4460-9c87-ad5dc4611237 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 42fca2f6-0417-49d7-a522-c7503940de71 + Mass + 19.470181511468 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 1edd567a-b467-4c79-b267-2894398bee56 + Area + 74.248126090619 + + + + + 22.158569643347 + + MI_Restricted_Substances + 2839a622-af73-4a9f-90fa-0f3498243808 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 4042, oil quenched & tempered at + 425°C + + 6af79c06-d0e3-46ee-898b-80667674c307 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + e6f0e479-ca89-431c-b43e-234dc35f3768 + Mass + 100.0 + + + + + 22.158569643347 + + MI_Restricted_Substances + 21dcdeeb-524a-488e-b332-fcd4e1caf6f7 + + water quenched & tempered at 650°C + Carbon steel, AISI 1095, water quenched & tempered at + 650°C + + a74f3555-bdd6-4433-a45b-5e86f7360f81 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 813642e4-8307-4b63-9092-bb0ab8d445e1 + Mass + 100.0 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 60b06372-c082-4197-b40e-a5e7a807c344 + Mass + 100.0 + + + + + 22.158569643347 + + MI_Restricted_Substances + f6a8c45a-d545-43b7-acd0-7c51bd97ab52 + + Oil quenched & tempered at 425°C + Carbon steel, AISI 1095, oil quenched & tempered at + 425°C + + e4530039-6d97-4080-8cff-63281a88347b + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 9c980678-54cc-479f-b0bb-15463d9b0ad3 + Mass + 100.0 + + + + + 22.158569643347 + + MI_Restricted_Substances + 2a821f5c-97b0-4a08-81b1-de3f1543fb44 + + Alkali strontium clear glass + Alkali strontium clear glass + b33a0c52-e5a3-43a3-b80a-eddad97ff6d3 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 1a071692-299c-4951-9e50-d95e02778526 + Length + 24.532270210111 + + + + + + + + + 4.0 + 13.084379217161 + eaab6ed5 + part_eaab6ed5-6189-4b0e-9a04-b351346795f9 + eaab6ed5-6189-4b0e-9a04-b351346795f9 + + + 34.273220428392 + + MI_Restricted_Substances + 71841c03-2a43-418a-9a04-c18b2b603646 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 4150, oil quenched & tempered at 425°C + + ebcdf539-f264-497e-b5eb-9065b8d16cdd + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + 030a4e68-4a19-4d96-bc52-facd972fd523 + Mass + 100.0 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 2138223c-491b-48d7-87f8-4ccd8a89dafa + Mass + 100.0 + + + + + 8.21584744645 + + MI_Restricted_Substances + 9cae15c6-b5b6-4ab9-9008-d962bee0e662 + + Glass/phenolic honeycomb, 0°/90° fabric (0.128) + Glass/phenolic honeycomb, 0°/90° fabric (0.128), L Direction + fd0c866c-664b-4ff0-87da-7571eeba3863 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 65c3952e-9995-49f8-b50a-6a6dd8ec1908 + Mass + 37.030020652818 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 290d62f5-bd97-4f1c-b997-bc0ec64fe69a + Mass + 100.0 + + + + + 8.21584744645 + + MI_Restricted_Substances + bbe0765c-012b-434e-878b-b40ad692b373 + + YS550, hot rolled + High strength low alloy steel, YS550, hot rolled + 6272492b-6615-4e16-96f1-a7e9a715a3e0 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + c7a22d3d-5300-416d-be87-a3561d7a3b35 + Mass + 100.0 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 289630a9-9b30-4964-af5a-10155a53ad10 + Mass + 100.0 + + + + + 8.21584744645 + + MI_Restricted_Substances + 190cf17e-dbc1-40c7-a3d1-cc776977cb47 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 50B46, oil quenched & tempered at 650°C + + 7d1db0cf-3bf8-4194-80e8-b4f4a3816437 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 13cbdc73-00ac-4995-8aa3-50bee3d6e803 + Mass + 100.0 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + d4a408ae-de74-4866-99cb-31142105ade7 + Mass + 100.0 + + + + + 8.21584744645 + + MI_Restricted_Substances + 92565d61-24fc-4880-9be5-0faeb9a8a3e8 + + Titanium silicate + Titanium silicate + 7db8274a-8d36-4fa7-8064-6b2d9f106c3c + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 986d99e8-9853-4ef3-9e51-88d18f934ec3 + Mass + 37.446228618475 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + b3e68082-8c66-4835-8ed8-225e9e4ceab1 + Mass + 100.0 + + + + + 8.21584744645 + + MI_Restricted_Substances + 87e1a3cd-fd79-4013-b5f8-56d6f28bef34 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1144, oil quenched & tempered at 540°C + fa1e5541-f878-4ae6-87ba-8bea39fb760f + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 6663a73a-ebb8-4ca5-91e0-49b6cb9fca98 + Mass + 100.0 + + + + + 8.21584744645 + + MI_Restricted_Substances + 9df55457-5300-4ddb-b92e-122b5c121621 + + Glass and mineral filled, encapsulation, molding + Novolac (glass and mineral filled, encapsulation, molding) + a9652672-4387-4d33-90dc-797daf6a2247 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 867ce557-1eec-4ea4-ac1e-e6c063117dd5 + Area + 85.998112422413 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + f5d984ea-e10a-41b8-b2fc-714f5497cfb8 + MassRemoved + 44.685697622916 + + + + + 8.21584744645 + + MI_Restricted_Substances + 80d691ec-471b-4ef6-9060-a0e5cc0c1a91 + + Annealed + Carbon steel, AISI 1340, annealed + 740938e5-cbf4-4329-a132-317986c42928 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + a051fd93-c079-4c56-814e-f1a1f06ae422 + Mass + 100.0 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 1302c3cc-958c-4115-8576-14da6ff3319b + Mass + 24.247723270323 + + + + + 8.21584744645 + + MI_Restricted_Substances + 1a7c6e51-066a-4f25-9c48-76ca6fbd8330 + + Glass ceramic - 9658 + Glass ceramic - 9658 + 3e32010b-4f5e-40c0-bd19-89a0a002d4ca + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 853274a8-e09a-46e7-9fa2-a83c8460da8d + MassRemoved + 64.194198960528 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 6c6b7134-8bd3-46d4-bcb9-f1207971edd5 + Mass + 100.0 + + + + + + + 2.0 + 74.935423943649 + 600de0c1 + part_600de0c1-269a-4cb5-a3dd-0f06a65e8a04 + 600de0c1-269a-4cb5-a3dd-0f06a65e8a04 + + + 14.679744241144 + + MI_Restricted_Substances + b869cbb1-f68c-4d4a-ba09-c5ac060f1e31 + + Normalized + Low alloy steel, AISI 4620, normalized + f06a9b56-aca5-4ff8-abbe-575e72b1f4a6 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 61a4cbdc-a3f0-45bc-98b6-48e86dbf7d04 + Mass + 100.0 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + e138600b-057c-4217-9d69-d02397975bb1 + MassRemoved + 86.673751886316 + + + + + 28.440085252951 + + MI_Restricted_Substances + a371ea54-94e0-4a85-9b8a-856cf82f2e1d + + SAE 4130, cast, quenched & tempered + Low alloy steel, SAE 4130, cast, quenched & tempered + 8e5f94e3-ba10-4e42-93d8-bd5830929189 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 053df7ee-4b20-4403-a01a-1a974af58e88 + MassRemoved + 3.69976507672 + + + + + 28.440085252951 + + MI_Restricted_Substances + 7c0b2792-bc51-4837-a380-6cdb1c2fba31 + + water quenched & tempered at 205°C + Carbon steel, AISI 1030, water quenched & tempered at 205°C + 0ca4f619-8307-4733-9d1f-b25c1baa17b4 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 26b196c4-c9f8-4937-bf2e-cb1b4cf0a508 + Mass + 100.0 + + + + + 28.440085252951 + + MI_Restricted_Substances + 8dd7188c-28e5-44bd-9d82-dc7a3890fe9b + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 8660, oil quenched & tempered at 425°C + + f7318ab7-62ca-4424-8c50-9f0a0b9973ac + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 487d792d-3b4b-4d68-b262-e07419d26ee7 + Mass + 100.0 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + e3f0937a-c3ec-4bb5-a88a-cf06b71192c2 + Mass + 100.0 + + + + + + + 6.0 + 81.249335306347 + 69cb5bfe + part_69cb5bfe-9b6e-4526-a72d-355b609a9766 + 69cb5bfe-9b6e-4526-a72d-355b609a9766 + + + 22.138060965639 + + MI_Restricted_Substances + 0840d007-df07-4e12-bda5-bfc060fb15e6 + + Annealed + Low alloy steel, AISI 4320, annealed + 9ebb0694-21c8-43a3-9f5c-c85a7a30681f + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 133c245b-aaf6-4ac7-ae8d-cf874add17fe + Mass + 100.0 + + + + + 19.46548475859 + + MI_Restricted_Substances + eb2b811b-1da6-465a-857f-6d14b372a38b + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 50B60, oil quenched & tempered at 650°C + + 5f7e24e3-0b39-41bc-b5f8-389db535d06d + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 66988dcc-8901-4913-9730-c3a1271333f5 + Mass + 100.0 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + a2000eb3-8982-4192-9600-2daf6daed5f5 + Mass + 100.0 + + + + + 19.46548475859 + + MI_Restricted_Substances + dbf855b9-a140-458a-af71-ee8bc216e050 + + YS140, cold rolled + Drawing quality, YS140, cold rolled + 8752cd77-a987-4ae3-98f4-685752472913 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 34a218b2-9122-4935-99c5-12ea2f110f66 + MassRemoved + 83.81719658329 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + e901dc5d-4eae-4a52-ba77-589ac8e3a737 + Mass + 3.473459651448 + + + + + 19.46548475859 + + MI_Restricted_Substances + e9388a2e-df9f-4ef4-8f47-d4cc5a94b8e7 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 50B46, oil quenched & tempered at 425°C + + 7c8c7a54-e6ed-4e22-8b59-8101d8103a7c + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + ce65f8df-0e6d-4139-b034-106e035ab92f + Mass + 100.0 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 057914de-e8e5-461c-aa09-5009156e79ad + MassRemoved + 92.896151539355 + + + + + 19.46548475859 + + MI_Restricted_Substances + 8dc38bb5-eff9-4c60-9233-271a3c8f6270 + + Kovar, annealed + High alloy steel, Kovar, annealed + 608d3663-2d8a-4746-8fdc-171aaef76480 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + de7681c8-627f-4d67-be73-f14fb9a5cb08 + Mass + 100.0 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + fd0a4cbb-ee32-4ad7-a7b7-dacdd530c9e5 + Mass + 100.0 + + + + + + + 2.0 + 69.549875785387 + + MI_Restricted_Substances + 5fd070ef-bb1b-4857-abcf-7eda481ecfbe + + 585c4a04 + part_585c4a04-66ae-4320-ac0b-1862c814961b + 585c4a04-66ae-4320-ac0b-1862c814961b + + + 7.0 + 85.600161592289 + 6c61c8d8 + part_6c61c8d8-c73d-4b8d-a826-102684aa9aeb + 6c61c8d8-c73d-4b8d-a826-102684aa9aeb + + + 50.493672327368 + + MI_Restricted_Substances + 4ff376ea-25d8-4792-a34f-9bd7b33c210c + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 4150, oil quenched & tempered at 540°C + + c8bb3e17-04cf-45a1-bcd7-99d3fb74a16f + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 34e02d17-c4e5-435b-8ed3-ffb1ef4c9d2a + Mass + 100.0 + + + + + 7.072332524661 + + MI_Restricted_Substances + 181b484f-4ada-4e9e-8c47-103ae23d76c3 + + Quenched & tempered + Low alloy steel, AISI 8740, quenched & tempered + 3a92cc02-c44b-44e4-a148-15aea8a90035 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 4e022716-d5fe-4c11-91e5-a62b08090d7e + Length + 3.632639583029 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + e8a2af71-51b8-4ef4-8387-739f2b5fe836 + Mass + 100.0 + + + + + 7.072332524661 + + MI_Restricted_Substances + a8f02f5c-c80e-446f-92f4-0046f3d093fc + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 8630, oil quenched & tempered at 425°C + + a9791003-2e6c-4557-8c19-e80bc23a8e15 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + cb06c772-3325-4721-809c-aa202f9520a5 + Mass + 100.0 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + c9e53a39-ce3f-4a5b-8a54-a92185f46219 + Mass + 100.0 + + + + + 7.072332524661 + + MI_Restricted_Substances + 81ce98b3-d459-4695-9dd9-d53244be47ed + + Annealed + Carbon steel, SA216 (Type WCC), cast, annealed + 8a55ec37-ad56-4cec-87c9-365c731bfe1b + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + da1a7f41-d844-4f49-afa9-ca6d593638db + MassRemoved + 83.995902670545 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 6d7c3052-e17d-473f-afd4-3d90020677be + Mass + 100.0 + + + + + 7.072332524661 + + MI_Restricted_Substances + 181b484f-4ada-4e9e-8c47-103ae23d76c3 + + Quenched & tempered + Low alloy steel, AISI 8740, quenched & tempered + 9dad5bd2-58a6-431c-b5cc-59ce56b4bcb3 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 5a78a2fc-7fe3-419f-a323-3b74619f1bac + MassRemoved + 79.990006042639 + + + + + 7.072332524661 + + MI_Restricted_Substances + a583e694-02c0-408e-9af4-6fbee856b58f + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 9260, oil quenched & tempered at 650°C + + f42679cc-9f4b-4473-95a1-5106c67077d8 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 7db14ace-659a-4a27-960b-2944742fd32a + Mass + 100.0 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 534e9bc3-533d-4407-b6e7-2bd6ab1e33a9 + Mass + 100.0 + + + + + 7.072332524661 + + MI_Restricted_Substances + 66ed26ec-15e8-47d9-a7dc-140271411c07 + + Quenched & tempered + Low alloy steel, AISI 4130, air melted, quenched & tempered + 873fb86e-f515-4a35-a234-56f49c739b2c + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + dae4d4ee-2726-4d17-8bff-16ba89e95b77 + Mass + 100.0 + + + + + 7.072332524661 + + MI_Restricted_Substances + 9ce914d8-75c1-4c5f-8c57-11c0e62b2cfa + + ASTM A299 Grade A + Structural steel, ASTM A299 Grade A + c8c694d5-afa2-4005-8c11-8825d43bfdb2 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + dd8d3ad7-3f40-4818-946d-86d68c06a83c + Mass + 100.0 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + baa2cf65-ab4e-459d-854a-cf25eaff975e + Mass + 100.0 + + + + + + + 8.0 + 75.952568639047 + 76726401.0 + part_76726401-baa8-44b6-a4e0-e5302dec10f6 + 76726401-baa8-44b6-a4e0-e5302dec10f6 + + + 74.780161154819 + + MI_Restricted_Substances + 535f6e21-a16f-4d54-8413-97634da82122 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 8650, oil quenched & tempered at 205°C + + bae80313-e173-4052-b2fa-50a9e2e60960 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 492b6ff3-0321-4fcb-aa5e-3158f3e62904 + MassRemoved + 2.252721368452 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + f4706c49-7f96-4bca-a23f-206a398e6230 + Mass + 100.0 + + + + + 25.21983884518 + + MI_Restricted_Substances + aec2777b-f126-4f12-b748-b94bf7393f2a + + Oil quenched & tempered at 650°C + Carbon steel, AISI 1060, oil quenched & tempered at 650°C + def7eaff-9817-496c-af57-856706c1a06e + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + ace803c1-43fb-4f08-a0c3-cfefe45ce798 + MassRemoved + 87.767226196717 + + + + + + + 8.0 + 86.782260186403 + + MI_Restricted_Substances + 65d980fe-c0ba-4642-af12-1fcec979852d + + e14a88c7 + part_e14a88c7-45e1-423e-b27e-86babfd9dcf3 + e14a88c7-45e1-423e-b27e-86babfd9dcf3 + + + 1.0 + 38.06979527607 + c414229d + part_c414229d-a82c-4aa3-8452-dcb41b67dea2 + c414229d-a82c-4aa3-8452-dcb41b67dea2 + + + 100.0 + + MI_Restricted_Substances + 9124b244-f2f8-44df-b2cf-b05d3406eb9e + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 4042, oil quenched & tempered at 315°C + + 124ef859-be1e-4318-a6b3-42da196e9137 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 4d6c7aba-caad-4a94-b180-6d4379626e21 + Mass + 100.0 + + + + + + + 5.0 + 66.076528730837 + c781e004 + part_c781e004-6dec-4760-8d43-243728f8e4d5 + c781e004-6dec-4760-8d43-243728f8e4d5 + + + 78.259487998792 + + MI_Restricted_Substances + 75a1c963-399c-444d-a38f-1929c00d15b7 + + Normalized + Low alloy steel, AISI 4150, normalized + 8d70de8d-1d0e-4a4b-801f-f95215c3976a + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 5ebcadfc-4777-48c0-8c5a-d9cfbfa16325 + Mass + 100.0 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 52139b6c-770b-46c3-9071-80999f8382a7 + Mass + 100.0 + + + + + 3.105787428743 + + MI_Restricted_Substances + 1851a6ff-c2e6-4bc6-ab7a-a0eae431e281 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 5140, oil quenched & tempered at 540°C + + c729cdfe-6a51-4370-b488-c287406172e2 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 34620b10-bb57-496d-8575-9a758f6e5672 + Length + 73.591168398778 + + + + + 3.105787428743 + + MI_Restricted_Substances + 644fc87d-87f3-468c-9a88-b8e2db43ae6b + + water quenched & tempered at 650°C + Low alloy steel, AISI 4130, water quenched & tempered at 650°C + + 658cb1e8-b222-4188-9e64-f4df80338b62 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + adf2d187-1992-4151-a37c-c2149382bb0b + Mass + 65.685986851195 + + + + + 3.105787428743 + + MI_Restricted_Substances + c15a44c3-d8be-4ae8-9a58-281f13b731cd + + YS420, cold rolled + High strength low alloy steel, YS420, cold rolled + 75c9a03c-429e-4914-a23d-a4b305f0cf9c + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 85c5e31f-cc31-485d-a4d5-4f439b884794 + MassRemoved + 23.233038058147 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + d4b40bf2-bc76-4582-b25a-b90a0cadcfad + Mass + 100.0 + + + + + 3.105787428743 + + MI_Restricted_Substances + 21dcdeeb-524a-488e-b332-fcd4e1caf6f7 + + water quenched & tempered at 650°C + Carbon steel, AISI 1095, water quenched & tempered at 650°C + ae27b040-e52b-4a16-8609-dbbc671c97f3 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + c5a8c571-1e07-406a-b2ef-9e6aa295ea19 + Length + 53.134468408829 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 5b8d094f-3398-4ef9-a662-0f4c5ab3a86e + Area + 51.965984912573 + + + + + 3.105787428743 + + MI_Restricted_Substances + 1b3f17f9-2754-4fc4-bfa2-75ff0df55185 + + Polytetrafluoroethylene (PTFE)/Glass fiber, PCB laminate + + Polytetrafluoroethylene (PTFE)/Glass fiber, PCB laminate + 7c1f398f-df49-45f6-b3b6-432c087f268d + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 537e1811-9212-4162-beab-93f0bf581d6f + Mass + 100.0 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 4ae4ce1a-50e8-4c13-9b14-b04cdb768561 + Length + 91.359442282169 + + + + + 3.105787428743 + + MI_Restricted_Substances + 4f35be96-97d7-4cea-bd9a-316ce3dbe46e + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 8740, oil quenched & tempered at 425°C + + 711d23f1-e1d1-4071-acc0-a71da961a93e + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + bda1ae1e-2cee-4f9d-a249-608570a13981 + Mass + 100.0 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 592bba8e-fff8-473e-ae64-fa414716e95c + Area + 94.373309237125 + + + + + 3.105787428743 + + MI_Restricted_Substances + 2fca0cda-4548-4601-ade6-49478da1542f + + Potash soda lead glass - 0120 + Potash soda lead glass - 0120 + 144549de-c05a-4f1d-ab02-55b3b7864a35 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + cccde058-d3c4-47f6-b3ea-7cd7ecb9738d + Mass + 100.0 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 21969510-545d-40d2-9285-022e1e4c34b9 + Mass + 100.0 + + + + + + + 4.0 + 34.739925868222 + 3faf1c02 + part_3faf1c02-59c7-4ecd-aeee-a7e858166b6e + 3faf1c02-59c7-4ecd-aeee-a7e858166b6e + + + 17.061088474961 + + MI_Restricted_Substances + 5b117a10-9c48-4dd0-a869-6eb490031da5 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 8640, oil quenched & tempered at 315°C + + f9f46acf-b949-4c88-a4fc-1fac6b060499 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 27bbf502-8873-4da2-a061-5fac31a30463 + Mass + 100.0 + + + + + 11.848415932148 + + MI_Restricted_Substances + 0c03540d-4b15-4c02-ac02-22aeb9a026d1 + + As rolled + Carbon steel, AISI 1050, as rolled + 86de2392-1c0c-4669-84e6-e9706904b083 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + d12be22d-c654-43de-a124-dbeb82fe01af + Mass + 100.0 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 6262f7bd-bdcc-425a-b0ab-839797dfd342 + Mass + 100.0 + + + + + 11.848415932148 + + MI_Restricted_Substances + b0c0246d-7238-46e4-9081-5bad34efbbdb + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 5140, oil quenched & tempered at 205°C + + 3670ad3e-b86c-42d6-9369-98cbe97b1784 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + 5751da81-aab6-4ec8-bfa5-3b0fc3aa666f + Mass + 100.0 + + + + + 11.848415932148 + + MI_Restricted_Substances + 31491cd8-6f82-4358-a2d6-ef62bfbbfadd + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 4150, oil quenched & tempered at 205°C + + 5668f21e-c347-4e6e-8600-007a6685dcf3 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 4576df90-6acf-478e-aa20-3ff3daf41fac + Mass + 100.0 + + + + + 11.848415932148 + + MI_Restricted_Substances + 2a821f5c-97b0-4a08-81b1-de3f1543fb44 + + Alkali strontium clear glass + Alkali strontium clear glass + 82762369-e6d6-4208-bc80-ebec9047c104 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 5ad105d9-bc68-4a9d-94b1-71fb52ae712b + Mass + 100.0 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + d3f08ad0-5a6b-4586-858b-f774abfb5e4d + Mass + 100.0 + + + + + 11.848415932148 + + MI_Restricted_Substances + e86ced85-7d75-4b62-8f8e-90bd345ae003 + + Normalized + Low alloy steel, AISI 5140, normalized + c62f6af4-a772-4fae-a097-6102d8585d71 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 88628cc8-966c-43a4-bf3f-ae07beb03e30 + Mass + 100.0 + + + + + 11.848415932148 + + MI_Restricted_Substances + 1c7183ad-1608-4e9b-8d01-76721872fbf0 + + Glass/polyimide honeycomb, ±45° fabric (0.088) + Glass/polyimide honeycomb, ±45° fabric (0.088), W Direction + 0184e1c1-d32a-4391-bea7-c89d45ca500c + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + a738a823-8f01-4c63-be05-36c7bf87e740 + Mass + 9.085334050043 + + + + + 11.848415932148 + + MI_Restricted_Substances + c15a44c3-d8be-4ae8-9a58-281f13b731cd + + YS420, cold rolled + High strength low alloy steel, YS420, cold rolled + 068e5759-afc8-4b4b-9ad6-dbe2c9bb6a9e + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + ec0efe92-6a72-4967-84d2-95261d4c6c08 + Length + 75.221976952265 + + + + + + + 8.0 + 26.336370979592 + 0dbc4bcb + part_0dbc4bcb-7860-4d68-9e1c-2262ae49c643 + 0dbc4bcb-7860-4d68-9e1c-2262ae49c643 + + + 31.877887170704 + + MI_Restricted_Substances + 817b973c-3e12-4b5f-96b3-89b05d14d76c + + ASTM A500 Grade C + Structural steel, ASTM A500 Grade C + ebfeefe1-6b1e-4e0c-955f-0fab4f7c9923 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 6f0add2b-811a-4910-bc00-819613f56130 + Mass + 100.0 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 9a201574-74b0-4655-afee-b0cde6b6c0ad + Mass + 100.0 + + + + + 68.122112829295 + + MI_Restricted_Substances + 9df55457-5300-4ddb-b92e-122b5c121621 + + Glass and mineral filled, encapsulation, molding + Novolac (glass and mineral filled, encapsulation, molding) + a510660d-8847-40e7-9013-1b3a2aa1e846 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 721bb10d-40b3-40f8-a442-31329929a99a + Mass + 100.0 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 0dbd4f92-52da-4612-8f9b-445d36bd2baf + Mass + 100.0 + + + + + + + 4.0 + 43.539729082742 + 8719cee3 + part_8719cee3-7e5e-419e-82b4-a33ad703e445 + 8719cee3-7e5e-419e-82b4-a33ad703e445 + + + 6.816629090726 + + MI_Restricted_Substances + 91d7e1bd-d353-4eb1-9634-286e8e69d0d5 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1141, oil quenched & tempered at 540°C + 09339501-b90d-4cc7-b6f3-ad949f588d4d + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 3e935dc2-739a-49b1-9698-176143391e94 + Mass + 44.908148210918 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + c343fa32-2b7b-42c9-aee9-0c00bce27843 + Length + 72.754816465431 + + + + + 15.530561818212 + + MI_Restricted_Substances + 0c03540d-4b15-4c02-ac02-22aeb9a026d1 + + As rolled + Carbon steel, AISI 1050, as rolled + 04b0c57d-d8dd-4273-8532-8996b5b50db9 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 865313d8-57a7-40af-85b4-929a1aac2fcb + Mass + 100.0 + + + + + 15.530561818212 + + MI_Restricted_Substances + bbe0765c-012b-434e-878b-b40ad692b373 + + YS550, hot rolled + High strength low alloy steel, YS550, hot rolled + da34dc54-db5a-40de-a63d-af3f077d3709 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + a3719d7a-5b96-47ca-97a0-bddd60ff8504 + Mass + 100.0 + + + + + 15.530561818212 + + MI_Restricted_Substances + 28d51559-b49b-4a2b-9f09-9a198db03164 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 4340, oil quenched & tempered at 425°C + + b6f03f03-413a-4337-ba39-05190a7b2dd7 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 594dabbe-39fd-4dd1-b88e-478b03efea2a + Mass + 100.0 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + 921a2ff2-aff7-4122-a3e3-1d9b999e2e22 + Mass + 100.0 + + + + + 15.530561818212 + + MI_Restricted_Substances + ab895171-8c16-4056-9062-78f7516be1b0 + + Borosilicate - 7050 + Borosilicate - 7050 + 9c05940d-1c2a-4e3d-969c-d01087aaf891 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + bff839a3-d322-4f30-ab57-f2a490f66d3a + MassRemoved + 56.520598594341 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + c29daa43-5f13-4db1-850f-84554bde107e + MassRemoved + 14.154799102877 + + + + + 15.530561818212 + + MI_Restricted_Substances + 9e11a8f7-0b35-4610-aee9-557a236bbe5c + + Soda borosilicate + Soda borosilicate + 5dc0bd97-c630-46fb-a89e-16a37070be8c + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 2ded6187-797e-46b0-bc88-cd21cb67e9dd + Mass + 100.0 + + + + + 15.530561818212 + + MI_Restricted_Substances + 0a203f13-4112-4c7b-8d17-bd9ce600f647 + + YS350, cold rolled + Dual phase steel, YS350, cold rolled + f2dfa513-aae0-4797-beb9-1ed13e79d1d8 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + bf617362-33d0-4391-a330-bb1605b6106a + Mass + 100.0 + + + + + + + 6.0 + 81.783242049526 + a0b611b5 + part_a0b611b5-342d-4b79-be32-7c9a076e0e8f + a0b611b5-342d-4b79-be32-7c9a076e0e8f + + + 18.181860315698 + + MI_Restricted_Substances + 99d1c1c6-eca3-40ed-a479-6dec902f52da + + YS400, cold rolled + TRIP steel, YS400, cold rolled + f4beeddc-916c-4c6b-b4ef-579374ef198d + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 5046dd39-4752-4147-877b-f1661f6e3812 + Mass + 23.847984161157 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + 636cacf1-3471-4160-b4da-89d7cb071e26 + Mass + 100.0 + + + + + 20.454534921075 + + MI_Restricted_Substances + 59606aaf-e663-4044-b533-b4b8cb684253 + + YS500, cold rolled + Complex phase steel, YS500, cold rolled + e9403f7e-9696-4f1d-a154-714de79d9668 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 730d48fa-c6ef-4824-88ff-55453ba45851 + Mass + 100.0 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 028e4dc7-f215-4846-9938-98ef924d2a7e + MassRemoved + 83.67520085707 + + + + + 20.454534921075 + + MI_Restricted_Substances + b44fad5b-b59d-4153-addf-f70a7895947d + + Annealed + Low alloy steel, AISI 4130, annealed + 618cbf4c-398c-4566-ae46-3b02aeea4d07 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 5e318605-a8ed-40be-9d53-8871d8887891 + Mass + 100.0 + + + + + 20.454534921075 + + MI_Restricted_Substances + dce2dc34-54db-4d0a-bab0-85d4e6e08d8e + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 6150, oil quenched & tempered at 650°C + + 7a112c50-ea81-4f06-9f2b-e0bb931100f1 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + be96ad5c-ea44-4e45-a520-83bd94672ada + Area + 0.54022697757 + + + + + 20.454534921075 + + MI_Restricted_Substances + 0c172430-369d-48ad-910e-69fe1451a36e + + Normalized + Carbon steel, AISI 1095, normalized + e81306d4-b281-4497-ba8a-5b2a664492c7 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 9803fbe4-2ff3-4ba5-83cd-4ab5cb34d1b7 + Mass + 100.0 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + dab3d543-1214-4a62-b05e-3f3291a45893 + MassRemoved + 36.132488789098 + + + + + + + 4.0 + 35.294632024734 + 208ce13a + part_208ce13a-b5f1-4feb-a7bd-e85b0bb4a8ad + 208ce13a-b5f1-4feb-a7bd-e85b0bb4a8ad + + + 100.0 + + MI_Restricted_Substances + 046c72ad-662c-4ce8-8132-16d5254188ee + + Heat resistant, molding + PF (glass and/or mineral filled, heat resistant, molding) + 3e668c82-8399-4eb2-b017-b473ff533ac3 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + 650bd447-3070-4a45-bb76-27c65e9e4ca4 + Area + 96.301162008336 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 9d95b09b-f3c6-448d-95c8-f6231f465cd3 + Mass + 100.0 + + + + + + + 1.0 + 31.815718874249 + + MI_Restricted_Substances + 19db41d7-f431-4cae-8977-8bdab8435374 + + a50db05b + part_a50db05b-55c0-48e8-b262-8bffcfa8738c + a50db05b-55c0-48e8-b262-8bffcfa8738c + + + 9.0 + 67.046943896937 + 3a641f16 + part_3a641f16-839e-4d1f-aae2-ee4563f538c1 + 3a641f16-839e-4d1f-aae2-ee4563f538c1 + + + 100.0 + + MI_Restricted_Substances + 72799627-a7c0-4df4-8250-e2be8538565f + + Glass ceramic (N11) + Glass ceramic (N11) + 1f60f091-b4e3-4c58-b54d-61be8f2f0000 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + c3674baf-8976-4c3f-944b-0c659f07fd2f + Area + 77.097102663059 + + + + + + + 2.0 + 39.974975185457 + ba8288a7 + part_ba8288a7-5880-41d0-a8bc-4a42f0ee5be7 + ba8288a7-5880-41d0-a8bc-4a42f0ee5be7 + + + 79.039278896078 + + MI_Restricted_Substances + fc29cc59-a670-4ad6-85a0-eb07bf011f1a + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 6150, oil quenched & tempered at 425°C + + 4e1f456c-0ea0-40ac-bb59-3c78d035d548 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 27d27927-bd18-4356-bb79-401374ff5801 + MassRemoved + 8.451010104478 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 8a6c5514-4b0d-4384-b2fd-1819bdf963aa + Length + 1.723464532626 + + + + + 20.960721103921 + + MI_Restricted_Substances + 874b8433-2e47-45c3-9c89-226428104214 + + Glass and mineral filled, heat resistant, molding + Novolac (glass and mineral filled, heat resistant, molding) + 7eda1423-f305-4bde-9d90-2e83666732fd + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + dfc3b8b7-afa2-41a4-8e7d-7d8682633f0d + Length + 17.662342273472 + + + + + + + 2.0 + 38.256926992096 + 19bd4234 + part_19bd4234-39b1-47f8-8eac-af3b32dbf354 + 19bd4234-39b1-47f8-8eac-af3b32dbf354 + + + 60.862659784435 + + MI_Restricted_Substances + 67ea6f19-34d5-40af-9b8c-059058fd840a + + Oil quenched & tempered at 205°C + Carbon steel, AISI 1080, oil quenched & tempered at 205°C + cd2796d3-e2ad-4034-bb16-0ed081b6ba85 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 6d20e938-760d-4d91-80bb-7ef9c624bdd4 + Mass + 15.575744544889 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + 2dd4aba0-cfb4-40e5-9e8a-6dc04a8ef5b7 + Mass + 100.0 + + + + + 19.568670107782 + + MI_Restricted_Substances + ed1b937b-1738-408f-9591-bd3e40cc5e33 + + Quenched & tempered + Low alloy steel, D6AC, quenched & tempered + a2e8261e-5fd8-40b8-b1de-bf192c84f1a6 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 4f611131-8c4a-4d39-b8ee-dad994576bb7 + Mass + 100.0 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 3f84b836-0ee0-4a42-a86f-5367cdc47fb1 + Mass + 100.0 + + + + + 19.568670107782 + + MI_Restricted_Substances + 3606ab13-13f3-49fb-bded-2e3470bcf7d9 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 81B45, oil quenched & tempered at 650°C + + 438e3a3e-b57b-4f61-a754-c1a9f8f14655 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + ba4a6d40-3e32-41ca-8396-b53a02414c81 + Length + 53.87500401301 + + + + + + + 5.0 + 3.562935443391 + 9dd6db59 + part_9dd6db59-314a-44cb-a1f8-80d8fef48bf7 + 9dd6db59-314a-44cb-a1f8-80d8fef48bf7 + + + 20.781745911008 + + MI_Restricted_Substances + 0a203f13-4112-4c7b-8d17-bd9ce600f647 + + YS350, cold rolled + Dual phase steel, YS350, cold rolled + 7e1abe58-dc2f-49e9-b7c0-dbc38cbc01d0 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 6728f46f-986a-4275-9387-1cc4faa4da0b + Mass + 85.85280691546 + + + + + 39.609127044495 + + MI_Restricted_Substances + 55c8dd10-b62f-4136-b1c8-6260fcec05cc + + Annealed + Carbon steel, AISI 1040, annealed + a63a43fb-bd3e-4713-9d59-14cd253dcfb8 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + e10732c7-d7d9-40f8-9ce9-834264f73e30 + Mass + 100.0 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 312ad884-6078-48de-ac21-4b1cb4df5195 + Mass + 100.0 + + + + + 39.609127044495 + + MI_Restricted_Substances + 9052201a-a41d-4b86-8c7c-2e80163afd47 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 9255, oil quenched & tempered at 425°C + + 3f0e83fa-2dc2-40fd-8673-7af055ac9ebb + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + fdd1873a-08e3-49d6-ac02-ac8740413d2f + Mass + 98.719918261617 + + + + + + + 2.0 + 65.842380172499 + 91357df5 + part_91357df5-a0a9-4613-9e4e-4db5c3dd290a + 91357df5-a0a9-4613-9e4e-4db5c3dd290a + + + 29.547984213357 + + MI_Restricted_Substances + c62d668e-5411-4845-b19c-3a0c4eedf872 + + 10CrMo9-10, normalized & tempered + Low alloy steel, 10CrMo9-10, normalized & tempered + 3f3c809b-73b8-49b9-9c0b-bc086b8b39a9 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 3d8df13c-3e9f-4988-bede-97cdbdea9c70 + Mass + 100.0 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + d644e2f7-3fb6-4478-a0e6-492dc9095c10 + Mass + 100.0 + + + + + 10.064573683806 + + MI_Restricted_Substances + bf6aa85b-3059-4b2c-86af-6bcb1996d5b9 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1340, oil quenched & tempered at 540°C + 992bae49-43ed-4d6f-9ab8-9a32662693fe + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + d9c54a78-22a2-4129-8026-e53bf8b5e318 + Area + 24.615524534422 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 23cdc31f-0efe-4f13-9490-41453d6a83ed + Mass + 100.0 + + + + + 10.064573683806 + + MI_Restricted_Substances + 26c4e2ce-ddb9-499d-bc00-aa0f3bdd9c24 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 8740, oil quenched & tempered at 540°C + + 2ea7361e-06a4-4657-87e0-1c0de2008304 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 65a19922-4bb3-4ca4-a6a5-69dca645c5ff + Mass + 100.0 + + + + + 10.064573683806 + + MI_Restricted_Substances + 7ab4723d-0e73-471b-9be3-18cf27157318 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 5130, oil quenched & tempered at 540°C + + 99975f48-c24c-4386-ba08-6128ca010a84 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 622c3df4-5555-49e5-873b-382ad90ef3ba + Length + 68.233961969722 + + + + + 10.064573683806 + + MI_Restricted_Substances + 6ad310ec-db2b-43b1-afa1-9b6ddae5880c + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 94B30, oil quenched & tempered at 425°C + + 0da179b9-8835-487a-9c7e-dc94a332499c + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 7567cd31-1442-4f82-b28a-fe35bc1588d2 + Mass + 100.0 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + e7d87153-23d8-4119-8d80-f876d25399c0 + Mass + 100.0 + + + + + 10.064573683806 + + MI_Restricted_Substances + 8dbb57f2-b225-4f57-9a5a-c25a03292d6e + + Annealed + Low alloy steel, AISI 6150, annealed + b9be711b-55d6-4195-b9d0-e0a8d321904c + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 1834584f-afbf-4ab2-bc96-be73a97aa21e + Length + 65.846575966964 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 00887d64-3f95-46fc-9953-4f368a07f0eb + Mass + 100.0 + + + + + 10.064573683806 + + MI_Restricted_Substances + a43e27db-2962-4e19-aebb-f135744741e3 + + Annealed + Low alloy steel, AISI 5120, annealed + ddf239e2-6149-43a3-8000-236874b5839b + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 0ef4f2b1-4984-4c98-90bd-180542bd7dde + Mass + 100.0 + + + + + 10.064573683806 + + MI_Restricted_Substances + 5169a157-0d18-4d45-b197-799e06aa00bc + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 9255, oil quenched & tempered at 315°C + + b85fa4ef-7d24-45db-b8ab-89797f8458c2 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 727324d2-de0e-483e-869c-5ce872d30888 + Length + 39.33581776886 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + eef71883-cb51-409a-b7ce-70882f5ef579 + Mass + 100.0 + + + + + + + 3.0 + 19.394435323492 + 1ff628be + part_1ff628be-8e3f-4c38-879f-0b4048e9e811 + 1ff628be-8e3f-4c38-879f-0b4048e9e811 + + + 65.880094313006 + + MI_Restricted_Substances + b00ee3d8-d653-4c76-8154-c2f07820ceda + + As rolled + Carbon steel, AISI 1080, as rolled + 34f2f2b5-283d-41db-9853-4563182a132c + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 666ac6f9-c3bc-48e2-bc93-7e95e405309a + Length + 13.837830169982 + + + + + 5.686650947832 + + MI_Restricted_Substances + dcce1340-a96d-465a-8878-4d8f44c2f7f7 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 5150, oil quenched & tempered at 540°C + + 1f4c5613-0146-4a59-a030-e486677f0f9b + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 1963c1c5-b111-47ea-bb86-1bbde20ee277 + Mass + 100.0 + + + + + 5.686650947832 + + MI_Restricted_Substances + b879bb01-8648-4b5b-8159-d591cb251ca8 + + Normalized + Carbon steel, AISI 1080, normalized + a01b000d-fda4-4c5d-8d5d-d69fd0bb5e70 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 56e8844a-a9f1-4e73-b34e-8dda8ee558ec + Mass + 100.0 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 578cc726-506b-4075-ad45-8cff91a53ada + Mass + 100.0 + + + + + 5.686650947832 + + MI_Restricted_Substances + 2be5267e-fce0-4169-a0fe-d8de913e1d71 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 8640, oil quenched & tempered at 205°C + + f68aa67a-f7f4-489e-9eaa-286340efe2d1 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + dc22fa7d-7549-4386-8c95-1837f5c128b2 + Mass + 100.0 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 530a525e-76b2-4f7f-9788-0e6d257c2238 + Mass + 100.0 + + + + + 5.686650947832 + + MI_Restricted_Substances + f95fb065-be79-4298-84c9-9f276ea46e48 + + Glass/polyimide honeycomb, ±45° fabric (0.088) + Glass/polyimide honeycomb, ±45° fabric (0.088), L Direction + 03a3141d-7b1e-4fff-a8a6-37299f364430 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 56360d01-e86f-423e-b37b-9fa3ba08185e + Mass + 59.824284752749 + + + + + 5.686650947832 + + MI_Restricted_Substances + 2017a3b5-88e7-473f-b7c9-1ab8afe722fe + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 5160, oil quenched & tempered at 540°C + + 9904d2c7-5bf9-4f27-8090-81297a499433 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 0b71141e-c7c1-41f5-87e5-badcfc0a5a0c + Length + 67.201602164284 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + a22737bb-cc0a-4f41-9a11-64e3af9a7db4 + Area + 42.627087767527 + + + + + 5.686650947832 + + MI_Restricted_Substances + e678781a-1b38-4709-816b-9db609651db6 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 50B60, oil quenched & tempered at 425°C + + e7349359-10ab-4551-be4e-c99c7405dde4 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 93c0653b-b85f-40c7-93ee-3a0d7f16d0a6 + Mass + 100.0 + + + + + + + 9.0 + 66.355843034738 + 873e2b55 + part_873e2b55-ef6f-416b-9880-a137f2b762af + 873e2b55-ef6f-416b-9880-a137f2b762af + + + 54.279447185937 + + MI_Restricted_Substances + 81ce98b3-d459-4695-9dd9-d53244be47ed + + Annealed + Carbon steel, SA216 (Type WCC), cast, annealed + 023a42db-39d1-420c-bd0c-c50e7ec5d6b3 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 219011eb-716b-4b65-9d55-75b1e95d8541 + Mass + 100.0 + + + + + 45.720552814062 + + MI_Restricted_Substances + b872537b-c0a0-4c3e-8388-e5544183cdd3 + + water quenched & tempered at 425°C + Carbon steel, AISI 1030, water quenched & tempered at 425°C + 85907385-a5ab-40fb-a8a1-d2d28034c0eb + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + c35e2aff-f3f8-4e4e-9a92-f70a56d3e198 + Length + 72.001279877499 + + + + + + + 8.0 + 25.110623578126 + 260376b9 + part_260376b9-7f28-4b9d-ba85-c71529c2e558 + 260376b9-7f28-4b9d-ba85-c71529c2e558 + + + 100.0 + + MI_Restricted_Substances + 2096ca77-9981-4fd5-9bc6-afe56b3bbbd4 + + Glass/phenolic honeycomb, 0°/90° fabric (0.096) + Glass/phenolic honeycomb, 0°/90° fabric (0.096), W Direction + cd0e804b-5055-491c-91bb-f578cd24b402 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + ac430bac-6be6-4ca3-a355-eaf8a392dca2 + Mass + 100.0 + + + + + + + 4.0 + 81.728687594518 + 650a75cd + part_650a75cd-cf12-4f02-894a-47b250a8a649 + 650a75cd-cf12-4f02-894a-47b250a8a649 + + + 35.709987178309 + + MI_Restricted_Substances + 44a3cdc8-1092-45c0-be37-1802daa92d30 + + Borosilicate - 7052 + Borosilicate - 7052 + 5c6db892-edf7-4a01-891a-62b1a8c3c0b3 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + a27619f0-e851-4da1-a062-7e6c7629df5f + Mass + 100.0 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + 29cedba9-c8e5-484f-8b1e-1573897b939a + Area + 74.103033949669 + + + + + 32.145006410845 + + MI_Restricted_Substances + 874b8433-2e47-45c3-9c89-226428104214 + + Glass and mineral filled, heat resistant, molding + Novolac (glass and mineral filled, heat resistant, molding) + 3bd97cc5-55ff-4338-8f5b-868161733ffb + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + d09771bf-6836-4948-99e4-add1146832cc + Mass + 70.765653238988 + + + + + 32.145006410845 + + MI_Restricted_Substances + bafd43bc-822e-4a22-bbac-ea5d189fb539 + + Glass/phenolic honeycomb, 0°/90° fabric (0.096) + Glass/phenolic honeycomb, 0°/90° fabric (0.096), L Direction + 9adcfe4f-0bcb-4a67-b39a-cb7ce736e73b + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 3b5ffc91-f48d-403f-ae38-123563087d04 + MassRemoved + 57.180027364371 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + a921ce26-772c-4779-8f41-ef92162af905 + Area + 19.032967425432 + + + + + + + 1.0 + 41.88864475204 + 9ebdc15a + part_9ebdc15a-d6ae-45be-99de-789d4100ca40 + 9ebdc15a-d6ae-45be-99de-789d4100ca40 + + + 100.0 + + MI_Restricted_Substances + a89802d6-13c5-496d-b139-57ae43e6591c + + As rolled + Carbon steel, AISI 1022, as rolled + 94c367bb-be30-41d7-b198-c89579e1eacd + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + cd0c3208-da44-4c68-bea8-bde114513392 + Mass + 100.0 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + b65d9c76-58c0-4361-9dc0-a64d214066cb + MassRemoved + 76.781887224308 + + + + + + + 5.0 + 13.107623305687 + b489c8c7 + part_b489c8c7-b4d5-4664-aa4b-bb5250ccf3b2 + b489c8c7-b4d5-4664-aa4b-bb5250ccf3b2 + + + 100.0 + + MI_Restricted_Substances + 23967b46-b6a1-4f82-9a4f-d0ea6e728ece + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 5160, oil quenched & tempered at 650°C + + 73ef86b5-6d18-4588-a375-1e5a070886e8 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + fbf0e496-74ad-4a0d-9726-2358bc601732 + Length + 39.468133654197 + + + + + + + 4.0 + 96.196341093721 + 5b9257d1 + part_5b9257d1-f821-4fff-a137-7e3ee55bfa4e + 5b9257d1-f821-4fff-a137-7e3ee55bfa4e + + + 93.020738238944 + + MI_Restricted_Substances + be8a7515-ee24-4272-814c-77d9175f6448 + + As rolled + Carbon steel, AISI 1137, as rolled + 6ea1fac4-fb32-4f3c-af4b-f096113a38dc + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + aa5fbc04-e9e0-454a-bc5d-97ee7d8abd00 + Mass + 100.0 + + + + + 0.997037394436 + + MI_Restricted_Substances + 96ffbd8d-b296-4749-a0b0-fc5d243affda + + water quenched & tempered at 540°C + Carbon steel, AISI 1095, water quenched & tempered at 540°C + 156d7400-497b-46ae-b90a-01d15ae3584a + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 52debb42-5c4c-4d64-894a-f848f6076635 + Mass + 100.0 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 83a1e091-bf83-4510-906d-e127384dbaba + Length + 30.027891476651 + + + + + 0.997037394436 + + MI_Restricted_Substances + 9e6962c2-d850-4285-97e5-fbb27dbc0447 + + water quenched & tempered at 425°C + Carbon steel, AISI 1050, water quenched & tempered at 425°C + ed8f8b22-77d8-47c4-8445-35f902c2fd70 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 48d616ec-5d6c-43ef-8222-c9f556facab8 + Area + 36.9750342504 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 2598e531-13cd-4f51-924c-73bd3f0cbc5d + Length + 22.492894587336 + + + + + 0.997037394436 + + MI_Restricted_Substances + 6c7c9029-b53e-45cd-9578-92083101604c + + Glass/phenolic honeycomb, ±45° fabric (0.032) + Glass/phenolic honeycomb, ±45° fabric (0.032), W Direction + fa45dc1e-1853-45e1-83a8-443a15d8245d + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + d9f0a1eb-bbaa-40ee-a757-f8cdedaa53e8 + Mass + 65.565940814821 + + + + + 0.997037394436 + + MI_Restricted_Substances + f92ff01e-ed35-4c66-96d1-607d9684b44b + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 94B30, oil quenched & tempered at 315°C + + 3e210ce1-97e5-430d-803f-b12cade81d95 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 7a24a97b-8f05-466b-918b-4dc2f6c5ed90 + Mass + 100.0 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 60b3d98f-e477-465c-abc1-f70e10b5d9da + Mass + 1.46033600972 + + + + + 0.997037394436 + + MI_Restricted_Substances + 8cd50236-3f00-4460-9e77-bc85138f34c4 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 51B60, oil quenched & tempered at 425°C + + fdb12a23-07e4-41ed-a7db-1d63e9dba3dc + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 13e03c77-918f-49ce-823b-98f25145eb80 + Mass + 100.0 + + + + + 0.997037394436 + + MI_Restricted_Substances + 6d6a3603-a2a8-4db9-9e7e-ad4fc4f9c724 + + Glass/phenolic honeycomb, ±45° fabric (0.064) + Glass/phenolic honeycomb, ±45° fabric (0.064), W Direction + 642bc4ec-7dc1-4e24-b9de-f50f4971c09c + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + dcf23f35-d5c6-4368-b02e-6c0aa653c3eb + Mass + 100.0 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 900cce51-db5c-4b9c-b9b4-9a315fb29b16 + MassRemoved + 52.897117916912 + + + + + 0.997037394436 + + MI_Restricted_Substances + 87e1a3cd-fd79-4013-b5f8-56d6f28bef34 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1144, oil quenched & tempered at 540°C + 15f2d5f4-0d3f-4dcb-ac36-3502ea6bc955 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 63823504-d8fb-4123-933c-f810c438558b + Mass + 18.231672615852 + + + + + + + 3.0 + 22.852098812745 + 7d1e9930 + part_7d1e9930-f664-42e2-9303-926b6b2461e0 + 7d1e9930-f664-42e2-9303-926b6b2461e0 + + + 70.84336279465 + + MI_Restricted_Substances + a6ee4feb-80c5-43a7-b3ee-a1423218f502 + + AF1410 + High alloy steel, AF1410, solution treated & overaged + 2f3e003b-677d-4d37-8f9f-8d1464636002 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + fc55e36d-d625-4e4c-98a3-e04855bb014e + Mass + 100.0 + + + + + 29.156637205349 + + MI_Restricted_Substances + d121aded-0a6a-41ae-be9f-f0532fab5cfd + + water quenched & tempered at 540°C + Carbon steel, AISI 1030, water quenched & tempered at 540°C + 8b20fef8-50e4-45ea-8bd2-cca011716365 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + f1eebee2-01d2-4e54-b6c3-d097f4ad32bf + Mass + 100.0 + + + + + + + 3.0 + 95.234463594497 + 4023ab0f + part_4023ab0f-9880-418e-8820-5951c5d64aca + 4023ab0f-9880-418e-8820-5951c5d64aca + + + 19.395717149318 + + MI_Restricted_Substances + ce76abdf-c476-4643-8436-8e49a2813e39 + + Oil quenched & tempered at 425°C + Carbon steel, AISI 1080, oil quenched & tempered at 425°C + 1bde5ecf-700e-4a11-97af-e0288a8e8c9b + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + d7eafcf8-27cc-4ebe-934c-6d935638c057 + Mass + 46.434849661977 + + + + + 80.604282850681 + + MI_Restricted_Substances + af4f67b9-f5a7-4fc3-9f1d-da3309e4b19a + + Solution treated & aged + Iron-base-superalloy, Cr-Ni alloy, A-286, solution treated & + aged + + 98d98926-df80-4f95-9608-402ddc11f352 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 11ab8d32-b3f3-49f9-9742-57531e3f2a0f + Mass + 100.0 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 9b3018cd-88ea-4707-885d-edf6ad1b12dc + Mass + 100.0 + + + + + + + 3.0 + 31.530401078765 + b5828b97 + part_b5828b97-1075-4774-be6c-accf9015044f + b5828b97-1075-4774-be6c-accf9015044f + + + 46.062491203687 + + MI_Restricted_Substances + 00fe0155-9aca-4c9d-b0a2-1289f92fa2a0 + + Alkaline earth lead glass + Alkaline earth lead glass + 217f3630-b6ca-496a-9cf2-f3de87d86d02 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + e032fb18-10f2-491f-b682-593060272c98 + Mass + 100.0 + + + + + 8.989584799385 + + MI_Restricted_Substances + fab0ed5a-7494-4bcb-b57a-e0d565751dfe + + Potash soda lead glass - 1990 + Potash soda lead glass - 1990 + 689fa427-652b-49ea-af17-4831b88b7446 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 7e70493a-73d5-40e6-b18d-87553700cf8a + Mass + 100.0 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 7ca68a1c-ff4c-43e4-93f4-8bb83e0f0e75 + Length + 20.890187016171 + + + + + 8.989584799385 + + MI_Restricted_Substances + a68201e5-218b-4387-9e30-d1332ccfa44f + + Oil quenched & tempered at 315°C + Carbon steel, AISI 1340, oil quenched & tempered at 315°C + 57c62021-7086-4950-a92c-456b85b9e884 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 676d724a-c0d0-49ab-9f89-5b4d9254e89e + Mass + 100.0 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + d8787978-abf8-42e7-84b8-015687e6c2c7 + Mass + 100.0 + + + + + 8.989584799385 + + MI_Restricted_Substances + 1d5dd59c-75a0-4bf2-8862-7d77996aa0be + + Annealed + Low alloy steel, AISI 8650, annealed + c0d00feb-229c-45d8-b780-8d491e068b28 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + a4a4e099-acc5-405a-8bda-09da836ffc14 + Mass + 100.0 + + + + + 8.989584799385 + + MI_Restricted_Substances + ef4e19ac-4c9c-4fc1-b971-3ce21de330a2 + + Glass/polyimide honeycomb, ±45° fabric (0.128) + Glass/polyimide honeycomb, ±45° fabric (0.128), W Direction + d0328aa0-162b-40b6-852c-c3aa591010b9 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 08fbec63-9041-46ca-b103-6b5477c34130 + Mass + 100.0 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 70cf2e8c-ff1b-4eef-81ff-44b95dcc433f + Mass + 100.0 + + + + + 8.989584799385 + + MI_Restricted_Substances + 2096ca77-9981-4fd5-9bc6-afe56b3bbbd4 + + Glass/phenolic honeycomb, 0°/90° fabric (0.096) + Glass/phenolic honeycomb, 0°/90° fabric (0.096), W Direction + 9f41888e-8aac-4160-b914-30890b83248c + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 49748196-7cb6-4172-b1da-1f5290340c74 + Length + 5.710259734518 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + cc937aff-8c52-4315-b307-e41c7e4ef08c + Mass + 100.0 + + + + + 8.989584799385 + + MI_Restricted_Substances + 67cc68ee-c8ab-40bd-bf62-4babd642a1fd + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 81B45, oil quenched & tempered at 425°C + + 47a5075d-5e27-4e53-8b2a-eabaec901f1c + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 4a76f34b-6d55-432e-ad78-60128d843a4f + Mass + 100.0 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + abd73439-a4ae-4ba3-a258-fd5fc322115a + Mass + 100.0 + + + + + + + 4.0 + 23.832178359773 + 06628875.0 + part_06628875-d9ee-4c09-89e7-0f454a13cd45 + 06628875-d9ee-4c09-89e7-0f454a13cd45 + + + 81.659225226221 + + MI_Restricted_Substances + ee08f647-79af-49f3-98c5-043480a0fed4 + + Quenched & tempered + Low alloy steel, 4330V, quenched & tempered + 33f6730d-9f32-4321-8418-a3d9a8e4c514 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + d423ef7a-2f61-4992-9f5f-e4bacf13607b + Mass + 100.0 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + f4171533-291f-4ce9-9087-d31d486f10d0 + Mass + 100.0 + + + + + 18.340774773778 + + MI_Restricted_Substances + d411a96b-aa1c-4651-a405-5a2bc5c32dff + + Modified, Grade 91 + Alloy steel, 9Cr-1Mo-V, modified, Grade 91 + a5fa4139-e40c-47fb-a213-a703316d9a57 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + f96af788-4771-487b-a457-aeafa787e071 + Mass + 100.0 + + + + + + + 8.0 + 88.412138441769 + + MI_Restricted_Substances + fd7a9f3d-cb52-4422-8ede-c25a48f61056 + + 6795518b + part_6795518b-1296-4afe-b918-433b4c411abc + 6795518b-1296-4afe-b918-433b4c411abc + + + 8.0 + 1.597838896139 + + MI_Restricted_Substances + fd7a9f3d-cb52-4422-8ede-c25a48f61056 + + 52486ce9 + part_52486ce9-d674-4917-bb14-f25a244a5a8e + 52486ce9-d674-4917-bb14-f25a244a5a8e + + + 7.0 + 43.843906439768 + + MI_Restricted_Substances + 80083213-3621-42c0-9e23-cdaa30c759e6 + + 5392a22c + part_5392a22c-ee32-4fd6-8428-0968c023863e + 5392a22c-ee32-4fd6-8428-0968c023863e + + + 3.0 + 39.933078754662 + fd45e442 + part_fd45e442-8f0c-4731-b486-355c460e573f + fd45e442-8f0c-4731-b486-355c460e573f + + + 100.0 + + MI_Restricted_Substances + 90b2285b-4295-429d-beb8-90d9f5df0101 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 5046, oil quenched & tempered at 315°C + + cb7ea85e-72ec-4dee-bee5-f9a93f4ad9ad + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 5b3d7c37-3bb1-41e3-91f3-d37aefcdfd96 + Mass + 100.0 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + f1deacca-1590-431d-b8fc-fe4934ecb0e3 + Mass + 100.0 + + + + + + + 2.0 + 99.169801780567 + 76104c26 + part_76104c26-866e-4db9-9d90-7097e3982b3d + 76104c26-866e-4db9-9d90-7097e3982b3d + + + 38.343663391817 + + MI_Restricted_Substances + 3cad12a9-0765-402c-a6b1-0be665ecd2e6 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 4140, oil quenched & tempered at 540°C + + fc0e832c-2179-4f80-850a-a311863ffadd + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 89e7a6a4-d35c-4b53-b22a-188467bcd226 + Mass + 100.0 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 1b37e761-da85-4f06-8215-34330d7f61cf + Mass + 100.0 + + + + + 7.707042076022 + + MI_Restricted_Substances + 45a257d5-da48-4520-9174-ffe7bbadcd1c + + Glass/phenolic honeycomb, ±45° fabric (0.088) + Glass/phenolic honeycomb, ±45° fabric (0.088), L Direction + 83e993b0-6437-4eb5-a265-245d967243f1 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 176aea18-0ec1-4b4f-bceb-bddb9547aebe + Area + 88.58323040818 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 93dea267-4bef-403b-a62d-1a8a007593c2 + Mass + 100.0 + + + + + 7.707042076022 + + MI_Restricted_Substances + 211ae46e-0827-4d61-af66-5a72c42d0cd8 + + T-glass + T-glass + a9a90986-ee65-4929-a4b6-f935adf547e9 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 25b28a90-51c9-4416-9ad3-3fe04a1746e2 + Mass + 100.0 + + + + + 7.707042076022 + + MI_Restricted_Substances + 4df9287d-c8fa-47a8-8f7b-218fdc14a141 + + Normalized + Low alloy steel, AISI 4340, normalized + edf4f538-5d79-419b-929f-aaa781ef585d + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 561f8a3b-3a9a-4141-aa92-ecca13669933 + Mass + 100.0 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 4d917439-f220-47bc-9ed2-cb39bb0b83cd + Mass + 100.0 + + + + + 7.707042076022 + + MI_Restricted_Substances + 644fc87d-87f3-468c-9a88-b8e2db43ae6b + + water quenched & tempered at 650°C + Low alloy steel, AISI 4130, water quenched & tempered at 650°C + + 3c3474e6-baf8-44fa-b65b-095b10e30b8d + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 2c8a6e29-c719-489c-b5cc-4068a6161ded + Mass + 100.0 + + + + + 7.707042076022 + + MI_Restricted_Substances + 9ce914d8-75c1-4c5f-8c57-11c0e62b2cfa + + ASTM A299 Grade A + Structural steel, ASTM A299 Grade A + 48671cfe-bff1-4aef-a9ec-7ca411fb54f1 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 5010ab7a-ded4-4271-827c-cd2bfdbc5f4e + MassRemoved + 56.047520114131 + + + + + 7.707042076022 + + MI_Restricted_Substances + 90b2285b-4295-429d-beb8-90d9f5df0101 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 5046, oil quenched & tempered at 315°C + + 15109e4a-788f-45d7-b307-7eae9067ed3b + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 482c2990-9110-46c6-b63b-1fd1332ec968 + Mass + 100.0 + + + + + 7.707042076022 + + MI_Restricted_Substances + 966360b2-fda5-432b-9069-4a9814db3e6b + + YS1200, hot rolled + Martensitic steel, YS1200, hot rolled + 615c2e3c-f676-4a21-8bd3-aa289ab2f97f + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 1bc2734f-76ea-4eee-ac4e-3d305cac579e + Mass + 100.0 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + ee9438ae-3a81-4135-94df-b9c951d9e3b0 + Mass + 100.0 + + + + + 7.707042076022 + + MI_Restricted_Substances + 924b3986-e315-4b28-9daa-56a075aa18e9 + + Annealed + Low alloy steel, AISI 52100, annealed + 70eb3599-7754-404f-bbf4-c843a0d22ab8 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + beff16be-fa66-4825-94ed-f0627705c853 + Mass + 73.715334419959 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 95e5da93-2323-4390-9111-995c2f3b4a15 + Mass + 100.0 + + + + + + + 2.0 + 84.140368077969 + fa4944fc + part_fa4944fc-c700-4f4f-8520-ba8f7173c98d + fa4944fc-c700-4f4f-8520-ba8f7173c98d + + + 83.089011387475 + + MI_Restricted_Substances + 87b588e6-604a-4acb-a651-c882f6211f74 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 8660, oil quenched & tempered at 650°C + + 700b12bc-62b3-4c8d-ae28-a486940d8001 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 223ffc08-825b-4d8d-9930-631abbb47b36 + MassRemoved + 77.065096458916 + + + + + 2.818498102087 + + MI_Restricted_Substances + 5169a157-0d18-4d45-b197-799e06aa00bc + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 9255, oil quenched & tempered at 315°C + + 0b984f84-b973-4107-b1b6-b17ccefbd7f8 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 67d84b4a-6da7-4fc2-98cf-e5220310f972 + Mass + 100.0 + + + + + 2.818498102087 + + MI_Restricted_Substances + 23967b46-b6a1-4f82-9a4f-d0ea6e728ece + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 5160, oil quenched & tempered at 650°C + + 6db0fe77-beeb-4841-b6fb-1ca4e65c1d5d + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 6d9f7993-fd2d-4dae-949b-77639a6bc6c6 + MassRemoved + 49.375426000624 + + + + + 2.818498102087 + + MI_Restricted_Substances + 619c1e62-d6e1-4a5d-9abc-99a0b6c0ed7e + + Oil quenched & tempered at 315°C + Carbon steel, AISI 1141, oil quenched & tempered at 315°C + bab1cdce-dc22-49ec-bae4-99408792ca79 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 290a4dc9-7b4c-49b0-97c7-e93b67c2b124 + Mass + 100.0 + + + + + 2.818498102087 + + MI_Restricted_Substances + f92ff01e-ed35-4c66-96d1-607d9684b44b + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 94B30, oil quenched & tempered at 315°C + + 84013519-f260-4996-8f52-eae2dd77a93d + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + 4c1c16e7-e2d4-4e31-91e1-c17abd37e0fc + Length + 1.587110991397 + + + + + 2.818498102087 + + MI_Restricted_Substances + fdf47c86-6c5b-4bba-b434-574871039636 + + Glass/phenolic honeycomb, 0°/90° fabric (0.035) + Glass/phenolic honeycomb, 0°/90° fabric (0.035), W Direction + 90bcb052-78bc-4251-85aa-0555a18e93ae + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 5f85a2cc-06aa-4971-95b2-20133fe72956 + MassRemoved + 75.496429752323 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 13d90310-e45a-4c4d-a6db-66fbe8b84c3e + Mass + 100.0 + + + + + 2.818498102087 + + MI_Restricted_Substances + 31491cd8-6f82-4358-a2d6-ef62bfbbfadd + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 4150, oil quenched & tempered at 205°C + + b3b3edfa-7cb4-4d3c-8c11-9e0bf7ceb4da + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + aeaa7c7d-552a-45bc-8fee-9369f478869e + Mass + 100.0 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + a7bacc7a-94ee-411a-b005-0a903e9276c8 + Mass + 93.806148922911 + + + + + + + 1.0 + 18.80020835381 + 3890ee72 + part_3890ee72-ec9e-4a61-956a-2f3bf7cff8f1 + 3890ee72-ec9e-4a61-956a-2f3bf7cff8f1 + + + 35.719457844141 + + MI_Restricted_Substances + 1851a6ff-c2e6-4bc6-ab7a-a0eae431e281 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 5140, oil quenched & tempered at 540°C + + 55a1b794-3e9e-4975-a05a-14b7b6e0b6ad + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 967af45a-0b14-473a-8705-a9e81e9b7dac + Length + 50.224826834269 + + + + + 16.070135538964 + + MI_Restricted_Substances + 55c8dd10-b62f-4136-b1c8-6260fcec05cc + + Annealed + Carbon steel, AISI 1040, annealed + 1a7dccf4-7487-4ad5-b672-fe8762edc3b9 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 8960a5e0-b2ce-4d40-b5b4-acca4e81a78a + MassRemoved + 81.076484676951 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 13897563-6b51-4c26-8e14-0ecbf4347286 + MassRemoved + 18.305671316713 + + + + + 16.070135538964 + + MI_Restricted_Substances + ddefbfb8-3b97-480b-887d-0ddadf161d95 + + YS350, cold rolled + High strength low alloy steel, YS350, cold rolled + 609457c6-aebc-4d31-9fa5-b007283c4915 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 74ae08d1-3c4f-4117-867f-fec0de55cb8e + Mass + 100.0 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + b4f9cb90-f827-4693-822e-ac9d8bb3f4d7 + Mass + 100.0 + + + + + 16.070135538964 + + MI_Restricted_Substances + 3fd6cebb-a683-45be-b014-7c3fb617c3e7 + + Glass/polyimide honeycomb, ±45° fabric (0.064) + Glass/polyimide honeycomb, ±45° fabric (0.064), L Direction + f7bb6e24-035c-40c0-b457-64f08fb203a7 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + e79a3e3f-5602-47b6-9d53-51234b906e4c + MassRemoved + 87.743540195628 + + + + + 16.070135538964 + + MI_Restricted_Substances + aebf8cac-5529-4a72-9e09-71badd344c6a + + Oil quenched & tempered at 315°C + Carbon steel, AISI 1137, oil quenched & tempered at 315°C + 30ec6d3e-5040-4bba-b1a3-ef36ff8e9a06 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + bfdc7b6a-8c3a-4462-a1cf-355129719f80 + Mass + 100.0 + + + + + + + 5.0 + 19.409498115726 + 2c40d687 + part_2c40d687-52db-4733-8bc8-39d3e975dedc + 2c40d687-52db-4733-8bc8-39d3e975dedc + + + 25.917724625169 + + MI_Restricted_Substances + c19a6c59-b937-499d-ac22-fe742ae42287 + + As rolled + Carbon steel, AISI 1117, as rolled + 682616f3-5dd4-43a6-87bc-b12c7efbebbf + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 677e0150-2a59-4e0a-a20d-34eb9781a1a0 + Mass + 100.0 + + + + + 10.583182196404 + + MI_Restricted_Substances + 6f7c4754-84f7-46f0-873a-ec2e9f29e345 + + Glass/phenolic honeycomb, ±45° fabric (0.088) + Glass/phenolic honeycomb, ±45° fabric (0.088), W Direction + fae5f8c6-be59-4dfc-a8d1-b04ffab08fd6 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + e3fe3509-873f-49ae-9de5-e767c41476db + MassRemoved + 89.708564053153 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + fbbafbef-49e9-4808-8e0a-7e52fbbc08ea + Mass + 100.0 + + + + + 10.583182196404 + + MI_Restricted_Substances + 82eabba3-2697-4f74-a530-ae27f5e33ffe + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 50B46, oil quenched & tempered at 540°C + + 676c75ce-1bbe-49fc-8a31-8bfc0946e5a4 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + b1e59de2-5ebd-486d-964a-6e331ee54fde + Mass + 100.0 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + de5634e0-eadc-4dc3-bf5e-0c1425af3cef + Mass + 100.0 + + + + + 10.583182196404 + + MI_Restricted_Substances + ff23c6a6-3046-4f35-b5d2-ca7f0956efc7 + + Oil quenched & tempered at 650°C + Carbon steel, AISI 1144, oil quenched & tempered at 650°C + 89b207c0-acfc-48ec-bca3-5ce2642f0854 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + be06024e-a2c8-4ab6-99cc-72927a9505a0 + Mass + 100.0 + + + + + 10.583182196404 + + MI_Restricted_Substances + 874b8433-2e47-45c3-9c89-226428104214 + + Glass and mineral filled, heat resistant, molding + Novolac (glass and mineral filled, heat resistant, molding) + 00a0bfef-99f5-4c56-a026-47749011ab84 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 5bde1064-f66e-4f88-b834-31456faceb1a + Mass + 100.0 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + d199e4a4-561b-4906-a67a-ca0118ec38bf + Mass + 100.0 + + + + + 10.583182196404 + + MI_Restricted_Substances + 644fc87d-87f3-468c-9a88-b8e2db43ae6b + + water quenched & tempered at 650°C + Low alloy steel, AISI 4130, water quenched & tempered at 650°C + + 4393fcfb-263c-4a72-837a-a614a9313933 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + cf5779a2-b757-4d07-81c5-42c1bf46b82a + MassRemoved + 20.518396664652 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 64a74480-f724-4d60-9eed-bac3907ff551 + Mass + 100.0 + + + + + 10.583182196404 + + MI_Restricted_Substances + fa4e12fa-2919-41e2-b7ef-1c487def0cd7 + + High ductility + Press hardening steel, 22MnB5, high ductility + 02c244ad-b832-4db8-8ac1-f47b2c6015b3 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + ad72b93b-2b56-43fa-a98d-988c4912c594 + Mass + 100.0 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 2a5f5f25-0e8b-47b6-8c61-fb1eaafcb459 + Mass + 100.0 + + + + + 10.583182196404 + + MI_Restricted_Substances + 7468aa92-eb02-4838-8030-fdd8673f2710 + + Oil quenched & tempered at 650°C + Carbon steel, AISI 1137, oil quenched & tempered at 650°C + e4e02809-be4b-4c18-9937-8f69a032d385 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + cbf6fe52-eb1a-4f99-9fe1-bbb285bc1054 + Mass + 100.0 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + eef076b3-fb93-47b5-b699-9dcc261d1cf7 + Mass + 100.0 + + + + + + + 9.0 + 19.088955837808 + 5f1c46ee + part_5f1c46ee-9cad-4e9b-92b3-1713e5f2ff0d + 5f1c46ee-9cad-4e9b-92b3-1713e5f2ff0d + + + 60.512046404421 + + MI_Restricted_Substances + cfb19c31-b156-4a8d-854c-f264975539e1 + + water quenched & tempered at 205°C + Carbon steel, AISI 1095, water quenched & tempered at 205°C + 54726a26-d5d1-4891-ac76-39e512bfc31a + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 93932fda-bdb4-4ba5-92fc-1cf9c0200668 + Mass + 100.0 + + + + + 9.871988398894 + + MI_Restricted_Substances + 87e1a3cd-fd79-4013-b5f8-56d6f28bef34 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1144, oil quenched & tempered at 540°C + ff06982b-3b87-494e-8ea2-2289a468ac8d + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 20a674de-92bb-4885-9b60-ce739490865a + Mass + 38.959660864882 + + + + + 9.871988398894 + + MI_Restricted_Substances + fc29cc59-a670-4ad6-85a0-eb07bf011f1a + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 6150, oil quenched & tempered at 425°C + + 4dfb5330-7d89-4875-9af5-4a1797930125 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 415b4cf6-8c18-4891-95cc-97c099853f98 + Area + 80.037293899821 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 48f16f83-03c9-4fad-b00e-e3ad7885ec54 + Mass + 100.0 + + + + + 9.871988398894 + + MI_Restricted_Substances + 44a3cdc8-1092-45c0-be37-1802daa92d30 + + Borosilicate - 7052 + Borosilicate - 7052 + f8dbfbcf-67ab-4546-a00f-734231e99272 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + d6a69287-e598-465d-8afc-8245664c5644 + Mass + 100.0 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + be1875f6-d842-414c-a8b6-517d43e196a0 + Area + 30.765419281444 + + + + + 9.871988398894 + + MI_Restricted_Substances + 5169a157-0d18-4d45-b197-799e06aa00bc + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 9255, oil quenched & tempered at 315°C + + 02d18f6b-77f7-4931-8cfc-8c5052bfffa1 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + d70b65cd-5829-4430-acd0-8cf419f0ad4e + Mass + 100.0 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 769319c4-d5ef-4263-9501-606ae66528f3 + Mass + 100.0 + + + + + + + 9.0 + 74.429648730172 + a85dd27e + part_a85dd27e-e8bc-4368-bc9c-215f8fae7541 + a85dd27e-e8bc-4368-bc9c-215f8fae7541 + + + 65.106619086631 + + MI_Restricted_Substances + e678781a-1b38-4709-816b-9db609651db6 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 50B60, oil quenched & tempered at 425°C + + def1fda8-f648-4965-96ec-26c053b4019b + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + 4b9c70b2-8f84-46ad-83be-e4e9517fc95a + Mass + 100.0 + + + + + 11.631126971122 + + MI_Restricted_Substances + e06fc27c-5e39-4218-a5ca-6927af12a511 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 4140, oil quenched & tempered at 205°C + + fb54bac5-2cb9-4c8b-8ab2-5658261a71ef + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + fa81b70f-3425-48de-864b-261523b1dad4 + Mass + 100.0 + + + + + 11.631126971122 + + MI_Restricted_Substances + 856cb700-78b1-46a2-8832-739a0d2c9a91 + + SAE 8630, cast, normalized & tempered + Low alloy steel, SAE 8630, cast, normalized & tempered + acf5bbf5-c930-48a5-95ad-dabdfa8dd275 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + cc1543da-80bc-442a-ae0a-d7e2e49140ef + Length + 91.340356129845 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 2af08795-9cb2-4853-93cc-1229612571b0 + Mass + 22.867845149183 + + + + + 11.631126971122 + + MI_Restricted_Substances + 644fc87d-87f3-468c-9a88-b8e2db43ae6b + + water quenched & tempered at 650°C + Low alloy steel, AISI 4130, water quenched & tempered at 650°C + + cb8e1ef3-aef0-4756-8c53-1f3e7d54bbbe + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + a48d7d60-3698-445d-9103-c1acecde702d + Mass + 100.0 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + eed8bb55-7968-4bcf-b369-760c417fb0e4 + Mass + 37.434310809445 + + + + + + + + + 8.0 + 70.773215252334 + d52d6c76 + part_d52d6c76-2b2a-4f0b-972a-46d6f2ad13e3 + d52d6c76-2b2a-4f0b-972a-46d6f2ad13e3 + + + 36.780846555149 + + MI_Restricted_Substances + 59ed9004-2126-437f-aa61-b8a0189e69d3 + + Oil quenched & tempered at 650°C + Carbon steel, AISI 1095, oil quenched & tempered at 650°C + 5a9e0bf6-34f8-4139-b5e3-b2f85a89888f + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + fa2f6a0c-db85-48ed-9e55-624d4ae06730 + Mass + 100.0 + + + + + 63.21915344485 + + MI_Restricted_Substances + 01ec383d-8c37-48b7-80b4-e1f3106fae04 + + Alumino silicate - 1723 + Alumino silicate - 1723 + f77d4be2-a6df-4143-a55c-c765d5aa7d96 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + df74fc86-f286-4690-a6d3-ef81470e62b6 + Mass + 100.0 + + + + + + + 8.0 + 66.293420068124 + c4c003a6 + part_c4c003a6-872c-405a-b62d-7c6e971b2bb4 + c4c003a6-872c-405a-b62d-7c6e971b2bb4 + + + 73.85304177825 + + MI_Restricted_Substances + 9e11a8f7-0b35-4610-aee9-557a236bbe5c + + Soda borosilicate + Soda borosilicate + d4d7ef9d-6f6a-406e-8f9b-caee54055563 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + c35d914b-a45d-43bd-8841-5445cba2fe5a + Area + 35.214935212961 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + f255a03e-041f-4c57-bd65-a4f7852439d0 + Area + 28.655219091407 + + + + + 3.268369777718 + + MI_Restricted_Substances + c87d2bef-0549-4a3b-b699-3ad17b079fa1 + + YS355, hot rolled + High strength low alloy steel, YS355, hot rolled + 6513bd3c-9be5-4b57-a0dc-278a1a6d1068 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + d4f57470-0eeb-4f6b-832b-a59d8c6a2c95 + Mass + 100.0 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 2b4f6f8f-6567-4c03-ad95-b732e5e75959 + Length + 39.425063151598 + + + + + 3.268369777718 + + MI_Restricted_Substances + 78055acc-4fc2-46ae-bba8-f28bda85357e + + Annealed + Carbon steel, AISI 1060, annealed + 0c2e5260-a7bf-4425-b318-aa0ec4f9fa31 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + b165e2f7-b227-4571-9267-40ad9db6956c + MassRemoved + 1.529877447304 + + + + + 3.268369777718 + + MI_Restricted_Substances + 19b67562-02fa-47ea-8fba-af5b14d1fafa + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 4042, oil quenched & tempered at 650°C + ff1f0f52-3799-424b-beb5-049b2cc99995 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 64cef77d-ae60-40d0-b1ac-b22fd6abea77 + MassRemoved + 2.817464481488 + + + + + 3.268369777718 + + MI_Restricted_Substances + d2c2408b-ddaa-4dc0-825b-b2d3ef39767b + + Oil quenched & tempered at 315°C + Carbon steel, AISI 1095, oil quenched & tempered at 315°C + a7f4e72d-87ef-48c6-a86e-712f3d4e2138 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 42f13e55-e7bd-4c7b-b051-d07aa3898add + Mass + 100.0 + + + + + 3.268369777718 + + MI_Restricted_Substances + 99d1c1c6-eca3-40ed-a479-6dec902f52da + + YS400, cold rolled + TRIP steel, YS400, cold rolled + 118cc1b4-36aa-4b69-b9d3-32e9790caad1 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 8e06e192-0347-43a3-839a-5a71b6c9fcae + Mass + 100.0 + + + + + 3.268369777718 + + MI_Restricted_Substances + 21dcdeeb-524a-488e-b332-fcd4e1caf6f7 + + water quenched & tempered at 650°C + Carbon steel, AISI 1095, water quenched & tempered at 650°C + 52ad598e-1416-4dec-b5bd-8aff8208b8db + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + b50aea2b-3688-4402-9914-dddbe738e838 + Mass + 100.0 + + + + + 3.268369777718 + + MI_Restricted_Substances + f05d84ea-b8e2-46d1-83a4-577038c5ed32 + + As rolled + Carbon steel, AISI 1040, as rolled + f93339bb-c71d-4b31-a6a9-08cb87199b53 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + d52ddc93-319a-4966-8e46-25012692b1ef + Length + 10.129719837629 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + a57649bf-cd41-44db-a5f7-351790d77ae2 + Mass + 100.0 + + + + + 3.268369777718 + + MI_Restricted_Substances + 8d48bb04-5031-4d20-b935-741272060e1d + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 4150, oil quenched & tempered at 650°C + 1233f1ab-df39-45bc-be89-2e26a570ae60 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 4dc61dbb-37e5-4863-bb6c-5e1b2243217e + Mass + 100.0 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + c8a0c32f-758b-4155-9f4e-7641ee45d39e + Mass + 100.0 + + + + + + + 4.0 + 66.63638077054 + 03edde95 + part_03edde95-b982-4543-a5df-195356497f8c + 03edde95-b982-4543-a5df-195356497f8c + + + 13.505580841333 + + MI_Restricted_Substances + a01be0be-96e7-4123-b061-dfdbba1f1748 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 4037, oil quenched & tempered at 315°C + 478bbb14-123b-4410-b504-d39ac82c0490 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + ef85d650-06c1-4321-b76e-cd16a7220037 + Mass + 2.345990204413 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + afbc9e21-777e-41a0-b763-9b6e2a5653dd + Mass + 100.0 + + + + + 12.356345594095 + + MI_Restricted_Substances + e6b45bea-dec9-4b91-996a-885bb0c31f8d + + Glass, S grade (10 micron monofilament, f) + Glass, S grade (10 micron monofilament, f) + 1487a836-de1a-4be0-af28-3db5013290c9 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 5e81e7e7-8422-405a-bc3b-5bd5fe550de4 + Mass + 70.858186749209 + + + + + 12.356345594095 + + MI_Restricted_Substances + bafce5b8-9e49-4ba7-918f-1ddea11d2a80 + + Glass/phenolic honeycomb, ±45° fabric (0.048) + Glass/phenolic honeycomb, ±45° fabric (0.048), L Direction + 4923b9f5-46ef-4b25-8b0b-c8295e4a7ffa + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 42a4fe3a-2d8e-4d4d-89db-5392a0361584 + MassRemoved + 16.02738616803 + + + + + 12.356345594095 + + MI_Restricted_Substances + 7b330562-a44d-4de7-8944-99c0b7b0d3e1 + + Quenched & tempered + Low alloy steel, AISI 8630, air melted, quenched & tempered + d845a77e-1e71-447e-b0ca-a5cf02fd9304 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + 0757b759-02d5-48d8-b162-b4a4a475414c + Mass + 100.0 + + + + + 12.356345594095 + + MI_Restricted_Substances + 302db922-ffc4-4955-9a98-ddaa64c43d26 + + Borosilicate - 7720 + Borosilicate - 7720 + e6cae0a2-d7c1-44f4-9491-ef2d12c258ea + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 50f44c04-64c2-497d-b596-07591a9ae790 + Mass + 100.0 + + + + + 12.356345594095 + + MI_Restricted_Substances + 45a257d5-da48-4520-9174-ffe7bbadcd1c + + Glass/phenolic honeycomb, ±45° fabric (0.088) + Glass/phenolic honeycomb, ±45° fabric (0.088), L Direction + dd89e19a-16eb-4921-b5fa-75ded58ad9c7 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + ecbdce81-bcf2-456b-8658-3568e7d4d22c + Mass + 100.0 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + a547e090-52c3-489f-90a8-ae8cfc4e8c88 + MassRemoved + 91.819181848233 + + + + + 12.356345594095 + + MI_Restricted_Substances + 4b01d1e1-0f4c-4861-a797-7ea504ca38c4 + + Annealed + Low alloy steel, AISI 5150, annealed + b2289e42-0275-47f1-90dc-b31e07510f54 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 13116d75-e9d8-47c1-822c-bf54a65afa77 + Mass + 100.0 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 9657051c-e2a1-4316-bca7-d78bb12b9950 + Length + 92.93381711139 + + + + + 12.356345594095 + + MI_Restricted_Substances + 439e62b9-4268-44c6-a084-695412628448 + + water quenched & tempered at 425°C + Carbon steel, AISI 1095, water quenched & tempered at 425°C + 940ad85c-6e92-46b6-80ce-d10d866d406b + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + f08e98d5-2df7-4e66-aab2-77a852180cf3 + Mass + 100.0 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + c068ff86-6275-43bc-b654-be85b2356f53 + Mass + 100.0 + + + + + + + 3.0 + 44.304700961478 + + MI_Restricted_Substances + 3d4d35cd-1db3-477c-8f3f-b90800ea1c4d + + 2383795b + part_2383795b-301d-446f-a7be-cfa59c010ba5 + 2383795b-301d-446f-a7be-cfa59c010ba5 + + + 8.0 + 93.19904194828 + 9bf6b170 + part_9bf6b170-b0fa-45a3-b267-7678a39b64ca + 9bf6b170-b0fa-45a3-b267-7678a39b64ca + + + 15.184386035047 + + MI_Restricted_Substances + bea16e1d-784b-41e4-b5f5-e21dd7b27217 + + S275J + Structural steel, S275J + 8fb52277-fcc3-4fd8-8040-c4f8e6ebc609 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + ec9717f3-4f66-4889-a85a-775536fae8d4 + Mass + 100.0 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + ed2e6f3e-6c30-413a-a7cc-dc0d3687f3da + MassRemoved + 55.602397003957 + + + + + 28.27187132165 + + MI_Restricted_Substances + 72799627-a7c0-4df4-8250-e2be8538565f + + Glass ceramic (N11) + Glass ceramic (N11) + ecfa2d96-bb9a-4014-a89b-12157cec2108 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + e282f3d8-ee59-40d9-9d7f-f22de0874625 + Length + 60.697405394491 + + + + + 28.27187132165 + + MI_Restricted_Substances + dbdb9330-8683-439b-8246-f873ee3ba9ed + + Oil quenched & tempered at 205°C + Carbon steel, AISI 1040, oil quenched & tempered at 205°C + 9d832bea-99e2-4270-a051-3ed24a3eec51 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 0b3796ce-3c68-457b-9897-cab81563639f + Mass + 100.0 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + afd8a295-e9bd-4f8b-b36f-4767fd5fe198 + Mass + 100.0 + + + + + 28.27187132165 + + MI_Restricted_Substances + 31098687-aa58-4d56-99a0-f005a0258573 + + Glass/phenolic honeycomb, 0°/90° fabric (0.192) + Glass/phenolic honeycomb, 0°/90° fabric (0.192), L Direction + a9eb6336-e275-4b28-817f-85ed12dc53b7 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + ff831347-4460-4dee-946d-093c1fc16ca4 + Mass + 100.0 + + + + + + + 5.0 + 69.127918998304 + 3b713dbf + part_3b713dbf-a4cc-4a3c-b566-00173c57a996 + 3b713dbf-a4cc-4a3c-b566-00173c57a996 + + + 75.658543350016 + + MI_Restricted_Substances + dbdb9330-8683-439b-8246-f873ee3ba9ed + + Oil quenched & tempered at 205°C + Carbon steel, AISI 1040, oil quenched & tempered at 205°C + 98c21e49-732c-4212-9e89-f5625f7c0964 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 659a0e9a-ff98-4967-b1ca-617faedb8f55 + Area + 21.064121239382 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + e59562de-dfc5-4b15-a7f4-91a0a0d135cf + Mass + 100.0 + + + + + 4.868291329996 + + MI_Restricted_Substances + aec3ed84-0fb0-4317-b8b1-9f6714a7a07f + + Normalized + Low alloy steel, AISI 4130, air melted, normalized + 6012ba6b-e23f-40dc-aa54-e131fcda591c + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 33fb5add-5127-42d3-9bdf-e6e4741cc5fe + Area + 48.934675915601 + + + + + 4.868291329996 + + MI_Restricted_Substances + c07a0ada-0510-4f27-be52-15e07d6c70c5 + + Soda-zinc glass - 6720 + Soda-zinc glass - 6720 + c7fa3134-6224-400b-9b23-198757dc3820 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + 429d60eb-d5b1-44e5-b153-1f8a74a80ce6 + Mass + 100.0 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 83fbc8e3-74c1-4021-8f20-0e847ae8f35f + Mass + 100.0 + + + + + 4.868291329996 + + MI_Restricted_Substances + 78055acc-4fc2-46ae-bba8-f28bda85357e + + Annealed + Carbon steel, AISI 1060, annealed + 399f34bd-bcf3-4cd0-9a54-0bc17d32f3c4 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 7c597799-6150-4af3-ad3d-231f653568b1 + MassRemoved + 6.9922199971 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + bb3a21eb-f858-45d6-be8e-87456d6b6082 + Mass + 100.0 + + + + + 4.868291329996 + + MI_Restricted_Substances + aa963e30-fca0-439d-bee2-ff48daa946f3 + + As rolled + Carbon steel, AISI 1095, as rolled + 2ee2ea05-84bc-40c9-b373-30c6e7ae2bc3 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + d877e42f-ade4-4b77-aacb-465ae3cad5a9 + Mass + 100.0 + + + + + 4.868291329996 + + MI_Restricted_Substances + 1992b264-49ea-405f-82f9-41dd972b9510 + + FR-4.1 (Df < 0.01 at 10GHz), Epoxy/Glass fiber, PCB laminate + FR-4.1 (Df < 0.01 at 10GHz), Epoxy/Glass fiber, PCB laminate + aa85effd-cd5a-4852-9412-ce1cc988d929 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + a47eb5f5-d295-4709-948e-ecf31a6ef286 + Mass + 100.0 + + + + + + + 1.0 + 89.09261202863 + b5fb6cb3 + part_b5fb6cb3-980e-42f7-802c-7d606f5d8526 + b5fb6cb3-980e-42f7-802c-7d606f5d8526 + + + 61.03026613641 + + MI_Restricted_Substances + df40828d-d5c3-4a43-9f00-5de867f4f406 + + Normalized + Low alloy steel, AISI 4320, normalized + 472fa5d7-1d4a-4992-a0f6-c72997cae49e + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + daa001ac-b1c2-4169-908b-79616b5cc18c + Area + 92.137139193777 + + + + + 19.484866931794 + + MI_Restricted_Substances + 278c6b66-fb3e-4e2d-b915-df6a231b2342 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1080, oil quenched & tempered at 540°C + d3060c58-6ab9-45a4-a1a3-cd528624447f + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + e2046142-3a32-4076-a3de-62d1f1c81fe8 + Mass + 100.0 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 5256e8bd-15f6-4a3e-b1d3-0a4023e12c36 + Mass + 100.0 + + + + + 19.484866931794 + + MI_Restricted_Substances + 4a35d8d1-5fb1-47e9-a669-37204ae732dc + + ASTM A500 Grade A + Structural steel, ASTM A500 Grade A + 76378b6e-199e-40a8-8042-12fe586291fb + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 67a6a904-0a2f-4872-aea6-b42b049a76cb + Mass + 100.0 + + + + + + + 6.0 + 75.069702079086 + 8f1805fd + part_8f1805fd-3fd6-446b-8c46-7cc566012579 + 8f1805fd-3fd6-446b-8c46-7cc566012579 + + + 27.989640286187 + + MI_Restricted_Substances + b067ed19-a836-41f7-9267-d9b04647d09f + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 5150, oil quenched & tempered at 650°C + 09c973c8-c5de-4ff3-9839-56d08d67fe11 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 2a7dbbbc-7c8c-47b9-bcd7-769e57644485 + Mass + 100.0 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 60adf4f5-af28-4293-9f07-3c079c8c949d + Length + 37.377998902172 + + + + + 14.402071942762 + + MI_Restricted_Substances + b82c121d-fcc2-41fa-b7ac-6cddb03c3e4f + + Oil quenched & tempered at 650°C + Carbon steel, AISI 1040, oil quenched & tempered at 650°C + fa156b69-3f5e-48ca-871b-cd8924b9d3c3 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 1970e7cb-2498-4daa-8eee-92c76dbb076c + MassRemoved + 23.763837443554 + + + + + 14.402071942762 + + MI_Restricted_Substances + 1d0ad45b-4da7-4c47-9850-754d0f67c02a + + Glass/polyimide honeycomb, ±45° fabric (0.096) + Glass/polyimide honeycomb, ±45° fabric (0.096), W Direction + 7804a639-9401-412f-a1a6-1a80d1ad60aa + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + df4fecc3-1710-423a-9ae0-d3b35be07f09 + Length + 20.417703464821 + + + + + 14.402071942762 + + MI_Restricted_Substances + 2656c71b-a4ea-4fc6-9139-adc0deae35b1 + + 65wt% glass, biaxial lay-up + Polyester/E-glass fiber, woven fabric, 65wt% glass, biaxial lay-up + 3bd1703e-538f-42db-9a5b-37106e562ff0 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + bc321ce8-99ce-4611-a562-ffb1d707261a + Mass + 100.0 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + e2368259-146c-46ed-8ec4-30e67366455a + Mass + 100.0 + + + + + 14.402071942762 + + MI_Restricted_Substances + 1d55049a-3c25-4c8c-9125-70fd014c2a1e + + Normalized + Low alloy steel, AISI 8735, normalized + 7766937f-e107-46aa-a175-3a959b856fc9 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + ae7d75b2-8a65-41ba-8937-dfe5fc9976d3 + Mass + 100.0 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 695d82cd-d142-44b8-9b44-5ec0e5b63ffa + Mass + 100.0 + + + + + 14.402071942762 + + MI_Restricted_Substances + 4ad00a9e-92b5-4e28-92a0-409da4495c54 + + Oil quenched & tempered at 205°C + Carbon steel, AISI 1060, oil quenched & tempered at 205°C + ad706008-b329-4fcf-9abf-b2b6deb1535d + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 977d0b15-5816-4f50-ab12-00bd7e388304 + Mass + 100.0 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 7713104b-4aef-41fd-9f56-d732708449cc + Mass + 100.0 + + + + + + + 5.0 + 10.309613407733 + 753acfd6 + part_753acfd6-dc51-4f91-bfa1-38b28336fee8 + 753acfd6-dc51-4f91-bfa1-38b28336fee8 + + + 0.673503987804 + + MI_Restricted_Substances + 3cad12a9-0765-402c-a6b1-0be665ecd2e6 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 4140, oil quenched & tempered at 540°C + e2dfc2fe-532f-4a00-8ff4-6bda6706bfa6 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + af0ae7dd-aee5-4e61-a22f-88ebf0501060 + Mass + 100.0 + + + + + 24.831624003048 + + MI_Restricted_Substances + 22fec326-b233-4c44-9751-288ad3ccc86c + + Glass/phenolic honeycomb, 0°/90° fabric (0.088) + Glass/phenolic honeycomb, 0°/90° fabric (0.088), L Direction + a683a8ec-a087-4b43-ad85-858f23368bac + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + 9b3f5d71-e1e9-4043-b65b-27d43377df91 + Mass + 100.0 + + + + + 24.831624003048 + + MI_Restricted_Substances + f8d1136f-3c1a-41e2-8b78-cf5f3965cba2 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 6150, oil quenched & tempered at 205°C + ed6d5273-fd70-4a69-8437-df4b48b9acb9 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + d98068d6-2777-436f-a3c2-18a9b6232b62 + Mass + 100.0 + + + + + 24.831624003048 + + MI_Restricted_Substances + ce68d49d-fe57-4723-8f98-557cd3558504 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 5130, oil quenched & tempered at 205°C + 6a0e39ba-62bb-42b2-8e4d-91b78cb6f061 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 3dec1b14-9f9d-402f-aa14-373b6c555013 + MassRemoved + 50.49542489019 + + + + + 24.831624003048 + + MI_Restricted_Substances + 5303364c-b06b-40d9-bca9-e0e2cd1d682c + + Normalized + Low alloy steel, AISI 8740, normalized + 336e441c-b20d-4baa-84ca-632e34116c09 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 1ca9c90f-01cb-4a4c-83c2-7fb303f09af7 + Mass + 12.181936256672 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + ce16085e-fd9a-4f4d-9613-3250d6096d15 + Mass + 100.0 + + + + + + + 5.0 + 31.833864670169 + + MI_Restricted_Substances + a0987114-e9d2-4390-9d0f-e47283d2f4d0 + + 65a6a323 + part_65a6a323-21c5-4cff-aa6d-87714e747f34 + 65a6a323-21c5-4cff-aa6d-87714e747f34 + + + 8.0 + 94.493642772777 + 2760b4b9 + part_2760b4b9-8183-455c-9700-3367063c3001 + 2760b4b9-8183-455c-9700-3367063c3001 + + + 86.939953727154 + + MI_Restricted_Substances + f7a5d844-1935-486f-adbe-99917b26b44b + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 4340, oil quenched & tempered at 315°C + 4b0c9723-8966-4e2d-b648-eece2a96b763 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + eb8f7ee6-58ee-4336-88f9-7e23d74d556a + Mass + 100.0 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + b563c586-2c48-49d3-8273-093d240d9c80 + Mass + 100.0 + + + + + 1.632505784105 + + MI_Restricted_Substances + ee5b018e-8d7f-4fb1-bad0-c73e871592bc + + 16Mo3, normalized + Low alloy steel, 16Mo3, normalized + 44333aa5-f26c-4408-85a3-b6b4a34488de + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 3f8f3b8d-4b81-4a61-b7f4-cdc435f53801 + Mass + 100.0 + + + + + 1.632505784105 + + MI_Restricted_Substances + 8f779b79-a040-48d7-ac26-b9a1edf50ad2 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 8640, oil quenched & tempered at 650°C + f2cb69f2-0efa-448f-b175-522f45304d2c + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 7d437191-a633-4670-820a-48bae896e2d7 + Mass + 100.0 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 1c8c6369-4064-47e4-8c90-783c0ba053f8 + Mass + 100.0 + + + + + 1.632505784105 + + MI_Restricted_Substances + 753c75df-7593-4169-a2e8-9f4c173887ff + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 50B46, oil quenched & tempered at 315°C + 023d3736-3ffc-4020-bebc-dd40856a62d1 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 5f8f5467-95fc-45a1-8f51-8ae537a2c36d + Mass + 100.0 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + c59f2d8d-13ad-45b6-b3a6-02385880f46b + Mass + 100.0 + + + + + 1.632505784105 + + MI_Restricted_Substances + 9c1918f9-aa9f-4078-93df-23539c8df8a8 + + Soda-lime - 0091 + Soda-lime - 0091 + 919838b1-8a20-4911-af04-c26dc5afa25d + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + 023b8dd5-5c8e-40bb-ad2d-e608e25ecf13 + Mass + 100.0 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 75ace459-2773-4a33-845c-ee99ce3895c8 + Length + 19.431832767758 + + + + + 1.632505784105 + + MI_Restricted_Substances + 5d611e30-0b00-4036-a656-f5fdc5bd2a52 + + Glass ceramic - slipcast + Glass ceramic - slipcast + d453edbd-aa0c-4920-a12f-95036ef7681e + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 5f088df8-c4ca-4fd0-88e8-a3cb1205c251 + Length + 30.624887547746 + + + + + 1.632505784105 + + MI_Restricted_Substances + 2b606408-37c3-4801-a307-dda7384ff7cc + + Glass/phenolic honeycomb, 0°/90° fabric (0.072) + Glass/phenolic honeycomb, 0°/90° fabric (0.072), W Direction + fc9ab45a-15b8-41e8-b533-f6e9218ee2d1 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 50b45eba-cc6e-41d7-ab9d-c1f47d6ec832 + Length + 69.836523928603 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 2254e39a-2db3-40b2-920c-2fa067c7596b + Mass + 100.0 + + + + + 1.632505784105 + + MI_Restricted_Substances + 1345051c-8b29-468f-a10d-37712b50f19a + + Borosilicate - 9741 + Borosilicate - 9741 + 9d243586-11e4-400e-8397-9dfe3923cf14 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 0c005414-105b-4564-91d9-f6c9f6ef1bee + Mass + 100.0 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 57ff55eb-62d2-4127-b306-401303abac76 + Mass + 100.0 + + + + + 1.632505784105 + + MI_Restricted_Substances + 5d611e30-0b00-4036-a656-f5fdc5bd2a52 + + Glass ceramic - slipcast + Glass ceramic - slipcast + 04f7ece0-0796-4c04-85e9-c03cea57ab73 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 4303cb87-26e2-4493-8464-9b1fe77488c6 + Mass + 100.0 + + + + + + + 9.0 + 23.416724206608 + 727a37db + part_727a37db-5802-42b7-aff1-af1338dc0857 + 727a37db-5802-42b7-aff1-af1338dc0857 + + + 100.0 + + MI_Restricted_Substances + 7468aa92-eb02-4838-8030-fdd8673f2710 + + Oil quenched & tempered at 650°C + Carbon steel, AISI 1137, oil quenched & tempered at 650°C + 07e14de9-dcb2-478c-afe9-7cb05feba43c + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 4fe0db44-8ceb-465e-86e2-e83403bcf8c3 + MassRemoved + 13.810230797999 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + b3ed2f02-3c2e-4f0f-b2e6-8858eb8f4a71 + Mass + 100.0 + + + + + + + 6.0 + 56.339652443462 + 02290f60 + part_02290f60-7fec-49de-a8db-3b8b9f5cf1ef + 02290f60-7fec-49de-a8db-3b8b9f5cf1ef + + + 45.485820688999 + + MI_Restricted_Substances + c19a6c59-b937-499d-ac22-fe742ae42287 + + As rolled + Carbon steel, AISI 1117, as rolled + 82ea51af-a3c8-446e-89f0-c514db3c3f55 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + de6608fe-6ca8-49c1-b62f-17e8567b86c0 + Area + 65.494238382901 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 01df642e-3603-4ee3-8bd1-db3793559d46 + Area + 86.317930224499 + + + + + 9.085696551833 + + MI_Restricted_Substances + 0c172430-369d-48ad-910e-69fe1451a36e + + Normalized + Carbon steel, AISI 1095, normalized + 21c73577-2514-48da-8442-c4256d44afbc + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 2a04e721-bba3-4dea-961c-c11a93d95acd + Mass + 100.0 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + 2728a71c-5a18-4c08-a639-4246e0a84aba + Area + 67.076651317568 + + + + + 9.085696551833 + + MI_Restricted_Substances + 2c2dc98a-ef9d-420d-aa00-25552c8f8bab + + S355J + Structural steel, S355J + 22c4c7c0-6f03-458c-81bd-2083c00a0610 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + 5e93ffd1-e73e-4fc9-bbd1-813b5f0fc345 + Area + 50.01027619001 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 6253fbd0-d1ed-4054-91b2-a35ca93c5e1a + Mass + 79.462263025093 + + + + + 9.085696551833 + + MI_Restricted_Substances + e721d8b7-256a-4b7b-af09-6b40d8309979 + + water quenched & tempered at 425°C + Carbon steel, AISI 1040, water quenched & tempered at 425°C + 4a8a7f46-5f7d-4c70-b10b-7b4ecb313ec1 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 9595c1ba-d1bd-4ba0-8515-4aee43bcfb02 + Mass + 100.0 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + 19317cad-3c28-4ba7-9f2e-efd8088d560f + Length + 77.445913654494 + + + + + 9.085696551833 + + MI_Restricted_Substances + 2cfe1f1b-d831-4f62-acc6-672a44ba9bff + + Silica (fused) + Silica (fused) + 9e31ed64-a69b-4545-91ef-d8e243393777 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + a769d123-75f2-4ff7-bbe7-e386cc2a55f5 + Length + 32.94380760423 + + + + + 9.085696551833 + + MI_Restricted_Substances + ac443865-33d5-466d-89e2-c3f26e668369 + + Borosilicate - 3320 + Borosilicate - 3320 + 43a53775-5555-48fa-ba6c-e2cbcd629736 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 5fc73ba6-1428-4907-b22f-ea5c30f994bd + Mass + 100.0 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + b43eb407-aadd-4762-9fe7-8fdfd3a2505a + Mass + 1.758688689097 + + + + + 9.085696551833 + + MI_Restricted_Substances + d02817f7-7500-4fcb-8c34-40927da681a5 + + Quenched & tempered + Carbon steel, SA216 (Type WCC), cast, quenched & tempered + b9baa811-cc92-42ce-a230-da12ef580185 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 10d0cd5c-c61e-40a6-b7bc-d27ff514e973 + Mass + 100.0 + + + + + + + 9.0 + 30.286148437432 + + MI_Restricted_Substances + 8d808e11-061a-47b9-9f0f-83290dd83a3f + + 9319811e + part_9319811e-87ba-4711-a931-61c2e90125f8 + 9319811e-87ba-4711-a931-61c2e90125f8 + + + 1.0 + 2.147031203912 + ee0f57be + part_ee0f57be-f5a6-492d-a77a-53a9b3ef1876 + ee0f57be-f5a6-492d-a77a-53a9b3ef1876 + + + 25.576796161745 + + MI_Restricted_Substances + b3c74dfc-9d72-4938-89cb-1a49ce0fdb80 + + Normalized + Carbon steel, AISI 1137, normalized + dde4e29f-f4be-42a5-b2c6-6f26e13a27b2 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 3b6a3762-0a63-4a5a-936f-d3a56d99b7ff + Mass + 100.0 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 59dd2f0e-c97e-4f91-86b0-c5c92c012a6a + Mass + 100.0 + + + + + 74.423203838254 + + MI_Restricted_Substances + b17713f9-59e9-48f4-8bb3-27c72b0884b2 + + water quenched & tempered at 540°C + Carbon steel, AISI 1137, water quenched & tempered at 540°C + 6d25a69a-28c7-4838-83f7-695e221c91fd + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 56be02c9-8403-4ba1-aa7c-4485b3d84979 + Mass + 100.0 + + + + + + + 4.0 + 98.696554963801 + 9554b085 + part_9554b085-4f0d-4fd8-8f0e-1d5909e3a9ee + 9554b085-4f0d-4fd8-8f0e-1d5909e3a9ee + + + 21.831664872277 + + MI_Restricted_Substances + 04970b9b-7242-4f31-9a78-dee5e31ed341 + + As rolled + Carbon steel, AISI 1030, as rolled + 0f9c5716-bde8-4226-9278-7de69c6e3dab + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + b619b686-d734-4353-8871-2f4b05e99430 + Mass + 100.0 + + + + + 39.084167563861 + + MI_Restricted_Substances + 5dbabc2e-4263-4458-abe1-31a2ece9e122 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 5160, oil quenched & tempered at 425°C + 065d0b45-fe12-459c-9970-5a4258e6ac61 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + 0a01f3f6-763c-47e8-8b72-b2cb8e7396e9 + Mass + 100.0 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 5676795c-d40c-4d41-98fe-9b61f18b91e8 + Mass + 80.443980768529 + + + + + 39.084167563861 + + MI_Restricted_Substances + 5169a157-0d18-4d45-b197-799e06aa00bc + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 9255, oil quenched & tempered at 315°C + a643f14c-e497-4667-912a-71cc5729d714 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 6510b67c-35e3-4355-9fa6-dcf9494bb9b1 + Mass + 100.0 + + + + + + + 8.0 + 53.010334890806 + + MI_Restricted_Substances + 0dedeb55-6f6f-42f9-b703-5225f1cab2fb + + 3ed0a4d7 + part_3ed0a4d7-9196-4cf2-b960-6425844f853f + 3ed0a4d7-9196-4cf2-b960-6425844f853f + + + 1.0 + 73.759037150889 + 301f7b0e + part_301f7b0e-dcc1-4414-a23c-42e6856223af + 301f7b0e-dcc1-4414-a23c-42e6856223af + + + 7.278450116179 + + MI_Restricted_Substances + 546a4247-5e3b-4adb-bc7e-3fc87f992447 + + Glass/phenolic honeycomb, 0°/90° fabric (0.055) + Glass/phenolic honeycomb, 0°/90° fabric (0.055), W Direction + 3157cd4e-49f4-40af-a349-3a9bc64e52f0 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + f7b0c970-b280-4bf5-8913-c794c228b468 + Length + 4.879222719408 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 194e2592-b023-4d9f-94f2-929f1a2fad18 + Mass + 100.0 + + + + + 46.36077494191 + + MI_Restricted_Substances + 535f6e21-a16f-4d54-8413-97634da82122 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 8650, oil quenched & tempered at 205°C + df931ea7-79c2-4a95-80c2-5d594e6d441f + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 7da753ff-132b-4d27-b3c4-b619ac47c427 + Mass + 100.0 + + + + + 46.36077494191 + + MI_Restricted_Substances + 6505c582-906c-4706-a572-efb422916885 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 4037, oil quenched & tempered at 650°C + 056cb572-28fa-43a9-898b-ff35e53d41c9 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 2088b41e-79c5-4d6b-988a-d8095482c4b1 + Mass + 100.0 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 29bb7831-5820-41e0-b925-cc6c9f6efbbe + Mass + 100.0 + + + + + + + 9.0 + 21.367660873275 + + MI_Restricted_Substances + d89d67b6-c08f-47cb-b03a-4203cebfdf32 + + c489932b + part_c489932b-a409-4051-9252-48e4425937a6 + c489932b-a409-4051-9252-48e4425937a6 + + + 7.0 + 3.245221918097 + 08c9570d + part_08c9570d-8c4e-4846-9efb-2182a4470c17 + 08c9570d-8c4e-4846-9efb-2182a4470c17 + + + 12.418997246967 + + MI_Restricted_Substances + 75a1c963-399c-444d-a38f-1929c00d15b7 + + Normalized + Low alloy steel, AISI 4150, normalized + 3adc0016-9664-4e08-bdbf-ea8810efda3e + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 1764a56c-aae3-4f59-8157-2971fc63fbb5 + Length + 92.122710166556 + + + + + 10.947625344129 + + MI_Restricted_Substances + c2db0402-57c5-422f-b8c1-470fc9c6a9c8 + + Glass/phenolic honeycomb, 0°/90° fabric (0.112) + Glass/phenolic honeycomb, 0°/90° fabric (0.112), W Direction + 54560eb0-0565-4833-b83c-6d90c0411637 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 67454c48-015a-40b8-8bef-b833defc2871 + MassRemoved + 60.786825446778 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + f23047ce-7be6-49b6-bf91-05b843e0bc48 + Length + 36.957266804276 + + + + + 10.947625344129 + + MI_Restricted_Substances + ed1b937b-1738-408f-9591-bd3e40cc5e33 + + Quenched & tempered + Low alloy steel, D6AC, quenched & tempered + 3b5a6b78-5fa2-42f4-97a0-0238b84dd118 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 62cebf70-e386-499a-88cf-2bad6945a0d5 + Mass + 100.0 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + b453695b-b216-4d5c-bfb3-52b1fda5077c + Mass + 100.0 + + + + + 10.947625344129 + + MI_Restricted_Substances + 1d9c8629-4a1d-4aaf-bb7c-ba7a97eef5f5 + + Normalized + Carbon steel, AISI 1340, normalized + b237902f-f130-4d97-a358-5f75db3fd7bd + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + d7307d47-47d5-4e58-824b-fdd7aab0e26b + Mass + 100.0 + + + + + 10.947625344129 + + MI_Restricted_Substances + 67cc68ee-c8ab-40bd-bf62-4babd642a1fd + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 81B45, oil quenched & tempered at 425°C + aa20df4a-a828-4f26-9da3-b048036c5caf + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 3b56c56e-2cab-4cb0-ac71-3128598ec5d6 + Mass + 88.4866765181 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 7261bef5-9a8e-49cb-9b8e-30ab1515aab8 + Mass + 100.0 + + + + + 10.947625344129 + + MI_Restricted_Substances + dfe65b4e-afb8-4397-a303-1266359ccfda + + Quenched & tempered + Low alloy steel, Hy-Tuf, quenched & tempered + b95a75bb-0c0a-43b0-9f59-8443690290f3 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + ee5a3fce-52cb-4165-9135-20bf1035748c + Area + 4.299451831867 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + 34b36de7-62cf-4963-b711-e2a6eb04cd0e + Length + 50.606898335091 + + + + + 10.947625344129 + + MI_Restricted_Substances + 87e1a3cd-fd79-4013-b5f8-56d6f28bef34 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1144, oil quenched & tempered at 540°C + aa099eec-229f-4cf2-a849-3f01ada8241a + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 6b15a5cd-a1de-41bd-8fa3-e307e857c1c9 + Mass + 100.0 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + e047ad62-a283-49bd-b6ce-f4bff5177bc2 + Length + 12.756512552852 + + + + + 10.947625344129 + + MI_Restricted_Substances + 508489f2-cc48-4f0a-a6ee-482bb89a0386 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 5160, oil quenched & tempered at 205°C + 17511d11-f82e-4ad3-b3c4-99be4f16b7ee + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 5a39fdd0-7032-47f4-a96f-de0cc060177e + Mass + 100.0 + + + + + 10.947625344129 + + MI_Restricted_Substances + 8db72069-1e87-4b0f-84bc-cddf9ad19b4b + + water quenched & tempered at 540°C + Carbon steel, AISI 1050, water quenched & tempered at 540°C + f8e918cc-1bab-4412-8b06-656d510582f3 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 9b3a3c87-2cd8-47d2-955a-6d4dcc4b5f2e + Mass + 100.0 + + + + + + + 4.0 + 23.41580783176 + 19177595.0 + part_19177595-0720-4efe-a6b1-7a6c88a6cfd4 + 19177595-0720-4efe-a6b1-7a6c88a6cfd4 + + + 89.142506518001 + + MI_Restricted_Substances + fc29cc59-a670-4ad6-85a0-eb07bf011f1a + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 6150, oil quenched & tempered at 425°C + d26c6998-802f-4b07-ba68-b3df6cd5c10c + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 59a6b857-29fa-45b8-832a-2a6b0c49369d + Area + 48.246371116603 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 64e0b548-fd4d-4c60-960d-1bdccf33204d + Mass + 100.0 + + + + + 3.619164493999 + + MI_Restricted_Substances + 99d1c1c6-eca3-40ed-a479-6dec902f52da + + YS400, cold rolled + TRIP steel, YS400, cold rolled + 0c276c46-13c1-4b9f-ba3c-28896fcdc00e + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 4b0bdd1c-8d70-4292-9c4c-c5b183fe65ac + Mass + 100.0 + + + + + 3.619164493999 + + MI_Restricted_Substances + 2b606408-37c3-4801-a307-dda7384ff7cc + + Glass/phenolic honeycomb, 0°/90° fabric (0.072) + Glass/phenolic honeycomb, 0°/90° fabric (0.072), W Direction + 32217508-170e-4abd-82dc-8453a57ce9cc + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 309576da-8c52-4532-b892-294b9d96bbb1 + Mass + 100.0 + + + + + 3.619164493999 + + MI_Restricted_Substances + 5b117a10-9c48-4dd0-a869-6eb490031da5 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 8640, oil quenched & tempered at 315°C + 211278c8-5738-4088-a2ab-3110ba29f0a1 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + bbf8f2a5-4707-434d-906c-2b96b155561c + Mass + 100.0 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + d92145c6-3b71-4f80-aaa0-2da5ea2c3529 + Mass + 100.0 + + + + + + + 8.0 + 70.693638953703 + + MI_Restricted_Substances + 2c677abc-5da2-4b21-9ce7-1d4e1cc0fb1c + + 7be3482d + part_7be3482d-71f1-4c23-a257-b65c80c953b5 + 7be3482d-71f1-4c23-a257-b65c80c953b5 + + + 9.0 + 13.070269167921 + + MI_Restricted_Substances + b49e47be-bf96-4bf1-9366-5c1b840267d4 + + 6126ed15 + part_6126ed15-1e6c-45e9-9de8-21bf8fa238f1 + 6126ed15-1e6c-45e9-9de8-21bf8fa238f1 + + + 1.0 + 38.224890007742 + 07cea42e + part_07cea42e-7a03-47e3-8a83-75d43afc0b1c + 07cea42e-7a03-47e3-8a83-75d43afc0b1c + + + 15.621604312035 + + MI_Restricted_Substances + a6078356-e79c-4ddd-86ef-a3f01680dd35 + + As rolled + Carbon steel, AISI 1020, as rolled + 9c130994-2b19-4444-bb66-d6a078de87a6 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 945e032d-a8c5-4020-b29a-26f31023a3fd + Mass + 100.0 + + + + + 12.054056526852 + + MI_Restricted_Substances + 9124b244-f2f8-44df-b2cf-b05d3406eb9e + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 4042, oil quenched & tempered at 315°C + 6f645f4e-aeb2-493b-a0bd-0f0193d02160 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 46cb2c29-e3be-4a31-babd-ab7d4c9b0730 + Length + 31.963613038865 + + + + + 12.054056526852 + + MI_Restricted_Substances + 9c05e644-9257-4778-9c68-be0cff6f58b5 + + Annealed + Low alloy steel, AISI 8620, annealed + 330d4475-b152-4293-9395-d6dc67b6a3db + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 3c21e613-08d7-4dec-84d7-51274ba6f236 + Area + 52.581935027885 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + cb618223-8436-4637-8fe0-999bb920c62d + Length + 54.144588464007 + + + + + 12.054056526852 + + MI_Restricted_Substances + 78055acc-4fc2-46ae-bba8-f28bda85357e + + Annealed + Carbon steel, AISI 1060, annealed + 6aa1cddb-6418-4d38-be7a-61ebed04f993 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 90abe56e-8173-4ec6-9926-97b81934ed90 + Mass + 52.727100091393 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + fd69c437-4c7a-4904-9c40-b37ad6996418 + Length + 0.846811570621 + + + + + 12.054056526852 + + MI_Restricted_Substances + cec978ca-2cf6-489b-a21f-c424c7d49a61 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 4042, oil quenched & tempered at 540°C + 2cdb3acd-5890-47f2-ac24-51f198b2a0c5 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 551b2060-7f85-47e2-82e4-99ddf3ebb25a + Mass + 100.0 + + + + + 12.054056526852 + + MI_Restricted_Substances + 8643d806-94c5-42f9-9ffc-4c21a6e16bd0 + + Annealed + Carbon steel, AISI 1141, annealed + 93db24a2-5c53-4e87-b40b-a91744f8e56a + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + ee620648-3497-4047-9e95-5a53c37f0db8 + Mass + 100.0 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + ef500286-8392-48ec-9d44-f6e7a8cac39f + Mass + 100.0 + + + + + 12.054056526852 + + MI_Restricted_Substances + b076430e-dc1c-4448-86c9-bb8d0b8da741 + + Annealed + Low alloy steel, AISI 4620, annealed + 31314268-e853-4e65-a945-c067ed09df61 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 3626f437-79b1-45f5-b330-2f4a8b9ac615 + Area + 35.592545585517 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 41200b68-01de-450c-b044-0134f41415eb + Mass + 100.0 + + + + + 12.054056526852 + + MI_Restricted_Substances + 18384726-ca55-4d5f-880a-5a2b8776be3a + + Normalized + Carbon steel, AISI 1022, normalized + d349f636-70d5-4184-a03e-13cad9e80de4 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + ce8185ba-fc9f-48ae-8663-c8202c8cc8ec + Length + 37.244667782096 + + + + + + + 5.0 + 21.277241046203 + 8c3f38f0 + part_8c3f38f0-6e0b-4aca-b254-4132233af614 + 8c3f38f0-6e0b-4aca-b254-4132233af614 + + + 32.91436877703 + + MI_Restricted_Substances + 28d51559-b49b-4a2b-9f09-9a198db03164 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 4340, oil quenched & tempered at 425°C + 34176637-a7e1-440f-be4f-2972da9bb57a + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + c06ac6d4-00cf-4a25-a01b-730c32a82a55 + Mass + 100.0 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 59f03655-f8fa-427f-9454-81bd9c0e5420 + MassRemoved + 96.736644626006 + + + + + 13.417126244593 + + MI_Restricted_Substances + dcba95c6-8741-4b93-bb8b-f433a9c39a78 + + 45wt% glass, biaxial lay-up + Polyester/E-glass fiber, woven fabric, 45wt% glass, biaxial lay-up + eca1ba7c-8432-4282-adeb-82fa79e7fd4d + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + be94a6ab-6d58-484f-8898-e1acaf00e506 + Mass + 100.0 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + f34fa341-34b1-4877-b30e-48c14af24bf6 + Area + 61.961870110575 + + + + + 13.417126244593 + + MI_Restricted_Substances + 6d6a3603-a2a8-4db9-9e7e-ad4fc4f9c724 + + Glass/phenolic honeycomb, ±45° fabric (0.064) + Glass/phenolic honeycomb, ±45° fabric (0.064), W Direction + c9a0792f-5002-423d-a659-e9712ffd763d + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 364cf3fb-aeb3-49e5-a9c1-d805299db30c + Mass + 100.0 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + f19ea066-91cd-460d-842a-f32d39a67aea + Area + 21.55190269535 + + + + + 13.417126244593 + + MI_Restricted_Substances + 3fd6cebb-a683-45be-b014-7c3fb617c3e7 + + Glass/polyimide honeycomb, ±45° fabric (0.064) + Glass/polyimide honeycomb, ±45° fabric (0.064), L Direction + 7a2ba64c-04cc-49e9-bc59-7d536d6f9e28 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + bc944cda-7533-407b-b00d-569eb379a60a + Mass + 100.0 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 6b48f74b-ecf8-4d5f-8092-2d4349c269fd + Mass + 100.0 + + + + + 13.417126244593 + + MI_Restricted_Substances + 829ba125-1962-4803-a2ea-acd4eb899642 + + Annealed + Carbon steel, AISI 1030, annealed + 3b8852b5-0a4b-4eb3-945c-02bd69abd718 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + a1f35a33-91aa-41ff-99a8-4b171149ddaf + Mass + 100.0 + + + + + 13.417126244593 + + MI_Restricted_Substances + 3a464919-b1b2-4ce0-88b2-824bc9a81e6b + + Borosilicate - 2405 + Borosilicate - 2405 + c85dd726-02f4-445c-a87a-cbfa7dab58ea + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 91fa02b9-77b8-4cf5-84d5-8483e0ead798 + Mass + 100.0 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + f756b894-c24d-4f04-90c7-ed5031cfab0e + Mass + 100.0 + + + + + + + 2.0 + 49.798439373168 + + MI_Restricted_Substances + f5833937-26a5-4d36-aaae-722b03f04a3b + + 0fd51798 + part_0fd51798-b2a2-4efb-a0bf-6fa79eea315b + 0fd51798-b2a2-4efb-a0bf-6fa79eea315b + + + 1.0 + 67.43221346635 + + MI_Restricted_Substances + 63c278b1-c877-40c9-b18c-e03bc07a1dd1 + + 722e564a + part_722e564a-777e-4f9c-8811-193145d86934 + 722e564a-777e-4f9c-8811-193145d86934 + + + 8.0 + 9.255291805255 + 49942221.0 + part_49942221-0621-4af1-a2fc-0a4093a6d639 + 49942221-0621-4af1-a2fc-0a4093a6d639 + + + 50.883502955959 + + MI_Restricted_Substances + b44fad5b-b59d-4153-addf-f70a7895947d + + Annealed + Low alloy steel, AISI 4130, annealed + a4ec8808-b585-496d-a5cc-d59c512f313e + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 6c81acc0-5663-48a0-80fb-0c2d91b678ad + Length + 25.633306440726 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 11cd72a3-ed84-4616-ac4c-ebaed41492c9 + Length + 21.162122591008 + + + + + 7.016642434862 + + MI_Restricted_Substances + 8f779b79-a040-48d7-ac26-b9a1edf50ad2 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 8640, oil quenched & tempered at 650°C + ff9a65cd-ebb1-451d-b40b-6b0647b7f578 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 6bbad37a-8852-47d4-abb8-cc6ffba27678 + Mass + 100.0 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 8018ee5d-e0de-46af-ae92-55ebdfa74e2b + Mass + 100.0 + + + + + 7.016642434862 + + MI_Restricted_Substances + a831e691-2a34-4edf-807f-dfd38c316ef0 + + Borosilicate - 7740 + Borosilicate - 7740 + 2a1d6322-a0ea-436c-9538-cceb38c18a83 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 04a0a0dd-d457-4389-920e-b89aff73af52 + Mass + 100.0 + + + + + 7.016642434862 + + MI_Restricted_Substances + 38da30dc-d742-49da-bc7e-998b66397040 + + Oil quenched & tempered at 425°C + Carbon steel, AISI 1144, oil quenched & tempered at 425°C + e5309be8-4142-4935-8a91-72fa921fdf2d + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + efbe77cf-4e96-4bb9-ac92-59e4e213384d + Length + 4.839072332176 + + + + + 7.016642434862 + + MI_Restricted_Substances + ee5b018e-8d7f-4fb1-bad0-c73e871592bc + + 16Mo3, normalized + Low alloy steel, 16Mo3, normalized + d4294b82-7ffe-47d3-b655-dc8b66bc7020 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + a1b45db5-85b0-4f26-9b01-2968d3776b26 + Length + 4.030671671047 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 477ee7d7-60b9-4ac0-8262-9e93cd7c26d3 + Mass + 100.0 + + + + + 7.016642434862 + + MI_Restricted_Substances + 9cae15c6-b5b6-4ab9-9008-d962bee0e662 + + Glass/phenolic honeycomb, 0°/90° fabric (0.128) + Glass/phenolic honeycomb, 0°/90° fabric (0.128), L Direction + 3d11b8af-1fd4-4675-8258-5b3b35f3c032 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 3bfd5fb1-23db-422d-90b3-f1e1a7c8a39a + Area + 5.030006545144 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + cbc4230b-cee3-48f8-8712-f8df2c6ba37d + Mass + 100.0 + + + + + 7.016642434862 + + MI_Restricted_Substances + 33160988-8422-40e2-93d1-e3e7467eafe9 + + Normalized + Carbon steel, AISI 1030, normalized + 6c76498c-79e8-4812-9fd1-af346f992f7e + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + 359a2740-1b43-4fd0-8d89-4cd4b18d63f0 + Mass + 100.0 + + + + + 7.016642434862 + + MI_Restricted_Substances + 72799627-a7c0-4df4-8250-e2be8538565f + + Glass ceramic (N11) + Glass ceramic (N11) + 96182ae5-ac0c-49fa-91bf-c58715109f6f + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 096e3ee6-8be5-4a27-9e82-195bcd236082 + Mass + 100.0 + + + + + + + 7.0 + 57.228530550947 + 0a2f97d7 + part_0a2f97d7-dc23-4588-90f2-3a7dad859ea6 + 0a2f97d7-dc23-4588-90f2-3a7dad859ea6 + + + 49.67143766101 + + MI_Restricted_Substances + 75a1c963-399c-444d-a38f-1929c00d15b7 + + Normalized + Low alloy steel, AISI 4150, normalized + 9729d0c1-9bae-49be-b5d5-bad7b0e57c20 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 3b462f60-aa3a-44b3-91a0-b9584d987069 + Area + 15.348283953661 + + + + + 25.164281169494 + + MI_Restricted_Substances + d2b08d58-fc58-402d-98a4-6ee646a8fff5 + + Potash soda lead glass - 0010 + Potash soda lead glass - 0010 + 42fe1c07-bf61-43fe-b200-091c0a99d3eb + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 9a3fb36d-fb3b-4899-a6c6-a492e6344ada + Area + 53.442114989013 + + + + + 25.164281169494 + + MI_Restricted_Substances + 3fd6cebb-a683-45be-b014-7c3fb617c3e7 + + Glass/polyimide honeycomb, ±45° fabric (0.064) + Glass/polyimide honeycomb, ±45° fabric (0.064), L Direction + f31b86d3-3d73-45d7-b335-dc80c6fe3797 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 390fa0ad-01b8-4920-8c1b-cb3b44fc86e3 + Mass + 100.0 + + + + + + + 1.0 + 31.800849098619 + 6982cff1 + part_6982cff1-1540-4179-9bfb-6085885c7e80 + 6982cff1-1540-4179-9bfb-6085885c7e80 + + + 42.985126582433 + + MI_Restricted_Substances + 3fd6cebb-a683-45be-b014-7c3fb617c3e7 + + Glass/polyimide honeycomb, ±45° fabric (0.064) + Glass/polyimide honeycomb, ±45° fabric (0.064), L Direction + 2f198640-ec20-443e-bce0-aa2480ebc5fa + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + a95b81e7-3165-4c66-b27c-79f80b8a77c1 + Mass + 100.0 + + + + + 28.507436708783 + + MI_Restricted_Substances + 405361fd-5b54-4a33-b835-7eb9eee13310 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 4042, oil quenched & tempered at 205°C + be2142f9-d6ab-490f-97dc-a6a35fae95f0 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + effd4e9c-9b82-4183-b83a-1c7b6373a274 + Mass + 100.0 + + + + + 28.507436708783 + + MI_Restricted_Substances + e678781a-1b38-4709-816b-9db609651db6 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 50B60, oil quenched & tempered at 425°C + 9b463961-9e1d-49ac-a291-a22f41835348 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + f9a42968-f583-4ea2-8f08-7abb2b3d7c69 + Area + 15.600100073777 + + + + + + + 5.0 + 5.379966043578 + c59f3dd3 + part_c59f3dd3-5757-4896-be0f-fe4a52ac813f + c59f3dd3-5757-4896-be0f-fe4a52ac813f + + + 1.007182058415 + + MI_Restricted_Substances + ed1b937b-1738-408f-9591-bd3e40cc5e33 + + Quenched & tempered + Low alloy steel, D6AC, quenched & tempered + 52cf4b83-73d4-4df3-8a79-30543a4005bd + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 85be6d38-4183-4573-a6fe-b2d0883d1e7e + MassRemoved + 42.003885163927 + + + + + 49.496408970792 + + MI_Restricted_Substances + 99d1c1c6-eca3-40ed-a479-6dec902f52da + + YS400, cold rolled + TRIP steel, YS400, cold rolled + 6795f40a-00cf-4910-81e0-e6bfd760da45 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 0c6e3617-bc3c-4f77-9b0b-ce00180df965 + Mass + 52.91374775251 + + + + + 49.496408970792 + + MI_Restricted_Substances + cc556116-e08b-4aa7-a2f1-af5315cb6a49 + + Annealed + Low alloy steel, AISI 8740, annealed + d2c298de-fc99-4858-a8d0-3ff585bfbee9 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + afb02586-6603-4e8b-9df6-62bdbcfc9562 + Area + 51.58789155613 + + + + + + + 9.0 + 29.531311956016 + fe91d311 + part_fe91d311-524b-4814-93bc-0e03eec4d4ea + fe91d311-524b-4814-93bc-0e03eec4d4ea + + + 100.0 + + MI_Restricted_Substances + ee08f647-79af-49f3-98c5-043480a0fed4 + + Quenched & tempered + Low alloy steel, 4330V, quenched & tempered + b1170aef-0d45-4706-bf6e-58a6290598f8 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + bc36cb23-5d3d-4152-91e8-94d719fef358 + Mass + 100.0 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 72eb8ad1-7f1d-4ec2-a7f8-c2f2fb390bb5 + Length + 32.993169609919 + + + + + + + 4.0 + 81.231096611 + e0e5af0a + part_e0e5af0a-e0c5-4e59-af5b-fb8261eaf757 + e0e5af0a-e0c5-4e59-af5b-fb8261eaf757 + + + 99.876987701224 + + MI_Restricted_Substances + 6ad310ec-db2b-43b1-afa1-9b6ddae5880c + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 94B30, oil quenched & tempered at 425°C + 5603f0cd-721c-4d66-97e3-0fae5da13c6e + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 53e81066-b63d-4911-8057-e3c49aaa7138 + Area + 20.675033619941 + + + + + 0.015376537346 + + MI_Restricted_Substances + b00ee3d8-d653-4c76-8154-c2f07820ceda + + As rolled + Carbon steel, AISI 1080, as rolled + 9cc836ff-8d2f-41dd-82b9-747946f2675f + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + e2ed0c08-5f2f-48f6-ab7e-e6e6b91f51f5 + Mass + 100.0 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 47ff2e6f-c4fc-481b-ac7a-88e391b3d956 + Length + 20.4580142258 + + + + + 0.015376537346 + + MI_Restricted_Substances + 00cd78de-6c78-46f3-81b3-ec03803fa034 + + Glass/phenolic honeycomb, ±45° fabric (0.048) + Glass/phenolic honeycomb, ±45° fabric (0.048), W Direction + a3e8d452-f55c-4b4f-afb4-78b5105fab0b + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 83448319-1f36-4f78-b6b2-ddccb968a8d6 + Mass + 100.0 + + + + + 0.015376537346 + + MI_Restricted_Substances + 1345051c-8b29-468f-a10d-37712b50f19a + + Borosilicate - 9741 + Borosilicate - 9741 + 34ee0405-4c30-4272-aa74-8cd0006c7cdc + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + e1dad974-b607-47f0-897c-389bce8c3130 + Length + 32.534031026314 + + + + + 0.015376537346 + + MI_Restricted_Substances + f7146c54-87d0-4395-b57a-86bb0c43716a + + ASTM A106 Grade B + Structural steel, ASTM A106 Grade B + b1097059-ddc7-4042-9c37-ca46873934aa + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + a643177b-46b3-48e6-b617-520aa03a590a + Mass + 100.0 + + + + + 0.015376537346 + + MI_Restricted_Substances + bac6ffd4-6d83-432c-90f4-de9606502589 + + Alkali barium glass + Alkali barium glass + 13adc0ad-d341-44b0-bd5a-0e4be59efd3c + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + f1502dd5-5b95-4b45-8d0b-deb5e9a4673d + Mass + 100.0 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 84af3f8c-8dba-49b4-9c0d-fd2aebc545b2 + Length + 15.257700353515 + + + + + 0.015376537346 + + MI_Restricted_Substances + 92565d61-24fc-4880-9be5-0faeb9a8a3e8 + + Titanium silicate + Titanium silicate + 969b4e8d-aa09-45d8-b760-9a6d5f39bd17 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + cf49c522-0eee-46ad-b8fb-0bb1617f3b1f + MassRemoved + 71.953743915983 + + + + + 0.015376537346 + + MI_Restricted_Substances + 90b2285b-4295-429d-beb8-90d9f5df0101 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 5046, oil quenched & tempered at 315°C + c55b3a48-af24-4adb-8756-73a57c037afd + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + 9de8fabe-f587-4fbf-af1a-0737dbf6e562 + Mass + 100.0 + + + + + 0.015376537346 + + MI_Restricted_Substances + 50c388cf-bb91-442a-9b62-8d34f7822f13 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1040, oil quenched & tempered at 540°C + 85ea47d0-5bbe-4bfa-8dd5-351374048369 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 553326e4-d43e-4a2a-a8a7-e9a26f0a8dcf + Mass + 100.0 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + b5fbf9f0-b92e-477b-9ce7-aa33dddfaa3f + Mass + 28.596958857307 + + + + + + + 1.0 + 97.074463729315 + 437de059 + part_437de059-b008-4e7c-b520-10a8123000e1 + 437de059-b008-4e7c-b520-10a8123000e1 + + + 63.048234937269 + + MI_Restricted_Substances + dce50f42-7360-4343-bf6c-8ed14aa0f092 + + 40% glass and mineral + PA66 (40% glass and mineral) + 701e5165-2c25-4cea-96ed-7750f5f41acc + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 6aa5c7f2-e8e6-41ab-9717-77236751e16f + Mass + 100.0 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + d509c5d2-e8e1-4640-9d90-8b15141ea57f + Mass + 100.0 + + + + + 18.475882531365 + + MI_Restricted_Substances + 0c172430-369d-48ad-910e-69fe1451a36e + + Normalized + Carbon steel, AISI 1095, normalized + 1f7e073c-a7eb-49f3-adc0-0417aa2cfa5f + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + c33eccae-1ac4-4d8d-8b3d-a449ae0752dc + Mass + 100.0 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + d71fb4fe-b849-4560-a0e0-68b2e512cc69 + Mass + 100.0 + + + + + 18.475882531365 + + MI_Restricted_Substances + 00cd78de-6c78-46f3-81b3-ec03803fa034 + + Glass/phenolic honeycomb, ±45° fabric (0.048) + Glass/phenolic honeycomb, ±45° fabric (0.048), W Direction + e56af113-d40b-42ac-a2df-f2472f70efee + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + ec8a21c1-8d76-4127-a2c3-83673ca72874 + Length + 19.651641752408 + + + + + + + 7.0 + 27.138954786182 + 04fa7bb4 + part_04fa7bb4-3a59-43c1-a203-6be1b2da9fcf + 04fa7bb4-3a59-43c1-a203-6be1b2da9fcf + + + 22.96900149573 + + MI_Restricted_Substances + 7a62318a-eff2-4f36-9925-ee919c5b4369 + + S235J + Structural steel, S235J + b5b0bc54-ff16-4e30-aa8e-1174d01b0db9 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + f7e1d2c7-2fa3-4356-8737-63d41dea09cf + Mass + 100.0 + + + + + 25.676999501423 + + MI_Restricted_Substances + 29b76cdc-672e-4a1f-8f6e-a5644857c880 + + Normalized + Low alloy steel, AISI 4135, normalized + 8b2a4aa2-e23e-4c9e-90b7-03a4272434ce + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + b7749878-bcea-4e27-92e1-43cbe27fa037 + Mass + 100.0 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 6006957c-f765-4ba5-bb70-31ffeab91dd8 + Mass + 100.0 + + + + + 25.676999501423 + + MI_Restricted_Substances + 72799627-a7c0-4df4-8250-e2be8538565f + + Glass ceramic (N11) + Glass ceramic (N11) + cd3d696d-39e4-4ba2-beb9-220431560555 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + b84b3ae8-bb31-4e8a-8081-ecf61c235074 + Mass + 100.0 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 47bae213-7435-4793-96f0-733c137b25a9 + Mass + 100.0 + + + + + 25.676999501423 + + MI_Restricted_Substances + aa85aa64-c83c-4dec-afe9-120ed38bfd6b + + Quenched & tempered + Intermediate alloy, Fe-5Cr-Mo-V aircraft steel, quenched & tempered + 82f871e0-b0dc-41a1-85fc-c757560e0d45 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + 443ee55b-1242-420a-b5ef-a1785070b80a + Mass + 100.0 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + df470091-0c62-4e4b-b5cc-ace6fc3bcedc + Mass + 100.0 + + + + + + + 1.0 + 37.721345777493 + 5b8a41c6 + part_5b8a41c6-a8e6-44ab-bf66-c6f9793fa82e + 5b8a41c6-a8e6-44ab-bf66-c6f9793fa82e + + + 63.613183453498 + + MI_Restricted_Substances + 829ba125-1962-4803-a2ea-acd4eb899642 + + Annealed + Carbon steel, AISI 1030, annealed + 16e80a3f-6e09-41a2-9cf5-4ba5eb4a7e14 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 55446e81-a459-4b89-84db-e9afdca8258d + Mass + 100.0 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + e13a47ea-20e1-427d-aa4d-c96d2f032ab5 + Length + 65.540538106831 + + + + + 9.096704136625 + + MI_Restricted_Substances + 3c7e2f5d-1c0d-4d81-8f90-3aa111fa97ee + + water quenched & tempered at 205°C + Carbon steel, AISI 1040, water quenched & tempered at 205°C + bf017666-33ee-4e9c-a7c7-c79809c76bd5 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + b7d09318-089b-4b93-acb0-da0f87626678 + Mass + 100.0 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 986f836b-cbcf-4eca-a03e-94505ea593da + Mass + 100.0 + + + + + 9.096704136625 + + MI_Restricted_Substances + fbdbafa4-b1a5-410d-a3f0-0b7077b0d7be + + Glass/polyimide honeycomb, ±45° fabric (0.112) + Glass/polyimide honeycomb, ±45° fabric (0.112), L Direction + 930d52cf-2cee-4c4b-b1a9-b1d96d3044c9 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 6a48fca9-fbaf-4264-9482-96ab92322e57 + Mass + 100.0 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 72adcdd4-1469-4a17-84e7-9d58cf04a38e + Mass + 100.0 + + + + + 9.096704136625 + + MI_Restricted_Substances + 6f9ce415-05a1-4774-bf1d-8952ab0f7306 + + Annealed + Low alloy steel, AISI 3140, annealed + 676c5e9b-ff60-4183-a7a9-9d7fcd32c4ed + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + a0295e52-f3ba-4990-a17d-a6d1be73ff17 + Mass + 100.0 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 6b7c542c-ddd3-4aa2-8c5d-24e74a10c92d + Area + 68.080936403982 + + + + + 9.096704136625 + + MI_Restricted_Substances + a8bcc71d-ff19-40c8-9520-f11553c604d2 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 5140, oil quenched & tempered at 650°C + a21a8da1-da97-4c1b-8fbe-4a5aa1a91a46 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 499b161c-fe41-45c5-a2ad-a21511698d33 + Mass + 100.0 + + + + + + + 5.0 + 45.26277163311 + + MI_Restricted_Substances + 5fd070ef-bb1b-4857-abcf-7eda481ecfbe + + c8fe4f3d + part_c8fe4f3d-a700-4d0c-84e3-a14b889a4cc7 + c8fe4f3d-a700-4d0c-84e3-a14b889a4cc7 + + + 5.0 + 24.669284105612 + eb2deb8b + part_eb2deb8b-b41d-4c74-8e4b-a7e85b8ec439 + eb2deb8b-b41d-4c74-8e4b-a7e85b8ec439 + + + 11.293506487875 + + MI_Restricted_Substances + c95c73c3-4701-4efd-902e-cbf342cdcf96 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 6150, oil quenched & tempered at 540°C + 745d6d44-8f46-419e-9b32-25bc47eaa59e + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 89f9c223-e5c2-4ebd-9633-4d3e6f846f0a + Mass + 100.0 + + + + + 44.353246756062 + + MI_Restricted_Substances + 36e1311d-2e77-4147-8cf3-c4cdce6f6c7f + + Grade F9 + Alloy steel, 9Cr-1Mo, Grade F9 + 9b22d40c-ac77-4697-9810-85b65fe477be + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 08d160c5-0163-43da-9917-db0b516d1d61 + Area + 23.876643285097 + + + + + 44.353246756062 + + MI_Restricted_Substances + b10ab099-72fd-4e47-9274-015a08f619c2 + + Annealed + Low alloy steel, AISI 5160, annealed + 31356a48-ade5-4b4d-a93b-9808b6383d9e + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + f7533552-c5cd-4a4e-ab60-a532681d340a + Mass + 100.0 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + e3b12039-e222-49f5-8803-779b9f7fd7af + Length + 66.376230244699 + + + + + + + 4.0 + 15.264850256622 + 7ec1f344 + part_7ec1f344-f8f3-4bb7-a8bb-91fc987da37d + 7ec1f344-f8f3-4bb7-a8bb-91fc987da37d + + + 48.340723639512 + + MI_Restricted_Substances + ab895171-8c16-4056-9062-78f7516be1b0 + + Borosilicate - 7050 + Borosilicate - 7050 + 4a413853-4f19-4033-99e9-d2558285fd77 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + b141dd7a-08fe-49c9-9e5e-60c573dff406 + Mass + 100.0 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + ebc20434-b632-4a83-98ce-36397e7cc4b6 + Length + 84.008895598356 + + + + + 10.331855272097 + + MI_Restricted_Substances + 92565d61-24fc-4880-9be5-0faeb9a8a3e8 + + Titanium silicate + Titanium silicate + e2589441-809a-4632-b5f5-604e86d5df1d + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 49000dd4-39c6-4c0e-91a4-9733e7cdc4cc + Mass + 100.0 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 2a8c198d-6795-43a2-89b0-18d302c51e22 + Mass + 4.029275152845 + + + + + 10.331855272097 + + MI_Restricted_Substances + d424fe56-b6f6-42c2-99fb-3e92da8ce70b + + Molding, glass filled + DAP (molding, glass filled) + 9f8bae76-87c4-4a92-9d2e-7acd712324b4 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 5a4e401d-dfcd-43eb-a876-1e11b6606ba3 + Mass + 100.0 + + + + + 10.331855272097 + + MI_Restricted_Substances + 0a203f13-4112-4c7b-8d17-bd9ce600f647 + + YS350, cold rolled + Dual phase steel, YS350, cold rolled + c0ce1d7a-cd01-4611-bf88-190e3d52c5c6 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + 4c5daa87-9d94-4e0c-b0ed-f6e29891ec70 + Length + 60.250467090052 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + c33605f5-647b-4115-ba26-4220139253f8 + MassRemoved + 19.773969203128 + + + + + 10.331855272097 + + MI_Restricted_Substances + d56a3593-45b4-418e-8f28-3fde55e8479f + + Homopolymer, 40% glass and mineral + PP (homopolymer, 40% glass and mineral) + 18c72c1f-62dc-424a-b1e3-829ebae03638 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 39556d21-4b67-439a-ab9a-aa687ff13719 + Length + 88.799339946731 + + + + + 10.331855272097 + + MI_Restricted_Substances + c62d668e-5411-4845-b19c-3a0c4eedf872 + + 10CrMo9-10, normalized & tempered + Low alloy steel, 10CrMo9-10, normalized & tempered + eb75a1ff-cfed-4cff-9ee0-51b0ae2bff51 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 97aba755-6d6b-476a-9d91-b4ae031e069d + Mass + 100.0 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 8d6ff545-b87a-4f86-b87e-b0c67814fc8a + Length + 7.222701053704 + + + + + + + 6.0 + 83.811494653956 + 82a614ac + part_82a614ac-71f0-43c2-9f05-50d6d6bc5dd7 + 82a614ac-71f0-43c2-9f05-50d6d6bc5dd7 + + + 27.351893311064 + + MI_Restricted_Substances + d2c2408b-ddaa-4dc0-825b-b2d3ef39767b + + Oil quenched & tempered at 315°C + Carbon steel, AISI 1095, oil quenched & tempered at 315°C + 6ca8c8cd-314f-49f3-98a2-fe7da413b8dd + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + a37f7e86-aa84-4a27-991a-117d1677ba50 + Length + 56.536164393898 + + + + + 18.162026672233 + + MI_Restricted_Substances + 8b442749-964a-49d6-be5c-9a55c81d85f8 + + Annealed + Carbon steel, AISI 1137, annealed + c476e626-5152-486e-86db-e1e4879b8322 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + ea5ab7ac-c8d8-4223-b0ed-27111a71e53f + MassRemoved + 32.525596224016 + + + + + 18.162026672233 + + MI_Restricted_Substances + 81ce98b3-d459-4695-9dd9-d53244be47ed + + Annealed + Carbon steel, SA216 (Type WCC), cast, annealed + 49e350c2-4a76-46dc-91c9-a053293f1246 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 44afe398-fa7e-4205-b019-ff981c913696 + Mass + 100.0 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + efd3f567-f565-4c76-bfdd-53016814b06f + Mass + 100.0 + + + + + 18.162026672233 + + MI_Restricted_Substances + 158e73a4-18c6-4e1a-b5d8-57669c377335 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 8740, oil quenched & tempered at 650°C + f67e261d-6a6d-460c-b268-c2d94e6e6095 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + 95f56dd5-b66f-4a7a-bcf5-23248b4bf618 + Mass + 100.0 + + + + + 18.162026672233 + + MI_Restricted_Substances + 4b01d1e1-0f4c-4861-a797-7ea504ca38c4 + + Annealed + Low alloy steel, AISI 5150, annealed + 2b4ff675-7d16-452a-aa95-6822f6f80a28 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 65d94de4-5ac4-4511-93bd-5c4493f91339 + Mass + 86.868624476189 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 1927203e-d336-40f9-9ac8-002e3fb8404f + Mass + 100.0 + + + + + + + 2.0 + 26.229461061875 + 8b6c545e + part_8b6c545e-01a8-4124-a864-f4715e58b341 + 8b6c545e-01a8-4124-a864-f4715e58b341 + + + 8.014959473169 + + MI_Restricted_Substances + 7c667712-7c0d-46fe-bf29-e73482f1a937 + + Normalized + Carbon steel, AISI 1040, normalized + 436bf9aa-eeaa-43b2-b091-946739429e46 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + b04303aa-fa93-4a4b-b15a-1d399aa6ef2a + Mass + 100.0 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + cc3e31e1-5109-4d2c-89c5-e9afbe14ac07 + Mass + 100.0 + + + + + 91.98504052683 + + MI_Restricted_Substances + 879f3268-e8b6-48c0-822a-40a010d12911 + + AISI 1010, annealed + Carbon steel, AISI 1010, annealed + 5b140538-a83a-4932-8530-b6b9b1354b33 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + bd4e9820-9ff3-4955-adf8-a54c1fb91c6f + Mass + 100.0 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 21454e66-9f53-46ce-bc28-9eae97e8e2aa + Mass + 100.0 + + + + + + + 5.0 + 68.122599864435 + 32a97613 + part_32a97613-8749-4521-911a-dadce88e2fbc + 32a97613-8749-4521-911a-dadce88e2fbc + + + 87.248372979112 + + MI_Restricted_Substances + 9124b244-f2f8-44df-b2cf-b05d3406eb9e + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 4042, oil quenched & tempered at 315°C + fb4f654c-e2e5-4e46-82a7-135d9d12e8b8 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 899c2231-7fab-4232-9b1b-90460bf58577 + Mass + 100.0 + + + + + 1.59395337761 + + MI_Restricted_Substances + 29d2e9de-9de0-4ea9-9bff-3a1cee0c26e3 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 4037, oil quenched & tempered at 205°C + e3442955-c1af-4772-8b05-38a14c8b56d6 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 106b9d46-3e65-4149-82ad-e1be183c3aa0 + Mass + 100.0 + + + + + 1.59395337761 + + MI_Restricted_Substances + 5dbabc2e-4263-4458-abe1-31a2ece9e122 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 5160, oil quenched & tempered at 425°C + bafe2017-cae7-4cb0-a9a9-a0a07178065f + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + 04dae83c-67b6-4578-88e8-186be8062412 + Mass + 100.0 + + + + + 1.59395337761 + + MI_Restricted_Substances + e5cb0b28-b074-4eb6-95ab-12e8692a87ea + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 50B60, oil quenched & tempered at 540°C + ede158ad-d3b7-4822-9c1b-7baa9a4a09ec + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 3d7da978-b277-4a25-b720-5638eeb242a3 + Mass + 67.539811678016 + + + + + 1.59395337761 + + MI_Restricted_Substances + d6e501d1-0349-4e73-a9da-d539d7cd5486 + + Normalized & tempered + Carbon steel, SA216 (Type WCC), cast, normalized & tempered + 89b60b9d-50b9-458a-8a79-bc7fabf95943 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 22dc52e0-34ca-4412-952e-49bc1bf22f01 + Mass + 100.0 + + + + + 1.59395337761 + + MI_Restricted_Substances + 9baf14a0-efff-4bce-9674-553db30bee1b + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 9255, oil quenched & tempered at 650°C + 669c5e9a-c19c-4473-a1d7-4ac59cedb10a + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + dfcbbda8-fb7c-4a18-b4b8-67ce4d0a060e + Length + 10.26537111507 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 777fa19d-d738-4b3b-915d-6996371d9079 + Mass + 100.0 + + + + + 1.59395337761 + + MI_Restricted_Substances + a1ecb25a-cbfa-484f-8221-3c08313c0d09 + + Glass/polyimide honeycomb, ±45° fabric (0.051) + Glass/polyimide honeycomb, ±45° fabric (0.051), L Direction + 2a239261-e9fa-4492-b6d9-487b94adce00 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 3231389f-f837-46b2-ab9f-65bd393369dc + Mass + 3.335981584776 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 965ee3ad-4b83-4b1c-aeb6-280f7931ac17 + Mass + 100.0 + + + + + 1.59395337761 + + MI_Restricted_Substances + cec978ca-2cf6-489b-a21f-c424c7d49a61 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 4042, oil quenched & tempered at 540°C + b9ea77fb-a00b-4873-9afe-bebec9745c86 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + a9fc01c6-b5f8-4d21-ab7e-6afa5fb68b26 + Mass + 100.0 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 6a975675-91de-4ed0-a7da-0a74e72c8af0 + Mass + 100.0 + + + + + 1.59395337761 + + MI_Restricted_Substances + 940150b6-2d2e-4762-b1a0-6f354a75d95b + + Potash lead glass + Potash lead glass + 6f275f8d-94c9-458c-bf77-a73191c7d328 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 8662860d-124e-4acd-987c-ee1d0d4d7046 + MassRemoved + 4.076848553529 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 1889b177-f9b6-4429-ad45-cd5dda537c09 + Mass + 100.0 + + + + + + + 8.0 + 52.66540364952 + + MI_Restricted_Substances + 19db41d7-f431-4cae-8977-8bdab8435374 + + f45aed28 + part_f45aed28-e2ce-47d9-9f72-262b61b4cf4c + f45aed28-e2ce-47d9-9f72-262b61b4cf4c + + + 5.0 + 67.809588400558 + 029eebe4 + part_029eebe4-61d9-4313-8b11-48a3b2ddaa26 + 029eebe4-61d9-4313-8b11-48a3b2ddaa26 + + + 100.0 + + MI_Restricted_Substances + e6ccd83b-bd9f-45c2-a45e-53933b3b3638 + + YS170, hot rolled + Drawing quality, YS170, hot rolled + a1084c64-0392-4ae2-8349-95b72dd23979 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 20e30242-be1b-4382-abb8-ae0a7c43b0b5 + Mass + 100.0 + + + + + + + 9.0 + 72.548697177576 + 9d4a9735 + part_9d4a9735-5832-40b9-a0c7-374f7f8ef4eb + 9d4a9735-5832-40b9-a0c7-374f7f8ef4eb + + + 100.0 + + MI_Restricted_Substances + b0c0246d-7238-46e4-9081-5bad34efbbdb + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 5140, oil quenched & tempered at 205°C + 69802d0e-a351-4e61-822e-72bef720e710 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 60c7e574-7a63-4b65-aa28-e295f5d044fe + Mass + 100.0 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 48ff2572-798d-43a3-937f-b1e0d1412155 + Mass + 100.0 + + + + + + + 5.0 + 45.752400274273 + 08e41ceb + part_08e41ceb-09ac-4b39-aec4-13ca0971e3f3 + 08e41ceb-09ac-4b39-aec4-13ca0971e3f3 + + + 19.097819933247 + + MI_Restricted_Substances + be0bbb94-0c22-4276-9615-902f13ee0363 + + Oil quenched & tempered at 315°C + Carbon steel, AISI 1144, oil quenched & tempered at 315°C + 562fb1a0-2d01-4d8e-ab17-daed570352ce + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + c7299a56-0153-46d0-a959-7608c0a3e4b8 + Mass + 100.0 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 1cff8140-3e0c-417e-a513-0dfa93a2efdb + MassRemoved + 2.817823366642 + + + + + 16.18043601335 + + MI_Restricted_Substances + 00fe5279-94a1-43fd-8b88-d83679a1bdce + + Normalized + Low alloy steel, AISI 8650, normalized + 4d72c6e4-2025-4bcc-9f26-0bd1a1e025f0 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + b8497ea3-22dd-4402-9297-c567f477f441 + Mass + 100.0 + + + + + 16.18043601335 + + MI_Restricted_Substances + 44170b93-ef3d-4d60-848c-1d454eadbd1f + + As rolled + Carbon steel, AISI 1118, as rolled + fab0c294-61a5-4f4e-ba4e-1e003c0add97 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 12c5941f-9f7d-4a7c-a233-d62edcba2b73 + Mass + 100.0 + + + + + 16.18043601335 + + MI_Restricted_Substances + 8d11e762-0e0a-4010-873b-28aa9eda77f1 + + water quenched & tempered at 650°C + Carbon steel, AISI 1040, water quenched & tempered at 650°C + 91e457fb-587b-4340-9663-d6588e04a9ef + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + 6d8b3ee0-b47a-45a7-b221-d37c4af789df + Length + 87.838828371762 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + c0019e0b-9940-4b0a-8012-bb274efe6a46 + Mass + 100.0 + + + + + 16.18043601335 + + MI_Restricted_Substances + ff23c6a6-3046-4f35-b5d2-ca7f0956efc7 + + Oil quenched & tempered at 650°C + Carbon steel, AISI 1144, oil quenched & tempered at 650°C + c1f1d2ae-d067-4cb6-9b97-0cb20f40aebb + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 391d1f1f-4586-47a2-9597-7a988ac7fbab + Area + 9.248365466132 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 07e2be6c-604c-4c09-b7a1-5f96e5172fbc + Mass + 100.0 + + + + + 16.18043601335 + + MI_Restricted_Substances + 3cad12a9-0765-402c-a6b1-0be665ecd2e6 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 4140, oil quenched & tempered at 540°C + 73da6b78-b8b6-434a-b85c-9f69819556d8 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + 1fc8a46d-4615-47eb-8e25-3868bcde3026 + Mass + 100.0 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 173921f9-7fc6-4d2f-861f-477d238a8158 + Mass + 55.180364500349 + + + + + + + 1.0 + 67.484517613185 + + MI_Restricted_Substances + a78dcd3a-f108-4fdb-857e-e2d00ed319d4 + + 0aa5949f + part_0aa5949f-02ce-4d0d-8c81-2c420977ba2c + 0aa5949f-02ce-4d0d-8c81-2c420977ba2c + + + 7.0 + 72.335328288532 + 14a60b45 + part_14a60b45-ed26-4545-91b1-579cf92fd920 + 14a60b45-ed26-4545-91b1-579cf92fd920 + + + 81.39042341215 + + MI_Restricted_Substances + a831e691-2a34-4edf-807f-dfd38c316ef0 + + Borosilicate - 7740 + Borosilicate - 7740 + af47e5bf-dc1e-4631-8029-06abeb8d8aa9 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + b1dd64a2-c274-46bd-8687-3d33878586b1 + Mass + 100.0 + + + + + 2.326197073481 + + MI_Restricted_Substances + ab732b70-3546-4a94-b914-643f38c2443f + + 24CrMo13-6, quenched & tempered + Low alloy steel, 24CrMo13-6, quenched & tempered + 107419cf-caf4-4a12-99ab-00b4a6924134 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 0c3c00cc-917f-4ec7-9aaf-7c89dbfd4515 + Mass + 100.0 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 64849db1-58f0-4cc6-a61e-19fc913cae47 + Length + 89.790219156905 + + + + + 2.326197073481 + + MI_Restricted_Substances + 33160988-8422-40e2-93d1-e3e7467eafe9 + + Normalized + Carbon steel, AISI 1030, normalized + 5acf8036-ea0f-4650-bf06-d513c66556d7 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 6960e6d3-8999-4b93-8a23-f1254b1b62b8 + Mass + 100.0 + + + + + 2.326197073481 + + MI_Restricted_Substances + 52f4bd78-04b3-4f59-ad9d-f4d9e695cec1 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 8640, oil quenched & tempered at 540°C + 7b765542-1a51-4dd5-84c6-c364df62912c + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 52723d99-ec82-4965-82a5-fb22addcdd55 + Mass + 100.0 + + + + + 2.326197073481 + + MI_Restricted_Substances + b6d7f7bf-6ae9-4782-adb0-3c8684b58ab7 + + water quenched & tempered at 205°C + Low alloy steel, AISI 4130, water quenched & tempered at 205°C + cf75a3bf-9adf-4a7d-8531-24962738c224 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + 4431c3ad-10d5-40ff-b98f-6b99b8d09273 + Mass + 100.0 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 9c3b4101-5c00-4270-be01-b034398c6850 + Mass + 100.0 + + + + + 2.326197073481 + + MI_Restricted_Substances + 63d5d6b5-3b52-4cd9-a56f-6e7c5c945139 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 81B45, oil quenched & tempered at 315°C + 78d1af3d-f686-40b0-bb54-b1f232113dd9 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 8620f028-3d43-485e-95b8-c002cbbd1e66 + Mass + 100.0 + + + + + 2.326197073481 + + MI_Restricted_Substances + b3d89bcf-5e9a-4fe8-a953-98ceb384b8a3 + + water quenched & tempered at 650°C + Carbon steel, AISI 1030, water quenched & tempered at 650°C + 37dddd7a-f7db-44aa-925f-ce0d3b6d2daf + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + b3a173fe-d3fa-4fd1-a112-3526a28e9216 + Mass + 100.0 + + + + + 2.326197073481 + + MI_Restricted_Substances + 21dcdeeb-524a-488e-b332-fcd4e1caf6f7 + + water quenched & tempered at 650°C + Carbon steel, AISI 1095, water quenched & tempered at 650°C + 0a9b7806-e04f-42d4-a59e-34cdec3357a3 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 91eea166-f867-4a19-8026-f9c59a7efbb3 + Area + 51.028552721733 + + + + + 2.326197073481 + + MI_Restricted_Substances + b7281866-0d52-4e7c-b595-207e18a0a759 + + Glass ceramic (ZD) + Glass ceramic (ZD) + 8c8132bb-5369-4aee-a41b-e9fc45f6bbec + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 8b451d54-b071-44e9-960b-5a76f446e6ad + Mass + 100.0 + + + + + + + + + 4.0 + 94.962504690029 + dbd26773 + part_dbd26773-8e8f-4777-ac11-5ae169b0adeb + dbd26773-8e8f-4777-ac11-5ae169b0adeb + + + 76.005991071465 + + MI_Restricted_Substances + d42eaa02-9811-4935-b9cd-652adc845e8c + + Oil quenched & tempered at 650°C + Carbon steel, AISI 1050, oil quenched & tempered at 650°C + b664d6da-3d02-4c61-beca-ac15117002b4 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 0c30cc1c-7adb-42ff-9e3c-6df6902dd623 + Mass + 41.325488100445 + + + + + 3.427715561219 + + MI_Restricted_Substances + 9df55457-5300-4ddb-b92e-122b5c121621 + + Glass and mineral filled, encapsulation, molding + Novolac (glass and mineral filled, encapsulation, molding) + 129b2bc8-e985-4f46-a8e6-9df04926e059 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + 4b3e027e-808e-43e5-9b43-24670aa70a5a + Mass + 100.0 + + + + + 3.427715561219 + + MI_Restricted_Substances + 1a9ca626-1709-4d7b-954c-65aa69bf6536 + + YS300, cold rolled + High strength low alloy steel, YS300, cold rolled + 6b2a51a6-4f05-4529-b956-d5f89154aea1 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + 4f7389b7-6ed6-4bde-9a00-47eba952c0cb + Mass + 100.0 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 663bef70-ccb1-4122-bf49-37c1ecdbc270 + Mass + 100.0 + + + + + 3.427715561219 + + MI_Restricted_Substances + b067ed19-a836-41f7-9267-d9b04647d09f + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 5150, oil quenched & tempered at 650°C + a6928515-9d7b-425b-87d6-77dd32f92761 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 9b5e8df2-1fdf-456d-b942-69d71caa3bdb + Mass + 100.0 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + e47e033a-4cbb-4a05-b953-ddd17520582c + Length + 66.681109399851 + + + + + 3.427715561219 + + MI_Restricted_Substances + 1a9a8159-774b-4fc9-9c09-4bbc5474f364 + + Oil quenched & tempered at 315°C + Carbon steel, AISI 1060, oil quenched & tempered at 315°C + 8fe9ddc8-d93d-4141-b1e6-e6d7c7ca7714 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 14745818-f77a-49c3-8543-cec80704e400 + Length + 63.610596472216 + + + + + 3.427715561219 + + MI_Restricted_Substances + 8349c912-772a-4fd7-90a5-7d52aa9c9448 + + Oil quenched & tempered at 425°C + Carbon steel, AISI 1137, oil quenched & tempered at 425°C + 45eb05de-7dfa-4c59-8020-7a62fe7ffe9b + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + b92ed420-a919-4d7c-b717-467ed447e789 + Mass + 100.0 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 3e345310-3294-49ec-9563-4a560a1cbd77 + Mass + 100.0 + + + + + 3.427715561219 + + MI_Restricted_Substances + 877882c6-9b86-4643-a4a0-363d7d8023fd + + P355N/NH, normalized + High strength low alloy steel, P355N/NH, normalized + f6f762d4-60e6-41df-bd5b-a3c9a913e2a5 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 801772a7-9f20-4d3a-be55-c1d56953929c + Mass + 100.0 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 9b415600-3892-4880-8548-5d2a1771f6df + Mass + 100.0 + + + + + 3.427715561219 + + MI_Restricted_Substances + ae5812e1-18fd-4a4d-aaa2-a04ca5e84b7a + + YS400, hot rolled + Dual phase steel, YS400, hot rolled + 65c218e8-5bf8-4ffe-b06f-33330785a050 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + de4d8201-fd83-49b7-bdaa-17fe3fc25396 + Mass + 100.0 + + + + + + + 2.0 + 68.686582086927 + 3c323160 + part_3c323160-5fd8-44e4-a13d-2b9f8d257e5c + 3c323160-5fd8-44e4-a13d-2b9f8d257e5c + + + 38.656917232394 + + MI_Restricted_Substances + 15dcb0d7-3be1-4d92-952e-c80ccbdc6a58 + + Annealed + Carbon steel, AISI 1117, annealed + 495b33c6-6072-4b51-abeb-ea0631bda54a + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 804ba7d8-7241-430b-a8bd-ffbfd8e9e1e6 + Mass + 97.846216986815 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 4032f224-a752-4e9b-9239-1216ab831a2a + Area + 23.405072290173 + + + + + 20.447694255868 + + MI_Restricted_Substances + ac443865-33d5-466d-89e2-c3f26e668369 + + Borosilicate - 3320 + Borosilicate - 3320 + 79b889c4-0a6a-43ee-a624-d1edde521eee + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + 2fdcde75-03c6-4ca8-95ee-94c569666985 + Area + 49.369266000282 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 32429d18-f93d-4f9a-8b3b-b2185d113077 + Mass + 100.0 + + + + + 20.447694255868 + + MI_Restricted_Substances + 0d45da58-d026-4a44-b2b5-3109fe88f824 + + Annealed + Carbon steel, AISI 1022, annealed + b52b229c-244e-43e4-a7af-d62cf3dcbc7b + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + ead16e14-f3e0-4428-9590-75daef15c905 + MassRemoved + 1.858558180676 + + + + + 20.447694255868 + + MI_Restricted_Substances + c95c73c3-4701-4efd-902e-cbf342cdcf96 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 6150, oil quenched & tempered at 540°C + 6ee1f13a-259e-4c0d-808e-8ba5bfaee21a + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + f57655a3-883e-40dd-a093-9964a8356299 + Mass + 100.0 + + + + + + + 8.0 + 54.498529459581 + 5dd3822f + part_5dd3822f-b24c-4067-b80a-a757c8cd42af + 5dd3822f-b24c-4067-b80a-a757c8cd42af + + + 9.038670039288 + + MI_Restricted_Substances + 90514ab4-75b3-48a9-9a07-98eb8f83ef81 + + As rolled + Carbon steel, AISI 1015, as rolled + 5be59a06-d6b7-41ad-b182-8fde7d1e4ef0 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + a6ec4773-da93-4378-b1ab-ae3501c1c3a3 + Length + 56.508613357557 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 359cb7f8-ca98-47e0-a518-e151f66bb612 + Mass + 100.0 + + + + + 12.994475708673 + + MI_Restricted_Substances + b7281866-0d52-4e7c-b595-207e18a0a759 + + Glass ceramic (ZD) + Glass ceramic (ZD) + 08e59c8a-2717-49be-9877-99514a1d892c + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + fb977997-cc93-43b1-97a2-fce283ab53c3 + Mass + 100.0 + + + + + 12.994475708673 + + MI_Restricted_Substances + 6d6a3603-a2a8-4db9-9e7e-ad4fc4f9c724 + + Glass/phenolic honeycomb, ±45° fabric (0.064) + Glass/phenolic honeycomb, ±45° fabric (0.064), W Direction + 4d7fbb98-5105-4379-91f3-c0e83a36490f + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + 4f99306f-f5d8-4a01-a9c2-4bec570e02c1 + Mass + 100.0 + + + + + 12.994475708673 + + MI_Restricted_Substances + f92ff01e-ed35-4c66-96d1-607d9684b44b + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 94B30, oil quenched & tempered at 315°C + 94ee114f-4921-482e-b6f0-bcf062174668 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 86a3e3ac-e646-4dc8-bd37-31f184e119b8 + Mass + 100.0 + + + + + 12.994475708673 + + MI_Restricted_Substances + db238d75-fcb8-41f5-9289-83a352fa83a6 + + Annealed + Carbon steel, AISI 1015, annealed + 4f63a2b4-ca62-458e-a376-2e8c16a35be6 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + bd30ba17-0112-479e-86a4-ed7cd8a7e16d + Length + 32.498659301781 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + dd48f4ee-fed1-4743-a078-97593acdbb3d + MassRemoved + 1.454293681985 + + + + + 12.994475708673 + + MI_Restricted_Substances + a1ecb25a-cbfa-484f-8221-3c08313c0d09 + + Glass/polyimide honeycomb, ±45° fabric (0.051) + Glass/polyimide honeycomb, ±45° fabric (0.051), L Direction + cba81f0c-37ce-4fa0-98eb-cd0f1f202dbc + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + aadbc19e-955c-4d2d-b6d2-eb1c26ba3ac6 + MassRemoved + 22.66693041784 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 76780348-4023-4a50-9c95-d2021dca2c25 + MassRemoved + 18.420393494153 + + + + + 12.994475708673 + + MI_Restricted_Substances + 87e1a3cd-fd79-4013-b5f8-56d6f28bef34 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1144, oil quenched & tempered at 540°C + da444f58-762b-4434-a8b4-68e908157cbc + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 4d5bf7d5-e56b-46dd-93d1-a791d41ebe7e + Mass + 100.0 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 2f5e2e30-90dc-422e-ad04-7e4a745524ee + Length + 40.701439623116 + + + + + 12.994475708673 + + MI_Restricted_Substances + ee08f647-79af-49f3-98c5-043480a0fed4 + + Quenched & tempered + Low alloy steel, 4330V, quenched & tempered + 743e0b8f-fc4b-4b51-b429-4add411a3d50 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 35b35d9a-b0e3-48ad-842c-7989acce53f7 + Mass + 41.913643917959 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 6a9dcf43-279e-4b1a-b9e6-05b7f00e03df + Mass + 100.0 + + + + + + + 6.0 + 76.823358320083 + + MI_Restricted_Substances + 022614af-ecf8-4797-af86-25b711d65e30 + + ede9c4dc + part_ede9c4dc-b959-4cd3-886d-d73c16ba410f + ede9c4dc-b959-4cd3-886d-d73c16ba410f + + + 5.0 + 65.156637767868 + c6deee78 + part_c6deee78-ba90-46e1-bf50-943770fe74f5 + c6deee78-ba90-46e1-bf50-943770fe74f5 + + + 59.535038219548 + + MI_Restricted_Substances + 5b4ea232-c032-4f8d-a633-3b059e93651a + + 36%Co steel + Hard magnetic alloy, 36%Co steel + a4a505df-4b60-4496-8bca-af20cff0717c + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + ad5e3fec-5699-4265-9bff-4a5337d214e0 + Length + 90.222387896022 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 64596daa-99ae-48b6-a37d-f3fa3730f7e4 + Area + 44.093146335376 + + + + + 6.744160296741 + + MI_Restricted_Substances + e6461f0f-809d-4f17-8ea9-b85d7219639a + + Glass/phenolic honeycomb, ±45° fabric (0.128) + Glass/phenolic honeycomb, ±45° fabric (0.128), L Direction + aa3e1d42-4b4a-4b04-8309-006cc76ba803 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 5d230694-57bd-43d6-8494-9ab67a963c63 + Length + 58.901326525444 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + bfed3d36-890a-457d-ad16-0e33003a5c8e + Length + 66.634482362603 + + + + + 6.744160296741 + + MI_Restricted_Substances + f17caf23-cca0-47c9-a216-c29c1533ed51 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 50B60, oil quenched & tempered at 315°C + 576ada76-20e0-4680-8d0d-354906e8d430 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + a086531c-9ed6-445c-8011-ad89a896fb3f + Length + 4.808896409724 + + + + + 6.744160296741 + + MI_Restricted_Substances + 2a840794-eac4-4f77-90ba-f84bce518c0f + + Glass/phenolic honeycomb, 0°/90° fabric (0.055) + Glass/phenolic honeycomb, 0°/90° fabric (0.055), L Direction + b0d69130-2193-4218-8e43-bdc5990b9811 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 6443405a-6eb7-4cdb-9e03-9151c4d973e5 + Area + 13.542481331872 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 8ef1914b-82a3-4b4c-8136-82b22c52426d + Mass + 100.0 + + + + + 6.744160296741 + + MI_Restricted_Substances + 1d9c8629-4a1d-4aaf-bb7c-ba7a97eef5f5 + + Normalized + Carbon steel, AISI 1340, normalized + 8ac39931-3435-41fe-9cd4-79a44528d043 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 3add1843-5548-42ea-8cd5-a6bc7ab62e06 + Mass + 100.0 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 4f7fb088-a550-4303-8c43-bb2c5f9d463f + Mass + 100.0 + + + + + 6.744160296741 + + MI_Restricted_Substances + 2656c71b-a4ea-4fc6-9139-adc0deae35b1 + + 65wt% glass, biaxial lay-up + Polyester/E-glass fiber, woven fabric, 65wt% glass, biaxial lay-up + 205d1b5d-8be2-451c-abd9-7db894c4f25e + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + d8276af2-5e1b-425b-b32e-6a243751c623 + Mass + 100.0 + + + + + 6.744160296741 + + MI_Restricted_Substances + d07fe7e1-e745-42a8-9761-6f68c2a7bd1b + + Annealed + Low alloy steel, AISI 4150, annealed + ff18eea8-708c-4a5e-b423-dfd95959a9ec + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 9ef576f6-f156-400a-b8aa-0036675290ba + Mass + 100.0 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 392e0c5f-13c3-4c87-bc47-2eb2e6905400 + Mass + 100.0 + + + + + + + 7.0 + 33.034452997629 + c4d2141a + part_c4d2141a-9ba8-46ec-9f1b-cd0d9b30cdcf + c4d2141a-9ba8-46ec-9f1b-cd0d9b30cdcf + + + 30.82577219737 + + MI_Restricted_Substances + 0afa77bf-df9b-456c-8c48-3c84b1ccd2e0 + + Low density glass-sphere filled + Bisphenol molding compound (low density glass-sphere filled) + cb3eb454-1ec1-4bea-a815-1fb838a21831 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 31e23a0f-0a29-4e65-89b2-d93541db603e + Mass + 100.0 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + bc72ef57-53db-4fe6-aaaa-ad09ba171161 + Area + 92.217149721559 + + + + + 23.058075934209 + + MI_Restricted_Substances + 50342378-5548-45ea-9a21-c0f16c6dcb1a + + Steel, terne coated + Coated steel, steel, terne coated + 5776bdfe-4912-49c1-85d3-0713d6a6d0fe + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 8fbb6564-41cb-4784-afb4-598244cd31d6 + Mass + 100.0 + + + + + 23.058075934209 + + MI_Restricted_Substances + 67ea6f19-34d5-40af-9b8c-059058fd840a + + Oil quenched & tempered at 205°C + Carbon steel, AISI 1080, oil quenched & tempered at 205°C + d8af9b19-e096-4e1d-a96e-77f0e70f87a9 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + ae9b8fa6-82e4-4518-a408-29804f7900ec + Mass + 100.0 + + + + + 23.058075934209 + + MI_Restricted_Substances + e6b45bea-dec9-4b91-996a-885bb0c31f8d + + Glass, S grade (10 micron monofilament, f) + Glass, S grade (10 micron monofilament, f) + e4923503-0e75-4099-909f-cd195156daf8 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 225b44b1-2efa-48de-93d8-03f8ecd7ef75 + Mass + 100.0 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 163fc9e0-4602-455c-b0d0-7fa5bffbe4ef + Mass + 100.0 + + + + + + + 9.0 + 28.289836565167 + 594a4dd2 + part_594a4dd2-ce0c-4965-9bb3-36af1a32b5a7 + 594a4dd2-ce0c-4965-9bb3-36af1a32b5a7 + + + 44.686282493493 + + MI_Restricted_Substances + b1b14aff-8354-447c-9883-df4969a517a3 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 86B45, oil quenched & tempered at 315°C + 4f79bf51-0531-4f50-bb8a-df6902de48cd + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + bc48191a-0d55-4729-a6db-1bac764cd512 + Mass + 100.0 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + a44b17b1-ae57-4836-ad1a-9d8cb71ad42e + Length + 4.835269555838 + + + + + 11.062743501301 + + MI_Restricted_Substances + f7146c54-87d0-4395-b57a-86bb0c43716a + + ASTM A106 Grade B + Structural steel, ASTM A106 Grade B + ca1f9eb2-30f5-42c6-937a-3ea2ca2f4d2a + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 0aded0e8-09f1-41e5-b847-8182cf58fed2 + Mass + 100.0 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 6ee5135e-0662-4010-a3a7-be01a3fd96f6 + Mass + 100.0 + + + + + 11.062743501301 + + MI_Restricted_Substances + 81ce98b3-d459-4695-9dd9-d53244be47ed + + Annealed + Carbon steel, SA216 (Type WCC), cast, annealed + 3c64a19c-38df-4a75-8dea-04697e832cb8 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 29e1accd-4ed8-4250-8ee8-e3f9e5b155af + Mass + 100.0 + + + + + 11.062743501301 + + MI_Restricted_Substances + d41a9d62-4a05-4cd7-98ac-f1acb5d39658 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 9255, oil quenched & tempered at 540°C + b02cf418-c984-4b2d-81f3-c2c6bdc78eb8 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 1ba1cac9-17cb-4ede-a6f6-18a75f2373ce + Length + 56.162055421696 + + + + + 11.062743501301 + + MI_Restricted_Substances + 7a62318a-eff2-4f36-9925-ee919c5b4369 + + S235J + Structural steel, S235J + 4afca0bd-8482-4501-b933-c2c4f00a1e43 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + f1346717-38e4-4925-a6b6-0645ca8949e5 + Length + 52.162394277827 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 13e8ee9b-153a-4fd9-81dc-cc83a571e7ec + Area + 93.833674115051 + + + + + 11.062743501301 + + MI_Restricted_Substances + db7d255c-6269-4097-a5aa-e18a13019915 + + FR-4.0 (Df < 0.01 at 10GHz), Epoxy/Glass fiber, PCB laminate + FR-4.0 (Df < 0.01 at 10GHz), Epoxy/Glass fiber, PCB laminate + 00c7da4f-fc24-4233-a13b-93d9b85f404d + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 94055cf8-2c15-465d-96f8-ce0b25246c07 + Mass + 100.0 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 6138dc7b-3602-45ac-94bd-4847d94d1570 + Mass + 100.0 + + + + + + + 2.0 + 97.771993790647 + ac138146 + part_ac138146-5194-40a7-afa3-349c4345f39a + ac138146-5194-40a7-afa3-349c4345f39a + + + 11.777257319436 + + MI_Restricted_Substances + afc85ad6-9e99-44a7-a959-f75ddbacff15 + + FR-5, Epoxy/Glass fiber, PCB laminate + FR-5, Epoxy/Glass fiber, PCB laminate + 066fbaf0-5b98-435c-b493-64d5892cadde + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + ad47d1f6-bd11-488e-b825-3147dd8a0b0d + Mass + 100.0 + + + + + 44.111371340281 + + MI_Restricted_Substances + 3b818b25-e6de-4e5c-b546-e97c68e10225 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 5046, oil quenched & tempered at 650°C + 3b208f3b-1113-4f4b-a983-943d22590029 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + ad68552e-cc31-494a-b899-0363e52ff508 + Mass + 100.0 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + ca93ef19-cf1a-4ea2-8aa5-c7e1207b8901 + MassRemoved + 79.367918558124 + + + + + 44.111371340281 + + MI_Restricted_Substances + c15a44c3-d8be-4ae8-9a58-281f13b731cd + + YS420, cold rolled + High strength low alloy steel, YS420, cold rolled + cbbd1922-4a1d-4ccd-bb7b-1f6200ea54d2 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 757d131d-bfd7-4b49-9b42-d0a25856f793 + Mass + 100.0 + + + + + + + 2.0 + 19.663618653856 + ee26367d + part_ee26367d-0bcb-470b-a527-67a3b872892d + ee26367d-0bcb-470b-a527-67a3b872892d + + + 100.0 + + MI_Restricted_Substances + ed1b937b-1738-408f-9591-bd3e40cc5e33 + + Quenched & tempered + Low alloy steel, D6AC, quenched & tempered + 8cde10fa-e9a7-4913-b5cc-927b86a872e8 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 1947e9d9-a9d2-4f50-8e37-0e15f16f5504 + Mass + 100.0 + + + + + + + 1.0 + 85.833987167959 + + MI_Restricted_Substances + 19db41d7-f431-4cae-8977-8bdab8435374 + + 4c8dc587 + part_4c8dc587-a97e-4506-8131-725ceaa59696 + 4c8dc587-a97e-4506-8131-725ceaa59696 + + + 5.0 + 1.963037625869 + + MI_Restricted_Substances + 80083213-3621-42c0-9e23-cdaa30c759e6 + + 688d58f6 + part_688d58f6-c50e-49e8-9a82-b2d516050610 + 688d58f6-c50e-49e8-9a82-b2d516050610 + + + 6.0 + 55.042830787153 + eeb0858c + part_eeb0858c-7c6f-4c91-b611-86f355ae9e89 + eeb0858c-7c6f-4c91-b611-86f355ae9e89 + + + 100.0 + + MI_Restricted_Substances + 3606ab13-13f3-49fb-bded-2e3470bcf7d9 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 81B45, oil quenched & tempered at 650°C + a28c71b6-8dc4-4c8d-8b5d-2fbc0092dab9 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 26d4f20b-6511-40ab-befd-fb38f522e745 + Mass + 100.0 + + + + + + + 8.0 + 57.843534442523 + 2a3b25e9 + part_2a3b25e9-fca6-4e5f-9b98-fe2ce973810f + 2a3b25e9-fca6-4e5f-9b98-fe2ce973810f + + + 26.93413492615 + + MI_Restricted_Substances + 2f1d8340-2d1b-4b7a-b236-f9924123bb33 + + ASTM A36 + Structural steel, ASTM A36 + 6f0f316e-86cd-411c-a55d-2df8bb735b25 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + bea52eff-5ecd-443b-beb2-7d6157ad5338 + Mass + 100.0 + + + + + 18.266466268462 + + MI_Restricted_Substances + d02817f7-7500-4fcb-8c34-40927da681a5 + + Quenched & tempered + Carbon steel, SA216 (Type WCC), cast, quenched & tempered + 45174c87-f58a-4227-9e14-2b3b74d04890 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 33219f1e-6ff6-4254-a2d5-02fe3c0ad4c2 + Mass + 100.0 + + + + + 18.266466268462 + + MI_Restricted_Substances + 8245dc6c-3d61-4f18-82c8-6fb946e1582c + + Glass foam (0.13) + Glass foam (0.13) + faf424bd-e724-47e9-ad77-070fc9b8c516 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + c79a3353-8f86-4943-bf90-27ce904735ac + Length + 79.649383472115 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + e3c506d8-8c0f-4f71-b852-52a049df532c + Mass + 100.0 + + + + + 18.266466268462 + + MI_Restricted_Substances + 4ad00a9e-92b5-4e28-92a0-409da4495c54 + + Oil quenched & tempered at 205°C + Carbon steel, AISI 1060, oil quenched & tempered at 205°C + e179e37a-2ffe-48ba-8fd5-38f96742c82c + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 6fe9513f-2ebb-4255-8b57-5175a2fb5301 + Mass + 100.0 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + c1365da9-9c8e-479a-844d-31329ca62c6f + Mass + 100.0 + + + + + 18.266466268462 + + MI_Restricted_Substances + 74efd204-f3f9-4a40-b3a6-0b48295b815b + + Annealed + Low alloy steel, AISI 4820, annealed + 74fbb2dd-5b0b-45a7-8d1a-97f82013df63 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 6115d183-bb4f-4295-b816-54a7a78a79b4 + Mass + 47.649450063542 + + + + + + + 7.0 + 44.48135161981 + 752b9eaf + part_752b9eaf-5396-46c5-bcbc-d117e67e2f96 + 752b9eaf-5396-46c5-bcbc-d117e67e2f96 + + + 22.263660711359 + + MI_Restricted_Substances + a7ada434-62e4-411d-9c85-56dd9d44f094 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 4037, oil quenched & tempered at 425°C + 5208a1a6-321f-4a4f-bcbe-15661555a999 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 9a7ab126-e2ea-4b43-82a2-eca4d9ae391a + MassRemoved + 73.804193909188 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + c5f7c1a0-78e3-4e38-9110-c5ffcc28052e + Length + 72.204110385945 + + + + + 38.86816964432 + + MI_Restricted_Substances + 7b1fcb28-a127-417b-978f-6a5c58305d24 + + Annealed + Carbon steel, AISI 1118, annealed + b0b5ed93-ca11-440d-a2a1-664c6bcac957 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + 5c79f499-9c93-41ec-bd6d-d37c328af4a8 + Mass + 100.0 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + ad5ae1ba-3a86-473d-9ba7-7c9f207b9d6e + Mass + 100.0 + + + + + 38.86816964432 + + MI_Restricted_Substances + 82eabba3-2697-4f74-a530-ae27f5e33ffe + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 50B46, oil quenched & tempered at 540°C + 54555277-80b6-4c9a-8da3-b8e285ae98b2 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 9ea0a363-7c54-4a24-8b4a-8cbdbe6c35a4 + Length + 23.48583346395 + + + + + + + 2.0 + 74.286081862769 + 2e0b4bbe + part_2e0b4bbe-5824-4f04-9403-e4f67aec2048 + 2e0b4bbe-5824-4f04-9403-e4f67aec2048 + + + 83.898301135701 + + MI_Restricted_Substances + aa4540cb-3277-459f-a69a-ca324ddd0125 + + Glass ceramic (N0) + Glass ceramic (N0) + 549b49a4-59fe-4e55-983e-59f6201188c0 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + b960c1ca-3311-4ced-ab97-6bfb02fd2191 + Mass + 100.0 + + + + + 8.050849432149 + + MI_Restricted_Substances + 2c2dc98a-ef9d-420d-aa00-25552c8f8bab + + S355J + Structural steel, S355J + 2a660257-441e-4c57-8125-05d3218ad94e + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 72ef15df-ca91-48a0-bbd7-1ebdfb8bdcd3 + Mass + 100.0 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 9742cee8-239e-48ac-be60-9892713d4e00 + Mass + 100.0 + + + + + 8.050849432149 + + MI_Restricted_Substances + 356303d7-c574-4db7-80f9-427e176a5308 + + 40CrMoV13-9, quenched & tempered + Low alloy steel, 40CrMoV13-9, quenched & tempered + a3459071-3026-41a8-a904-69f211082c8a + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 7947cbf5-9a0f-4dfd-a747-1febff1d0340 + Mass + 100.0 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + d863c646-cf1e-4b41-82a6-a226ab0dec22 + Mass + 100.0 + + + + + + + 5.0 + 70.405681510644 + 8d0be01b + part_8d0be01b-cd46-49cb-81ec-b2b4c50964cf + 8d0be01b-cd46-49cb-81ec-b2b4c50964cf + + + 7.141546628969 + + MI_Restricted_Substances + 9ce914d8-75c1-4c5f-8c57-11c0e62b2cfa + + ASTM A299 Grade A + Structural steel, ASTM A299 Grade A + 780ef8f9-0a79-4f8b-94f4-f1d0c4dec462 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 08a232b4-2a98-4633-bbf3-baed71150706 + Mass + 100.0 + + + + + 11.607306671378 + + MI_Restricted_Substances + b00ee3d8-d653-4c76-8154-c2f07820ceda + + As rolled + Carbon steel, AISI 1080, as rolled + 8ba7ceb6-645f-4fef-9c4a-c447e49d1da4 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 01d0d6b3-f68f-416e-b445-f48b3a3ce19e + Length + 72.12147823168 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + e1cde062-59c4-42ad-a43b-9c66e8760037 + Mass + 100.0 + + + + + 11.607306671378 + + MI_Restricted_Substances + a371ea54-94e0-4a85-9b8a-856cf82f2e1d + + SAE 4130, cast, quenched & tempered + Low alloy steel, SAE 4130, cast, quenched & tempered + ed9f8659-9b73-4ff7-a9ac-e4273cb6ab76 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 7092b96c-cefa-4e67-8da6-9c7779335375 + Mass + 100.0 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 8c7953d2-68b5-4d7e-9f01-0d34f54c3fc2 + Mass + 100.0 + + + + + 11.607306671378 + + MI_Restricted_Substances + 546a4247-5e3b-4adb-bc7e-3fc87f992447 + + Glass/phenolic honeycomb, 0°/90° fabric (0.055) + Glass/phenolic honeycomb, 0°/90° fabric (0.055), W Direction + f65d11fe-0f04-4ba2-ac2d-5542ec8c2670 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 7580986d-3ee6-4c6a-9a94-6b99b6ed12f2 + Mass + 100.0 + + + + + 11.607306671378 + + MI_Restricted_Substances + 1a53b354-59b1-4129-a78d-0bfe95923541 + + Normalized + Carbon steel, AISI 1117, normalized + 02a05e20-e8b9-4787-aeda-496e299a562e + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 3ec679b8-7a36-46ad-bdd5-4ba75842cb86 + Length + 81.291739214813 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + e29497ec-64a7-44e2-b3a8-b3f770ba7c78 + Area + 57.871781828753 + + + + + 11.607306671378 + + MI_Restricted_Substances + 54bbb9b3-efe0-473b-ac70-caea9951e470 + + Normalized + Carbon steel, AISI 1015, normalized + 8ad15042-122a-4394-bcb0-2a56ed110de8 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 2008b7c6-e12f-4136-9367-de9f2a6d072d + Mass + 100.0 + + + + + 11.607306671378 + + MI_Restricted_Substances + 4b01d1e1-0f4c-4861-a797-7ea504ca38c4 + + Annealed + Low alloy steel, AISI 5150, annealed + c366e688-47cf-4eaf-acd3-370c008eea59 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + f616899b-8d17-422b-b9ba-090eb825b8f1 + Mass + 100.0 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 3e713ee4-69e8-40e1-9bd3-a2e20b2b66b0 + Area + 76.45302804953 + + + + + 11.607306671378 + + MI_Restricted_Substances + 181b484f-4ada-4e9e-8c47-103ae23d76c3 + + Quenched & tempered + Low alloy steel, AISI 8740, quenched & tempered + c5f7e172-3732-466c-8c3a-e6ecc194ca4f + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + fcb2b75a-217b-440e-a1cf-af410418a94e + Mass + 100.0 + + + + + 11.607306671378 + + MI_Restricted_Substances + dfe65b4e-afb8-4397-a303-1266359ccfda + + Quenched & tempered + Low alloy steel, Hy-Tuf, quenched & tempered + 8c447b96-27ef-469f-bb52-4c30c221dc6c + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + b61e3ed4-60fa-43e8-8492-b21edf314aad + Mass + 100.0 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 45dd58ca-a1a6-4d56-a27e-39e6e13aab7c + Mass + 100.0 + + + + + + + 6.0 + 87.748538743587 + fc816c81 + part_fc816c81-a4dd-4dbd-b057-77d33b2f6164 + fc816c81-a4dd-4dbd-b057-77d33b2f6164 + + + 81.516732918804 + + MI_Restricted_Substances + 90514ab4-75b3-48a9-9a07-98eb8f83ef81 + + As rolled + Carbon steel, AISI 1015, as rolled + 19c6e2e4-b12f-4b6c-ab24-9d6ae0efe7a4 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 20d186fd-4564-4e69-be02-a1892a71baf7 + Mass + 100.0 + + + + + 3.696653416239 + + MI_Restricted_Substances + 8643d806-94c5-42f9-9ffc-4c21a6e16bd0 + + Annealed + Carbon steel, AISI 1141, annealed + 99975f5e-3441-4c19-abe7-1213b862408f + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 9adb3451-4da0-4f78-82b2-c2a889364b23 + MassRemoved + 64.340470481822 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 08361ab9-fa03-427d-9348-179d5086d15d + Mass + 100.0 + + + + + 3.696653416239 + + MI_Restricted_Substances + b067ed19-a836-41f7-9267-d9b04647d09f + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 5150, oil quenched & tempered at 650°C + 9b87de39-67d3-4897-880a-12702f2e28b5 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 025f356b-b30a-47cf-b1f8-907108147f00 + Length + 59.37782254041 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 8113c9c1-0bed-4c38-8ae7-0d1b761e7311 + Mass + 100.0 + + + + + 3.696653416239 + + MI_Restricted_Substances + e8c6d73a-bd7a-4ef3-ae11-48e45d4a5515 + + Glass, E grade (0.4-12 micron monofilament, f) + Glass, E grade (0.4-12 micron monofilament, f) + cb5eb97c-7540-4e16-875d-0bb131bb3e50 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 8e626599-1413-442a-a50e-98fc9b5e5328 + Mass + 100.0 + + + + + 3.696653416239 + + MI_Restricted_Substances + 53268754-75cd-4016-8ed0-2577d32f766e + + As rolled + Carbon steel, AISI 1060, as rolled + 04d19f03-af42-47d7-8f68-fe846602a7be + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + b2cfdd42-6c18-4810-b594-cf360f47cb55 + Mass + 93.583163243524 + + + + + 3.696653416239 + + MI_Restricted_Substances + 82eabba3-2697-4f74-a530-ae27f5e33ffe + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 50B46, oil quenched & tempered at 540°C + 10c7c9ea-394a-4280-8af9-bda6bfd5e307 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 84fa5022-2526-4aa2-9fd1-4b989f0d0b21 + Mass + 100.0 + + + + + + + 3.0 + 75.575318874593 + 6f4ea3c5 + part_6f4ea3c5-a560-45f6-85b8-efcc4021f17d + 6f4ea3c5-a560-45f6-85b8-efcc4021f17d + + + 29.577397382621 + + MI_Restricted_Substances + f82520a6-b061-4bc7-b873-40211a51aca5 + + Glass/phenolic honeycomb, 0°/90° fabric (0.035) + Glass/phenolic honeycomb, 0°/90° fabric (0.035), L Direction + c60b55d8-4b8d-4131-a9b6-c56872672986 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 947e4440-d7c0-46d4-aa13-288ef2c8111e + Length + 5.595345844326 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 7afbe458-61cb-451c-8c13-39a13573658c + Mass + 100.0 + + + + + 70.422602617378 + + MI_Restricted_Substances + ae5812e1-18fd-4a4d-aaa2-a04ca5e84b7a + + YS400, hot rolled + Dual phase steel, YS400, hot rolled + 795d3e5d-15f9-4a9f-bea5-e2c87939073d + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 2a150d7e-f85b-4124-a8f4-740f7c7d4a82 + Length + 35.414769423853 + + + + + + + 6.0 + 43.720106009263 + + MI_Restricted_Substances + 544dcb08-b28a-4b6c-9af7-20182b64b0d5 + + 20e6b945 + part_20e6b945-da4f-4a53-8dff-867f7572e201 + 20e6b945-da4f-4a53-8dff-867f7572e201 + + + 1.0 + 47.33039566657 + 70bb5351 + part_70bb5351-c3a4-4d02-8ddd-bab2abc64736 + 70bb5351-c3a4-4d02-8ddd-bab2abc64736 + + + 4.823012978221 + + MI_Restricted_Substances + db7d255c-6269-4097-a5aa-e18a13019915 + + FR-4.0 (Df < 0.01 at 10GHz), Epoxy/Glass fiber, PCB laminate + FR-4.0 (Df < 0.01 at 10GHz), Epoxy/Glass fiber, PCB laminate + 8b451981-2b7a-4e40-9ac4-8c12fc1333fc + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + bd408aff-759c-48ed-9276-eadd50a0b216 + Mass + 69.312933166191 + + + + + 23.794246755444 + + MI_Restricted_Substances + dec2859d-9573-49bd-846a-5e2a288c063f + + Soda barium glass + Soda barium glass + 9f39f2a6-0599-4e0c-824c-79c6f486a44d + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 53eae939-c16c-4057-8c64-f9c12cb2f5ef + MassRemoved + 45.088557873428 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + c27ee4cd-2b72-4c46-b68a-9c1026279818 + Mass + 100.0 + + + + + 23.794246755444 + + MI_Restricted_Substances + 6ad310ec-db2b-43b1-afa1-9b6ddae5880c + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 94B30, oil quenched & tempered at 425°C + e82ad814-b0c3-4722-9b6f-71ac40e64ee6 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 6b869a1e-25a3-43f4-bac6-3cff261c374f + Mass + 100.0 + + + + + 23.794246755444 + + MI_Restricted_Substances + b4c065d7-6405-44fb-82cf-24ca2072f5c9 + + 300M (high carbon), quenched & tempered + Low alloy steel, 300M (high carbon), quenched & tempered + 4e99b4bd-16c5-4612-91cb-3952e0dc3898 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + f4876557-b875-4b71-8d35-029df65ce865 + Area + 63.322926621568 + + + + + 23.794246755444 + + MI_Restricted_Substances + 9df55457-5300-4ddb-b92e-122b5c121621 + + Glass and mineral filled, encapsulation, molding + Novolac (glass and mineral filled, encapsulation, molding) + 3576fa9a-49e7-44f7-a99d-6775a875d4bd + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + d52732f0-161d-4e4c-8463-3a4e85c75d72 + Mass + 100.0 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + b2cb5a54-a8ee-4c3a-9a07-7e083363d2ee + Length + 34.494777272685 + + + + + + + 7.0 + 57.09884486026 + + MI_Restricted_Substances + 80083213-3621-42c0-9e23-cdaa30c759e6 + + 0fcb7c9e + part_0fcb7c9e-dbdd-4c19-ad50-ddf5a00e01c2 + 0fcb7c9e-dbdd-4c19-ad50-ddf5a00e01c2 + + + 6.0 + 45.430244340296 + 0576d8c4 + part_0576d8c4-c39b-4493-b636-374dba713f25 + 0576d8c4-c39b-4493-b636-374dba713f25 + + + 83.058517558061 + + MI_Restricted_Substances + 117e786a-5af5-40b0-9511-e7c38ca3cfc8 + + Glass/polyimide honeycomb, ±45° fabric (0.072) + Glass/polyimide honeycomb, ±45° fabric (0.072), W Direction + f8101f90-713a-4793-b01f-ad55639b49cb + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 1c3b25a1-0b5c-4e0e-890c-6563239f6ce2 + Mass + 100.0 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + 56b0591d-04d3-4e8b-b09e-4b9ccad5a5ad + Length + 28.862317152722 + + + + + 16.941482441938 + + MI_Restricted_Substances + 1d0ad45b-4da7-4c47-9850-754d0f67c02a + + Glass/polyimide honeycomb, ±45° fabric (0.096) + Glass/polyimide honeycomb, ±45° fabric (0.096), W Direction + 42bf9baa-39d4-483b-85de-46e4326430c5 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + 3faf0869-1db6-47e3-bc34-fc636587259d + Mass + 100.0 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + f16f3737-1e44-4ce0-a379-43b7f3ad7e4c + Mass + 100.0 + + + + + + + 9.0 + 46.750087592168 + + MI_Restricted_Substances + a0987114-e9d2-4390-9d0f-e47283d2f4d0 + + c4325510 + part_c4325510-db9e-4f15-9ef8-66a97e028988 + c4325510-db9e-4f15-9ef8-66a97e028988 + + + 5.0 + 18.389596239845 + + MI_Restricted_Substances + 544dcb08-b28a-4b6c-9af7-20182b64b0d5 + + 85107a1d + part_85107a1d-27db-4878-a5b4-fc404d4c5668 + 85107a1d-27db-4878-a5b4-fc404d4c5668 + + + 7.0 + 15.805600730611 + c75365fa + part_c75365fa-98cf-40aa-9d90-68b2529b0508 + c75365fa-98cf-40aa-9d90-68b2529b0508 + + + 24.249886825797 + + MI_Restricted_Substances + 01ec383d-8c37-48b7-80b4-e1f3106fae04 + + Alumino silicate - 1723 + Alumino silicate - 1723 + 0c05f18a-1f67-4ac8-b0da-7c71265eacd5 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 6798addc-42ba-4b2f-a691-c10c0bffb185 + Length + 76.796792948989 + + + + + 18.93752829355 + + MI_Restricted_Substances + a762be42-466e-4a8e-8819-d5270e44d056 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 5046, oil quenched & tempered at 425°C + ca4c6fb3-b09a-4c8d-9884-cf50c1071638 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 71abf1c0-362e-4877-8785-be423591c697 + Mass + 100.0 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 9caa083b-cce8-40d0-ba47-b8bffba47504 + Area + 24.173015320754 + + + + + 18.93752829355 + + MI_Restricted_Substances + e721d8b7-256a-4b7b-af09-6b40d8309979 + + water quenched & tempered at 425°C + Carbon steel, AISI 1040, water quenched & tempered at 425°C + 1c24ebe1-b57e-4c56-92e1-6df2174a2e0b + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 1675e5e7-c66b-420c-9bf8-e2949d6a1a7f + Mass + 100.0 + + + + + 18.93752829355 + + MI_Restricted_Substances + e721d8b7-256a-4b7b-af09-6b40d8309979 + + water quenched & tempered at 425°C + Carbon steel, AISI 1040, water quenched & tempered at 425°C + df500fac-ba7d-42f6-894b-69ff466b31c7 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 6a1a0d20-cecf-47af-92be-015ee0b17539 + Mass + 100.0 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + d8b5098d-8109-4eb3-9ca4-c62419c9ffd3 + Area + 25.709685415825 + + + + + 18.93752829355 + + MI_Restricted_Substances + 9e6962c2-d850-4285-97e5-fbb27dbc0447 + + water quenched & tempered at 425°C + Carbon steel, AISI 1050, water quenched & tempered at 425°C + 5c28dcb5-193b-4e9c-8623-70f937166824 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + ce5e29df-02de-4836-a411-8d4e080128c2 + Mass + 100.0 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 5f382dc7-27c8-42c0-93e9-133ece0d9c5d + Mass + 100.0 + + + + + + + 9.0 + 49.851170112309 + afe15050 + part_afe15050-4a7a-48cc-86c0-a34446c4d25e + afe15050-4a7a-48cc-86c0-a34446c4d25e + + + 100.0 + + MI_Restricted_Substances + 817b973c-3e12-4b5f-96b3-89b05d14d76c + + ASTM A500 Grade C + Structural steel, ASTM A500 Grade C + 471ba675-c826-419d-9111-c902a4a1d4cb + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + c3dd28cd-7242-433e-a8b9-f5ec656edb2f + MassRemoved + 74.79596351031 + + + + + + + 9.0 + 79.079951988104 + + MI_Restricted_Substances + 5fd070ef-bb1b-4857-abcf-7eda481ecfbe + + fd38543e + part_fd38543e-2ac8-46c6-9945-e879f1e6d043 + fd38543e-2ac8-46c6-9945-e879f1e6d043 + + + 4.0 + 91.77185310599 + 2fc0eed1 + part_2fc0eed1-9aab-4b0e-8636-67dc838dec78 + 2fc0eed1-9aab-4b0e-8636-67dc838dec78 + + + 47.415517292644 + + MI_Restricted_Substances + 06a05a3e-1419-430e-bd94-120296b4c49e + + Normalized + Low alloy steel, AISI 9255, normalized + a67754f0-ea35-42e0-9169-80df7eb59057 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 04f597ff-4d91-4149-8140-e709349f2e3f + Length + 68.854388906086 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + e92babea-36ac-4c89-90e2-b88b7b14daee + Mass + 100.0 + + + + + 10.516896541471 + + MI_Restricted_Substances + f931cdfe-568b-40b5-b238-ea22a815f312 + + ASTM A537 Class 1, normalized + Structural steel, ASTM A537 Class 1, normalized + 24ff9c57-a699-487d-b778-bc706c394c05 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 9fed9a45-3a29-4476-805c-6edd642feb3e + Mass + 71.037765066622 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 33605c7b-486e-47cd-81f3-681f399de83c + Mass + 100.0 + + + + + 10.516896541471 + + MI_Restricted_Substances + 44a3cdc8-1092-45c0-be37-1802daa92d30 + + Borosilicate - 7052 + Borosilicate - 7052 + a8b12cda-618b-44bd-bc34-a9b0333ff458 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + aa7cf824-fbef-48ca-84c5-ae19e80961ba + Mass + 100.0 + + + + + 10.516896541471 + + MI_Restricted_Substances + 36e1311d-2e77-4147-8cf3-c4cdce6f6c7f + + Grade F9 + Alloy steel, 9Cr-1Mo, Grade F9 + 4c8622ed-a969-4911-b5bf-d1ff0098db47 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + c55b65b1-28c1-48ba-a11e-9cae31e736bb + MassRemoved + 9.684168458769 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 01fe6c09-b96c-48cc-9bbb-32ace592981c + Area + 56.775883006293 + + + + + 10.516896541471 + + MI_Restricted_Substances + f0e0782d-fdaa-43d9-ab8f-24d22dc5b6dd + + Glass ceramic - 9608 + Glass ceramic - 9608 + 7bbdc680-6d10-4890-b5bf-03906ee4f30c + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 0002114a-bdce-4ef1-9acc-ec6dc50574a2 + Area + 51.103353943258 + + + + + 10.516896541471 + + MI_Restricted_Substances + aec2777b-f126-4f12-b748-b94bf7393f2a + + Oil quenched & tempered at 650°C + Carbon steel, AISI 1060, oil quenched & tempered at 650°C + f1a82f7f-8728-4954-b9fb-caf45531c9f5 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + f5295f87-f76e-4f3a-922b-f14f6ec81595 + Mass + 100.0 + + + + + + + 2.0 + 85.746784035929 + b1d8c895 + part_b1d8c895-0906-409d-99e6-4c5919fb9b6b + b1d8c895-0906-409d-99e6-4c5919fb9b6b + + + 3.255088302891 + + MI_Restricted_Substances + e1d1747e-ff7a-4817-9dcc-e889d45170d7 + + ASTM A500 Grade B + Structural steel, ASTM A500 Grade B + 79f1b5c2-32ef-4860-90e7-30cbe94313be + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 30bb6304-7941-4b04-8e75-0618496f653b + Mass + 100.0 + + + + + 24.186227924277 + + MI_Restricted_Substances + 91d7e1bd-d353-4eb1-9634-286e8e69d0d5 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1141, oil quenched & tempered at 540°C + 4fbd0d4b-53a4-4b73-91a8-783fd0110759 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + d376f895-8b83-43a1-82ff-1c938cb2c6a0 + Mass + 100.0 + + + + + 24.186227924277 + + MI_Restricted_Substances + 1a7c6e51-066a-4f25-9c48-76ca6fbd8330 + + Glass ceramic - 9658 + Glass ceramic - 9658 + db2f5774-4815-4522-8fd0-cf95620dee65 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 695799ab-341b-4eb6-a057-79255d347a9d + Mass + 100.0 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + ee9b5a3d-3387-4007-8c05-5b752e0712c4 + Mass + 100.0 + + + + + 24.186227924277 + + MI_Restricted_Substances + 9b08ec7e-e481-47fa-a36b-849db7ef2432 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 8640, oil quenched & tempered at 425°C + 219af804-fba3-4969-95d9-15acd6d89103 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + c8e629d8-7f63-4bf7-a48d-1965f7221999 + Length + 96.112012395687 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 8857c24c-af73-48d3-81f8-550c4aa46582 + Mass + 100.0 + + + + + 24.186227924277 + + MI_Restricted_Substances + 385dc8fe-7c8c-4fe3-9382-2a7182e05f0d + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 5130, oil quenched & tempered at 425°C + 7b333b0a-326f-4a21-afec-f792c08d4d8d + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 9ffa563d-2079-4734-86f2-dba1ca12318c + Mass + 100.0 + + + + + + + 7.0 + 62.571895803591 + + MI_Restricted_Substances + b49e47be-bf96-4bf1-9366-5c1b840267d4 + + 60239b93 + part_60239b93-5be2-4036-967e-2afeb7065fd6 + 60239b93-5be2-4036-967e-2afeb7065fd6 + + + 1.0 + 34.507880003428 + 5a030026 + part_5a030026-d9e8-4a55-9529-1de2a3eb8198 + 5a030026-d9e8-4a55-9529-1de2a3eb8198 + + + 42.039970281552 + + MI_Restricted_Substances + 302db922-ffc4-4955-9a98-ddaa64c43d26 + + Borosilicate - 7720 + Borosilicate - 7720 + 56c9f4c4-33d4-4405-8dfe-36340475ce5f + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + d96f47c4-59ef-4dad-89d2-c976ed12a1d5 + Mass + 100.0 + + + + + 9.660004953074 + + MI_Restricted_Substances + e62ec0fe-66ca-4b17-88d1-609c5568e318 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 4340, oil quenched & tempered at 650°C + 369ebc5c-f45b-4a95-8dd5-80a361a5c326 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 40b73cfe-a6a1-424a-9960-11449ecd040f + MassRemoved + 66.5445212119 + + + + + 9.660004953074 + + MI_Restricted_Substances + 2a821f5c-97b0-4a08-81b1-de3f1543fb44 + + Alkali strontium clear glass + Alkali strontium clear glass + bd589432-665c-4ef9-9d92-66b17a82eab6 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + b9fba68d-8a09-41e0-baab-68cc96db7559 + Mass + 100.0 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 9817b026-cd99-4ac4-91aa-7caa79f0c4c6 + MassRemoved + 21.932605291685 + + + + + 9.660004953074 + + MI_Restricted_Substances + 9e4c9bc1-b3b6-42dd-a32f-7af4e3190d72 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 86B45, oil quenched & tempered at 205°C + 27d7103f-bcb4-4f37-820f-4a834cab7231 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 5d53a7ab-207c-4801-bd76-31d384a9faae + Mass + 100.0 + + + + + 9.660004953074 + + MI_Restricted_Substances + 874b8433-2e47-45c3-9c89-226428104214 + + Glass and mineral filled, heat resistant, molding + Novolac (glass and mineral filled, heat resistant, molding) + 6779227e-472b-405d-8086-e00c7a69ad00 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 3eca388a-b85a-4678-a38f-2f25f7b98507 + Length + 44.567477723847 + + + + + 9.660004953074 + + MI_Restricted_Substances + fce75b98-deb8-41ba-b343-cc7385cdac54 + + Normalized + Carbon steel, AISI 1050, normalized + e306def9-6d76-4a97-888f-d39b9974c797 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + 1d8cba15-9394-42a6-a029-556bcffab1f8 + Mass + 100.0 + + + + + 9.660004953074 + + MI_Restricted_Substances + 2096ca77-9981-4fd5-9bc6-afe56b3bbbd4 + + Glass/phenolic honeycomb, 0°/90° fabric (0.096) + Glass/phenolic honeycomb, 0°/90° fabric (0.096), W Direction + 5795e66e-2a08-4228-bdb4-92539278f4f7 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + ea5d9b88-8e43-40da-a972-18d6fc15ed98 + Mass + 100.0 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + bbbc7617-982c-43f5-a5db-702f38e7ef69 + Mass + 100.0 + + + + + + + 5.0 + 85.552923560865 + bc8e6ffa + part_bc8e6ffa-8b27-4321-8456-10bc4f3e7d19 + bc8e6ffa-8b27-4321-8456-10bc4f3e7d19 + + + 100.0 + + MI_Restricted_Substances + ccc92e6a-14f4-4ec6-9c3a-35ef3d6c9d8e + + Annealed + Carbon steel, AISI 1025, annealed + b64ecb2d-305d-4678-ad0f-08783eb2f374 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 5df561aa-20c7-4c4d-88c3-c0dc93b04997 + MassRemoved + 85.51604407165 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 3f99c16f-500d-4cb8-969f-92035a8e9aae + Mass + 100.0 + + + + + + + 8.0 + 83.626185582776 + 6a607cfd + part_6a607cfd-65b1-4917-8374-36d286e28ee4 + 6a607cfd-65b1-4917-8374-36d286e28ee4 + + + 68.80013997145 + + MI_Restricted_Substances + bfd46ac9-4021-49b6-9656-d1e426bd1c79 + + Oil quenched & tempered at 205°C + Carbon steel, AISI 1340, oil quenched & tempered at 205°C + a7d39015-8698-4a5b-b3e0-e5b265a71b0e + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + f1f551c9-a71e-442a-b237-1b73837c0ad5 + Mass + 100.0 + + + + + 15.599930014274 + + MI_Restricted_Substances + 0ff3d25e-2024-43a5-9654-bb095ad302ce + + YS260, cold rolled + Bake hardening steel, YS260, cold rolled + 08b7b0d1-0161-4afa-818d-142d5257881e + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + f4e8b684-fdbc-440b-bb16-bdd6e5dc66b1 + Mass + 100.0 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + a92f3b13-cc3b-4fdd-ac36-a2e4cd214b22 + Mass + 100.0 + + + + + 15.599930014274 + + MI_Restricted_Substances + 190cf17e-dbc1-40c7-a3d1-cc776977cb47 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 50B46, oil quenched & tempered at 650°C + b353e0da-bc65-4e67-8422-3bce015ee9fd + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 995c18cc-f708-4937-b3bc-c4462d7a0f7f + Mass + 100.0 + + + + + + + 7.0 + 87.425868253887 + + MI_Restricted_Substances + 2fcb534e-37c5-4b25-add8-ff02d2541953 + + c997a949 + part_c997a949-3734-4f78-9866-a447dfa7aa44 + c997a949-3734-4f78-9866-a447dfa7aa44 + + + 7.0 + 13.381408813121 + 8e95a169 + part_8e95a169-d4b7-4e5d-bed6-a39cc76be1a5 + 8e95a169-d4b7-4e5d-bed6-a39cc76be1a5 + + + 32.832744546622 + + MI_Restricted_Substances + 5dbabc2e-4263-4458-abe1-31a2ece9e122 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 5160, oil quenched & tempered at 425°C + 07e936d2-1016-4eb6-871b-573615c7c7c8 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + fd989855-85eb-43ef-93d9-84bc7a9a80dd + MassRemoved + 97.496870671164 + + + + + 22.389085151125 + + MI_Restricted_Substances + 0e008ce6-63df-4b25-81d6-02398cb9cc62 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 8660, oil quenched & tempered at 540°C + 3a848f66-c7d2-4da9-80f8-1ed69363c023 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 31563959-eb4b-46f7-a3d6-8b438a498e2b + Mass + 100.0 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 1ba4994a-d2f9-4463-a80f-696a35e15e73 + Mass + 100.0 + + + + + 22.389085151125 + + MI_Restricted_Substances + 00cd78de-6c78-46f3-81b3-ec03803fa034 + + Glass/phenolic honeycomb, ±45° fabric (0.048) + Glass/phenolic honeycomb, ±45° fabric (0.048), W Direction + 44fa0e99-bc9e-4595-a489-d2e166778188 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 4337ff91-2af3-40da-a7fa-a67a94a428e9 + Area + 18.06445006191 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + aff00a81-6a29-423f-95f3-99f6c4b2be77 + Area + 69.015454765882 + + + + + 22.389085151125 + + MI_Restricted_Substances + 53268754-75cd-4016-8ed0-2577d32f766e + + As rolled + Carbon steel, AISI 1060, as rolled + 6cb131f2-70f7-4b9c-b0b9-d120775abcb9 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 443eccb7-655d-431a-b524-43bed794f997 + Length + 68.815057058266 + + + + + + + 6.0 + 76.043504511957 + cae856bf + part_cae856bf-64b8-4a2c-b9ce-63fcd115b52e + cae856bf-64b8-4a2c-b9ce-63fcd115b52e + + + 25.048650254052 + + MI_Restricted_Substances + d424fe56-b6f6-42c2-99fb-3e92da8ce70b + + Molding, glass filled + DAP (molding, glass filled) + 223cf977-1df7-49b8-82f4-67945bd2c3d3 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 668935b6-9930-4325-ad98-0c8a54f077d5 + Mass + 100.0 + + + + + 74.951349745947 + + MI_Restricted_Substances + dec7564b-7c27-43fc-9f05-8965e384367a + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 51B60, oil quenched & tempered at 540°C + a6f0b2b1-608e-409c-96fc-733c8873de63 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 3707a636-2e10-452a-89ec-51b15cb875bc + Mass + 100.0 + + + + + + + 8.0 + 66.34370254648 + 56b4f594 + part_56b4f594-a9e8-4e3b-a813-588e42dafa72 + 56b4f594-a9e8-4e3b-a813-588e42dafa72 + + + 0.614007562684 + + MI_Restricted_Substances + 211ae46e-0827-4d61-af66-5a72c42d0cd8 + + T-glass + T-glass + 2c65e5f7-741d-487a-869b-1726fa6a37bd + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + d53e38b8-5876-49b8-a484-90c4c6a2a731 + Mass + 100.0 + + + + + 14.197998919616 + + MI_Restricted_Substances + 408a337f-8eb7-4225-96bd-1225da437143 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 5140, oil quenched & tempered at 315°C + be0900d2-62f9-4365-85e4-463b8bd776dd + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 721a16f9-1256-4322-99e8-1774a6202966 + Mass + 100.0 + + + + + 14.197998919616 + + MI_Restricted_Substances + 0f82772a-b4f0-4ed3-a8cc-6c721ad4b9ac + + Potash soda zinc + Potash soda zinc + 34bdc8cb-ae4d-4f37-bbf5-dd6894e95004 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 644495c6-0047-4cd5-b2a2-748aa6ecdb0d + Mass + 100.0 + + + + + 14.197998919616 + + MI_Restricted_Substances + 2096ca77-9981-4fd5-9bc6-afe56b3bbbd4 + + Glass/phenolic honeycomb, 0°/90° fabric (0.096) + Glass/phenolic honeycomb, 0°/90° fabric (0.096), W Direction + cbd9105b-8a92-41b8-8c1e-00601241859a + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 38a3b737-2b6e-401e-8465-5e1ed7619f2b + Mass + 59.021085993862 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + a711d2a6-d325-40d0-8164-b4eeaa30d36b + Area + 55.370409859051 + + + + + 14.197998919616 + + MI_Restricted_Substances + 1d5dd59c-75a0-4bf2-8862-7d77996aa0be + + Annealed + Low alloy steel, AISI 8650, annealed + 5bb492cb-1d62-4f49-bcdc-a43831448785 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 3b618581-8302-4403-967c-a81638512e9f + Length + 31.769880993184 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + cffc250d-acec-41ed-b562-6c6dddf00ed4 + MassRemoved + 11.271175747397 + + + + + 14.197998919616 + + MI_Restricted_Substances + 91d7e1bd-d353-4eb1-9634-286e8e69d0d5 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1141, oil quenched & tempered at 540°C + 019601ba-d111-4682-88b5-004b2a41848e + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 2f0ea54d-7e78-4a80-8655-3b9e1bd1d721 + MassRemoved + 50.962580112257 + + + + + 14.197998919616 + + MI_Restricted_Substances + d411a96b-aa1c-4651-a405-5a2bc5c32dff + + Modified, Grade 91 + Alloy steel, 9Cr-1Mo-V, modified, Grade 91 + a86b311d-7528-4d4c-b2a3-da67f2e81884 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + 1f845714-341b-442d-aa4a-d1ba844719b5 + Area + 55.85276333422 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 1c595b1c-d4de-4e19-90bd-b8323a12e1e6 + Length + 74.53206976621 + + + + + 14.197998919616 + + MI_Restricted_Substances + 5169a157-0d18-4d45-b197-799e06aa00bc + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 9255, oil quenched & tempered at 315°C + 3c82221e-f220-447b-8353-fbc156f544ed + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 0e962534-eaab-491a-b461-aff65ecbe25e + Mass + 100.0 + + + + + + + 3.0 + 43.268384758042 + 034ae570 + part_034ae570-6b72-4588-8858-d05fe8ec4265 + 034ae570-6b72-4588-8858-d05fe8ec4265 + + + 64.11856034031 + + MI_Restricted_Substances + a89802d6-13c5-496d-b139-57ae43e6591c + + As rolled + Carbon steel, AISI 1022, as rolled + 2430abfe-a4d5-450e-b249-b1ff3006f50d + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + ab0dc822-7a2f-4f1d-8319-46a360810b4e + MassRemoved + 97.344780665517 + + + + + 7.176287931937 + + MI_Restricted_Substances + e86ced85-7d75-4b62-8f8e-90bd345ae003 + + Normalized + Low alloy steel, AISI 5140, normalized + 2aacd7fb-6f52-4112-9e9f-2718f5f9ac37 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 49bc9837-9417-4b98-aec6-9353098a48a1 + Mass + 100.0 + + + + + 7.176287931937 + + MI_Restricted_Substances + 021e3fde-941b-4d44-bc55-a1c5a346d6d9 + + Quenched & tempered + Intermediate alloy, Fe-9Ni-4Co-0.20C steel, quenched & tempered + e3d1ac3a-608f-4766-b1ae-c521602c3f52 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 6f34c420-447e-43ac-87f4-ebbd6fd1e91d + Length + 18.833783463963 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 1945f590-e5fa-461a-884e-e9bf4ca3d301 + Mass + 100.0 + + + + + 7.176287931937 + + MI_Restricted_Substances + 19b67562-02fa-47ea-8fba-af5b14d1fafa + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 4042, oil quenched & tempered at 650°C + 584c4675-c341-4e74-a273-9fbaa509f17b + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + d4c6f167-a12a-4b18-af27-9bb9c9ac9770 + Mass + 100.0 + + + + + 7.176287931937 + + MI_Restricted_Substances + 410f0fc7-aeda-4f4e-bb83-0595b7ba09d0 + + Solution treated + Iron-base-superalloy, N-155, solution treated + 85173ead-dc76-4602-9409-e0d379bc5f67 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + f3ed9441-ef86-45c4-85da-a71c014cdb35 + Length + 0.339391920873 + + + + + 7.176287931937 + + MI_Restricted_Substances + 7b1fcb28-a127-417b-978f-6a5c58305d24 + + Annealed + Carbon steel, AISI 1118, annealed + 396fd799-d5c0-44ef-85fb-309959f4e4b9 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 06fab3de-256c-48f9-93a7-1b2849ca4b4f + Mass + 100.0 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + b85a77bf-b67d-4805-bef6-1176e4ab66c5 + Mass + 100.0 + + + + + + + 9.0 + 9.62305595615 + 892d8144 + part_892d8144-5af7-4433-a93d-2c0fd1355046 + 892d8144-5af7-4433-a93d-2c0fd1355046 + + + 9.130594650809 + + MI_Restricted_Substances + c19a6c59-b937-499d-ac22-fe742ae42287 + + As rolled + Carbon steel, AISI 1117, as rolled + 5edc8f84-3ef2-456f-8007-b3db426f53c6 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + 68a418f0-f161-4882-9578-a7e1abef180a + Mass + 100.0 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 38b2029f-3112-4b68-a716-d1fe6554d580 + MassRemoved + 0.805781223255 + + + + + 45.434702674595 + + MI_Restricted_Substances + 6e5c3f76-3954-45fb-bd02-a4b4203f29ee + + Normalized + Low alloy steel, AISI 3140, normalized + a59c9c63-bbc8-4b08-874c-432f04b3f67a + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 27435063-ed4f-4b17-9d26-35642427bfdb + Mass + 100.0 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 96848ba2-a5ef-4328-afe2-6f8989a9c358 + Mass + 100.0 + + + + + 45.434702674595 + + MI_Restricted_Substances + 5e96987a-3cc6-4330-bccc-e8d163c47831 + + Normalized + Low alloy steel, AISI 9310, normalized + 18fd487b-24b7-40be-bb09-bf7e916c2729 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 18cb0958-5b95-4080-992c-80f3553253d3 + Mass + 100.0 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 774c39fc-977e-4097-81a8-c5c5cc995da4 + Mass + 100.0 + + + + + + + 6.0 + 9.894731645423 + fef19823 + part_fef19823-f258-40d3-b7d7-7d59f9d377cf + fef19823-f258-40d3-b7d7-7d59f9d377cf + + + 100.0 + + MI_Restricted_Substances + 74df2f0b-340a-4267-a759-197069aea298 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 8740, oil quenched & tempered at 205°C + 044eedee-721e-4717-9291-b816ab286628 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 1751808a-1424-41e4-b362-35afdc7c2003 + Mass + 100.0 + + + + + + + + + + + Factory to port + + MI_Restricted_Substances + c29ab353-2bd5-4964-b577-a0e4cfb4d284 + + 7777.0 + + + Port to center + + MI_Restricted_Substances + c29ab353-2bd5-4964-b577-a0e4cfb4d284 + + 9999.0 + + + \ No newline at end of file diff --git a/tests/test_bom_handler.py b/tests/test_bom_handler.py new file mode 100644 index 00000000..241f0e10 --- /dev/null +++ b/tests/test_bom_handler.py @@ -0,0 +1,142 @@ +import re +from pathlib import Path +from typing import Dict, Any + +import pytest +from lxml import etree + +from ansys.grantami.bomanalytics import BoMHandler +from ansys.grantami.bomanalytics.bom_types import BillOfMaterials, BaseType +from difflib import context_diff + + +class TestableBoMHandler(BoMHandler): + def __init__(self, default_namespace: str, namespace_mapping: Dict[str, str]): + super().__init__() + self._default_namespace = default_namespace + self._namespace_mapping = namespace_mapping + + def dump_bom(self, bom: BillOfMaterials) -> str: + raw = super().dump_bom(bom) + + root = etree.fromstring(raw) + exisitng_ns = root.nsmap + + default_namespace_source = next(k for k, v in exisitng_ns.items() if v == self._default_namespace) + + # Set default namespace + if default_namespace_source != "": + raw = raw.replace(f"{default_namespace_source}:", "") + raw = raw.replace(f":{default_namespace_source}", "") + + # Rename other namespaces + for new_prefix, uri in self._namespace_mapping.items(): + prefix = next((k for k, v in exisitng_ns.items() if v == uri), None) + if prefix is None: + continue + + raw = raw.replace(f"{prefix}:", f"{new_prefix}:") + raw = raw.replace(f":{prefix}", f":{new_prefix}") + return raw + +class TestRoundTripBoM: + _bom_location = Path(__file__).parent / "inputs" + _namespace_map = {"gbt": "http://www.grantadesign.com/12/05/GrantaBaseTypes"} + _default_namespace = "http://www.grantadesign.com/23/01/BillOfMaterialsEco" + + @staticmethod + def _compare_boms(*, source_bom: str, result_bom: str): + source_lines = source_bom.splitlines() + result_lines = result_bom.splitlines() + + output_lines = [] + + diff_result = context_diff(source_lines, result_lines) + + for diff_item in diff_result: + output_lines.append(diff_item) + return output_lines + + @pytest.mark.parametrize("bom_filename", ["bom.xml", "bom-complex.xml", "drill.xml", "medium-test-bom.xml"]) + def test_roundtrip(self, bom_filename: str): + bom_path = self._bom_location / bom_filename + with open(bom_path, "r", encoding="utf8") as fp: + input_bom = fp.read() + + bom_handler = TestableBoMHandler(default_namespace=self._default_namespace, namespace_mapping=self._namespace_map) + deserialized_bom = bom_handler.load_bom_from_text(input_bom) + output_bom = bom_handler.dump_bom(deserialized_bom) + + diff = self._compare_boms(source_bom=input_bom, result_bom=output_bom) + + assert len(diff) == 0, "\n".join(diff) + +class TestBoMDeserialization: + _bom_location = Path(__file__).parent / "inputs" + + @pytest.fixture(scope="class") + def simple_bom(self): + bom_path = self._bom_location / "bom.xml" + with open(bom_path, "r", encoding="utf8") as fp: + input_bom = fp.read() + + bom_handler = BoMHandler() + yield bom_handler.load_bom_from_text(input_bom) + + def get_field(self, obj: BaseType, p_path: str) -> Any: + tokens = p_path.split("/") + while True: + try: + next_token = tokens.pop(0) + if "[" in next_token: + index_token = re.search(r"([^\[]+)\[(\d+)]", next_token) + if index_token is None: + raise KeyError(f"Token {next_token} is invalid, index entries must be of the form [0]") + field = index_token.groups()[0] + index = index_token.groups()[1] + obj = getattr(obj, field, None) + if obj is None and len(tokens) > 0: + raise ValueError(f"Item {obj} has no property {next_token}") + obj = obj[int(index)] + else: + obj = getattr(obj, next_token, None) + if obj is None and len(tokens) > 0: + raise ValueError(f"Item {obj} has no property {next_token}") + except IndexError: + return obj + + @pytest.mark.parametrize(("query", "value"), [ + ("internal_id", "B0"), + ("notes/notes", "Part with substance"), + ("notes/product_name", "Part with substance"), + ("components[0]/quantity/unit", "Each"), + ("components[0]/quantity/value", pytest.approx(2.0)), + ("components[0]/part_number", "123456789"), + ("components[0]/part_name", "Part One"), + ("components[0]/components[0]/quantity/unit", "Each"), + ("components[0]/components[0]/quantity/value", pytest.approx(1.0)), + ("components[0]/components[0]/mass_per_unit_of_measure/unit", "kg/Part"), + ("components[0]/components[0]/mass_per_unit_of_measure/value", pytest.approx(2.0)), + ("components[0]/components[0]/part_number", "987654321"), + ("components[0]/components[0]/part_name", "New Part One"), + ("components[0]/components[0]/substances[0]/percentage", pytest.approx(66.0)), + ("components[0]/components[0]/substances[0]/mi_substance_reference/db_key", "MI_Restricted_Substances"), + ("components[0]/components[0]/substances[0]/mi_substance_reference/record_history_guid", "af1cb650-6db5-49d6-b4a2-0eee9a090207"), + ("components[0]/components[0]/substances[0]/name", "Lead oxide"), + ("components[0]/components[1]/quantity/unit", "Each"), + ("components[0]/components[1]/quantity/value", pytest.approx(1.0)), + ("components[0]/components[1]/mass_per_unit_of_measure/unit", "kg/Part"), + ("components[0]/components[1]/mass_per_unit_of_measure/value", pytest.approx(2.0)), + ("components[0]/components[1]/part_number", "3333"), + ("components[0]/components[1]/part_name", "Part Two"), + ("components[0]/components[1]/materials[0]/percentage", pytest.approx(80.0)), + ("components[0]/components[1]/materials[0]/mi_material_reference/db_key", "MI_Restricted_Substances"), + ("components[0]/components[1]/materials[0]/mi_material_reference/record_history_guid", "ab4147f6-0e97-47f0-be53-cb5d17dfa82b"), + + ]) + def test_simple_bom(self, simple_bom: BillOfMaterials, query: str, value: Any) -> None: + deserialized_field = self.get_field(simple_bom, query) + assert deserialized_field == value + + + From 7d2f9421587991f346d1dbdd9ffb941fd4a6c623 Mon Sep 17 00:00:00 2001 From: Doug Addy Date: Wed, 20 Sep 2023 11:36:57 +0100 Subject: [PATCH 052/275] Add new boms to test suite and run linter --- .../grantami/bomanalytics/_bom_helper.py | 1 + .../bomanalytics/bom_types/_bom_reader.py | 23 +- .../bomanalytics/bom_types/_bom_types.py | 291 +- .../bomanalytics/bom_types/_bom_writer.py | 2 +- .../bomanalytics/bom_types/_builders.py | 7 +- tests/inputs/bom-2301-complex.xml | 51085 ++++++++-------- tests/inputs/bom-2301.xml | 93 +- tests/test_bom_handler.py | 80 +- 8 files changed, 25892 insertions(+), 25690 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/_bom_helper.py b/src/ansys/grantami/bomanalytics/_bom_helper.py index 611daf51..3ffb7b38 100644 --- a/src/ansys/grantami/bomanalytics/_bom_helper.py +++ b/src/ansys/grantami/bomanalytics/_bom_helper.py @@ -7,6 +7,7 @@ if TYPE_CHECKING: from ansys.grantami.bomanalytics.bom_types._bom_types import BillOfMaterials + class BoMHandler: _schema_path: Path = Path(__file__).parent / "schemas" / "BillOfMaterialsEco2301.xsd" _schema: XMLSchema diff --git a/src/ansys/grantami/bomanalytics/bom_types/_bom_reader.py b/src/ansys/grantami/bomanalytics/bom_types/_bom_reader.py index 610b6b93..39228131 100644 --- a/src/ansys/grantami/bomanalytics/bom_types/_bom_reader.py +++ b/src/ansys/grantami/bomanalytics/bom_types/_bom_reader.py @@ -9,6 +9,7 @@ if TYPE_CHECKING: from ansys.grantami.bomanalytics.bom_types import BillOfMaterials, BaseType + class BoMReader: _schema: XMLSchema _namespaces = {} @@ -60,9 +61,11 @@ def _create_type(self, type_name: str, obj: Dict) -> "BaseType": for target_type, target_property_name, field_name in type_._props: kwargs.update(self._deserialize_single_type(type_, obj, target_type, target_property_name, field_name)) for target_type, target_property_name, container_name, container_namespace, field_name in type_._list_props: - kwargs.update(self._deserialize_list_type( - type_, obj, target_type, target_property_name, container_name, container_namespace, field_name - )) + kwargs.update( + self._deserialize_list_type( + type_, obj, target_type, target_property_name, container_name, container_namespace, field_name + ) + ) for target, source in type_._simple_values: field_obj = self._field_reader.get_field(type_, obj, source) kwargs[target] = field_obj @@ -71,7 +74,14 @@ def _create_type(self, type_name: str, obj: Dict) -> "BaseType": return instance def _deserialize_list_type( - self, instance: "BaseType", obj: Dict, target_type: str, target_property_name: str, container_name: str, container_namespace: str, item_name: str + self, + instance: "BaseType", + obj: Dict, + target_type: str, + target_property_name: str, + container_name: str, + container_namespace: str, + item_name: str, ) -> Dict[str, Iterable]: container_obj = self._field_reader.get_field(instance, obj, container_name) if container_obj is not None: @@ -80,12 +90,15 @@ def _deserialize_list_type( return {target_property_name: [self._create_type(target_type, item_dict) for item_dict in items_obj]} return {} - def _deserialize_single_type(self, instance: "BaseType", obj: Dict, target_type: str, target_property_name: str, field_name: str) -> Dict[str, Any]: + def _deserialize_single_type( + self, instance: "BaseType", obj: Dict, target_type: str, target_property_name: str, field_name: str + ) -> Dict[str, Any]: field_obj = self._field_reader.get_field(instance, obj, field_name) if field_obj is not None: return {target_property_name: self._create_type(target_type, field_obj)} return {} + class NamespaceFieldReader: def __init__(self, namespaces: Dict[str, str]): """ diff --git a/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py b/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py index bcd3e986..901ce3f9 100644 --- a/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py +++ b/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py @@ -72,17 +72,17 @@ def _write_custom_fields(self, obj: Dict, bom_writer: BoMWriter) -> None: class DimensionType(Enum): - Mass = 0 # If the process affects the bulk of the material or part (e.g. it is a shaping process) then - # the amount of material affected by the process should be specified. The amount may be - # specified as a percentage by weight or an absolute value. - MassRemoved = 1 # Specifying the mass in this way allows one to specify processes that may have removed material - # (e.g. milling or turning). + Mass = 0 # If the process affects the bulk of the material or part (e.g. it is a shaping process) then + # the amount of material affected by the process should be specified. The amount may be + # specified as a percentage by weight or an absolute value. + MassRemoved = 1 # Specifying the mass in this way allows one to specify processes that may have removed material + # (e.g. milling or turning). Volume = 2 - Area = 3 # Some joining processes can have an associated area. - Length = 4 # If the process is an edge joining process (e.g. welding) then the BOM must specify the length - # of material affected by the process. - Count = 5 # Certain fastening processes are quantified by the number of fasteners (e.g. the number of hot - # rivets holding two plates together). + Area = 3 # Some joining processes can have an associated area. + Length = 4 # If the process is an edge joining process (e.g. welding) then the BOM must specify the length + # of material affected by the process. + Count = 5 # Certain fastening processes are quantified by the number of fasteners (e.g. the number of hot + # rivets holding two plates together). Time = 6 @classmethod @@ -160,7 +160,14 @@ class PartialTableReference(BaseType): _namespace = "http://www.grantadesign.com/12/05/GrantaBaseTypes" - def __init__(self, *, table_identity: Optional[int] = None, table_guid: Optional[str] = None, table_name: Optional[str] = None, **kwargs): + def __init__( + self, + *, + table_identity: Optional[int] = None, + table_guid: Optional[str] = None, + table_name: Optional[str] = None, + **kwargs, + ): """ A type that partially identifies a Table, but does not specify the MI Database. Usually, just one of the several optional fields should be provided; where more than one is provided, the highest priority one is used, where the @@ -240,8 +247,17 @@ class MIAttributeReference(BaseType): _namespace = "http://www.grantadesign.com/12/05/GrantaBaseTypes" - def __init__(self, *, db_key: str, attribute_identity: Optional[int] = None, table_reference: Optional[PartialTableReference] = None, attribute_name: Optional[str] = None, - pseudo: Optional[PseudoAttribute] = None, is_standard: Optional[bool] = None, **kwargs): + def __init__( + self, + *, + db_key: str, + attribute_identity: Optional[int] = None, + table_reference: Optional[PartialTableReference] = None, + attribute_name: Optional[str] = None, + pseudo: Optional[PseudoAttribute] = None, + is_standard: Optional[bool] = None, + **kwargs, + ): """A type that allows identification of a particular Attribute in an MI Database. This may be done directly by specifying the Identity of the Attribute, or indirectly by specifying a lookup that will match (only) the Attribute. @@ -279,7 +295,9 @@ def _process_custom_fields(cls, obj: Dict, field_reader: NamespaceFieldReader) - props = super()._process_custom_fields(obj, field_reader) name_obj = field_reader.get_field(MIAttributeReference, obj, "name") if name_obj is not None: - props["table_reference"] = cast(PartialTableReference, field_reader.create_type("PartialTableReference", name_obj)) + props["table_reference"] = cast( + PartialTableReference, field_reader.create_type("PartialTableReference", name_obj) + ) attribute_name_obj = field_reader.get_field(MIAttributeReference, name_obj, "attributeName") if attribute_name_obj is not None: props["attribute_name"] = attribute_name_obj @@ -402,9 +420,19 @@ class MIRecordReference(BaseType): _namespace = "http://www.grantadesign.com/12/05/GrantaBaseTypes" - def __init__(self, *, db_key: str, record_history_identity: Optional[int] = None, record_version_number: Optional[int] = None, - record_guid: Optional[str] = None, record_history_guid: Optional[str] = None, lookup_attribute_reference: "Optional[MIAttributeReference]" = None, - lookup_value: Optional[str] = None, record_uid: Optional[str] = None, **kwargs): + def __init__( + self, + *, + db_key: str, + record_history_identity: Optional[int] = None, + record_version_number: Optional[int] = None, + record_guid: Optional[str] = None, + record_history_guid: Optional[str] = None, + lookup_attribute_reference: "Optional[MIAttributeReference]" = None, + lookup_value: Optional[str] = None, + record_uid: Optional[str] = None, + **kwargs, + ): """A type that allows identification of a particular Record in an MI Database. This may be done directly by specifying the Identity or GUID of the Record, or indirectly by specifying a lookup that will match (only) the Record. @@ -455,13 +483,17 @@ def _process_custom_fields(cls, obj: Dict, field_reader: NamespaceFieldReader) - props = super()._process_custom_fields(obj, field_reader) identity_obj = field_reader.get_field(MIRecordReference, obj, "identity") if identity_obj is not None: - props["record_history_identity"] = field_reader.get_field(MIRecordReference, identity_obj, "recordHistoryIdentity") + props["record_history_identity"] = field_reader.get_field( + MIRecordReference, identity_obj, "recordHistoryIdentity" + ) version_obj = field_reader.get_field(MIRecordReference, identity_obj, "version") if version_obj is not None: props["record_version_number"] = version_obj lookup_obj = field_reader.get_field(MIRecordReference, obj, "lookupValue") if lookup_obj is not None: - props["lookup_attribute_reference"] = field_reader.get_field(MIRecordReference, lookup_obj, "attributeReference") + props["lookup_attribute_reference"] = field_reader.get_field( + MIRecordReference, lookup_obj, "attributeReference" + ) props["lookup_value"] = field_reader.get_field(MIRecordReference, lookup_obj, "attributeValue") return props @@ -641,7 +673,14 @@ class CommonIdentifiersMixin: _name: Optional[str] = None _external_identity: Optional[str] = None - def __init__(self, *, identity: Optional[str] = None, name: Optional[str] = None, external_identity: Optional[str] = None, **kwargs): + def __init__( + self, + *, + identity: Optional[str] = None, + name: Optional[str] = None, + external_identity: Optional[str] = None, + **kwargs, + ): """ A set of identifiers used by external applications to reference and display parts of the BoM. @@ -739,7 +778,7 @@ class EndOfLifeFate(BaseType): _props = [("MIRecordReference", "mi_end_of_life_reference", "MIEndOfLifeReference")] - def __init__(self, * mi_end_of_life_reference: "MIRecordReference", fraction: float, **kwargs) -> None: + def __init__(self, *mi_end_of_life_reference: "MIRecordReference", fraction: float, **kwargs) -> None: super().__init__(**kwargs) self.mi_end_of_life_reference = mi_end_of_life_reference self.fraction = fraction @@ -861,7 +900,13 @@ class ElectricityMix(BaseType): _props = [("MIRecordReference", "mi_region_reference", "MIRegionReference")] _simple_values = [("percentage_fossil_fuels", "PercentageFossilFuels")] - def __init__(self, *, mi_region_reference: "Optional[MIRecordReference]" = None, percentage_fossil_fuels: Optional[float] = None, **kwargs) -> None: + def __init__( + self, + *, + mi_region_reference: "Optional[MIRecordReference]" = None, + percentage_fossil_fuels: Optional[float] = None, + **kwargs, + ) -> None: """ If the product consumes electrical power, then the amount of CO2 produced to generate depends upon the mix of fossil fuel burning power stations in the region of use. This type lets you specify the electrical generation @@ -921,7 +966,14 @@ class MobileMode(BaseType): ] _simple_values = [("days_user_per_year", "DaysUsedPerYear")] - def __init__(self, *, mi_transport_reference: "MIRecordReference", days_used_per_year: float, distance_travelled_per_day: "UnittedValue", **kwargs) -> None: + def __init__( + self, + *, + mi_transport_reference: "MIRecordReference", + days_used_per_year: float, + distance_travelled_per_day: "UnittedValue", + **kwargs, + ) -> None: """ If the product is transported as part of its use then this type contains details about the way in which it is transported. @@ -998,7 +1050,15 @@ class StaticMode(BaseType): ] _simple_values = [("days_used_per_year", "DaysUsedPerYear"), ("hours_used_per_day", "HoursUsedPerDay")] - def __init__(self, *, mi_energy_conversion_reference: "MIRecordReference", power_rating: "UnittedValue", days_used_per_year: float, hours_used_per_day: float, **kwargs) -> None: + def __init__( + self, + *, + mi_energy_conversion_reference: "MIRecordReference", + power_rating: "UnittedValue", + days_used_per_year: float, + hours_used_per_day: float, + **kwargs, + ) -> None: """ Specifies the primary energy conversion that occurs during the product's use. @@ -1093,7 +1153,14 @@ class UtilitySpecification(BaseType): ("utility", "Utility"), ] - def __init__(self, *, industry_average_duration_years: Optional[float] = None, industry_average_number_of_functional_units: Optional[float] = None, utility: Optional[float] = None, **kwargs) -> None: + def __init__( + self, + *, + industry_average_duration_years: Optional[float] = None, + industry_average_number_of_functional_units: Optional[float] = None, + utility: Optional[float] = None, + **kwargs, + ) -> None: """ Specifies how much use can be obtained from the product represented by this BoM in comparison to a representative industry average. @@ -1173,8 +1240,15 @@ class ProductLifeSpan(BaseType): ("functional_unit_description", "FunctionalUnitDescription"), ] - def __init__(self, *, duration_years: float, number_of_functional_units: Optional[float] = None, - functional_unit_description: Optional[str] = None, utility: Optional[UtilitySpecification] = None, **kwargs) -> None: + def __init__( + self, + *, + duration_years: float, + number_of_functional_units: Optional[float] = None, + functional_unit_description: Optional[str] = None, + utility: Optional[UtilitySpecification] = None, + **kwargs, + ) -> None: """ Specifies the average life span for the product represented by the BoM. @@ -1271,8 +1345,15 @@ class UsePhase(BaseType): ("MobileMode", "mobile_mode", "MobileMode"), ] - def __init__(self, *, product_life_span: "ProductLifeSpan", electricity_mix: "Optional[ElectricityMix]" = None, - static_mode: "Optional[StaticMode]" = None, mobile_mode: "Optional[MobileMode]" = None, **kwargs) -> None: + def __init__( + self, + *, + product_life_span: "ProductLifeSpan", + electricity_mix: "Optional[ElectricityMix]" = None, + static_mode: "Optional[StaticMode]" = None, + mobile_mode: "Optional[MobileMode]" = None, + **kwargs, + ) -> None: """ Provides information about the sustainability of the product whilst in use, including electricity use, emissions due to transport, emissions due to electricity consumption, and the expected life span of the product. @@ -1362,7 +1443,14 @@ class BoMDetails(BaseType): _simple_values = [("notes", "Notes"), ("picture_url", "PictureUrl"), ("product_name", "ProductName")] - def __init__(self, *, notes: Optional[str] = None, picture_url: Optional[str] = None, product_name: Optional[str] = None, **kwargs) -> None: + def __init__( + self, + *, + notes: Optional[str] = None, + picture_url: Optional[str] = None, + product_name: Optional[str] = None, + **kwargs, + ) -> None: """ Explanatory information about a BoM. @@ -1439,7 +1527,9 @@ class TransportStage(InternalIdentifierMixin, BaseType): ] _simple_values = [("name", "Name")] - def __init__(self, *, name: str, mi_transport_reference: "MIRecordReference", distance: "UnittedValue", **kwargs) -> None: + def __init__( + self, *, name: str, mi_transport_reference: "MIRecordReference", distance: "UnittedValue", **kwargs + ) -> None: """ Defines the transportation applied to an object, in terms of the generic transportation type (stored in the Database) and the amount of that transport used in this instance. @@ -1514,7 +1604,9 @@ class Specification(CommonIdentifiersMixin, InternalIdentifierMixin, BaseType): ("UnittedValue", "quantity", "Quantity"), ] - def __init__(self, *, mi_specification_reference: "MIRecordReference", quantity: "Optional[UnittedValue]" = None, **kwargs) -> None: + def __init__( + self, *, mi_specification_reference: "MIRecordReference", quantity: "Optional[UnittedValue]" = None, **kwargs + ) -> None: """ A specification for a part, process, or material. Refers to a record with the MI Database storing the details of the specification and its impact. @@ -1570,7 +1662,14 @@ class Substance(CommonIdentifiersMixin, InternalIdentifierMixin, BaseType): _props = [("MIRecordReference", "mi_substance_reference", "MISubstanceReference")] - def __init__(self, *, mi_substance_reference: "MIRecordReference", percentage: Optional[float] = None, category: Optional[str] = None, **kwargs) -> None: + def __init__( + self, + *, + mi_substance_reference: "MIRecordReference", + percentage: Optional[float] = None, + category: Optional[str] = None, + **kwargs, + ) -> None: """ A substance within a part, semi-finished part, material or specification. The substance is stored in the Database. @@ -1649,8 +1748,15 @@ class Process(CommonIdentifiersMixin, InternalIdentifierMixin, BaseType): ("UnittedValue", "quantity_affected", "Quantity"), ] - def __init__(self, *, mi_process_reference: "MIRecordReference", dimension_type: "DimensionType", - percentage_of_part_affected: Optional[float] = None, quantity_affected: "Optional[UnittedValue]" = None, **kwargs) -> None: + def __init__( + self, + *, + mi_process_reference: "MIRecordReference", + dimension_type: "DimensionType", + percentage_of_part_affected: Optional[float] = None, + quantity_affected: "Optional[UnittedValue]" = None, + **kwargs, + ) -> None: """ A process that is applied to a subassembly, part, semi-finished part or material. The process is stored in the Database. @@ -1677,7 +1783,7 @@ def __init__(self, *, mi_process_reference: "MIRecordReference", dimension_type: @classmethod def _process_custom_fields(cls, obj: Dict, field_reader: NamespaceFieldReader) -> Dict[str, Any]: props = super()._process_custom_fields(obj, field_reader) - + dimension_type_obj = field_reader.get_field(Process, obj, "DimensionType") props["dimension_type"] = DimensionType.from_string(dimension_type_obj) return props @@ -1767,12 +1873,27 @@ class Material(CommonIdentifiersMixin, InternalIdentifierMixin, BaseType): _list_props = [ ("Process", "processes", "Processes", "http://www.grantadesign.com/23/01/BillOfMaterialsEco", "Process"), - ("EndOfLifeFate", "end_of_life_fates", "EndOfLifeFates", "http://www.grantadesign.com/23/01/BillOfMaterialsEco", "EndOfLifeFate"), + ( + "EndOfLifeFate", + "end_of_life_fates", + "EndOfLifeFates", + "http://www.grantadesign.com/23/01/BillOfMaterialsEco", + "EndOfLifeFate", + ), ] - def __init__(self, *, mi_material_reference: "MIRecordReference", percentage: Optional[float] = None, - mass: "Optional[UnittedValue]" = None, recycle_content_is_typical: Optional[bool] = None, recycle_content_percentage: Optional[float] = None, - processes: "List[Process]" = None, end_of_life_fates: "List[EndOfLifeFate]" = None, **kwargs) -> None: + def __init__( + self, + *, + mi_material_reference: "MIRecordReference", + percentage: Optional[float] = None, + mass: "Optional[UnittedValue]" = None, + recycle_content_is_typical: Optional[bool] = None, + recycle_content_percentage: Optional[float] = None, + processes: "List[Process]" = None, + end_of_life_fates: "List[EndOfLifeFate]" = None, + **kwargs, + ) -> None: """ A Material within a part or semi-finished part. The material is stored in the Database. @@ -1978,18 +2099,45 @@ class Part(InternalIdentifierMixin, BaseType): _list_props = [ ("Part", "components", "Components", "http://www.grantadesign.com/23/01/BillOfMaterialsEco", "Part"), - ("Specification", "specifications", "Specifications", "http://www.grantadesign.com/23/01/BillOfMaterialsEco", "Specification"), + ( + "Specification", + "specifications", + "Specifications", + "http://www.grantadesign.com/23/01/BillOfMaterialsEco", + "Specification", + ), ("Material", "materials", "Materials", "http://www.grantadesign.com/23/01/BillOfMaterialsEco", "Material"), ("Substance", "substances", "Substances", "http://www.grantadesign.com/23/01/BillOfMaterialsEco", "Substance"), ("Process", "processes", "Processes", "http://www.grantadesign.com/23/01/BillOfMaterialsEco", "Process"), - ("EndOfLifeFate", "end_of_life_fates", "EndOfLifeFates", "http://www.grantadesign.com/23/01/BillOfMaterialsEco", "EndOfLifeFate"), + ( + "EndOfLifeFate", + "end_of_life_fates", + "EndOfLifeFates", + "http://www.grantadesign.com/23/01/BillOfMaterialsEco", + "EndOfLifeFate", + ), ] - def __init__(self, *, part_number: str, quantity: "Optional[UnittedValue]" = None, mass_per_unit_of_measure: "Optional[UnittedValue]" = None, - volume_per_unit_of_measure: "Optional[UnittedValue]" = None, mi_part_reference: "Optional[MIRecordReference]" = None, - non_mi_part_reference: "Optional[Union[str, int]]" = None, part_name: Optional[str] = None, external_id: Optional[str] = None, - components: "List[Part]" = None, specifications: "List[Specification]" = None, materials: "List[Material]" = None, substances: "List[Substance]" = None, - processes: "List[Process]" = None, rohs_exemptions: List[str] = None, end_of_life_fates: "List[EndOfLifeFate]" = None, **kwargs): + def __init__( + self, + *, + part_number: str, + quantity: "Optional[UnittedValue]" = None, + mass_per_unit_of_measure: "Optional[UnittedValue]" = None, + volume_per_unit_of_measure: "Optional[UnittedValue]" = None, + mi_part_reference: "Optional[MIRecordReference]" = None, + non_mi_part_reference: "Optional[Union[str, int]]" = None, + part_name: Optional[str] = None, + external_id: Optional[str] = None, + components: "List[Part]" = None, + specifications: "List[Specification]" = None, + materials: "List[Material]" = None, + substances: "List[Substance]" = None, + processes: "List[Process]" = None, + rohs_exemptions: List[str] = None, + end_of_life_fates: "List[EndOfLifeFate]" = None, + **kwargs, + ): """ A single part which may or may not be stored in the MI Database. @@ -2079,7 +2227,9 @@ def _process_custom_fields(cls, obj: Dict, field_reader: NamespaceFieldReader) - props["non_mi_part_reference"] = non_mi_part_ref_obj rohs_exemptions_obj = field_reader.get_field(Part, obj, "RohsExemptions") if rohs_exemptions_obj is not None: - rohs_exemption_obj = field_reader.get_field(Part, rohs_exemptions_obj, "RohsExemption", "http://www.grantadesign.com/23/01/BillOfMaterialsEco") + rohs_exemption_obj = field_reader.get_field( + Part, rohs_exemptions_obj, "RohsExemption", "http://www.grantadesign.com/23/01/BillOfMaterialsEco" + ) if rohs_exemption_obj is not None: props["rohs_exemptions"] = rohs_exemption_obj return props @@ -2365,7 +2515,7 @@ def __init__(self, *, name: str, method: Optional[str] = None, data: List[Any] = @classmethod def _process_custom_fields(cls, obj: Dict, field_reader: NamespaceFieldReader) -> Dict[str, Any]: props = super()._process_custom_fields(cls, obj, field_reader) - + data_obj = field_reader.get_field(AnnotationSource, obj, "Data") if data_obj is not None: props["data"] = data_obj @@ -2431,8 +2581,16 @@ class Annotation(BaseType): _props = [("UnittedValue", "value", "Value")] _simple_values = [("type", "type"), ("target_id", "targetId"), ("source_id", "sourceId")] - - def __init__(self, *, target_id: str, source_id: Optional[str] = None, type_: str, value: "Union[str, UnittedValue]", **kwargs) -> None: + + def __init__( + self, + *, + target_id: str, + source_id: Optional[str] = None, + type_: str, + value: "Union[str, UnittedValue]", + **kwargs, + ) -> None: """ An annotation that can be attached to objects within a BoM. The understood annotation types must be agreed between the producer and consumer(s) of the BoM. The producer and consumer(s) must also agree whether a @@ -2462,7 +2620,7 @@ def __init__(self, *, target_id: str, source_id: Optional[str] = None, type_: st self.source_id = source_id self.type_ = type_ self.value = value - + @property def target_id(self) -> str: """ @@ -2473,7 +2631,7 @@ def target_id(self) -> str: str """ return self._target_id - + @target_id.setter def target_id(self, value): self._target_id = value @@ -2489,7 +2647,7 @@ def source_id(self) -> str: str """ return self.source_id - + @source_id.setter def source_id(self, value): self._source_id = value @@ -2505,7 +2663,7 @@ def type_(self) -> str: str """ return self._type - + @type_.setter def type_(self, value): self._type_ = value @@ -2544,12 +2702,27 @@ class BillOfMaterials(InternalIdentifierMixin, BaseType): ] _list_props = [ ("Part", "components", "Components", "http://www.grantadesign.com/23/01/BillOfMaterialsEco", "Part"), - ("TransportStage", "transport_phase", "TransportPhase", "http://www.grantadesign.com/23/01/BillOfMaterialsEco", "TransportStage"), + ( + "TransportStage", + "transport_phase", + "TransportPhase", + "http://www.grantadesign.com/23/01/BillOfMaterialsEco", + "TransportStage", + ), ] - def __init__(self, *, components: "List[Part]", transport_phase: "List[TransportStage]" = None, use_phase: "Optional[UsePhase]" = None, - location: "Optional[Location]" = None, notes: "Optional[BoMDetails]" = None, annotations: "List[Annotation]" = None, - annotation_sources: "List[AnnotationSource]" = None, **kwargs) -> None: + def __init__( + self, + *, + components: "List[Part]", + transport_phase: "List[TransportStage]" = None, + use_phase: "Optional[UsePhase]" = None, + location: "Optional[Location]" = None, + notes: "Optional[BoMDetails]" = None, + annotations: "List[Annotation]" = None, + annotation_sources: "List[AnnotationSource]" = None, + **kwargs, + ) -> None: """ Type representing the root Bill of Materials object. diff --git a/src/ansys/grantami/bomanalytics/bom_types/_bom_writer.py b/src/ansys/grantami/bomanalytics/bom_types/_bom_writer.py index 24ca25e3..ca86ca5c 100644 --- a/src/ansys/grantami/bomanalytics/bom_types/_bom_writer.py +++ b/src/ansys/grantami/bomanalytics/bom_types/_bom_writer.py @@ -78,4 +78,4 @@ def convert_bom_to_dict(self, obj: "BillOfMaterials") -> Dict: raw_obj[f"@xmlns:{k}"] = v else: raw_obj[f"@xmlns"] = v - return raw_obj \ No newline at end of file + return raw_obj diff --git a/src/ansys/grantami/bomanalytics/bom_types/_builders.py b/src/ansys/grantami/bomanalytics/bom_types/_builders.py index 5d5917f8..a154aa98 100644 --- a/src/ansys/grantami/bomanalytics/bom_types/_builders.py +++ b/src/ansys/grantami/bomanalytics/bom_types/_builders.py @@ -1,6 +1,11 @@ from typing import Optional -from ansys.grantami.bomanalytics.bom_types import PartialTableReference, MIAttributeReference, PseudoAttribute, MIRecordReference +from ansys.grantami.bomanalytics.bom_types import ( + PartialTableReference, + MIAttributeReference, + PseudoAttribute, + MIRecordReference, +) class _AttributeReferenceByNameBuilder: diff --git a/tests/inputs/bom-2301-complex.xml b/tests/inputs/bom-2301-complex.xml index 349c881a..d5479dec 100644 --- a/tests/inputs/bom-2301-complex.xml +++ b/tests/inputs/bom-2301-complex.xml @@ -1,25544 +1,25543 @@ - - - - - 1 - 69.514788766165637 - 2edd8862 - part_2edd8862-ace1-4911-87c8-70c3c78b52d4 - 2edd8862-ace1-4911-87c8-70c3c78b52d4 - - - 9 - 99.9752668198083 - 767e11c2 - part_767e11c2-8ed5-4348-b3a2-3595f3a20fae - 767e11c2-8ed5-4348-b3a2-3595f3a20fae - - - 1 - 54.003711349332576 - a0f7f357 - part_a0f7f357-2e54-4f03-9187-b15cc3836f14 - a0f7f357-2e54-4f03-9187-b15cc3836f14 - - - 8 - 5.1849543606792361 - 16b848a3 - part_16b848a3-e1f1-4b92-9532-ba54b8ac2457 - 16b848a3-e1f1-4b92-9532-ba54b8ac2457 - - - 20.920569738801834 - - MI_Restricted_Substances - 71a3cd24-5128-46e5-8ef8-9ca8b5ed9892 - - 50% glass and mineral filled - PA46 (50% glass and mineral filled) - 064e366e-d6a5-46c9-879f-c9a410ede6dc - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - 10263c71-b6d0-4cbf-b766-87587f080397 - MassRemoved - 10.937888925400511 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - ffb05405-d056-41b4-a383-b9cce86f751e - Mass - 100 - - - - - 9.8849287826497712 - - MI_Restricted_Substances - 1a9ca626-1709-4d7b-954c-65aa69bf6536 - - YS300, cold rolled - High strength low alloy steel, YS300, cold rolled - d0024420-607f-4df3-bc95-a54d8d229458 - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - e2cddf27-4ea2-463e-b282-13eaeca17fbb - Mass - 100 - - - - - 9.8849287826497712 - - MI_Restricted_Substances - dce2dc34-54db-4d0a-bab0-85d4e6e08d8e - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 6150, oil quenched & tempered at 650°C - 0765cf01-c96b-45ed-9122-69a5a248d1c2 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - e97413f5-f82c-4427-ba8a-b8b5e88b9ff4 - MassRemoved - 44.451249039010726 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 9b96d8f5-da0d-4177-9266-1eb3a6d7e3f7 - Mass - 100 - - - - - 9.8849287826497712 - - MI_Restricted_Substances - 2b606408-37c3-4801-a307-dda7384ff7cc - - Glass/phenolic honeycomb, 0°/90° fabric (0.072) - Glass/phenolic honeycomb, 0°/90° fabric (0.072), W Direction - ff90d60e-13d4-4c5a-919f-ab1031be0717 - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - d78d10a0-f89a-4089-84e9-d64e97e93e5c - Mass - 100 - - - - - 9.8849287826497712 - - MI_Restricted_Substances - e721d8b7-256a-4b7b-af09-6b40d8309979 - - water quenched & tempered at 425°C - Carbon steel, AISI 1040, water quenched & tempered at 425°C - 8d73a9ca-bb77-43e4-8fa4-8946507c3096 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - a341e1db-07ff-416c-a5c6-d24c5a231984 - Mass - 100 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - 9c61bce8-ca3e-4abf-9c83-a3f216749256 - Mass - 100 - - - - - 9.8849287826497712 - - MI_Restricted_Substances - 5303364c-b06b-40d9-bca9-e0e2cd1d682c - - Normalized - Low alloy steel, AISI 8740, normalized - 6cf0a04f-e4ae-4fca-8562-dc1371963383 - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - 105fe4b9-ad2a-4d32-ab6f-bfa023a68b63 - Mass - 100 - - - - - 9.8849287826497712 - - MI_Restricted_Substances - 817b973c-3e12-4b5f-96b3-89b05d14d76c - - ASTM A500 Grade C - Structural steel, ASTM A500 Grade C - f7778c27-d8c0-4a32-b08f-454c5183182a - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 6933fd5a-02a4-4af0-a422-d49aff160f77 - Mass - 100 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - c08d5b0f-ccac-498b-b52f-396787c0a6c5 - Mass - 100 - - - - - 9.8849287826497712 - - MI_Restricted_Substances - 3f3508d4-1ff6-40ea-a45f-04de1cb740f7 - - 300M (low carbon), quenched & tempered - Low alloy steel, 300M (low carbon), quenched & tempered - a749da65-2c9c-422c-90b7-22ee8412334e - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - 04911b2a-f9e3-494a-bbe0-60c75b8b2d24 - Mass - 100 - - - - - 9.8849287826497712 - - MI_Restricted_Substances - a403e867-5052-44f9-b24b-5b11a3860cf4 - - Glass/polyimide honeycomb, ±45° fabric (0.051) - Glass/polyimide honeycomb, ±45° fabric (0.051), W Direction - 91962407-dccf-4f25-a1cd-f0ae3a85a62e - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 54c1f697-44bb-4b4a-a2b2-02864c24a2fe - Mass - 100 - - - - - - - 3 - 96.109122408604776 - 72362b93 - part_72362b93-bb7a-40f6-a225-4c78654ccc16 - 72362b93-bb7a-40f6-a225-4c78654ccc16 - - - 74.637706798798263 - - MI_Restricted_Substances - 93e14fb3-4376-4df5-9d31-299bee56ea49 - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 4340, oil quenched & tempered at 540°C - 3cc47072-1ea4-4d94-94a0-59687596368f - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 2008c572-5a8f-42f2-8aa1-7fe8164b9264 - Area - 75.70770502821901 - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - b5c8e19d-9b00-4a92-a45a-2a64e07f2ebc - Mass - 100 - - - - - 6.3405733003004343 - - MI_Restricted_Substances - b872537b-c0a0-4c3e-8388-e5544183cdd3 - - water quenched & tempered at 425°C - Carbon steel, AISI 1030, water quenched & tempered at 425°C - 81a776a8-6893-44b3-9a12-42398e147b6e - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - 0588f4d7-f328-45b6-bd55-912e0f26452c - Length - 74.041760467943632 - - - - - 6.3405733003004343 - - MI_Restricted_Substances - a6b1ab49-1d3b-4551-9345-3bf24da33ec1 - - As rolled - Carbon steel, AISI 1144, as rolled - 0559b5da-6817-4676-8058-8375c6a6be10 - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - a2b0bdd8-dd12-4b7f-b778-4e0649297d12 - Mass - 100 - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 16b6404c-7eec-40ae-b4f9-3d3c9cd6f5e9 - Mass - 100 - - - - - 6.3405733003004343 - - MI_Restricted_Substances - 09469002-6519-4b02-bdd9-f385d0a44d2f - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 9260, oil quenched & tempered at 540°C - 77d49906-e661-4a85-8156-d8f3d73a92dc - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - 46f5cd87-7e01-45cf-b6f5-860967d7589d - MassRemoved - 16.564626766631672 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 1f8d1845-5df3-44bf-9c93-6537b540b155 - Mass - 100 - - - - - 6.3405733003004343 - - MI_Restricted_Substances - e62ec0fe-66ca-4b17-88d1-609c5568e318 - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 4340, oil quenched & tempered at 650°C - 9d559c57-5793-4793-bd28-ed84fb779ea0 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 1bd74c29-bc15-4b36-a47d-8fdb63b109e2 - Mass - 100 - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - 317bf483-7b41-4304-9448-09649ebf64f2 - Mass - 100 - - - - - - - 5 - 81.58610923289605 - 08d30467 - part_08d30467-d47a-48ad-8369-2ae0fd4a610a - 08d30467-d47a-48ad-8369-2ae0fd4a610a - - - 7 - 58.340847286554443 - 5afcdec3 - part_5afcdec3-66ab-4879-be37-65cdd51b3869 - 5afcdec3-66ab-4879-be37-65cdd51b3869 - - - 6 - 77.608761087809114 - 5df40cce - part_5df40cce-ebd8-405e-87b9-bc32fb7bcb9f - 5df40cce-ebd8-405e-87b9-bc32fb7bcb9f - - - 86.334570211514162 - - MI_Restricted_Substances - 2017a3b5-88e7-473f-b7c9-1ab8afe722fe - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 5160, oil quenched & tempered at 540°C - 3b23bf68-8640-40ed-a435-afdff06555ec - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - 37108ceb-3daa-40b1-a5b6-569d95423517 - Mass - 100 - - - - - 1.9522042554979768 - - MI_Restricted_Substances - 33160988-8422-40e2-93d1-e3e7467eafe9 - - Normalized - Carbon steel, AISI 1030, normalized - f28cde90-f4f6-447e-a172-155b0de30e10 - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - 91fa5230-7620-4fa4-baab-2f5d1c016d8f - Mass - 100 - - - - - 1.9522042554979768 - - MI_Restricted_Substances - 5ed89a0b-5f7a-43b7-b9cb-3db4035f942f - - Glass/phenolic honeycomb, 0°/90° fabric (0.072) - Glass/phenolic honeycomb, 0°/90° fabric (0.072), L Direction - 4bde2a84-4758-4c2b-b06d-2c0688011310 - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - 0fa2b71b-f530-4884-a8de-b25713b85054 - MassRemoved - 64.461322484752785 - - - - - 1.9522042554979768 - - MI_Restricted_Substances - a01be0be-96e7-4123-b061-dfdbba1f1748 - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 4037, oil quenched & tempered at 315°C - 1f200c4e-66c9-41a9-94cc-67a0fac88829 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - 8f8d0342-3ef2-4965-8f76-a154e1a45705 - Mass - 100 - - - - - 1.9522042554979768 - - MI_Restricted_Substances - 496cca2a-43ad-4943-9e9b-23076f2e3a5c - - Glass/polyimide honeycomb, ±45° fabric (0.128) - Glass/polyimide honeycomb, ±45° fabric (0.128), L Direction - a386b2fd-bc60-4cdf-a33f-e69c5a75539e - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - e69b87a3-49c0-42e5-81e8-73bc9a5ba208 - Mass - 100 - - - - - 1.9522042554979768 - - MI_Restricted_Substances - 3b122722-399e-43ad-bc30-86f556db96e7 - - Stainless steel, terne coated - Coated steel, stainless steel, terne coated - 07d04467-4714-4163-834b-1a149cde2fef - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 5704161a-a022-4303-b808-ab16fba90bdb - Mass - 100 - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - b2cda790-0c8a-4dd2-ab76-f0d2540c8cfa - Mass - 72.577107871220036 - - - - - 1.9522042554979768 - - MI_Restricted_Substances - 2017a3b5-88e7-473f-b7c9-1ab8afe722fe - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 5160, oil quenched & tempered at 540°C - c3a81cf6-3677-4edf-8d88-2da112b80d69 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 99b9a1db-9782-4890-a5b9-bad13fbf8714 - Mass - 100 - - - - - 1.9522042554979768 - - MI_Restricted_Substances - b01d2f15-7182-442c-ac97-e7c259e8169d - - Annealed - Low alloy steel, AISI 9310, annealed - bbfa5ab2-b25b-4911-a0be-e0d8e01f1e8e - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - def28e40-fc5e-4ecb-830b-b79d3207a90a - Mass - 100 - - - - - - - 2 - 74.089762882371318 - b9eb4836 - part_b9eb4836-f811-41e9-ad40-7f8fcc7c64e1 - b9eb4836-f811-41e9-ad40-7f8fcc7c64e1 - - - 86.285464179835031 - - MI_Restricted_Substances - 9cae15c6-b5b6-4ab9-9008-d962bee0e662 - - Glass/phenolic honeycomb, 0°/90° fabric (0.128) - Glass/phenolic honeycomb, 0°/90° fabric (0.128), L Direction - 966a9201-5491-4807-9abf-b884b78c31c9 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 96d371e7-648d-4ded-9ba8-ab2ffd4b9f9d - Area - 66.4792038809877 - - - - - 4.5715119400549895 - - MI_Restricted_Substances - dc5a66d7-3ba8-4879-b455-ac29d54cbf17 - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 5150, oil quenched & tempered at 315°C - 20436c9f-d0c6-47b0-987f-cd98e65dfb36 - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - 2d1baf08-df85-4e41-b6e6-11becfd02d68 - Mass - 91.226553493750544 - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 19cb429e-34eb-4a9a-b08a-b4dd94736fab - Mass - 100 - - - - - 4.5715119400549895 - - MI_Restricted_Substances - 88943d73-219a-4090-93e9-c0454a8b5ad5 - - FR-4.0 (Df < 0.015 at 10GHz), Epoxy/Glass fiber, PCB laminate - FR-4.0 (Df < 0.015 at 10GHz), Epoxy/Glass fiber, PCB laminate - d8fe04e2-9546-49c9-a7a7-363a17eb7c9f - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - 45ca39ef-f00c-4e3c-8624-eb50a185f9f4 - Mass - 100 - - - - - 4.5715119400549895 - - MI_Restricted_Substances - b85ebb9e-b198-4497-ae8e-b9b61ecde102 - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 5160, oil quenched & tempered at 315°C - 73bd3313-2941-4b17-a1ea-4f3f91438e52 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 893e1329-2a02-4d98-bc21-9b74ce683a30 - Length - 66.154401593913519 - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - 9fa58166-cf72-41d9-9a2c-caa998091110 - MassRemoved - 35.587200073333086 - - - - - - - 3 - 29.269366026515776 - 862f58e7 - part_862f58e7-67aa-42a2-87c3-516640f3d8f3 - 862f58e7-67aa-42a2-87c3-516640f3d8f3 - - - 31.686386993008846 - - MI_Restricted_Substances - 034898f1-834f-4079-a0d3-65fffc17cb4d - - Silica (quartz fused) - Silica (quartz fused) - a3e3a1db-cb4e-438b-940e-faa5eedb5dda - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - 8af392e4-7d44-4f7d-8842-b4bbafcf94d5 - MassRemoved - 49.642271944155112 - - - - - 11.385602167831857 - - MI_Restricted_Substances - 2befe0b1-24d6-401d-9a98-97e6fe8668bb - - Annealed - Low alloy steel, AISI 9255, annealed - 5fb97d30-7560-4200-891e-c5ec639bc300 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 2963e8a2-6456-4d71-bb03-9bca208dcdd9 - Mass - 14.288251527719318 - - - - - 11.385602167831857 - - MI_Restricted_Substances - 6d658600-d198-46ed-bcca-cd0e3e2f5f4d - - Oil quenched & tempered at 425°C - Carbon steel, AISI 1060, oil quenched & tempered at 425°C - fdd7f75c-224f-49fd-ae6c-99c47d60353a - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - afc22575-39ad-439f-bd40-0e3f938417fe - Area - 93.197569946384789 - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - 4b0ec717-4d41-4cc1-a951-c1a8c8f7c068 - Area - 63.146052492384818 - - - - - 11.385602167831857 - - MI_Restricted_Substances - 6e6b280b-c24a-40b9-a181-4586c4b341c2 - - SAE 4335M, cast, quenched & tempered - Low alloy steel, SAE 4335M, cast, quenched & tempered - af2d314f-1fb4-41c4-aea0-7d2cf06fc241 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 77617534-de47-403a-80e1-676aff0839f6 - Mass - 100 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - b56d23f0-f522-47e7-83af-7d376b81216a - Mass - 100 - - - - - 11.385602167831857 - - MI_Restricted_Substances - 2096ca77-9981-4fd5-9bc6-afe56b3bbbd4 - - Glass/phenolic honeycomb, 0°/90° fabric (0.096) - Glass/phenolic honeycomb, 0°/90° fabric (0.096), W Direction - 1077ef3b-714e-45d4-a5d7-85269fab040b - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - 86ca949d-a134-4ef1-abd8-e2704ae62c38 - Mass - 100 - - - - - 11.385602167831857 - - MI_Restricted_Substances - af0c74e2-f44f-4698-a194-c3f6496a73fa - - Quenched & tempered - Low alloy steel, AISI 4135, air melted, quenched & tempered - 135bdc9a-42cb-4cbb-8904-6663153b3a1d - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - a7e5e15b-2672-4d54-b6a8-e37d01edd6b8 - Length - 92.914500363596957 - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - 0934bebd-6784-4368-a792-3d6cf632bd1e - MassRemoved - 96.551685964945548 - - - - - 11.385602167831857 - - MI_Restricted_Substances - 90514ab4-75b3-48a9-9a07-98eb8f83ef81 - - As rolled - Carbon steel, AISI 1015, as rolled - fef0eedb-3e60-4db6-b002-21aa58a8daf7 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - 87322eda-6234-471b-8bb6-ad0b0223439b - Mass - 100 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - e56d3e3a-cbb1-4fe9-8bc8-db7afc99adc6 - Mass - 100 - - - - - - - 5 - 62.366695032625785 - fd8d642b - part_fd8d642b-af21-46e6-afc1-f2f8b0e21b43 - fd8d642b-af21-46e6-afc1-f2f8b0e21b43 - - - 45.501643580152489 - - MI_Restricted_Substances - b3d89bcf-5e9a-4fe8-a953-98ceb384b8a3 - - water quenched & tempered at 650°C - Carbon steel, AISI 1030, water quenched & tempered at 650°C - 9b8384ef-1579-4b88-b189-215e3d38d262 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 8e326262-e605-41e3-87f6-5a0f717e2347 - Mass - 100 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - eb1f17a9-42d9-47d6-a277-6d478a4dd7e2 - Length - 18.679241472240186 - - - - - 18.166118806615838 - - MI_Restricted_Substances - 55c8dd10-b62f-4136-b1c8-6260fcec05cc - - Annealed - Carbon steel, AISI 1040, annealed - 411ce775-02cf-481d-b199-97032ed29d4f - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 6f9878f7-4b1e-483e-a855-e06ac6b01914 - Area - 70.615824763949874 - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 14c8e637-d272-4179-bcba-5b835682e9d7 - Mass - 100 - - - - - 18.166118806615838 - - MI_Restricted_Substances - 924b3986-e315-4b28-9daa-56a075aa18e9 - - Annealed - Low alloy steel, AISI 52100, annealed - 431c8143-a497-47c1-85e0-ffffa2053e8b - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - f447c5c2-b1d4-49a9-b6b8-09ad043dfc9e - Area - 37.985985371277657 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 7e7ae2be-fcf4-4959-b548-d0086e941ca1 - Mass - 100 - - - - - 18.166118806615838 - - MI_Restricted_Substances - 7bb749f5-f155-4528-bd9b-59c2c0796b40 - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 4140, oil quenched & tempered at 650°C - f5eb794e-27b9-4ddc-b870-db994c597db4 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - 60aaea04-97ed-404a-8fbc-38943d3d5474 - Length - 54.648982432973092 - - - - - - - 7 - 2.4350128147914134 - 7975cf31 - part_7975cf31-1767-4df5-9f29-aa34a15f7cce - 7975cf31-1767-4df5-9f29-aa34a15f7cce - - - 55.304021088082358 - - MI_Restricted_Substances - 190cf17e-dbc1-40c7-a3d1-cc776977cb47 - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 50B46, oil quenched & tempered at 650°C - ba83beb2-043a-40b2-8d3f-d0ae0fec847a - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - 9b19dea1-9ffb-40e5-bba1-982ad7a4bc39 - MassRemoved - 63.368757983375687 - - - - - 11.173994727979411 - - MI_Restricted_Substances - daa4f620-4e8c-4670-b517-9cbca2154c44 - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 5130, oil quenched & tempered at 315°C - be7599d8-421d-4054-b5dc-fe7be813aca1 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - c4c67b2f-7b8f-4989-bcd4-ccc2166fd211 - Area - 40.5453653263605 - - - - - 11.173994727979411 - - MI_Restricted_Substances - 8ef69f01-44dd-4b96-ac5c-731bff7ceb6c - - Glass ceramic - 9606 - Glass ceramic - 9606 - 966349fa-ddb8-4eea-bae6-e85f731ce179 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - c20a9763-e8a7-46a7-ba02-d7e92f319231 - Mass - 100 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - 0ced7fbc-5ef4-409f-822b-08ce98d0dc83 - MassRemoved - 66.840701441672024 - - - - - 11.173994727979411 - - MI_Restricted_Substances - 6ee51b17-7fe0-46fd-8e32-a71585a34000 - - 40-45% glass and mineral - PBT (40-45% glass and mineral) - eef55f76-06b8-4345-baaa-b63d6726e571 - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - a7848db7-c57e-4c94-9aa6-3a2916b19738 - Mass - 100 - - - - - 11.173994727979411 - - MI_Restricted_Substances - 0a203f13-4112-4c7b-8d17-bd9ce600f647 - - YS350, cold rolled - Dual phase steel, YS350, cold rolled - f0898add-5dbb-4f37-b205-3d06ebbc5d0b - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - 60a689e4-7b96-4f29-be3e-4a47c344b98b - Mass - 100 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 5db7413f-3be8-49db-a34e-5a3270934554 - Mass - 24.111555248550864 - - - - - - - 2 - 0.11838702490478149 - 5bcd7ed0 - part_5bcd7ed0-2e39-42ff-a746-c455faca941d - 5bcd7ed0-2e39-42ff-a746-c455faca941d - - - 31.809815034181728 - - MI_Restricted_Substances - 9a48479a-292f-4bdd-aab5-0ad0835d7480 - - Oil quenched & tempered at 205°C - Carbon steel, AISI 1095, oil quenched & tempered at 205°C - 9a15c711-a161-42a2-a9b1-b26fe16575a0 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - 8a3a5758-48b7-40d6-818f-703ec1cd289f - MassRemoved - 6.9798740590828814 - - - - - 9.7414549951168965 - - MI_Restricted_Substances - 0a203f13-4112-4c7b-8d17-bd9ce600f647 - - YS350, cold rolled - Dual phase steel, YS350, cold rolled - b35d0c2b-2dc1-44f8-8a66-8dc93bc65bac - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - 900e5516-afde-47e5-a410-07ea20aab158 - Mass - 100 - - - - - 9.7414549951168965 - - MI_Restricted_Substances - 2ab1643a-3aff-46c7-a249-21c58b33f214 - - Annealed - Carbon steel, AISI 1144, annealed - 6858c273-5411-40f7-99d5-1fa003402096 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 5611fa6a-e4f6-4072-81b1-78c3440a1324 - Mass - 100 - - - - - 9.7414549951168965 - - MI_Restricted_Substances - 29d2e9de-9de0-4ea9-9bff-3a1cee0c26e3 - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 4037, oil quenched & tempered at 205°C - 911ed045-63a1-4f2e-a700-554eadbcc264 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 00fe288c-fad6-4303-a1e5-4f3d065f2d2b - Length - 35.872498031646245 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - a563c236-fd40-472d-a6d3-81debb12cb46 - Mass - 100 - - - - - 9.7414549951168965 - - MI_Restricted_Substances - 80d691ec-471b-4ef6-9060-a0e5cc0c1a91 - - Annealed - Carbon steel, AISI 1340, annealed - 9250893c-69f0-40bb-8668-efba7d2bfe6f - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - b10e57a9-906d-45e7-ad95-31cb30e993a3 - Length - 48.371697100052472 - - - - - 9.7414549951168965 - - MI_Restricted_Substances - 3e7feb56-09b4-498c-9966-c13b33dedccd - - water quenched & tempered at 205°C - Carbon steel, AISI 1137, water quenched & tempered at 205°C - 064ed8a8-2f06-4180-896d-8d850d1ca883 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - cadc9afd-fe49-4df7-8098-a4ddc0f4be4f - Mass - 100 - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - f79dd6d1-4b2c-4708-9b6e-7dd40097d339 - MassRemoved - 42.443724462037778 - - - - - 9.7414549951168965 - - MI_Restricted_Substances - 9e11a8f7-0b35-4610-aee9-557a236bbe5c - - Soda borosilicate - Soda borosilicate - 40d9f571-bb28-47ec-a850-08b3ecb865ef - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 9ab5e351-8a29-4780-9b16-8c27d5c6fa07 - Mass - 100 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - 345503aa-c7f0-4221-9ce8-0eafddd4e4c2 - Length - 97.597338304667431 - - - - - 9.7414549951168965 - - MI_Restricted_Substances - 9d224642-fb07-41ce-8191-c9b152122364 - - Quenched & tempered - Intermediate alloy, Fe-9Ni-4Co-0.30C steel, quenched & tempered - cb3739a0-3d30-46d6-92f5-084983867378 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 50e8ccbc-6981-4512-a86c-56ac38788a3d - Mass - 100 - - - - - - - 9 - 49.6768989365906 - ebb8ffdf - part_ebb8ffdf-686d-41d7-9d9e-e9005283b434 - ebb8ffdf-686d-41d7-9d9e-e9005283b434 - - - 8.75198645924776 - - MI_Restricted_Substances - 45a257d5-da48-4520-9174-ffe7bbadcd1c - - Glass/phenolic honeycomb, ±45° fabric (0.088) - Glass/phenolic honeycomb, ±45° fabric (0.088), L Direction - f01c60bb-f680-45c1-85cd-acbd6e7c0e95 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - ab126da3-5938-4d75-bd59-964cdca979c8 - Mass - 100 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - 4cea0757-a34b-4b3c-aa34-5b0686e2814b - Mass - 100 - - - - - 91.24801354075224 - - MI_Restricted_Substances - 827c892c-b90a-4b05-a8c4-ef1c047d8859 - - Glass/polyimide honeycomb, ±45° fabric (0.112) - Glass/polyimide honeycomb, ±45° fabric (0.112), W Direction - 70910778-cb6b-4d23-baba-c89dbff3ba59 - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - 5aac6bef-0c6b-4d84-bb59-584f21b02395 - Mass - 44.036692075448428 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 79f9f625-1e57-4d90-b886-ccc120129152 - Mass - 100 - - - - - - - 9 - 32.165753390717207 - 1d1de73b - part_1d1de73b-1743-4079-9578-1cf97e7becd8 - 1d1de73b-1743-4079-9578-1cf97e7becd8 - - - 79.606629293228792 - - MI_Restricted_Substances - b228f0f2-a947-4ee3-bdb9-00fdb153caff - - Glass ceramic (FC) - Glass ceramic (FC) - 8abd286f-4a84-4f43-b1be-46822033789e - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - 5dcdd898-398d-489a-b0a1-c783342ddb2f - Mass - 100 - - - - - 2.913338672395887 - - MI_Restricted_Substances - f8d1136f-3c1a-41e2-8b78-cf5f3965cba2 - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 6150, oil quenched & tempered at 205°C - 3c55eb1b-5950-40e0-bb06-5647255227dc - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - 0a89705d-324f-471c-9755-d476521034ab - Mass - 100 - - - - - 2.913338672395887 - - MI_Restricted_Substances - 827c892c-b90a-4b05-a8c4-ef1c047d8859 - - Glass/polyimide honeycomb, ±45° fabric (0.112) - Glass/polyimide honeycomb, ±45° fabric (0.112), W Direction - 6d01f042-4095-4b85-8eaf-8c8dbfcf8153 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 283d3bd7-bf80-470a-bf3a-cbcff32f7d28 - Area - 43.6113331204333 - - - - - 2.913338672395887 - - MI_Restricted_Substances - b879bb01-8648-4b5b-8159-d591cb251ca8 - - Normalized - Carbon steel, AISI 1080, normalized - 1d048369-92f6-44e8-84f2-30278212856b - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - 731a4ba2-d31e-4db1-8793-9324b3e237b7 - Length - 15.022519796631542 - - - - - 2.913338672395887 - - MI_Restricted_Substances - ccc92e6a-14f4-4ec6-9c3a-35ef3d6c9d8e - - Annealed - Carbon steel, AISI 1025, annealed - 2b009d89-e163-4adf-9bf9-8afb678c2a48 - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - 62c79bd0-ae11-422c-90f1-fa594571e903 - Mass - 100 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - a2fcb803-add8-49a0-900b-3703f84244d9 - Length - 53.292736063381994 - - - - - 2.913338672395887 - - MI_Restricted_Substances - 034898f1-834f-4079-a0d3-65fffc17cb4d - - Silica (quartz fused) - Silica (quartz fused) - 835299c6-a6b5-43a8-aa88-f284052171cc - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 855bee01-9184-47d2-8581-76e01886ea0b - Mass - 100 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - 12eabb99-224c-43ea-a98d-bb596ecee29f - Length - 16.264227552462476 - - - - - 2.913338672395887 - - MI_Restricted_Substances - 4a35d8d1-5fb1-47e9-a669-37204ae732dc - - ASTM A500 Grade A - Structural steel, ASTM A500 Grade A - 638823b6-f9d3-46bb-8a05-0db107889b22 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - 0c0f61c2-70c2-4f98-ac5a-7f9df5ecc483 - Mass - 100 - - - - - 2.913338672395887 - - MI_Restricted_Substances - 55a81649-3016-4213-a621-af408fcdc777 - - Annealed - Carbon steel, AISI 1080, annealed - 1a6d6276-4d4a-427a-a4b4-6f2e620db768 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - 97cbf528-7960-4df3-9374-18f69b658e42 - Mass - 100 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 1bc461bc-ed33-486d-a70d-de4a056b9240 - Length - 80.371818589219728 - - - - - - - 2 - 36.111349117062687 - 8c7e1228 - part_8c7e1228-bf08-4749-97f1-a110415528b4 - 8c7e1228-bf08-4749-97f1-a110415528b4 - - - 84.0241880547368 - - MI_Restricted_Substances - 92565d61-24fc-4880-9be5-0faeb9a8a3e8 - - Titanium silicate - Titanium silicate - e7ec98ac-e273-46ab-9474-ea04a3890a5e - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 9762f77c-d28f-4826-9540-79879aa0b386 - Mass - 100 - - - - - 3.1951623890526406 - - MI_Restricted_Substances - 109eaa8c-e01c-4663-8802-f7dd1f10d61b - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 8630, oil quenched & tempered at 205°C - 9f70bd1c-4fd9-4e12-b6cd-b24ec8e36b3a - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - b3367ef8-54f4-4af1-ae6f-0471c59b1e3f - Mass - 100 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 1892cc1f-2ea4-4542-84fa-734a1738d47d - Mass - 32.105234513108257 - - - - - 3.1951623890526406 - - MI_Restricted_Substances - 9cde0ddf-b39b-4eba-9ca0-333508cee034 - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 86B45, oil quenched & tempered at 540°C - e9a533e7-8687-4edb-8b8c-b598338050b2 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 69388365-f692-4ca3-be8f-c29f6a11512d - Mass - 100 - - - - - 3.1951623890526406 - - MI_Restricted_Substances - ae5812e1-18fd-4a4d-aaa2-a04ca5e84b7a - - YS400, hot rolled - Dual phase steel, YS400, hot rolled - 3faedb49-7a6d-4c00-9c9e-39a7ef664e21 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - f210d48f-623d-4898-aa23-ebacd6a343c0 - Mass - 100 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - d6908901-bc8f-4702-ba84-a02927d44d92 - Length - 75.519944948852043 - - - - - 3.1951623890526406 - - MI_Restricted_Substances - e8c6d73a-bd7a-4ef3-ae11-48e45d4a5515 - - Glass, E grade (0.4-12 micron monofilament, f) - Glass, E grade (0.4-12 micron monofilament, f) - ac819a8f-9291-46bd-9a24-39b6ae982568 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 31211b96-96bc-4c45-a8a1-5b02eb5b9885 - Mass - 100 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - bbc5fe2a-94ea-40ef-86a7-942a40cc05b2 - MassRemoved - 34.487242034863328 - - - - - 3.1951623890526406 - - MI_Restricted_Substances - 1d24ecfa-ec45-4a74-9ad7-ceac6eef8ad3 - - Annealed - Low alloy steel, AISI 41L40, annealed - 8ea00983-914a-498b-94fa-1c042eac5ea4 - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - 2b02ebe7-5e6e-491c-a82b-5a11d3505560 - Mass - 100 - - - - - - - 9 - 9.4491260635895316 - bfd7768c - part_bfd7768c-8123-46d9-ac11-f0c6afcabb52 - bfd7768c-8123-46d9-ac11-f0c6afcabb52 - - - 65.3019523086501 - - MI_Restricted_Substances - 01f21cc5-bbad-4a5d-875d-c626eabc11c8 - - water quenched & tempered at 425°C - Carbon steel, AISI 1137, water quenched & tempered at 425°C - c320bf61-1e2b-4df3-b206-058e077ab81e - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 20f242e5-4016-4a57-adc9-37f1bf901366 - Mass - 100 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - d34384d5-e48e-43bf-8930-94889569b199 - Length - 95.754908535515384 - - - - - 11.566015897116634 - - MI_Restricted_Substances - 88943d73-219a-4090-93e9-c0454a8b5ad5 - - FR-4.0 (Df < 0.015 at 10GHz), Epoxy/Glass fiber, PCB laminate - FR-4.0 (Df < 0.015 at 10GHz), Epoxy/Glass fiber, PCB laminate - bf27755b-7cec-4ae3-b621-6d307b6bbf64 - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - 68a06571-548b-4a4a-a436-d8dd70d4df06 - Mass - 100 - - - - - 11.566015897116634 - - MI_Restricted_Substances - ab895171-8c16-4056-9062-78f7516be1b0 - - Borosilicate - 7050 - Borosilicate - 7050 - a08c1674-4940-40a7-94fc-c3d9d183a7f0 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - 7d76a166-c302-4db8-abb1-f8be6336b506 - Area - 75.846491277146384 - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - 4a1655e1-c1f6-4b1a-96f7-58405a76625b - MassRemoved - 92.3417270613563 - - - - - 11.566015897116634 - - MI_Restricted_Substances - a1a73282-61fc-4ecd-9e82-a15e366f99bc - - Low-e glass - Low-e glass - c1bd4e16-ddfd-4e33-9ea0-9f71d3f3fac8 - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - 27d68193-6372-43ef-85c5-2a05dea773bf - Mass - 100 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 9185ca4f-d644-478a-b1d3-accea6fd78f8 - Mass - 100 - - - - - - - 2 - 96.541203882797248 - d4ad1b0c - part_d4ad1b0c-b83c-4a72-8d37-353582787606 - d4ad1b0c-b83c-4a72-8d37-353582787606 - - - 86.579154425570351 - - MI_Restricted_Substances - a6078356-e79c-4ddd-86ef-a3f01680dd35 - - As rolled - Carbon steel, AISI 1020, as rolled - 8f185b5c-7663-4004-babc-399eafd054fc - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - a1312113-8da3-4855-9e62-082d236a73e8 - Mass - 3.2787477612862119 - - - - - 6.7104227872148243 - - MI_Restricted_Substances - 52906b79-1e89-49de-b2cf-c09d53f34f92 - - Borosilicate - N16B - Borosilicate - N16B - e9f58e88-6551-4b55-826e-7a6719f7d8c1 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 3b3e32a9-86ca-4102-910a-96fb55997319 - Mass - 100 - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - b15c2027-79ed-47aa-b2e3-c4c7c63d4fcb - Mass - 100 - - - - - 6.7104227872148243 - - MI_Restricted_Substances - 00268f25-08c7-4add-91f3-3cc4ed1d7e34 - - Oil quenched & tempered at 425°C - Carbon steel, AISI 1141, oil quenched & tempered at 425°C - 9309dcdb-9e9a-476b-af68-bf11e4429595 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - a514f8bf-7700-46fa-b19a-e2847e4bbe19 - Mass - 100 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - be8949b8-400f-46e3-ad5b-c128b25d09ae - Mass - 100 - - - - - - - 5 - 46.461982394783753 - bec3a206 - part_bec3a206-acc2-47e0-9d06-bef2d678f4b1 - bec3a206-acc2-47e0-9d06-bef2d678f4b1 - - - 66.9778992268154 - - MI_Restricted_Substances - 8dbb57f2-b225-4f57-9a5a-c25a03292d6e - - Annealed - Low alloy steel, AISI 6150, annealed - 3377d345-91c4-4b3c-aaa0-d63d7218b1ac - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - 3688e835-1b68-4603-b5b9-a819a57502a7 - Mass - 100 - - - - - 5.5036834621974338 - - MI_Restricted_Substances - a583e694-02c0-408e-9af4-6fbee856b58f - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 9260, oil quenched & tempered at 650°C - 1abd8f9a-0b92-427e-9717-6c09ce13dc00 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - 2c5d44c6-e3bd-4ec6-ad22-b11d3649ed17 - Mass - 100 - - - - - 5.5036834621974338 - - MI_Restricted_Substances - 1d55049a-3c25-4c8c-9125-70fd014c2a1e - - Normalized - Low alloy steel, AISI 8735, normalized - 66c4fad4-af15-4672-9943-9425e4c0e0a8 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 826a9d5a-36ba-4609-b926-7000913958f2 - Mass - 100 - - - - - 5.5036834621974338 - - MI_Restricted_Substances - aa4540cb-3277-459f-a69a-ca324ddd0125 - - Glass ceramic (N0) - Glass ceramic (N0) - 06b90bd7-bfac-4f73-824f-f416b61e79b4 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 10cc87fa-8688-4a93-be50-8cb08c6545cf - Mass - 30.995388017499536 - - - - - 5.5036834621974338 - - MI_Restricted_Substances - 6f7c4754-84f7-46f0-873a-ec2e9f29e345 - - Glass/phenolic honeycomb, ±45° fabric (0.088) - Glass/phenolic honeycomb, ±45° fabric (0.088), W Direction - 5cdefe18-ca24-4c8e-87dd-e422cbafad17 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 3d241091-1a8c-472a-988b-46aff0cc1c3d - Length - 27.586282942251433 - - - - - 5.5036834621974338 - - MI_Restricted_Substances - ca72e2f5-a1d0-4bb0-b612-ed5bc26a4f70 - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 9255, oil quenched & tempered at 205°C - c32929c3-9ade-4355-892f-28ddb0c5e1f8 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - f1960bc6-4caf-450d-bb34-5f45dbb2034c - Length - 15.925735009799588 - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - 9224038e-b0d7-42bd-9b97-6478c055cc71 - Mass - 100 - - - - - 5.5036834621974338 - - MI_Restricted_Substances - 3427457c-2b3d-4a7e-adbc-40fddd4c1f0e - - Normalized - Carbon steel, AISI 1020, normalized - e4212f84-23c9-4e24-86a9-2c480a88575c - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - 6ab49720-c919-4711-9306-ebc18eea494b - Mass - 100 - - - - - - - 7 - 6.3656798127878833 - - MI_Restricted_Substances - 2fcb534e-37c5-4b25-add8-ff02d2541953 - - 19e9d742 - part_19e9d742-08ce-4539-bce0-4d8df1627884 - 19e9d742-08ce-4539-bce0-4d8df1627884 - - - 4 - 14.785726468444674 - 8274b460 - part_8274b460-c082-4717-ab9e-9920ef0ff3d2 - 8274b460-c082-4717-ab9e-9920ef0ff3d2 - - - 29.591850298266785 - - MI_Restricted_Substances - 8be87fd7-f406-4a50-9150-2a29e4a26bfa - - Aluminoborosilicate - N51a - Aluminoborosilicate - N51a - 38f43e87-1708-47f1-a30c-59a2cbb7cf94 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 4b410e14-b7b7-4433-857e-8db7dea9b5aa - Mass - 100 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - 4488c58c-5812-4e2c-beca-734bdb61837f - Length - 51.941912086653488 - - - - - 35.204074850866604 - - MI_Restricted_Substances - cfb19c31-b156-4a8d-854c-f264975539e1 - - water quenched & tempered at 205°C - Carbon steel, AISI 1095, water quenched & tempered at 205°C - 3e49ad92-4885-477d-8acf-bfbc5c7e2611 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 5ec6e628-d313-42c1-a5cd-138d782e3063 - Mass - 100 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 877d894a-0761-45cd-b67a-f0a004becbd1 - Mass - 100 - - - - - 35.204074850866604 - - MI_Restricted_Substances - d50d4fb1-e03a-43e7-b96d-6e8947848f36 - - Borosilicate - 7760 - Borosilicate - 7760 - 18d13a6a-8fff-4cd4-9df8-9fcfd052e5f7 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 5538fe15-9297-4520-9024-6283734a17df - Mass - 100 - - - - - - - 8 - 3.4627909322561656 - 41fcfe96 - part_41fcfe96-0cb7-459b-990e-0a9cf466b84e - 41fcfe96-0cb7-459b-990e-0a9cf466b84e - - - 46.123585592081575 - - MI_Restricted_Substances - bbe3f98a-e574-482b-99cc-74e13b224dd3 - - Normalized - Low alloy steel, AISI 5160, normalized - 0d3845c5-34d7-400a-bee3-80981f3a9c22 - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - 155c8b69-3aec-488c-9e84-81ec2a967947 - Mass - 100 - - - - - 7.6966306297026321 - - MI_Restricted_Substances - d42eaa02-9811-4935-b9cd-652adc845e8c - - Oil quenched & tempered at 650°C - Carbon steel, AISI 1050, oil quenched & tempered at 650°C - 4f4d69c6-1bbc-4f09-ab53-60a95498a714 - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - 1cc110c5-64f2-4880-b63a-3312b46119e4 - Mass - 100 - - - - - 7.6966306297026321 - - MI_Restricted_Substances - 90b2285b-4295-429d-beb8-90d9f5df0101 - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 5046, oil quenched & tempered at 315°C - 475c1813-eff4-4d7f-aa34-21a625870575 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 5c3292e1-9cf2-405f-9958-bbbb7740198e - Mass - 100 - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - b2a90408-ff4a-4255-a4da-7c2f1daa045c - Mass - 100 - - - - - 7.6966306297026321 - - MI_Restricted_Substances - 0ff273b3-9539-465b-9d91-21fc52f8e16c - - Lithium aluminosilicate - Lithium aluminosilicate - 46737ede-6178-4dee-a3a4-e68cffa11485 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - cc4b5ba7-e4ba-4408-a75a-4e70b9a2b97c - Mass - 100 - - - - - 7.6966306297026321 - - MI_Restricted_Substances - 9b08ec7e-e481-47fa-a36b-849db7ef2432 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 8640, oil quenched & tempered at 425°C - a7ae4f2b-6b9a-4a32-a9a5-55fb9d080317 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - e05cb907-5ab8-4186-b865-5206ef069385 - Area - 96.172547990536572 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - 89f28aa9-fc07-4ac9-8788-58ac8ea3c3bc - Length - 70.023122695285423 - - - - - 7.6966306297026321 - - MI_Restricted_Substances - 2839a622-af73-4a9f-90fa-0f3498243808 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 4042, oil quenched & tempered at 425°C - aeb72541-06c9-445d-a583-d17e4b217af3 - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - 2e21bc42-8482-4b45-8cdf-9cc033838ded - Mass - 100 - - - - - 7.6966306297026321 - - MI_Restricted_Substances - 7a62318a-eff2-4f36-9925-ee919c5b4369 - - S235J - Structural steel, S235J - 51fa18b8-ed5b-4e70-9a85-926d20aff4d3 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 599dc39e-fbe9-4918-903c-201f8fafd517 - Mass - 100 - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - 444c53a5-922f-42ca-8e27-4250419a6c82 - MassRemoved - 76.338229131111049 - - - - - 7.6966306297026321 - - MI_Restricted_Substances - 8b442749-964a-49d6-be5c-9a55c81d85f8 - - Annealed - Carbon steel, AISI 1137, annealed - c71f0b62-bad3-4169-b642-97466bac096c - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 5c175ac7-6633-426d-b196-43311b19d2d6 - Mass - 100 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - 80d9c995-9272-4b42-bcdb-da53a364eb1e - MassRemoved - 79.855570327423308 - - - - - - - 5 - 42.080670568198272 - b577fb1d - part_b577fb1d-285b-409e-9c73-c4c67aef072f - b577fb1d-285b-409e-9c73-c4c67aef072f - - - 24.3390832209676 - - MI_Restricted_Substances - aa963e30-fca0-439d-bee2-ff48daa946f3 - - As rolled - Carbon steel, AISI 1095, as rolled - 18de39e1-efa3-416c-8305-820c511d7755 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - fdc3ff67-af49-4e3f-ab5a-5ae7dbc8aea3 - Length - 34.568402978856305 - - - - - 18.9152291947581 - - MI_Restricted_Substances - 33160988-8422-40e2-93d1-e3e7467eafe9 - - Normalized - Carbon steel, AISI 1030, normalized - e6b8c0f4-9881-4c32-b3c1-f2c03707a676 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - b74da865-8a31-4d41-b8a8-8883acb68bf3 - Length - 50.007607950832508 - - - - - 18.9152291947581 - - MI_Restricted_Substances - 9966da3f-c3f0-414e-9bce-4211a9eca2c3 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 8650, oil quenched & tempered at 425°C - 51209b86-7420-495a-9ae3-2917c45bb6d5 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - 376fbb2f-af03-4c94-bbdd-fb020dd33243 - Mass - 100 - - - - - 18.9152291947581 - - MI_Restricted_Substances - 0840d007-df07-4e12-bda5-bfc060fb15e6 - - Annealed - Low alloy steel, AISI 4320, annealed - d026b0f7-b323-4658-b701-dd5b9ef0642b - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - b90ce3a2-6d75-4559-9ea6-6d7d03afe3d8 - Mass - 100 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - e59147df-ab41-4304-beda-98aa64536cf5 - Mass - 100 - - - - - 18.9152291947581 - - MI_Restricted_Substances - db238d75-fcb8-41f5-9289-83a352fa83a6 - - Annealed - Carbon steel, AISI 1015, annealed - 10de9487-5e02-4fd3-9e50-cf813f9100e3 - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - 4d3e67b7-82de-46e0-9939-d476f85856d6 - Mass - 100 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - 4f80d53e-42d7-4017-a30c-e81cb7c4723f - Length - 56.079032065383636 - - - - - - - 7 - 25.021038448913508 - 98aa21d0 - part_98aa21d0-06fc-44b1-8fe5-2e59b4c5bb01 - 98aa21d0-06fc-44b1-8fe5-2e59b4c5bb01 - - - 82.307474120663244 - - MI_Restricted_Substances - bbe3f98a-e574-482b-99cc-74e13b224dd3 - - Normalized - Low alloy steel, AISI 5160, normalized - 66055c02-c174-48cf-a93b-b2a1caa95b51 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - d269bdba-90f7-4b96-9e75-6df612bf51a3 - Length - 50.763146835734673 - - - - - 5.8975086264455854 - - MI_Restricted_Substances - 9ce914d8-75c1-4c5f-8c57-11c0e62b2cfa - - ASTM A299 Grade A - Structural steel, ASTM A299 Grade A - 5f3b5299-698b-4670-9ff2-02b9eb219537 - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - 90dd5b2e-8f4d-46f0-add5-99ff1689d833 - Area - 67.009077857718367 - - - - - 5.8975086264455854 - - MI_Restricted_Substances - c15a44c3-d8be-4ae8-9a58-281f13b731cd - - YS420, cold rolled - High strength low alloy steel, YS420, cold rolled - a0ee3dee-d81a-48de-b448-54d0cfebab12 - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - 0e1f1be9-bef9-43ba-9414-e54b8d4b254f - Mass - 100 - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - 289c98e6-f616-4f8e-9ef9-324927836d0d - Mass - 100 - - - - - 5.8975086264455854 - - MI_Restricted_Substances - 55eaa961-cbe2-4f0a-9531-ec40dc32555a - - YS260, cold rolled - Interstitial free steel, YS260, cold rolled - c5ed30f9-03dd-4053-8b5b-c4e1a60cfe8e - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - 70d819c9-38b0-4d64-a6e0-bfd003d04728 - Area - 52.558756737298687 - - - - - - - 8 - 32.5079331791531 - - MI_Restricted_Substances - 4a2d9161-0f0a-46c5-91c5-ecc05f02ab7d - - 910f76f0 - part_910f76f0-66f9-452f-8090-72c07bb16e3f - 910f76f0-66f9-452f-8090-72c07bb16e3f - - - 3 - 67.537282578431672 - 6c0e2111 - part_6c0e2111-9a45-49b2-89f9-e75b9236807b - 6c0e2111-9a45-49b2-89f9-e75b9236807b - - - 18.61153776692764 - - MI_Restricted_Substances - 1a2673ec-4671-4e9c-a73b-2fef7045fb02 - - Aluminoborosilicate - G20 - Aluminoborosilicate - G20 - ad5ea6d8-bd5e-4129-8ecf-54d9e5e5f38e - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 73960487-6fc0-4df7-b3e3-7e034b13713c - Mass - 100 - - - - - 20.34711555826809 - - MI_Restricted_Substances - e678781a-1b38-4709-816b-9db609651db6 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 50B60, oil quenched & tempered at 425°C - f6b11b46-7824-436b-bcd0-0c4f7072fcf2 - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - e2857007-525e-42e0-856d-ea8e587e1af9 - Mass - 100 - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - 1cd84982-979f-476d-9569-a73014bd478d - Mass - 64.810556343202734 - - - - - 20.34711555826809 - - MI_Restricted_Substances - 0ff3d25e-2024-43a5-9654-bb095ad302ce - - YS260, cold rolled - Bake hardening steel, YS260, cold rolled - e1c23815-ad33-4f51-97b0-6f79b533359c - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 0a7ced6d-460a-4301-b350-afa4640aef30 - Area - 88.825147081550753 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - 59aef919-4ba8-4fad-bc83-f909df5bb444 - Length - 90.453469562555412 - - - - - 20.34711555826809 - - MI_Restricted_Substances - 93e14fb3-4376-4df5-9d31-299bee56ea49 - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 4340, oil quenched & tempered at 540°C - 0fc7dbac-bf70-45c7-90e8-3bd27a45fc1f - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - 0c1a5db1-afbb-4a9b-b9da-d5f3c050426d - MassRemoved - 59.387153973517549 - - - - - 20.34711555826809 - - MI_Restricted_Substances - 3fd6cebb-a683-45be-b014-7c3fb617c3e7 - - Glass/polyimide honeycomb, ±45° fabric (0.064) - Glass/polyimide honeycomb, ±45° fabric (0.064), L Direction - d5016dee-0d50-4fb4-abc4-ff412b6567a2 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - 8daed5ae-3333-47bf-963f-5693dfe3963e - Mass - 100 - - - - - - - 1 - 76.9348563053342 - 637e0437 - part_637e0437-da8d-40d6-b882-cabd56acb117 - 637e0437-da8d-40d6-b882-cabd56acb117 - - - 45.937840801634749 - - MI_Restricted_Substances - d50d4fb1-e03a-43e7-b96d-6e8947848f36 - - Borosilicate - 7760 - Borosilicate - 7760 - 41aa4011-d38d-40e0-82e6-eefa8d9d6860 - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - 18e019cd-e438-4439-aba5-793bfff432df - Area - 36.64996839903759 - - - - - 18.020719732788418 - - MI_Restricted_Substances - 6d658600-d198-46ed-bcca-cd0e3e2f5f4d - - Oil quenched & tempered at 425°C - Carbon steel, AISI 1060, oil quenched & tempered at 425°C - 09dddbfa-2400-4660-93fc-d0c784324731 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 4f40fad3-7ce7-40f8-bd4d-0940db95abc6 - Mass - 67.7786580602539 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - 52e9ddf8-90c1-4f1b-9003-eb8de3f2a997 - Mass - 100 - - - - - 18.020719732788418 - - MI_Restricted_Substances - 00268f25-08c7-4add-91f3-3cc4ed1d7e34 - - Oil quenched & tempered at 425°C - Carbon steel, AISI 1141, oil quenched & tempered at 425°C - 244a218d-da02-4600-901f-3c795a8ed628 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 0c7a49f5-6aa3-4cf2-9870-f8b97e7d9e9e - Mass - 100 - - - - - 18.020719732788418 - - MI_Restricted_Substances - 034898f1-834f-4079-a0d3-65fffc17cb4d - - Silica (quartz fused) - Silica (quartz fused) - cc1dcc59-58ce-4ad0-b222-a342e392f666 - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - 02a20918-409d-4751-a8c1-d14dafa88081 - Mass - 100 - - - - - - - 5 - 11.677817353828726 - f8a14e94 - part_f8a14e94-a386-4489-9648-e6082d18b30c - f8a14e94-a386-4489-9648-e6082d18b30c - - - 13.875720144191629 - - MI_Restricted_Substances - 0d45da58-d026-4a44-b2b5-3109fe88f824 - - Annealed - Carbon steel, AISI 1022, annealed - 65ec6136-26bc-442d-9570-1ce48f7690c7 - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - bd16cf39-76af-43f8-b198-aeb8ad7be932 - Mass - 59.984697243191633 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - e6bb7f1e-7071-4e1d-a373-45ffe368eadc - Mass - 100 - - - - - 86.124279855808368 - - MI_Restricted_Substances - c60fa280-eb24-4c9a-b6cf-a8304e0eb1b5 - - YS500, hot rolled - High strength low alloy steel, YS500, hot rolled - 5aa8cb62-04fb-411f-9001-dec103cb7f1f - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - d42f33b8-5c49-477c-af67-ecb132d88eae - Mass - 100 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - e4979d16-32cf-4bb4-93a5-fa69b3693f69 - Mass - 100 - - - - - - - 6 - 86.295804049026131 - - MI_Restricted_Substances - 022614af-ecf8-4797-af86-25b711d65e30 - - c36583cf - part_c36583cf-709d-4e48-bcfa-afb789e667d9 - c36583cf-709d-4e48-bcfa-afb789e667d9 - - - 6 - 67.9633920397439 - b786aa15 - part_b786aa15-0e95-4b0a-82e6-923db26e9143 - b786aa15-0e95-4b0a-82e6-923db26e9143 - - - 28.160587944165144 - - MI_Restricted_Substances - 8c7579d0-7b78-40f6-a9e7-d11eea746c1f - - Uncoated - Press hardening steel, 22MnB5, austenized & H20 quenched, uncoated - f0f45be9-288d-4aa4-989b-0e8bfa87419b - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - a485a8f2-d7fc-4bc3-988b-da33a5828f70 - Length - 21.046489021296839 - - - - - 10.262773150833551 - - MI_Restricted_Substances - 8643d806-94c5-42f9-9ffc-4c21a6e16bd0 - - Annealed - Carbon steel, AISI 1141, annealed - b5578b36-590a-4ff3-9586-de0bc55d7ca5 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 9c75e21c-d10b-44e9-bfdb-16d235fd0245 - Area - 33.543377664658877 - - - - - 10.262773150833551 - - MI_Restricted_Substances - e6b45bea-dec9-4b91-996a-885bb0c31f8d - - Glass, S grade (10 micron monofilament, f) - Glass, S grade (10 micron monofilament, f) - da3524da-b989-495a-80bc-6a03e4dff35a - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 208aabda-3a37-4f4f-9759-695034f23d93 - Mass - 100 - - - - - 10.262773150833551 - - MI_Restricted_Substances - 82880431-c70c-4df9-856a-d5e00671a184 - - Annealed - Carbon steel, AISI 1020, annealed - f5c11d3d-e942-460a-a6e6-88d85c845501 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - bb96f553-a236-4770-9e20-ccbd1709d75c - Length - 16.778927397345626 - - - - - 10.262773150833551 - - MI_Restricted_Substances - 9052201a-a41d-4b86-8c7c-2e80163afd47 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 9255, oil quenched & tempered at 425°C - 259dbdfd-48fd-490b-b87e-c1a2e85fc26e - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - a36cc3bf-3a2e-4f6d-92bd-1ce74df99da7 - Length - 13.066051906471166 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - c12a6707-fd5a-4b34-8443-ab1cd3886c62 - Area - 17.750812423299443 - - - - - 10.262773150833551 - - MI_Restricted_Substances - 356303d7-c574-4db7-80f9-427e176a5308 - - 40CrMoV13-9, quenched & tempered - Low alloy steel, 40CrMoV13-9, quenched & tempered - 9f92067c-64e2-43cd-a019-67fcbd40b9d4 - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - c4afe641-9b45-4754-ba04-d0f4d10a862c - Mass - 100 - - - - - 10.262773150833551 - - MI_Restricted_Substances - b85ebb9e-b198-4497-ae8e-b9b61ecde102 - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 5160, oil quenched & tempered at 315°C - ff3c1af1-7726-48cf-9111-2405634e69c8 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 4c4e97c0-8d3f-43e2-b07b-3dc30b243b4b - Mass - 100 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - d091f519-b7d6-4d1d-9425-5fc6116d2bcf - Mass - 100 - - - - - 10.262773150833551 - - MI_Restricted_Substances - 30d9edb0-09d2-4270-b4f5-8dceb44a6bd6 - - Oil quenched & tempered at 540°C - Carbon steel, AISI 1137, oil quenched & tempered at 540°C - 5ec4816a-1e17-49e3-87f2-7045ba08b4a6 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - c43d69af-0147-4859-b393-3a06d193be25 - Mass - 100 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 9e5c4c82-e18a-4143-b951-79a464daa2ee - Mass - 100 - - - - - - - 8 - 55.56172149049199 - 7f1ea467 - part_7f1ea467-91f8-4023-8fd4-a144cdab337e - 7f1ea467-91f8-4023-8fd4-a144cdab337e - - - 54.561538321227552 - - MI_Restricted_Substances - c87d2bef-0549-4a3b-b699-3ad17b079fa1 - - YS355, hot rolled - High strength low alloy steel, YS355, hot rolled - 7ac8785d-6c83-4f8f-90de-933949972289 - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - 26432953-6f0e-4d93-96c7-bd5fcf6379f2 - Mass - 100 - - - - - 9.08769233575449 - - MI_Restricted_Substances - 21dcdeeb-524a-488e-b332-fcd4e1caf6f7 - - water quenched & tempered at 650°C - Carbon steel, AISI 1095, water quenched & tempered at 650°C - a790407d-9ced-4977-a510-4e069d78d746 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 03eb66c3-f545-462f-9769-f86b3dd6affc - Mass - 100 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - b61ec8b9-64a3-446e-b1ca-34ec20bca0ed - Mass - 100 - - - - - 9.08769233575449 - - MI_Restricted_Substances - a8f02f5c-c80e-446f-92f4-0046f3d093fc - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 8630, oil quenched & tempered at 425°C - 07fde33a-6f9f-45f7-a3ea-e654b0ce2405 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - 442eafc3-87b0-40ac-b29e-e5250db24a9e - Length - 51.49531678831918 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - 2e2d0c69-7030-4356-9abd-21c9a343f13f - Length - 33.9750110795605 - - - - - 9.08769233575449 - - MI_Restricted_Substances - af4f67b9-f5a7-4fc3-9f1d-da3309e4b19a - - Solution treated & aged - Iron-base-superalloy, Cr-Ni alloy, A-286, solution treated & aged - 50b835ed-171b-447e-bd43-b8458edb8a36 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - bb3d5628-9b59-4a22-a339-57214c20ae1d - Mass - 100 - - - - - 9.08769233575449 - - MI_Restricted_Substances - 8dbb57f2-b225-4f57-9a5a-c25a03292d6e - - Annealed - Low alloy steel, AISI 6150, annealed - 0f20032f-64dd-4407-a483-f204c69438fb - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - b2907993-60fd-4b39-9d19-a6320539f3ff - Mass - 100 - - - - - 9.08769233575449 - - MI_Restricted_Substances - 9ecfadb9-f61f-48b3-81b1-bcac80eb164f - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 4150, oil quenched & tempered at 315°C - 8a787e70-737e-46e6-8dab-306d179ef24a - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - 203cae3c-c8ea-468a-b0c2-1a2f1dba8083 - Mass - 100 - - - - - - - 9 - 10.829968196726389 - f5dacbb9 - part_f5dacbb9-c1f8-419a-9053-2a4d2c9d18a8 - f5dacbb9-c1f8-419a-9053-2a4d2c9d18a8 - - - 39.232889534548335 - - MI_Restricted_Substances - c62d668e-5411-4845-b19c-3a0c4eedf872 - - 10CrMo9-10, normalized & tempered - Low alloy steel, 10CrMo9-10, normalized & tempered - 33d3df79-d373-4b94-b3a6-660eb38c7e27 - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - 8314c26c-a7ee-4c74-bb24-5fd5a019029a - Mass - 50.223951577313223 - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - 29e7d889-d958-4cf6-a9e9-4f530b87ea79 - Area - 5.869946398711738 - - - - - 10.127851744241944 - - MI_Restricted_Substances - 0afa77bf-df9b-456c-8c48-3c84b1ccd2e0 - - Low density glass-sphere filled - Bisphenol molding compound (low density glass-sphere filled) - 31c5fa38-c9cb-4a05-82b0-b841e128dbcf - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 2f9ef32d-cf41-40d8-b44e-1b8261e8da15 - Mass - 100 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - 5fad0148-6141-4b01-bc17-321eb4744943 - MassRemoved - 76.215430803697288 - - - - - 10.127851744241944 - - MI_Restricted_Substances - ee5b018e-8d7f-4fb1-bad0-c73e871592bc - - 16Mo3, normalized - Low alloy steel, 16Mo3, normalized - a529dc2e-5812-49a2-95b6-6dd4275ccfaf - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - f7aaf415-d27b-4f53-bb9d-8395e0f29297 - Mass - 100 - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - df76aa4d-4723-48c9-a1ae-f9609cf40fa4 - Mass - 100 - - - - - 10.127851744241944 - - MI_Restricted_Substances - a583e694-02c0-408e-9af4-6fbee856b58f - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 9260, oil quenched & tempered at 650°C - a71e7f88-dd9f-4bd5-97c5-ba0e454c8a86 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 25e57cf3-f067-4f6d-8227-81f597c51a51 - Mass - 100 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - 60c7a5c7-b458-4867-bc66-6a7b7cf161e4 - MassRemoved - 51.182567910841925 - - - - - 10.127851744241944 - - MI_Restricted_Substances - 8ef69f01-44dd-4b96-ac5c-731bff7ceb6c - - Glass ceramic - 9606 - Glass ceramic - 9606 - ac8979df-ffa0-4867-92bd-4f50e905e723 - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - dc7fe693-f05f-4a56-a129-0f668f88f684 - Mass - 100 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - d3632ca9-6bb1-4658-a277-3ecec3de1232 - Mass - 100 - - - - - 10.127851744241944 - - MI_Restricted_Substances - a583e694-02c0-408e-9af4-6fbee856b58f - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 9260, oil quenched & tempered at 650°C - beaa77bc-aa95-48b4-a090-f8d2d782206a - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - d42538b4-5ecd-43e4-8fe5-566b54d31b2f - Mass - 100 - - - - - 10.127851744241944 - - MI_Restricted_Substances - bac6ffd4-6d83-432c-90f4-de9606502589 - - Alkali barium glass - Alkali barium glass - c6e0f32c-d30b-482b-ae39-6a157d6c056b - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - c199a1d4-2aa7-4696-b556-67be5a32877e - Mass - 100 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 143e76aa-6810-4714-9c4b-0df021ee35c0 - Mass - 100 - - - - - - - 8 - 56.751658514492057 - bbcf0cb7 - part_bbcf0cb7-3799-419c-bb91-69efc6a773a2 - bbcf0cb7-3799-419c-bb91-69efc6a773a2 - - - 39.58289531971463 - - MI_Restricted_Substances - ac1b4f23-a357-459b-bfeb-deabffbc7020 - - Oil quenched & tempered at 315°C - Carbon steel, AISI 1050, oil quenched & tempered at 315°C - 75e963b5-5092-420b-8f67-36bb94675137 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - 25d88b7e-7987-4bcd-9d04-0a59ca932205 - Length - 67.657515344981817 - - - - - 12.083420936057074 - - MI_Restricted_Substances - bfd46ac9-4021-49b6-9656-d1e426bd1c79 - - Oil quenched & tempered at 205°C - Carbon steel, AISI 1340, oil quenched & tempered at 205°C - cc19f7cb-4027-4c5e-a5db-2dd7a7559226 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - d7ecc6bf-c407-41c3-8b1a-6ba1b26dd902 - Area - 38.522749365550816 - - - - - 12.083420936057074 - - MI_Restricted_Substances - e06fc27c-5e39-4218-a5ca-6927af12a511 - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 4140, oil quenched & tempered at 205°C - 9420bb2f-2d32-4cfe-a1f6-2ee9dc88147e - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - 8baa897b-6b55-43c3-a1bf-76df9b858209 - MassRemoved - 54.654524267955928 - - - - - 12.083420936057074 - - MI_Restricted_Substances - d53daeda-87b2-4ade-a7a2-1ebe84e7e3ef - - Annealed - Low alloy steel, AISI 5115, annealed - ba3706f1-d63d-4915-aaf4-64fbbb441514 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - be2a3e2b-dc24-46df-b793-11fdbaf7a046 - Mass - 100 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 8992ea99-439f-4945-8d59-7b1da55af53c - Mass - 100 - - - - - 12.083420936057074 - - MI_Restricted_Substances - 6ee51b17-7fe0-46fd-8e32-a71585a34000 - - 40-45% glass and mineral - PBT (40-45% glass and mineral) - c5e03d92-c8bb-4bd6-8807-22324b49bdd8 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - ef746a79-0608-45eb-9625-1009cad3791e - Mass - 100 - - - - - 12.083420936057074 - - MI_Restricted_Substances - f8d1136f-3c1a-41e2-8b78-cf5f3965cba2 - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 6150, oil quenched & tempered at 205°C - 66478372-76a4-407e-b812-4526b76fe9ef - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - e6b23627-745a-46ec-849e-ddfb9fb69ff9 - Mass - 100 - - - - - - - 3 - 47.096223126676037 - f6fbbc6b - part_f6fbbc6b-42d8-4d0f-8b82-95595f7cfc97 - f6fbbc6b-42d8-4d0f-8b82-95595f7cfc97 - - - 11.825464205735113 - - MI_Restricted_Substances - dec2859d-9573-49bd-846a-5e2a288c063f - - Soda barium glass - Soda barium glass - 8d38f1ad-6599-48e2-b23c-68fc43a64acf - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - e4279d68-ed80-4c1b-bd24-575b9cceb825 - Mass - 100 - - - - - 22.043633948566221 - - MI_Restricted_Substances - dec2859d-9573-49bd-846a-5e2a288c063f - - Soda barium glass - Soda barium glass - f0390429-7c94-4cb2-9d6d-61f157e52841 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - c6db4588-d5e0-4219-968b-eed84cd89885 - Length - 4.2175538391887919 - - - - - 22.043633948566221 - - MI_Restricted_Substances - 6f7c4754-84f7-46f0-873a-ec2e9f29e345 - - Glass/phenolic honeycomb, ±45° fabric (0.088) - Glass/phenolic honeycomb, ±45° fabric (0.088), W Direction - 252842a8-fb2a-4c4f-8d28-41739c6318dc - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - ec951dd2-d457-4e17-8988-b99dc3b2c87d - Mass - 100 - - - - - 22.043633948566221 - - MI_Restricted_Substances - c3e12411-ba5c-485f-b516-f489b95e8233 - - FR-4.1 (Df < 0.005 at 10GHz), Epoxy/Glass fiber, PCB laminate - FR-4.1 (Df < 0.005 at 10GHz), Epoxy/Glass fiber, PCB laminate - b39e6f9f-e41f-4cdd-b189-87298b42a606 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 789840db-daaa-4de1-b9a3-bc19836d8c37 - Mass - 100 - - - - - 22.043633948566221 - - MI_Restricted_Substances - 8245dc6c-3d61-4f18-82c8-6fb946e1582c - - Glass foam (0.13) - Glass foam (0.13) - a9e396af-a85b-416d-a610-0c044c88995e - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - f55d8028-28c0-40be-80f8-3ca1f420e68b - Mass - 100 - - - - - - - 6 - 55.608829974946019 - 7d472c22 - part_7d472c22-d1df-40ef-a113-6c4122effb2e - 7d472c22-d1df-40ef-a113-6c4122effb2e - - - 74.3681468415857 - - MI_Restricted_Substances - afc85ad6-9e99-44a7-a959-f75ddbacff15 - - FR-5, Epoxy/Glass fiber, PCB laminate - FR-5, Epoxy/Glass fiber, PCB laminate - 4bc44872-9a5d-495a-9caf-980d43e66b11 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 21ec7642-fe81-4c1c-a592-fabcaeff2b6b - Mass - 4.4001921566204132 - - - - - 4.2719755264023833 - - MI_Restricted_Substances - 63d5d6b5-3b52-4cd9-a56f-6e7c5c945139 - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 81B45, oil quenched & tempered at 315°C - 74879e4c-7f99-47b3-b943-54b7b54f6222 - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 20c2c644-69b9-4aa2-a360-e60e64f749e6 - Mass - 100 - - - - - 4.2719755264023833 - - MI_Restricted_Substances - 00268f25-08c7-4add-91f3-3cc4ed1d7e34 - - Oil quenched & tempered at 425°C - Carbon steel, AISI 1141, oil quenched & tempered at 425°C - d69c5639-1b8b-4737-907f-ed4d5be46e4d - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - 7cec420e-96c3-4ebc-b0da-625f9feb724e - Mass - 100 - - - - - 4.2719755264023833 - - MI_Restricted_Substances - 9c1918f9-aa9f-4078-93df-23539c8df8a8 - - Soda-lime - 0091 - Soda-lime - 0091 - 4fa78796-c5a9-46ca-86ce-f88f8a01b793 - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - d3fb1692-a0d2-4ed7-8e3b-4933bb09a70f - Mass - 100 - - - - - 4.2719755264023833 - - MI_Restricted_Substances - 8349c912-772a-4fd7-90a5-7d52aa9c9448 - - Oil quenched & tempered at 425°C - Carbon steel, AISI 1137, oil quenched & tempered at 425°C - 1953f7e4-c39f-492a-a1b5-b6ed45c83f9a - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - 91cc33c3-fc0c-480d-a407-b205ddbe1ea2 - Area - 16.662223412032343 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - a6a67b54-a11a-4abe-b5b1-ea66d74709ca - Mass - 100 - - - - - 4.2719755264023833 - - MI_Restricted_Substances - 9cae15c6-b5b6-4ab9-9008-d962bee0e662 - - Glass/phenolic honeycomb, 0°/90° fabric (0.128) - Glass/phenolic honeycomb, 0°/90° fabric (0.128), L Direction - 9b7e2cfc-3307-431d-b34d-7003cac18824 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 73658f79-c750-4cd8-8eef-ee903cddc232 - Mass - 10.390798426415211 - - - - - 4.2719755264023833 - - MI_Restricted_Substances - a22f3160-83fe-4a55-8459-26e3f8647523 - - 55% glass and mineral filled - PARA (55% glass and mineral filled) - 950e232a-586e-4d42-9a1f-7b9733ef890a - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - 1575dd40-f600-4bc4-a88a-c598678257de - Area - 64.681281738300484 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 929cc29c-e0e8-4022-b2a6-01a952031a69 - Mass - 100 - - - - - - - 2 - 14.808066661845922 - b1cb8514 - part_b1cb8514-070c-4d62-9ef5-4c49c90bc898 - b1cb8514-070c-4d62-9ef5-4c49c90bc898 - - - 97.051029278454848 - - MI_Restricted_Substances - 8dbb57f2-b225-4f57-9a5a-c25a03292d6e - - Annealed - Low alloy steel, AISI 6150, annealed - 86c67d23-08be-4393-9d92-495098f61f07 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 80c605e4-edf1-4cd5-bf78-a206557fc22f - Mass - 100 - - - - - 0.73724268038628793 - - MI_Restricted_Substances - a83cb894-badf-47de-8aff-fe75bbb39ecd - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 81B45, oil quenched & tempered at 540°C - 61cdd020-4268-4783-9885-d40cb0c8d22a - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - a83e56d7-ae09-4e6f-924d-f26157e38358 - Mass - 100 - - - - - 0.73724268038628793 - - MI_Restricted_Substances - ecee7ab4-461f-42e0-9b52-d03ea031201c - - Normalized - Carbon steel, AISI 1144, normalized - 06df061e-da0a-4d4c-9d3d-f6e18221e033 - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - eace4d01-c48e-4b1e-8e22-15225c63f9bf - Area - 55.08029659049599 - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - 41aaa4b3-1aaa-4dc8-9fa7-f19ff45a83ae - Mass - 100 - - - - - 0.73724268038628793 - - MI_Restricted_Substances - 66ed26ec-15e8-47d9-a7dc-140271411c07 - - Quenched & tempered - Low alloy steel, AISI 4130, air melted, quenched & tempered - 45b2ca44-3955-48b5-8eac-b98cec5366f3 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 4513f058-b7a2-4702-aa6e-decfec920a1a - Mass - 100 - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - a960eb1f-91b4-4d76-af51-3b97a0c3bf8c - Mass - 39.232257026821493 - - - - - 0.73724268038628793 - - MI_Restricted_Substances - af4f67b9-f5a7-4fc3-9f1d-da3309e4b19a - - Solution treated & aged - Iron-base-superalloy, Cr-Ni alloy, A-286, solution treated & aged - 1916a851-ca70-4761-a100-5a0fd2c7ee5d - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - b3ac55f8-96d0-436e-bd89-27d480e45e0a - Mass - 100 - - - - - - - 6 - 7.051080422034059 - b6c22120 - part_b6c22120-5e85-4ed0-92c7-590b9eb9ac7a - b6c22120-5e85-4ed0-92c7-590b9eb9ac7a - - - 92.895007782101175 - - MI_Restricted_Substances - 81ce98b3-d459-4695-9dd9-d53244be47ed - - Annealed - Carbon steel, SA216 (Type WCC), cast, annealed - 12376dff-8e97-4e2c-9f52-fcca2e966de3 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - 5054c941-f1fc-4991-864b-06f9400d43ae - Area - 43.140955894785449 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - aeb8805c-e856-4dcb-bbab-e379818c0478 - Length - 35.583568054988781 - - - - - 2.3683307392996085 - - MI_Restricted_Substances - 00fe5279-94a1-43fd-8b88-d83679a1bdce - - Normalized - Low alloy steel, AISI 8650, normalized - 94527534-0ff8-4ec1-aa02-5fd4dd86cbca - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 79ad3c95-21f4-429e-95e5-8dfa2f5be558 - Mass - 100 - - - - - 2.3683307392996085 - - MI_Restricted_Substances - 2fca0cda-4548-4601-ade6-49478da1542f - - Potash soda lead glass - 0120 - Potash soda lead glass - 0120 - eef4536e-0d78-4abf-adbf-f27a06ee9cf7 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 0b44e966-c220-49a6-b05f-8644b6e5bdb5 - Mass - 100 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - fdeac97c-9a5b-41d0-baad-81336f423d96 - Area - 77.518048313221925 - - - - - 2.3683307392996085 - - MI_Restricted_Substances - 4ad00a9e-92b5-4e28-92a0-409da4495c54 - - Oil quenched & tempered at 205°C - Carbon steel, AISI 1060, oil quenched & tempered at 205°C - fafbc500-8dbb-4e8f-af0c-bfc59a8b2bb3 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - 76bb9be2-bf69-4a02-8cb3-42b6d3246859 - Length - 71.418723078173912 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - f6122a10-907d-4619-a69b-847a1fa3368f - Mass - 100 - - - - - - - 3 - 13.140361995035951 - - MI_Restricted_Substances - 0dedeb55-6f6f-42f9-b703-5225f1cab2fb - - f0a7ab1b - part_f0a7ab1b-d6f5-4f47-ad8e-12d3e43d65a5 - f0a7ab1b-d6f5-4f47-ad8e-12d3e43d65a5 - - - 3 - 41.464385502722294 - 2c988253 - part_2c988253-cf8f-45cd-b7c4-cd4903dcd49c - 2c988253-cf8f-45cd-b7c4-cd4903dcd49c - - - 9.2300838368153588 - - MI_Restricted_Substances - 4cea2241-b602-4843-a983-45b33e64af05 - - YS600, cold rolled - Dual phase steel, YS600, cold rolled - 524819a4-baa5-40eb-b5a5-2e131ebfeeee - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - e7708b91-0bf6-46c6-a0f5-a5915cce29ef - Mass - 100 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - 3c055067-1d8e-4d09-9eba-aabe150346f3 - Mass - 100 - - - - - 30.256638721061549 - - MI_Restricted_Substances - a89802d6-13c5-496d-b139-57ae43e6591c - - As rolled - Carbon steel, AISI 1022, as rolled - 953dc823-906a-4e1b-af55-24208c11831c - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - 40b06799-47a2-4ac4-a84d-f17e31b3b432 - Mass - 40.874037770961429 - - - - - 30.256638721061549 - - MI_Restricted_Substances - 59ed9004-2126-437f-aa61-b8a0189e69d3 - - Oil quenched & tempered at 650°C - Carbon steel, AISI 1095, oil quenched & tempered at 650°C - f496a5a7-129c-4e5d-9a3e-9be489e5d6b0 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - bc3e2ee0-f497-4f79-ac4f-f2f0366a4837 - Mass - 100 - - - - - 30.256638721061549 - - MI_Restricted_Substances - 9e4a9338-5342-488e-ba70-770407c295f3 - - Oil quenched & tempered at 315°C - Carbon steel, AISI 1040, oil quenched & tempered at 315°C - 4d0995c4-f147-4654-acba-39954f9a5d93 - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - 378919a5-f10e-482c-b0bf-3a0f529ee29e - Mass - 100 - - - - - - - 5 - 28.705036979496963 - 4bf6e986 - part_4bf6e986-258f-4be2-975a-b61b454fd036 - 4bf6e986-258f-4be2-975a-b61b454fd036 - - - 89.111171192075673 - - MI_Restricted_Substances - b22c05ba-b0f7-4e07-890d-c5066c0db098 - - 40% glass and mineral - PPA (40% glass and mineral) - d02fd096-bc39-4e63-8595-cabbda073d3f - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - a8915a7a-54fe-4180-9b14-2cd502ef844a - Mass - 100 - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - 5e09828c-7dc7-4c3d-a3de-81c97726afa3 - Mass - 100 - - - - - 2.7222072019810817 - - MI_Restricted_Substances - aa4ba2ad-ff11-448b-90e3-477f9a5f41fb - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 5150, oil quenched & tempered at 205°C - 8919da4a-bff7-471b-92d4-6e480aedd51b - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - 22a1af61-950f-4631-8e36-09b8b226cfcd - MassRemoved - 76.786467003070968 - - - - - 2.7222072019810817 - - MI_Restricted_Substances - 5b4ea232-c032-4f8d-a633-3b059e93651a - - 36%Co steel - Hard magnetic alloy, 36%Co steel - 937c119a-d8ab-4f2a-bfe6-527ed53f36e4 - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - b5585cab-ca53-42ae-893b-438529c3cc6b - Mass - 100 - - - - - 2.7222072019810817 - - MI_Restricted_Substances - 508489f2-cc48-4f0a-a6ee-482bb89a0386 - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 5160, oil quenched & tempered at 205°C - a772bd14-162d-4be6-8c68-3a6257195aa9 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - 2d8ffac5-4ca4-43ff-b862-abe7c992dea2 - Mass - 100 - - - - - 2.7222072019810817 - - MI_Restricted_Substances - 439e62b9-4268-44c6-a084-695412628448 - - water quenched & tempered at 425°C - Carbon steel, AISI 1095, water quenched & tempered at 425°C - 23ad95e3-9da9-4b3b-9a12-086d4e3782dc - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - 79ab9f32-6fa4-4744-8404-a78e113343ca - Mass - 100 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - 0fb5239f-3ffd-4eff-b115-ae18c7b5476a - Mass - 100 - - - - - - - 7 - 86.955840786432773 - 8850405f - part_8850405f-1bc8-4ee1-9e75-adcb828b2794 - 8850405f-1bc8-4ee1-9e75-adcb828b2794 - - - 59.7612447383633 - - MI_Restricted_Substances - b3c74dfc-9d72-4938-89cb-1a49ce0fdb80 - - Normalized - Carbon steel, AISI 1137, normalized - bef17b43-13e6-42d3-940e-9b453e4a92f6 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - b7684e39-7e3b-4dab-98cd-c9fd75c80e82 - Mass - 100 - - - - - 13.412918420545566 - - MI_Restricted_Substances - c80cfa14-8e35-42c8-a52d-d52864a3e2ea - - water quenched & tempered at 315°C - Carbon steel, AISI 1137, water quenched & tempered at 315°C - 11476ef8-d73f-4799-9563-3adac3b7fcf0 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - 1a829ca7-bbba-41e3-9e71-73e060cff916 - Mass - 100 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - 44697ca4-97e9-4840-9a94-831c57ced065 - Mass - 100 - - - - - 13.412918420545566 - - MI_Restricted_Substances - 9baf14a0-efff-4bce-9674-553db30bee1b - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 9255, oil quenched & tempered at 650°C - 070a8f49-a62c-48f5-8327-c2839138305a - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - f859aad7-e597-4c0f-8ee3-dbf8db722210 - Area - 56.935925575409051 - - - - - 13.412918420545566 - - MI_Restricted_Substances - d56a3593-45b4-418e-8f28-3fde55e8479f - - Homopolymer, 40% glass and mineral - PP (homopolymer, 40% glass and mineral) - a48ba86f-ca66-471e-99a7-11b96d16d089 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 928af391-7b14-4095-b310-7a0d4fb50d8b - Mass - 100 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 94837ed6-4763-4188-bcb2-f9d76fec1148 - Area - 93.1432443173338 - - - - - - - 5 - 58.993422267489791 - - MI_Restricted_Substances - a78dcd3a-f108-4fdb-857e-e2d00ed319d4 - - 09350fa0 - part_09350fa0-964d-456a-875c-2355638255a2 - 09350fa0-964d-456a-875c-2355638255a2 - - - 2 - 26.622188196807254 - - MI_Restricted_Substances - 3d4d35cd-1db3-477c-8f3f-b90800ea1c4d - - 0d5094b9 - part_0d5094b9-448f-4311-96e4-6355b5ea980e - 0d5094b9-448f-4311-96e4-6355b5ea980e - - - 1 - 42.1211239612294 - 1d364f95 - part_1d364f95-3b32-4f32-aed1-367c536a532f - 1d364f95-3b32-4f32-aed1-367c536a532f - - - 48.23920561384373 - - MI_Restricted_Substances - 7c0b2792-bc51-4837-a380-6cdb1c2fba31 - - water quenched & tempered at 205°C - Carbon steel, AISI 1030, water quenched & tempered at 205°C - f8179b44-4bf0-491c-876d-0a6302555b8e - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - ae31d735-5ef4-4561-bf00-7c41b089d9dd - Mass - 100 - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - cc5b04e5-eddd-4572-abff-9cc328602f24 - MassRemoved - 56.827286843595694 - - - - - 6.4700992982695338 - - MI_Restricted_Substances - 6ad963b9-76ae-4d8e-be3b-12ec82c47054 - - Normalized - Carbon steel, AISI 1060, normalized - 1b3b78c7-840c-4991-945a-88510fccafa2 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 1a66aa79-8651-4c8e-9c86-a52ef36c31d5 - Mass - 100 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - d4f821e2-4a23-4cf2-8926-65786d7012f9 - Length - 55.494785101849018 - - - - - 6.4700992982695338 - - MI_Restricted_Substances - 3bed321b-712b-4769-ba8b-7297fb3569a7 - - Quenched & tempered - Low alloy steel, AISI 4340, quenched & tempered - 33a3eff2-e1e4-4c21-8ac7-9a905e1e862e - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - 20fe4340-06c7-41b8-81d6-ca1340e1c90a - MassRemoved - 24.664297990810265 - - - - - 6.4700992982695338 - - MI_Restricted_Substances - eb2b811b-1da6-465a-857f-6d14b372a38b - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 50B60, oil quenched & tempered at 650°C - 68c27c37-385d-499b-930c-b78158169706 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - 3f7cff83-2617-42ca-8868-574296edf06c - MassRemoved - 95.203585547955512 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 0a3118ff-9aae-4571-8895-a58ba84e33c9 - Length - 23.362058039457565 - - - - - 6.4700992982695338 - - MI_Restricted_Substances - bbe0765c-012b-434e-878b-b40ad692b373 - - YS550, hot rolled - High strength low alloy steel, YS550, hot rolled - c3492580-102d-4f91-8dfd-26db637181af - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 0c776f58-0051-4cb9-bb26-9be1e376bc3f - Area - 45.541906378018624 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 58f68306-3ccd-4ebf-b67f-0ae0f313ceec - Length - 40.215967567738133 - - - - - 6.4700992982695338 - - MI_Restricted_Substances - ee08f647-79af-49f3-98c5-043480a0fed4 - - Quenched & tempered - Low alloy steel, 4330V, quenched & tempered - 99290faa-a92c-4583-9b0d-32539e92b2d6 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - d0100540-dda2-4a97-bd09-1427497475ed - Length - 9.7285465848299424 - - - - - 6.4700992982695338 - - MI_Restricted_Substances - 356303d7-c574-4db7-80f9-427e176a5308 - - 40CrMoV13-9, quenched & tempered - Low alloy steel, 40CrMoV13-9, quenched & tempered - 74840c65-ae0a-441a-b6d8-05e21554527f - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - 66e4f09a-f36b-4510-8f50-40a22c2eb3e7 - Length - 43.417602844265105 - - - - - 6.4700992982695338 - - MI_Restricted_Substances - bbe3f98a-e574-482b-99cc-74e13b224dd3 - - Normalized - Low alloy steel, AISI 5160, normalized - 4e5bd8ab-b97d-437f-ab80-0c5670286203 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 51a5107c-bc3c-47c7-b6b2-23d2c8dcacec - Mass - 100 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 2c1e3bc7-75c6-4638-9130-f90efe2c2d5c - Mass - 100 - - - - - 6.4700992982695338 - - MI_Restricted_Substances - 1b3f17f9-2754-4fc4-bfa2-75ff0df55185 - - Polytetrafluoroethylene (PTFE)/Glass fiber, PCB laminate - Polytetrafluoroethylene (PTFE)/Glass fiber, PCB laminate - 4bfe58f3-cbc1-453e-92e9-688613f20f8f - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - c037fd34-47c3-445e-87e8-1c86512d3786 - Mass - 100 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 3e213698-14d3-42a2-9989-af8aa3312172 - Mass - 100 - - - - - - - 5 - 85.95529663653825 - 7ec3a18c - part_7ec3a18c-ffff-439f-9305-d9748487b66a - 7ec3a18c-ffff-439f-9305-d9748487b66a - - - 33.465488456872059 - - MI_Restricted_Substances - 9a48479a-292f-4bdd-aab5-0ad0835d7480 - - Oil quenched & tempered at 205°C - Carbon steel, AISI 1095, oil quenched & tempered at 205°C - 643411c0-010a-4d78-907b-49a80a3e41e3 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 7e66d1e3-6dba-410f-aa77-dc1022601c9c - Area - 5.7855534859865685 - - - - - 13.306902308625586 - - MI_Restricted_Substances - 5dbabc2e-4263-4458-abe1-31a2ece9e122 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 5160, oil quenched & tempered at 425°C - 4a10af13-f6ee-4995-8344-1ce2bad199ca - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 1a8fbc41-1827-4377-bb92-afb85abba9f9 - Length - 69.058964759604521 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - 488d255d-4e2b-46af-9be2-a1ce70d1e17d - Mass - 100 - - - - - 13.306902308625586 - - MI_Restricted_Substances - ef0841e5-8fb9-46b4-aebb-deda5cb684ec - - SAE 8630, cast, quenched & tempered - Low alloy steel, SAE 8630, cast, quenched & tempered - 56a154cf-def2-47ce-ba1e-484564e1d13b - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - 8935f69d-9e5d-4df9-8a90-62331e6f350c - MassRemoved - 54.872865860756889 - - - - - 13.306902308625586 - - MI_Restricted_Substances - 87e1a3cd-fd79-4013-b5f8-56d6f28bef34 - - Oil quenched & tempered at 540°C - Carbon steel, AISI 1144, oil quenched & tempered at 540°C - 426844c2-8310-476f-9003-ddaa939ef946 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - 42356d23-a1bc-4085-918b-bcbb85dac7ce - Area - 52.543598111972024 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - 0be48a8b-c143-4f2c-bc8a-1758c2e59f2e - Mass - 100 - - - - - 13.306902308625586 - - MI_Restricted_Substances - a22f3160-83fe-4a55-8459-26e3f8647523 - - 55% glass and mineral filled - PARA (55% glass and mineral filled) - c0f5f88d-93d8-43a3-a832-ac7880083a80 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - c53b58fa-c2ae-4d10-ab66-8ab56b237087 - Mass - 100 - - - - - 13.306902308625586 - - MI_Restricted_Substances - 90b2285b-4295-429d-beb8-90d9f5df0101 - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 5046, oil quenched & tempered at 315°C - 0fa102a1-3015-4fd7-b13a-b44d6884f7b5 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 4d590157-848b-4d72-a031-b06cdb939687 - Mass - 100 - - - - - - - - - 4 - 3.0763709931989998 - 70f8232a - part_70f8232a-26b1-483d-adaf-c07e456b7752 - 70f8232a-26b1-483d-adaf-c07e456b7752 - - - 55.761856239178151 - - MI_Restricted_Substances - e8c6d73a-bd7a-4ef3-ae11-48e45d4a5515 - - Glass, E grade (0.4-12 micron monofilament, f) - Glass, E grade (0.4-12 micron monofilament, f) - b9ee7aab-1861-48b9-a1a2-1e4bdefc22ec - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 8d8d943a-0d46-40ba-bb6a-93f0a1dd920c - Mass - 100 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - e149f253-572a-4bc6-83d2-bf194e5708e1 - Mass - 100 - - - - - 8.84762875216437 - - MI_Restricted_Substances - 5169a157-0d18-4d45-b197-799e06aa00bc - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 9255, oil quenched & tempered at 315°C - a3bb3af9-27e6-46ca-bb64-6a2a0623375e - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 3f5ff23d-4c89-4dab-8f73-bd7fd2175a77 - Mass - 100 - - - - - 8.84762875216437 - - MI_Restricted_Substances - 6fa5237c-2f5c-4220-941e-b19cd18ec544 - - Normalized - Low alloy steel, AISI 6150, normalized - 21276669-329f-4952-91ad-c2f79f3ce717 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - 7c6466b4-6d98-4968-9b81-d26df9d89279 - Length - 0.81775076725415452 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 373fe6b4-5498-48a5-8d41-e8b382c1feb0 - Mass - 100 - - - - - 8.84762875216437 - - MI_Restricted_Substances - b1fc58b3-1acb-4c8b-9974-7c4692ec32d0 - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 8650, oil quenched & tempered at 650°C - 6c87c1c2-8743-45ad-9362-0f5eeac27b1b - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - fe5fb621-4a55-4fcc-80f4-aadc5cfcb7e4 - MassRemoved - 1.9487852239742804 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - b6f0f8ac-a0d0-4381-88f3-1863b47446ca - Mass - 100 - - - - - 8.84762875216437 - - MI_Restricted_Substances - d50ee383-7a44-463f-b42b-c38a6c6bb6d3 - - Oil quenched & tempered at 425°C - Carbon steel, AISI 1040, oil quenched & tempered at 425°C - 1e5cd8b2-d920-4941-8f4e-7b859656f987 - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - 9b183e4f-7788-4a74-a9e0-805a3aa2c821 - Mass - 100 - - - - - 8.84762875216437 - - MI_Restricted_Substances - 6ad310ec-db2b-43b1-afa1-9b6ddae5880c - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 94B30, oil quenched & tempered at 425°C - fcc06535-6584-46b3-85f4-06d2a1ca8b03 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - db527b24-9abe-4698-aae4-4a48e47960da - Mass - 100 - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 7b80ef3d-93d3-4c79-a573-357a2a358a6b - Mass - 100 - - - - - - - 9 - 89.669350529866918 - 195a024b - part_195a024b-3e4f-4b19-bbad-f089cd62b2bf - 195a024b-3e4f-4b19-bbad-f089cd62b2bf - - - 76.578830078513747 - - MI_Restricted_Substances - 439e62b9-4268-44c6-a084-695412628448 - - water quenched & tempered at 425°C - Carbon steel, AISI 1095, water quenched & tempered at 425°C - 67b10f59-fbbc-4c3b-8944-0ef9570b59db - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 2d6d5a93-a89c-4d00-b5b8-db49fa9ebc05 - Mass - 100 - - - - - 4.6842339842972507 - - MI_Restricted_Substances - ee5b018e-8d7f-4fb1-bad0-c73e871592bc - - 16Mo3, normalized - Low alloy steel, 16Mo3, normalized - 32a07b48-d0be-45e3-8e51-0f34a1c5907e - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 784bc120-d206-407b-b38f-31adfa10df74 - Length - 35.619115752921957 - - - - - 4.6842339842972507 - - MI_Restricted_Substances - d50ee383-7a44-463f-b42b-c38a6c6bb6d3 - - Oil quenched & tempered at 425°C - Carbon steel, AISI 1040, oil quenched & tempered at 425°C - e39e44b3-6e2f-4be5-ae25-ad420f1a6299 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 3ce2aaba-d58e-48ba-8e89-c26b8897924a - Mass - 100 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 9f669457-a33c-4f78-8bb6-1841e5c149d6 - Mass - 57.056501999989386 - - - - - 4.6842339842972507 - - MI_Restricted_Substances - fef7ffc8-9e47-4d80-abd6-138167e14e08 - - Oil quenched & tempered at 650°C - Carbon steel, AISI 1141, oil quenched & tempered at 650°C - e66aee7e-347b-4988-9e0b-bfcdc3a83dbe - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 27c37fbc-313f-483d-8e63-f496eb533762 - Mass - 100 - - - - - 4.6842339842972507 - - MI_Restricted_Substances - ef0841e5-8fb9-46b4-aebb-deda5cb684ec - - SAE 8630, cast, quenched & tempered - Low alloy steel, SAE 8630, cast, quenched & tempered - 7b7fb783-ed2c-4847-b99e-daeb6d988eda - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - c031e592-e0e0-4af9-8fc3-9de1734131b7 - Mass - 18.838563151116745 - - - - - 4.6842339842972507 - - MI_Restricted_Substances - 30d9edb0-09d2-4270-b4f5-8dceb44a6bd6 - - Oil quenched & tempered at 540°C - Carbon steel, AISI 1137, oil quenched & tempered at 540°C - 20ee1902-c282-4a50-92f6-2c9eacb73737 - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - 7e9cba50-9b50-439e-b58a-a458daa1e0d9 - MassRemoved - 97.325158676749638 - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - 5aa5f843-256e-4b4f-80aa-dd2b4e23e01a - MassRemoved - 3.297125503093528 - - - - - - - 6 - 23.241366503406951 - 14f0e1e4 - part_14f0e1e4-6765-4893-b03e-d2d1c17b8c71 - 14f0e1e4-6765-4893-b03e-d2d1c17b8c71 - - - 80.530636562281586 - - MI_Restricted_Substances - 90514ab4-75b3-48a9-9a07-98eb8f83ef81 - - As rolled - Carbon steel, AISI 1015, as rolled - 8e890dd5-0db6-4029-9435-1419f60aaa4f - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - f503fe00-672f-4ab5-82f5-a2aa8e08a5f9 - Mass - 100 - - - - - 2.7813376339597733 - - MI_Restricted_Substances - d02817f7-7500-4fcb-8c34-40927da681a5 - - Quenched & tempered - Carbon steel, SA216 (Type WCC), cast, quenched & tempered - 514c71a8-0111-45cc-bdcc-522dee776a2d - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - f2e8ca05-a474-49f3-a82c-c093fe13ba1b - Mass - 100 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 3452d23d-9d95-4467-9863-c68df83acf57 - Mass - 100 - - - - - 2.7813376339597733 - - MI_Restricted_Substances - 2a840794-eac4-4f77-90ba-f84bce518c0f - - Glass/phenolic honeycomb, 0°/90° fabric (0.055) - Glass/phenolic honeycomb, 0°/90° fabric (0.055), L Direction - bed81f2c-30e8-4eac-89b1-b4124a045c14 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - a8a45f5a-eead-4c40-b962-b6f711d06505 - Mass - 100 - - - - - 2.7813376339597733 - - MI_Restricted_Substances - 853c3077-4ccc-4b2e-a5dd-86833072391f - - Borosilicate - 7040 - Borosilicate - 7040 - 225f24ae-df65-45e5-8d8a-1a0f2838f5e9 - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - 6ebce5ce-d522-424a-9f65-be0123e5b12c - Mass - 100 - - - - - 2.7813376339597733 - - MI_Restricted_Substances - db238d75-fcb8-41f5-9289-83a352fa83a6 - - Annealed - Carbon steel, AISI 1015, annealed - b062ad8c-661d-447d-9ae2-5cc335062018 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 7160180b-1ce7-4223-b42c-2ba3efd257a9 - Mass - 100 - - - - - 2.7813376339597733 - - MI_Restricted_Substances - fc29cc59-a670-4ad6-85a0-eb07bf011f1a - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 6150, oil quenched & tempered at 425°C - 79c6cff6-2005-4f5e-9970-4ecdabcdba03 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 7fa9eff0-d7d6-4027-8ae5-e9553d3961dc - Mass - 100 - - - - - 2.7813376339597733 - - MI_Restricted_Substances - 9966da3f-c3f0-414e-9bce-4211a9eca2c3 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 8650, oil quenched & tempered at 425°C - 432ed0ab-8b6f-4207-855c-18fee527464a - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - c741e169-ad19-4998-9a3d-5b145647b204 - Mass - 100 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 47b4f5f2-84cd-4710-af7b-781e8cbb2468 - Mass - 100 - - - - - 2.7813376339597733 - - MI_Restricted_Substances - 644fc87d-87f3-468c-9a88-b8e2db43ae6b - - water quenched & tempered at 650°C - Low alloy steel, AISI 4130, water quenched & tempered at 650°C - 183ed598-d9ff-459c-9384-b0d45dd21779 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - a030dd08-4257-44c8-b5bc-ae9bc3d431ca - Mass - 100 - - - - - - - 9 - 32.967550322864 - - MI_Restricted_Substances - d89d67b6-c08f-47cb-b03a-4203cebfdf32 - - 00221385 - part_00221385-b3a7-46f9-aebd-3087369e83b7 - 00221385-b3a7-46f9-aebd-3087369e83b7 - - - 6 - 21.742705498702222 - 6c5f74ba - part_6c5f74ba-0b4a-4905-96ff-2ca89616bb58 - 6c5f74ba-0b4a-4905-96ff-2ca89616bb58 - - - 100 - - MI_Restricted_Substances - ddefbfb8-3b97-480b-887d-0ddadf161d95 - - YS350, cold rolled - High strength low alloy steel, YS350, cold rolled - d1fbfd45-2c54-40a3-bc7d-de35f6f526c6 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 49ae8788-cf29-4a3f-a545-16d8ae62529a - Area - 28.950212769652815 - - - - - - - 9 - 75.268144381823092 - e0926bb0 - part_e0926bb0-dc65-4c45-9456-7801829e6348 - e0926bb0-dc65-4c45-9456-7801829e6348 - - - 8.0295675937224029 - - MI_Restricted_Substances - 29b76cdc-672e-4a1f-8f6e-a5644857c880 - - Normalized - Low alloy steel, AISI 4135, normalized - 0625ef7f-e6ef-4910-9974-14d8e7ffbf87 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - 567d9e98-4502-4648-b8b3-ef082fc0e233 - Length - 55.245141896999037 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 424ee1ae-6beb-4d22-b51e-e53b6159a395 - Length - 65.763432004378842 - - - - - 91.9704324062776 - - MI_Restricted_Substances - 7b330562-a44d-4de7-8944-99c0b7b0d3e1 - - Quenched & tempered - Low alloy steel, AISI 8630, air melted, quenched & tempered - ee66e643-60b1-4a36-b83e-c56f8a3ac3b2 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - 361bf8c7-4339-43e9-870e-3f0320c7f1ea - Mass - 100 - - - - - - - 4 - 25.966840854830497 - - MI_Restricted_Substances - a0987114-e9d2-4390-9d0f-e47283d2f4d0 - - f45dac5d - part_f45dac5d-02aa-4f5f-bfa7-35598d01e8f9 - f45dac5d-02aa-4f5f-bfa7-35598d01e8f9 - - - 1 - 65.162508639117007 - - MI_Restricted_Substances - 80083213-3621-42c0-9e23-cdaa30c759e6 - - 24a1ba54 - part_24a1ba54-01ac-4d58-936c-e842059a983c - 24a1ba54-01ac-4d58-936c-e842059a983c - - - 7 - 53.298955947765592 - b780524b - part_b780524b-e786-4e66-be8b-6fbbafc3f87a - b780524b-e786-4e66-be8b-6fbbafc3f87a - - - 92.576923776686627 - - MI_Restricted_Substances - 475d8bcb-500e-44b5-90be-8a095f5ab07a - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 4140, oil quenched & tempered at 425°C - 9d572329-af29-4a6d-ac29-60fa58766512 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - 0a91caa4-8765-4ece-b073-d8f1f6ab1cb1 - Mass - 100 - - - - - 3.7115381116566866 - - MI_Restricted_Substances - 1556b3f0-3dc4-44ab-83b2-87712f9bfa12 - - Oil quenched & tempered at 650°C - Carbon steel, AISI 1080, oil quenched & tempered at 650°C - cf52a155-53ef-451c-8360-0d869f854d6e - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - a6929cda-f7db-4523-ac1f-1ddbb79f43a2 - Mass - 100 - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 05e0caa4-c084-44cd-be3b-4843a77b771e - Mass - 100 - - - - - 3.7115381116566866 - - MI_Restricted_Substances - b10ab099-72fd-4e47-9274-015a08f619c2 - - Annealed - Low alloy steel, AISI 5160, annealed - de9272d8-4023-4cff-ade0-8b878a046467 - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 8f56072b-43c9-400b-8c5b-e67d98543ea7 - Mass - 100 - - - - - - - 8 - 89.323968900984141 - e32026d2 - part_e32026d2-7426-453f-9f94-00e6a7129fb9 - e32026d2-7426-453f-9f94-00e6a7129fb9 - - - 63.923723187262063 - - MI_Restricted_Substances - a7ada434-62e4-411d-9c85-56dd9d44f094 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 4037, oil quenched & tempered at 425°C - 1591d1c1-f69a-4920-b545-e756b25efa02 - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - b4d92019-dff1-4dd2-983f-4245e08b6729 - MassRemoved - 15.281639953740706 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - 141a817e-ba3d-48a5-a2a1-6b2aeb1dd775 - MassRemoved - 97.204909938017323 - - - - - 18.038138406368969 - - MI_Restricted_Substances - 1a53b354-59b1-4129-a78d-0bfe95923541 - - Normalized - Carbon steel, AISI 1117, normalized - 54a22a08-9d3d-41be-a178-7bfea1c0def2 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - a580dffc-d62a-4f65-8eca-1a96dc2bab28 - Mass - 100 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - 65585d20-e1c8-4fc2-adb5-23241e9f0c2c - MassRemoved - 75.3266816843891 - - - - - 18.038138406368969 - - MI_Restricted_Substances - af4f67b9-f5a7-4fc3-9f1d-da3309e4b19a - - Solution treated & aged - Iron-base-superalloy, Cr-Ni alloy, A-286, solution treated & aged - f7524499-f199-4c35-acee-8b946572cba5 - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - 340f4f86-69e5-4f05-8788-2b0869a01cd2 - Area - 12.006861675533868 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - 6fef669b-ccb3-43cf-9954-02254a164867 - Mass - 100 - - - - - - - 3 - 38.096549659081056 - e9e99fb0 - part_e9e99fb0-50c3-47a8-adb5-23809d70c70d - e9e99fb0-50c3-47a8-adb5-23809d70c70d - - - 87.232606991768165 - - MI_Restricted_Substances - ca72e2f5-a1d0-4bb0-b612-ed5bc26a4f70 - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 9255, oil quenched & tempered at 205°C - 47e5ed4b-71bd-44d3-b97d-2a1dbe69dfcc - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - e0ef29af-af9e-4bd7-944e-f5b0b133a5a0 - Mass - 100 - - - - - 1.8239132868902621 - - MI_Restricted_Substances - ce68d49d-fe57-4723-8f98-557cd3558504 - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 5130, oil quenched & tempered at 205°C - e618c697-f36c-4e11-84d4-e85497c3688c - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - 7e30a310-fa69-4545-ab39-35fc44b41dcd - Mass - 100 - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - 8797b082-90f7-4d9e-8019-de8abe847279 - Mass - 100 - - - - - 1.8239132868902621 - - MI_Restricted_Substances - a8bcc71d-ff19-40c8-9520-f11553c604d2 - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 5140, oil quenched & tempered at 650°C - c94214b9-09c7-4c4f-b9c4-afe7d09b77e1 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - 874b120c-0b48-493a-b02d-e92c3b98d73b - Mass - 100 - - - - - 1.8239132868902621 - - MI_Restricted_Substances - 63d5d6b5-3b52-4cd9-a56f-6e7c5c945139 - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 81B45, oil quenched & tempered at 315°C - e2fe75b0-1acc-4f11-a21b-311175a51273 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - c568c62a-1fec-4afc-b7de-314cd0c0d04a - Area - 57.159808816928326 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 30220a65-a1b4-4785-b503-01ba788bc54c - Mass - 100 - - - - - 1.8239132868902621 - - MI_Restricted_Substances - 00268f25-08c7-4add-91f3-3cc4ed1d7e34 - - Oil quenched & tempered at 425°C - Carbon steel, AISI 1141, oil quenched & tempered at 425°C - 7270e0db-6963-46f6-aa14-2d3bf76e8e14 - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - f85671b9-370d-4034-bc4f-91e9b2645d55 - Mass - 100 - - - - - 1.8239132868902621 - - MI_Restricted_Substances - 31098687-aa58-4d56-99a0-f005a0258573 - - Glass/phenolic honeycomb, 0°/90° fabric (0.192) - Glass/phenolic honeycomb, 0°/90° fabric (0.192), L Direction - 458fc706-f4c8-4840-bc3b-a6e5de550e85 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - c838b879-07b5-4680-9e88-603b597a4539 - Mass - 100 - - - - - 1.8239132868902621 - - MI_Restricted_Substances - d7980de6-355d-48d2-93d7-471e3ef3b2cf - - Glass/phenolic honeycomb, ±45° fabric (0.032) - Glass/phenolic honeycomb, ±45° fabric (0.032), L Direction - 844def21-3a0f-425a-8e15-cf610855ec9e - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 62e6ab6e-6064-4c9c-ba09-ae7d2b2e3592 - Mass - 100 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 34028294-f961-400d-953c-7f2540574fe2 - Length - 76.6911161954939 - - - - - 1.8239132868902621 - - MI_Restricted_Substances - b4c065d7-6405-44fb-82cf-24ca2072f5c9 - - 300M (high carbon), quenched & tempered - Low alloy steel, 300M (high carbon), quenched & tempered - f1e42820-36e3-45dc-8a88-377a62883605 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 574de17d-5db5-4608-a946-68638b80c028 - Mass - 100 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 0506eeaf-1da0-44f5-9afa-4c873de9c3e6 - Length - 27.848751157451773 - - - - - - - 5 - 11.748979292693072 - 3e10fad4 - part_3e10fad4-becd-452d-847f-d3d359bca87f - 3e10fad4-becd-452d-847f-d3d359bca87f - - - 90.280809668023522 - - MI_Restricted_Substances - 9d224642-fb07-41ce-8191-c9b152122364 - - Quenched & tempered - Intermediate alloy, Fe-9Ni-4Co-0.30C steel, quenched & tempered - f4e5f17e-5646-404e-8cad-9fb8b98b4b1f - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - b2f45626-87b6-4f1b-b78e-7fe6cd1b992b - Mass - 100 - - - - - 3.2397301106588259 - - MI_Restricted_Substances - 8dc38bb5-eff9-4c60-9233-271a3c8f6270 - - Kovar, annealed - High alloy steel, Kovar, annealed - 19f5d901-382d-4eb3-a83e-a22dc1973b31 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - b80711d1-5204-4ad6-8a75-c7faf5917347 - Length - 31.375387511856566 - - - - - 3.2397301106588259 - - MI_Restricted_Substances - 1d9c8629-4a1d-4aaf-bb7c-ba7a97eef5f5 - - Normalized - Carbon steel, AISI 1340, normalized - e1c1b24a-48a4-4be7-8924-fd96253f0c4f - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - 897bd7db-049a-4516-8474-7114d5eb7c5b - Mass - 100 - - - - - 3.2397301106588259 - - MI_Restricted_Substances - b35cf8d2-52a2-4761-b692-efabffabb0a6 - - As rolled - Carbon steel, AISI 12L14, as rolled - b4fc954b-520d-40b3-a2ef-6129530dc340 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 3e166ff8-b82b-45fc-bc26-05adf6858d0c - Mass - 100 - - - - - - - 4 - 18.434632624701891 - a493414a - part_a493414a-2c8e-457d-9c57-94cadceaacd5 - a493414a-2c8e-457d-9c57-94cadceaacd5 - - - 21.460491847926981 - - MI_Restricted_Substances - a01be0be-96e7-4123-b061-dfdbba1f1748 - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 4037, oil quenched & tempered at 315°C - 6f490b8a-1bb1-4ed9-9273-2535d138e992 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - fb0c9722-d432-4d8e-8b46-eeb9a90400ae - Mass - 100 - - - - - 39.269754076036506 - - MI_Restricted_Substances - db7d255c-6269-4097-a5aa-e18a13019915 - - FR-4.0 (Df < 0.01 at 10GHz), Epoxy/Glass fiber, PCB laminate - FR-4.0 (Df < 0.01 at 10GHz), Epoxy/Glass fiber, PCB laminate - 6205bae6-cadd-45e7-aba1-c3f660389d5c - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - 4c328ecd-d9fb-45aa-bff7-f8f8563c873c - Mass - 100 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 0da2f37f-a727-4c85-ac8e-52bde6211587 - Mass - 100 - - - - - 39.269754076036506 - - MI_Restricted_Substances - f65c5c4d-fbd1-4a54-8172-d3aba34c4c3a - - Annealed - Low alloy steel, AISI 4340, annealed - a1d20d36-f931-429d-a4f7-9a53c6acfd09 - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - 210b2098-6b44-467e-bb47-1f6d51c42e8b - Mass - 100 - - - - - - - 5 - 63.519481505974881 - b74fe856 - part_b74fe856-1cfa-4217-a3ac-a311a27d7aa9 - b74fe856-1cfa-4217-a3ac-a311a27d7aa9 - - - 94.424766904872271 - - MI_Restricted_Substances - 3e7feb56-09b4-498c-9966-c13b33dedccd - - water quenched & tempered at 205°C - Carbon steel, AISI 1137, water quenched & tempered at 205°C - fdc736a6-eeed-4531-b299-b3286941f188 - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - 49206114-ba04-4d29-9247-c0a62fb3da8b - Mass - 100 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - be9698e6-9653-4c5d-a642-b120dd4d8fc2 - Mass - 100 - - - - - 1.8584110317092428 - - MI_Restricted_Substances - f65c5c4d-fbd1-4a54-8172-d3aba34c4c3a - - Annealed - Low alloy steel, AISI 4340, annealed - afa33e0e-ea40-434d-9e1e-e027575a3962 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - e8633a1f-f4b1-4273-86a1-c1abfaa2169b - Mass - 100 - - - - - 1.8584110317092428 - - MI_Restricted_Substances - 6d658600-d198-46ed-bcca-cd0e3e2f5f4d - - Oil quenched & tempered at 425°C - Carbon steel, AISI 1060, oil quenched & tempered at 425°C - fd950d24-e9d5-49ba-88b2-2eab4f6676fc - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 5200ca4d-b9a1-4b75-b110-d3e6bbcfc2e9 - Mass - 100 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 0c8c7d8c-abef-45ba-b45d-9d46600da479 - Area - 4.6632376986850232 - - - - - 1.8584110317092428 - - MI_Restricted_Substances - aec2777b-f126-4f12-b748-b94bf7393f2a - - Oil quenched & tempered at 650°C - Carbon steel, AISI 1060, oil quenched & tempered at 650°C - 79efa484-5232-4d43-89cc-4df07b2f7710 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - f2b9be9c-065a-4cb7-bb3a-91d15c0da6a2 - Mass - 100 - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - 59d4441e-0d49-454f-8792-5ed9e1077e55 - Mass - 100 - - - - - - - 4 - 77.080678882580571 - e4846aaa - part_e4846aaa-7030-44d8-86a2-6d16f9870dfe - e4846aaa-7030-44d8-86a2-6d16f9870dfe - - - 22.162508648895894 - - MI_Restricted_Substances - 5dbabc2e-4263-4458-abe1-31a2ece9e122 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 5160, oil quenched & tempered at 425°C - a85e8b0c-629b-492f-9e8f-b722a47356bb - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 468a3b3e-a3a3-4eb3-b340-f061f8c02506 - Area - 97.576662151877144 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - 29b6840a-3421-4551-a038-0d4c71805cb8 - MassRemoved - 31.97802865504195 - - - - - 15.56749827022082 - - MI_Restricted_Substances - 9d224642-fb07-41ce-8191-c9b152122364 - - Quenched & tempered - Intermediate alloy, Fe-9Ni-4Co-0.30C steel, quenched & tempered - 4d3f486c-0f70-4522-9fbe-098b92bb9fbd - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - a54b7ead-0c88-4e24-9b62-d62c7fff051f - Mass - 100 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 5c11af00-f631-4998-ba25-9f61da956951 - Mass - 100 - - - - - 15.56749827022082 - - MI_Restricted_Substances - 3427457c-2b3d-4a7e-adbc-40fddd4c1f0e - - Normalized - Carbon steel, AISI 1020, normalized - d8bb7304-72ad-4659-a203-bb9538a5f4c2 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - 4c4b4778-7bc0-4218-a370-1e68bd6124d9 - MassRemoved - 22.082696818785134 - - - - - 15.56749827022082 - - MI_Restricted_Substances - ddefbfb8-3b97-480b-887d-0ddadf161d95 - - YS350, cold rolled - High strength low alloy steel, YS350, cold rolled - d97b1f11-dbd3-4d5b-adc3-7a341c0102e2 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - 47bbacde-0746-4420-bcb2-0868ce452618 - Mass - 100 - - - - - 15.56749827022082 - - MI_Restricted_Substances - b0c0246d-7238-46e4-9081-5bad34efbbdb - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 5140, oil quenched & tempered at 205°C - 6286beb2-d177-41cb-ba24-9907a04f02f7 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - eeae8e7f-b263-4993-bace-18b73e205c15 - Mass - 100 - - - - - 15.56749827022082 - - MI_Restricted_Substances - 0c172430-369d-48ad-910e-69fe1451a36e - - Normalized - Carbon steel, AISI 1095, normalized - a73f6675-eaa3-4004-9b77-6c49339c9ff3 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - e81a0263-0def-4aea-a0d6-e90ab2aa8b88 - Mass - 100 - - - - - - - 8 - 81.068579610934748 - - MI_Restricted_Substances - 2c677abc-5da2-4b21-9ce7-1d4e1cc0fb1c - - b5bf3503 - part_b5bf3503-c2cb-4a72-9c0f-7376cb2517d4 - b5bf3503-c2cb-4a72-9c0f-7376cb2517d4 - - - 3 - 15.700913181389176 - 8210398c - part_8210398c-aaf0-43f7-a5ff-df80e79cf3ee - 8210398c-aaf0-43f7-a5ff-df80e79cf3ee - - - 69.632973461241 - - MI_Restricted_Substances - 546a4247-5e3b-4adb-bc7e-3fc87f992447 - - Glass/phenolic honeycomb, 0°/90° fabric (0.055) - Glass/phenolic honeycomb, 0°/90° fabric (0.055), W Direction - 44a3e2c7-4127-4455-8f81-cde7273288ee - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 77287849-ec77-4920-b347-7256e0fafd43 - Mass - 100 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - 5595bcbe-fef5-422e-81b1-22d819f4917e - Mass - 100 - - - - - 3.7958783173448758 - - MI_Restricted_Substances - 4b01d1e1-0f4c-4861-a797-7ea504ca38c4 - - Annealed - Low alloy steel, AISI 5150, annealed - 0cbaebc3-d894-4c2c-a8b7-fe3550381f20 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 08103bd5-a39d-4af5-9831-86999d865808 - Mass - 100 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - a8f6049b-2e2c-4238-b19a-d60b2fe5cbea - Mass - 100 - - - - - 3.7958783173448758 - - MI_Restricted_Substances - 6f9ce415-05a1-4774-bf1d-8952ab0f7306 - - Annealed - Low alloy steel, AISI 3140, annealed - b0d2f6dc-8f7c-4edc-b53f-1b3e2483b7eb - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - 1b54f288-298c-4025-834a-c8f51d922266 - Area - 48.800121363624989 - - - - - 3.7958783173448758 - - MI_Restricted_Substances - 75a1c963-399c-444d-a38f-1929c00d15b7 - - Normalized - Low alloy steel, AISI 4150, normalized - 6de439af-fed7-4b77-973f-6ea42f142d38 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - a802bf5c-7424-4c38-82ee-265472c023c5 - Mass - 100 - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - b84fda56-2306-4a38-96bd-24cce1cc5d42 - Mass - 100 - - - - - 3.7958783173448758 - - MI_Restricted_Substances - c2db0402-57c5-422f-b8c1-470fc9c6a9c8 - - Glass/phenolic honeycomb, 0°/90° fabric (0.112) - Glass/phenolic honeycomb, 0°/90° fabric (0.112), W Direction - ecb55168-b41b-43ca-9618-4429d50c25eb - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 469406a2-91cb-4ab4-b28a-c67acccb0730 - Mass - 100 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - 8a073186-2e0a-4fe8-9785-facda396fce6 - Area - 11.150030517554855 - - - - - 3.7958783173448758 - - MI_Restricted_Substances - f931cdfe-568b-40b5-b238-ea22a815f312 - - ASTM A537 Class 1, normalized - Structural steel, ASTM A537 Class 1, normalized - 9adb933b-500f-4d0d-b6a8-36e2d08596a6 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - e4ec61b6-3156-44e2-b462-3b57835e8327 - MassRemoved - 7.8363897781057235 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - bc141ac6-6115-40a5-a0a9-188282d60cd2 - Mass - 100 - - - - - 3.7958783173448758 - - MI_Restricted_Substances - 04970b9b-7242-4f31-9a78-dee5e31ed341 - - As rolled - Carbon steel, AISI 1030, as rolled - 088be378-469c-495e-9909-523886534fef - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 21d7fd53-6d96-42d6-84e1-abb6c2c4e829 - Mass - 10.23056977904894 - - - - - 3.7958783173448758 - - MI_Restricted_Substances - 1a90238a-48c1-429a-83fc-e88d2c04dd94 - - Normalized - Low alloy steel, AISI 4140, normalized - 5048e052-f782-4b3a-b448-7bd7f648ea89 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - e170480f-259c-4407-a309-b0ea170503e1 - Mass - 100 - - - - - 3.7958783173448758 - - MI_Restricted_Substances - 79e715fe-fa1c-4bd9-9c99-83e41d74d87d - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 8630, oil quenched & tempered at 650°C - ed498724-7704-41fb-b943-86037c9ed2bb - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 02e846ea-584c-4a29-a82e-9067a7f01c9d - Area - 73.968612809650878 - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - e46e3ef9-69c9-44a0-bce9-87b1a96ceb91 - Mass - 100 - - - - - - - 3 - 65.04590705272085 - a457a7d2 - part_a457a7d2-a39c-4699-b2c4-cbc0fbaef423 - a457a7d2-a39c-4699-b2c4-cbc0fbaef423 - - - 89.822766925125734 - - MI_Restricted_Substances - 9c05e644-9257-4778-9c68-be0cff6f58b5 - - Annealed - Low alloy steel, AISI 8620, annealed - 94841a1a-6b1f-4db6-89c7-16a566c68bb2 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 7b18f2a9-1949-42ad-9001-8f14be8f579b - Mass - 100 - - - - - 2.5443082687185665 - - MI_Restricted_Substances - df40828d-d5c3-4a43-9f00-5de867f4f406 - - Normalized - Low alloy steel, AISI 4320, normalized - c5185d73-1569-4b14-a7f9-fdf4ff504f2b - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 8f29bf51-4fa8-4e4f-bb35-c49d08a40800 - Mass - 100 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - a15f246e-0d91-4685-9f92-365acfcd9c75 - Mass - 100 - - - - - 2.5443082687185665 - - MI_Restricted_Substances - ef4e19ac-4c9c-4fc1-b971-3ce21de330a2 - - Glass/polyimide honeycomb, ±45° fabric (0.128) - Glass/polyimide honeycomb, ±45° fabric (0.128), W Direction - 1605cb26-7283-4069-a6ac-a5dade1e63ae - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - b5855ad8-769a-40f5-8bba-1ee6824f19a3 - Mass - 100 - - - - - 2.5443082687185665 - - MI_Restricted_Substances - a6ee4feb-80c5-43a7-b3ee-a1423218f502 - - AF1410 - High alloy steel, AF1410, solution treated & overaged - 671a69d9-6c2b-409c-8196-30e3e97636d1 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 461f3020-5fe4-4eeb-a2ac-359a8eea06a1 - Mass - 100 - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - 75de2e44-2518-4212-b68b-cd5f68eb0842 - Mass - 100 - - - - - 2.5443082687185665 - - MI_Restricted_Substances - 33160988-8422-40e2-93d1-e3e7467eafe9 - - Normalized - Carbon steel, AISI 1030, normalized - 65ec1327-8d01-4d68-a55c-a5f04b293114 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 4d03e670-e7b0-4ca6-8f6f-509eb916e02a - Mass - 100 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - 5d9e5486-9b0c-460d-8224-e9c25d8a2b17 - Mass - 100 - - - - - - - 9 - 95.032587971087821 - c931aa13 - part_c931aa13-732d-4318-bed3-68ce005aee06 - c931aa13-732d-4318-bed3-68ce005aee06 - - - 16.335706839494271 - - MI_Restricted_Substances - b869cbb1-f68c-4d4a-ba09-c5ac060f1e31 - - Normalized - Low alloy steel, AISI 4620, normalized - ff67b556-303c-40af-a97f-17331d556521 - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - ee824d43-d43c-4944-a23f-5a21aab9e2ca - MassRemoved - 19.787212749844048 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 07ea8c41-6dc7-427b-929a-e9c0956b9886 - Mass - 100 - - - - - 13.944048860084289 - - MI_Restricted_Substances - aa963e30-fca0-439d-bee2-ff48daa946f3 - - As rolled - Carbon steel, AISI 1095, as rolled - 8016f162-1c68-443a-b881-717f1e33eda2 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - 2d8fc038-9b33-406e-91f0-54703ecdfe0f - Mass - 100 - - - - - 13.944048860084289 - - MI_Restricted_Substances - 7a62318a-eff2-4f36-9925-ee919c5b4369 - - S235J - Structural steel, S235J - ccd91f23-7ae8-4927-be26-8bebe007d4e3 - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - aa58fc1a-fd0d-402f-848b-01fe8c32e24f - Mass - 100 - - - - - 13.944048860084289 - - MI_Restricted_Substances - 3b818b25-e6de-4e5c-b546-e97c68e10225 - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 5046, oil quenched & tempered at 650°C - 43af60f5-260b-44d2-92a1-87f7febe4590 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - e441cf67-84b9-4aa5-9ffa-b4bbd7081a53 - Mass - 100 - - - - - 13.944048860084289 - - MI_Restricted_Substances - c372db87-c3ae-4ef1-a9e5-defa1160f895 - - Glass/phenolic honeycomb, 0°/90° fabric (0.112) - Glass/phenolic honeycomb, 0°/90° fabric (0.112), L Direction - e95ea201-68e6-41af-80fd-7d9a92ae3f6d - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - c2368517-a0cf-417c-b548-107832a0178e - MassRemoved - 7.3714083094948011 - - - - - 13.944048860084289 - - MI_Restricted_Substances - 3e7feb56-09b4-498c-9966-c13b33dedccd - - water quenched & tempered at 205°C - Carbon steel, AISI 1137, water quenched & tempered at 205°C - 87ec12a7-8cdd-4174-90ae-31a82bfce945 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - bb565928-1afb-49e8-8d4d-ee54fa3bd189 - Mass - 100 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - a889bc2d-0015-4165-a4fb-e5d1d837966f - Length - 15.515472188366331 - - - - - 13.944048860084289 - - MI_Restricted_Substances - 0840d007-df07-4e12-bda5-bfc060fb15e6 - - Annealed - Low alloy steel, AISI 4320, annealed - e94f9a80-5706-448a-846d-d6055c096ce5 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 5a324b5b-9b75-422b-badd-c6f6addc1fdd - Mass - 100 - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - 6456b4f8-63df-4346-b43a-d5904364e259 - Mass - 100 - - - - - - - 8 - 41.166951945594953 - - MI_Restricted_Substances - 3d4d35cd-1db3-477c-8f3f-b90800ea1c4d - - d98fa79d - part_d98fa79d-9a65-4010-8c95-627aef9463a7 - d98fa79d-9a65-4010-8c95-627aef9463a7 - - - 9 - 45.096217489380493 - 4c6fcfd8 - part_4c6fcfd8-27aa-418b-bc49-d1829aac31f2 - 4c6fcfd8-27aa-418b-bc49-d1829aac31f2 - - - 33.186481629119477 - - MI_Restricted_Substances - d7980de6-355d-48d2-93d7-471e3ef3b2cf - - Glass/phenolic honeycomb, ±45° fabric (0.032) - Glass/phenolic honeycomb, ±45° fabric (0.032), L Direction - b921b8b4-2c86-4bee-a0b7-c67d943ab3e9 - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - baa7ae9f-bf5f-4b8d-b3da-a2eb6dabbffb - Mass - 77.401227959152891 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 8ccf56ed-6624-4eeb-a014-3496d03c4eea - Mass - 39.094396838496628 - - - - - 9.5447883386972183 - - MI_Restricted_Substances - ab895171-8c16-4056-9062-78f7516be1b0 - - Borosilicate - 7050 - Borosilicate - 7050 - ca2ea373-9e27-4b69-aef4-519281dce6c9 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - f4f5493c-af77-431e-84b8-dc5839542adc - Area - 57.213367594971032 - - - - - 9.5447883386972183 - - MI_Restricted_Substances - 53268754-75cd-4016-8ed0-2577d32f766e - - As rolled - Carbon steel, AISI 1060, as rolled - 100eb4bb-59fd-4daf-8719-c5616d4e2aa5 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 4687d55a-1e3d-4a18-b3d9-5aa80b0df836 - Mass - 100 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - 780cc4b7-361a-46e6-8119-4a016124f789 - Area - 17.550300861499412 - - - - - 9.5447883386972183 - - MI_Restricted_Substances - a22f3160-83fe-4a55-8459-26e3f8647523 - - 55% glass and mineral filled - PARA (55% glass and mineral filled) - 5f210b37-d70c-42ae-81ef-8eee2decaa73 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 5b2b9ce6-2c6a-4041-904f-9d8860044acd - Mass - 100 - - - - - 9.5447883386972183 - - MI_Restricted_Substances - c372db87-c3ae-4ef1-a9e5-defa1160f895 - - Glass/phenolic honeycomb, 0°/90° fabric (0.112) - Glass/phenolic honeycomb, 0°/90° fabric (0.112), L Direction - e0ec696c-370a-4840-b698-797569a24214 - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 12522387-7f5d-429f-b2e3-2800e05fe4f9 - Mass - 100 - - - - - 9.5447883386972183 - - MI_Restricted_Substances - f508194e-6de7-4b6d-9f6f-7edb9addb85e - - Normalized - Carbon steel, AISI 1025, normalized - 7d6d4b93-fe09-48f6-90ca-06060782d354 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - 7415b6b0-5d98-44a7-83f1-e6ac5e820c5c - Length - 25.469624449251977 - - - - - 9.5447883386972183 - - MI_Restricted_Substances - bb5f06fe-89ba-4708-8639-2e15c5c1cc4c - - Glass ceramic - 0330 - Glass ceramic - 0330 - 61a17a52-00f5-49ea-a68c-201eee68b1e8 - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - 4dd9c8a6-a70c-4b6a-a543-ba7104ade0ff - Mass - 100 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 75680045-166d-4bf3-8184-e7f46c3f2eb5 - Mass - 100 - - - - - 9.5447883386972183 - - MI_Restricted_Substances - f05d84ea-b8e2-46d1-83a4-577038c5ed32 - - As rolled - Carbon steel, AISI 1040, as rolled - c74fc6fa-d1f5-4e4c-9807-045bd5eb53ac - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 726ff067-da3a-4633-83eb-03a663c2431d - Length - 29.97018035034192 - - - - - - - 1 - 94.821921267929454 - 45c3c5aa - part_45c3c5aa-ca54-4e38-8b94-588d5d0dba7a - 45c3c5aa-ca54-4e38-8b94-588d5d0dba7a - - - 55.938318677217843 - - MI_Restricted_Substances - b1b14aff-8354-447c-9883-df4969a517a3 - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 86B45, oil quenched & tempered at 315°C - d662fd50-7be2-4186-b04a-5c25a06b3e1f - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - 6a575f86-25e6-4e12-ac46-c5e557ade046 - Mass - 11.892100801641169 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 06b27a1d-2427-43cd-a637-13aa583eb8f8 - Area - 94.382777528084247 - - - - - 11.015420330695539 - - MI_Restricted_Substances - b47d0104-e07a-4ebb-a481-18bc330d2ace - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 4340, oil quenched & tempered at 205°C - 9f48b8cd-31f7-4443-be9d-59b42767a0cf - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - b6d56b98-fc3d-4922-908c-8f0d147ce118 - Mass - 100 - - - - - 11.015420330695539 - - MI_Restricted_Substances - aa4540cb-3277-459f-a69a-ca324ddd0125 - - Glass ceramic (N0) - Glass ceramic (N0) - 700295de-ff35-4c30-8b51-085ebb8b4c7c - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 7febd832-fac7-41a3-9812-b041b38cdbad - Area - 39.837708016781932 - - - - - 11.015420330695539 - - MI_Restricted_Substances - a68201e5-218b-4387-9e30-d1332ccfa44f - - Oil quenched & tempered at 315°C - Carbon steel, AISI 1340, oil quenched & tempered at 315°C - baa90fa4-3ffb-45e4-b9f9-237e6a8d2c65 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - 21872dd4-8a64-40a3-931b-85ded9a7a9a7 - Length - 69.831599420789445 - - - - - 11.015420330695539 - - MI_Restricted_Substances - 9c05e644-9257-4778-9c68-be0cff6f58b5 - - Annealed - Low alloy steel, AISI 8620, annealed - 23bf3ceb-5f97-4862-bc95-47d220e98e6a - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - e6cce66e-28ef-43e1-88c4-c5573ee824d5 - Mass - 100 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - aca5a0a2-aea6-4028-b812-8e0953fad5f7 - MassRemoved - 42.472574786503138 - - - - - - - 4 - 22.143999031811955 - 36c649b1 - part_36c649b1-a957-4f0a-ba12-f99623733e3b - 36c649b1-a957-4f0a-ba12-f99623733e3b - - - 75.292657117961284 - - MI_Restricted_Substances - 9ecfadb9-f61f-48b3-81b1-bcac80eb164f - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 4150, oil quenched & tempered at 315°C - 6de93e26-7f8a-4644-9ff1-d3ba8341b247 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - d84d74df-f777-4b5b-834a-08953934bece - Area - 68.684520185312508 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - 78c6e9f8-ae12-46bf-93bf-b26034c025d5 - MassRemoved - 39.263671701431122 - - - - - 4.9414685764077433 - - MI_Restricted_Substances - 1851a6ff-c2e6-4bc6-ab7a-a0eae431e281 - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 5140, oil quenched & tempered at 540°C - 9dd9ceb8-e619-481b-8f99-076e8df0fa8f - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 677be290-d4e2-4ccc-b422-8e3e88169e90 - Mass - 100 - - - - - 4.9414685764077433 - - MI_Restricted_Substances - 192eb301-460f-4dc8-82ec-d451fef09827 - - Glass/polyimide honeycomb, ±45° fabric (0.064) - Glass/polyimide honeycomb, ±45° fabric (0.064), W Direction - ab9dfcac-de94-44b3-9b12-2a3ef82ccdef - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - 6f8a024d-ef38-4303-b6f9-898348a5e05a - Mass - 100 - - - - - 4.9414685764077433 - - MI_Restricted_Substances - 0afa77bf-df9b-456c-8c48-3c84b1ccd2e0 - - Low density glass-sphere filled - Bisphenol molding compound (low density glass-sphere filled) - 4287941f-36b4-4feb-a928-4d8803bacdc4 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - a16d8051-7432-4c1f-92db-6407d3666b77 - Mass - 100 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 00e31473-0e80-4da8-98cc-86c07e300c50 - Mass - 100 - - - - - 4.9414685764077433 - - MI_Restricted_Substances - 8db72069-1e87-4b0f-84bc-cddf9ad19b4b - - water quenched & tempered at 540°C - Carbon steel, AISI 1050, water quenched & tempered at 540°C - 95c74639-f319-44b9-a88a-f3f6689e01d9 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - df367a5b-4d55-4e42-854c-1713dbee2576 - Area - 84.977147208981748 - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - d459c727-3664-4f98-be9b-a715dba56277 - Mass - 100 - - - - - 4.9414685764077433 - - MI_Restricted_Substances - 2ad846d3-e112-42bc-bee5-4ac11e7492ba - - 250, maraged - Maraging steel, 250, maraged at 482°C - ccb33e25-61bc-43fc-87e2-1f5b739229c5 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - ab68e333-a7ab-46fc-8e66-623bbce05a06 - Mass - 100 - - - - - - - 7 - 41.748734210500835 - - MI_Restricted_Substances - 3d4d35cd-1db3-477c-8f3f-b90800ea1c4d - - 412e9d69 - part_412e9d69-8ccd-4db8-8d6e-0a19595b0ff3 - 412e9d69-8ccd-4db8-8d6e-0a19595b0ff3 - - - 1 - 11.777195852146109 - 4e07a4e4 - part_4e07a4e4-4b6b-4ab0-8a9a-85018488472c - 4e07a4e4-4b6b-4ab0-8a9a-85018488472c - - - 12.89145383652833 - - MI_Restricted_Substances - a83cb894-badf-47de-8aff-fe75bbb39ecd - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 81B45, oil quenched & tempered at 540°C - eada61b3-01ac-4ca6-96e6-99432b545b10 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 6c78e14e-8ba5-42ff-9feb-31af60a6ea6b - Mass - 100 - - - - - 87.108546163471672 - - MI_Restricted_Substances - b10ab099-72fd-4e47-9274-015a08f619c2 - - Annealed - Low alloy steel, AISI 5160, annealed - 9b3c225b-6927-4dab-a909-c0e78ab38bc5 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - 2aafe353-9cdf-4ae7-81e7-c845c22c7730 - Mass - 100 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - 7d9c749c-032c-4014-aee3-a19dc9c8a2a1 - Length - 65.22252348494834 - - - - - - - 7 - 65.298063245275088 - 02b9158f - part_02b9158f-ac57-451b-9ddc-59cd2a3d09f2 - 02b9158f-ac57-451b-9ddc-59cd2a3d09f2 - - - 86.083201126234229 - - MI_Restricted_Substances - 1f39574e-b571-4f15-b7c2-4e54411e3fb3 - - water quenched & tempered at 650°C - Carbon steel, AISI 1137, water quenched & tempered at 650°C - b2f3992f-70f4-4393-9844-f9be4fcc6328 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - a84924f5-ad44-40e5-a1f3-40b87133ee26 - Mass - 100 - - - - - 1.9881141248236816 - - MI_Restricted_Substances - bf6aa85b-3059-4b2c-86af-6bcb1996d5b9 - - Oil quenched & tempered at 540°C - Carbon steel, AISI 1340, oil quenched & tempered at 540°C - 4df2873d-97ea-482c-be3b-979c3995435f - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - 3727beb1-0b8c-4891-af51-a924119ec964 - Mass - 100 - - - - - 1.9881141248236816 - - MI_Restricted_Substances - e5cb0b28-b074-4eb6-95ab-12e8692a87ea - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 50B60, oil quenched & tempered at 540°C - d17ef8cd-535b-498b-b313-5cac5ec78787 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - 6c3f805b-239f-4836-a730-a6ce31a6bd49 - Mass - 100 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 1bfc3801-dd97-4bdb-bba3-5e0eef8601ab - Mass - 100 - - - - - 1.9881141248236816 - - MI_Restricted_Substances - 72799627-a7c0-4df4-8250-e2be8538565f - - Glass ceramic (N11) - Glass ceramic (N11) - 5e286efa-b710-4d5b-b2c2-2f397ab0e46b - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - 51f4a553-0c62-4c9f-9522-dd1f3853dbd4 - Mass - 100 - - - - - 1.9881141248236816 - - MI_Restricted_Substances - 8cd50236-3f00-4460-9e77-bc85138f34c4 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 51B60, oil quenched & tempered at 425°C - 32c4e3ad-6c13-40b8-b0cd-bc939c807c5f - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - e4dab1ed-d5a8-43d4-b4a5-f1dbf2d7a376 - Mass - 100 - - - - - 1.9881141248236816 - - MI_Restricted_Substances - 8be87fd7-f406-4a50-9150-2a29e4a26bfa - - Aluminoborosilicate - N51a - Aluminoborosilicate - N51a - bfa70fef-d853-42a4-b83d-73289e70c987 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - ce19d434-3eee-4e4b-9a47-ee280c1b7c83 - Mass - 100 - - - - - 1.9881141248236816 - - MI_Restricted_Substances - 7c0b2792-bc51-4837-a380-6cdb1c2fba31 - - water quenched & tempered at 205°C - Carbon steel, AISI 1030, water quenched & tempered at 205°C - ad90b266-4478-48aa-88ef-c2693d8d4463 - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - 9281d347-54f6-4ccc-8f00-8f66f263ec35 - Mass - 100 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - be1e5cc6-8037-4091-bd75-8fb87907f926 - Mass - 100 - - - - - 1.9881141248236816 - - MI_Restricted_Substances - 48753642-e968-4a1f-92a1-c7b2e10c3fa0 - - Oil quenched & tempered at 540°C - Carbon steel, AISI 1060, oil quenched & tempered at 540°C - 8d4bbf76-e11e-42bb-abd5-c589e48cede2 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - 67a63d46-dbdc-4e8a-b57d-9be080e27fca - Mass - 100 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 75e4a0db-0f3a-4dc7-b9f7-53c7cf5cf484 - Mass - 3.3637464993464512 - - - - - - - 7 - 1.6180497136051069 - 2ccb1d17 - part_2ccb1d17-f935-416e-afca-53702412172d - 2ccb1d17-f935-416e-afca-53702412172d - - - 14.568241738978886 - - MI_Restricted_Substances - be0bbb94-0c22-4276-9615-902f13ee0363 - - Oil quenched & tempered at 315°C - Carbon steel, AISI 1144, oil quenched & tempered at 315°C - 8ea4c0fd-a002-451c-a6e8-6924341889a3 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - bd3522ba-4106-4b60-8fc3-1abb38df1b09 - Mass - 100 - - - - - 85.431758261021116 - - MI_Restricted_Substances - db238d75-fcb8-41f5-9289-83a352fa83a6 - - Annealed - Carbon steel, AISI 1015, annealed - 6ea66f6d-ac3e-4179-ac62-13ff1764797d - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 33691a0b-11a2-43ee-850e-46683e369779 - Mass - 100 - - - - - - - 7 - 35.786516236041912 - adc60ac2 - part_adc60ac2-0b8f-41fa-a011-25ed79762bb7 - adc60ac2-0b8f-41fa-a011-25ed79762bb7 - - - 88.524026837443941 - - MI_Restricted_Substances - 06a05a3e-1419-430e-bd94-120296b4c49e - - Normalized - Low alloy steel, AISI 9255, normalized - 31740ff9-d5f1-40b6-bfa4-1cda064e0303 - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - e89b9709-f53e-4b57-8f30-b76bbf4bb88b - Mass - 100 - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - b6868b7b-8e92-487d-8852-cb0acb2c1eaa - Mass - 100 - - - - - 2.2951946325112118 - - MI_Restricted_Substances - a84110a5-15ac-4560-8e1e-642b3441da3c - - water quenched & tempered at 540°C - Low alloy steel, AISI 4130, water quenched & tempered at 540°C - 8e599c94-c6f9-41bf-8f5f-9ce12eec2739 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - a14aadca-2540-42e7-a9c1-6b4591e730cc - Length - 50.149607355776062 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 50ad3d84-915f-40c0-9339-52ccd33ed213 - Mass - 100 - - - - - 2.2951946325112118 - - MI_Restricted_Substances - b4c065d7-6405-44fb-82cf-24ca2072f5c9 - - 300M (high carbon), quenched & tempered - Low alloy steel, 300M (high carbon), quenched & tempered - d5fddba9-d61c-43d2-b3b9-0035f3b78fdd - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 66666fe5-dd7b-44ca-a1b0-4f912f48bc1f - Mass - 100 - - - - - 2.2951946325112118 - - MI_Restricted_Substances - fbdbafa4-b1a5-410d-a3f0-0b7077b0d7be - - Glass/polyimide honeycomb, ±45° fabric (0.112) - Glass/polyimide honeycomb, ±45° fabric (0.112), L Direction - 46d7d2d9-5bf6-43e2-ab8f-dd4723f36336 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 8442fdab-d90d-4f7e-833a-62e518b5aff9 - Mass - 100 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - fc2508fb-3e4b-4314-92b2-06692e1d2bf2 - MassRemoved - 41.76232178777564 - - - - - 2.2951946325112118 - - MI_Restricted_Substances - a1ecb25a-cbfa-484f-8221-3c08313c0d09 - - Glass/polyimide honeycomb, ±45° fabric (0.051) - Glass/polyimide honeycomb, ±45° fabric (0.051), L Direction - d3910f5c-5814-4376-90d5-1c3d8bac180e - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - e547c588-2953-4e9d-9329-8c14922fad6d - Mass - 100 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 8640ec1e-9f72-483a-85e4-efa340ebc4f3 - Mass - 100 - - - - - 2.2951946325112118 - - MI_Restricted_Substances - f7a5d844-1935-486f-adbe-99917b26b44b - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 4340, oil quenched & tempered at 315°C - 48e66c16-d6ab-4b09-9d94-975d8f246d90 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - f5ee22f3-bf2a-4273-ba68-2792bcecd1cf - Mass - 100 - - - - - - - 4 - 25.260202598413546 - 26bd8e2c - part_26bd8e2c-1a75-41d0-ac98-46b9b5e34dd5 - 26bd8e2c-1a75-41d0-ac98-46b9b5e34dd5 - - - 94.470490559223336 - - MI_Restricted_Substances - 6134776a-9764-4c71-b7a7-d2f9b7549541 - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 8650, oil quenched & tempered at 315°C - 26d8597c-d71b-4049-abac-0827d97f1099 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 8a84d84b-218a-424f-99de-bd6715fee8b7 - Mass - 100 - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - 8644ce93-7a6d-44b1-90ee-9f78e593fb64 - Mass - 100 - - - - - 2.764754720388332 - - MI_Restricted_Substances - 29b76cdc-672e-4a1f-8f6e-a5644857c880 - - Normalized - Low alloy steel, AISI 4135, normalized - 5c791230-b424-4b95-8e77-433b9965e61e - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 05d2de98-77cd-4e15-8cb2-648e45a14d4b - Mass - 100 - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - 2ff312c0-e0fd-4795-9f1b-6adb5f2745e8 - Mass - 100 - - - - - 2.764754720388332 - - MI_Restricted_Substances - 55eaa961-cbe2-4f0a-9531-ec40dc32555a - - YS260, cold rolled - Interstitial free steel, YS260, cold rolled - f5b9069a-21f2-4805-9fa6-10bbfe2d8798 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - e6c4dde9-c580-45a7-940d-64a332b46231 - MassRemoved - 54.093045487111922 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - f8de7007-93b1-4c16-a4df-9817e25e0d4a - Mass - 100 - - - - - - - 9 - 71.6776263768215 - ca19d9ea - part_ca19d9ea-8ca0-484c-81db-f0bd52142b9f - ca19d9ea-8ca0-484c-81db-f0bd52142b9f - - - 59.690446201567745 - - MI_Restricted_Substances - 1d0ad45b-4da7-4c47-9850-754d0f67c02a - - Glass/polyimide honeycomb, ±45° fabric (0.096) - Glass/polyimide honeycomb, ±45° fabric (0.096), W Direction - 6c8308a1-a083-4648-828d-85cc00bd926f - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - 2805da0d-1cd9-4846-917f-0eeddb1f2eee - Mass - 100 - - - - - 5.0386942248040318 - - MI_Restricted_Substances - 87e1a3cd-fd79-4013-b5f8-56d6f28bef34 - - Oil quenched & tempered at 540°C - Carbon steel, AISI 1144, oil quenched & tempered at 540°C - bd45b7c3-53dd-4545-a818-9e8a14433718 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - 829287dd-168b-4894-b384-cf9c564e5eb5 - Mass - 100 - - - - - 5.0386942248040318 - - MI_Restricted_Substances - c87d2bef-0549-4a3b-b699-3ad17b079fa1 - - YS355, hot rolled - High strength low alloy steel, YS355, hot rolled - 3f725bb6-02ef-4193-b8d3-3dbc9c54e9ff - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - 6c48f731-cf08-4179-a64a-6bebca0e91e0 - Area - 40.897892015472934 - - - - - 5.0386942248040318 - - MI_Restricted_Substances - 50342378-5548-45ea-9a21-c0f16c6dcb1a - - Steel, terne coated - Coated steel, steel, terne coated - 0593fce9-6880-4931-804c-66c8741c542b - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - b3d8351c-fed0-4c9d-ae1b-748247fc6a80 - Mass - 100 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 411fd344-6411-4706-b6e6-2dcfd232887e - Mass - 100 - - - - - 5.0386942248040318 - - MI_Restricted_Substances - f76f3301-2bc9-4ad6-b438-b97cf4ca70b5 - - Silica (96%) - Silica (96%) - 3005609b-3b36-4665-b4c0-91998ffc4396 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - 2ee50bf8-af5f-465c-ae27-71d171943cb4 - Area - 25.511942396644478 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - 3c3be329-3045-4c83-9708-467b04bf44ac - MassRemoved - 54.940783397732659 - - - - - 5.0386942248040318 - - MI_Restricted_Substances - 1d24ecfa-ec45-4a74-9ad7-ceac6eef8ad3 - - Annealed - Low alloy steel, AISI 41L40, annealed - e41ace63-fc60-496d-8403-f0dc6caf2b90 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - 112f8740-ae3f-42b5-b224-0cfb3785655d - Area - 52.6992777607866 - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - 23357b86-0f63-4693-9d68-ca2d8dbaeb0e - MassRemoved - 77.1684769900369 - - - - - 5.0386942248040318 - - MI_Restricted_Substances - c07a0ada-0510-4f27-be52-15e07d6c70c5 - - Soda-zinc glass - 6720 - Soda-zinc glass - 6720 - 6d479a4a-03a5-4fb8-a01a-7de8b71d93ed - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 5706ab2a-ad0e-401f-962c-8401cf83b454 - Mass - 100 - - - - - 5.0386942248040318 - - MI_Restricted_Substances - 91d7e1bd-d353-4eb1-9634-286e8e69d0d5 - - Oil quenched & tempered at 540°C - Carbon steel, AISI 1141, oil quenched & tempered at 540°C - ef0c00a2-9910-468c-abac-f671ea564dea - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - bc86342b-e9e2-4534-86c3-0356f4c8737e - Length - 64.861482551722546 - - - - - 5.0386942248040318 - - MI_Restricted_Substances - 5d611e30-0b00-4036-a656-f5fdc5bd2a52 - - Glass ceramic - slipcast - Glass ceramic - slipcast - 65a55aa8-7075-4c37-86b9-ad3c62c09b71 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 08cee76c-595b-49ce-8374-ce3d50474ad9 - Mass - 100 - - - - - - - 8 - 1.5985135462128157 - 1aa2360a - part_1aa2360a-be13-4479-acee-f78fd0ff0a78 - 1aa2360a-be13-4479-acee-f78fd0ff0a78 - - - 91.0480702719875 - - MI_Restricted_Substances - 0831e2e1-6d31-4532-8a04-eea412061805 - - Annealed - Low alloy steel, AISI 4140, annealed - 35bbc52d-b4ff-48e0-bf2d-8d97aeacfb51 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - ff0b079c-2c49-45c5-90ae-14ed0fd7236e - Mass - 100 - - - - - 8.9519297280125016 - - MI_Restricted_Substances - f8d1136f-3c1a-41e2-8b78-cf5f3965cba2 - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 6150, oil quenched & tempered at 205°C - b4b703fb-eb23-4611-a8c2-07bfcf6cad8f - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 338c5266-1ede-466b-914f-711cd2523894 - Mass - 100 - - - - - - - 8 - 22.379741315906749 - - MI_Restricted_Substances - a78dcd3a-f108-4fdb-857e-e2d00ed319d4 - - a6821688 - part_a6821688-dd2f-4560-a927-8ce07f150ed2 - a6821688-dd2f-4560-a927-8ce07f150ed2 - - - 9 - 76.275390934327334 - ea0dfdcd - part_ea0dfdcd-e44a-4374-bf87-bc831dc41a05 - ea0dfdcd-e44a-4374-bf87-bc831dc41a05 - - - 80.67020866119779 - - MI_Restricted_Substances - 9e4c9bc1-b3b6-42dd-a32f-7af4e3190d72 - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 86B45, oil quenched & tempered at 205°C - e21a7caa-7b95-4fd1-9b5c-4ea5de8d25c0 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - 9d6358ac-f6b0-4663-b181-eb854ccee899 - Length - 69.388320841541656 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - bb16eb8f-75a7-4f24-b751-3fca8fd7b6ce - Mass - 100 - - - - - 4.8324478347005524 - - MI_Restricted_Substances - ac1b4f23-a357-459b-bfeb-deabffbc7020 - - Oil quenched & tempered at 315°C - Carbon steel, AISI 1050, oil quenched & tempered at 315°C - b83b515c-473a-4076-96d9-38387cdc136a - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - f513bbeb-274d-4646-b8ed-2147c9592c95 - Area - 83.372145790314363 - - - - - 4.8324478347005524 - - MI_Restricted_Substances - 8349c912-772a-4fd7-90a5-7d52aa9c9448 - - Oil quenched & tempered at 425°C - Carbon steel, AISI 1137, oil quenched & tempered at 425°C - c0a9996c-0626-44be-b07f-e87b4f93e421 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - d01b9c5e-b734-49c0-841e-3cbfa92433b1 - Length - 69.282415820882846 - - - - - 4.8324478347005524 - - MI_Restricted_Substances - 2a840794-eac4-4f77-90ba-f84bce518c0f - - Glass/phenolic honeycomb, 0°/90° fabric (0.055) - Glass/phenolic honeycomb, 0°/90° fabric (0.055), L Direction - 110ae29e-9ac2-44f9-aba7-c1ccb4a27438 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - f3372e2c-73c8-42aa-bc02-6572ad5fbc51 - MassRemoved - 43.454528387381941 - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - c561d0b5-9ee2-4284-bf6a-b46260454e8f - Mass - 100 - - - - - 4.8324478347005524 - - MI_Restricted_Substances - b17713f9-59e9-48f4-8bb3-27c72b0884b2 - - water quenched & tempered at 540°C - Carbon steel, AISI 1137, water quenched & tempered at 540°C - a647882e-2b40-4400-943c-0da1d9be57ea - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - 8bbe6b83-92cb-4b0e-b49a-0c797d713f5b - Mass - 100 - - - - - - - 9 - 82.0234252056216 - - MI_Restricted_Substances - aeabeea6-e528-4e56-8247-0aeb8841d9de - - 9438eb43 - part_9438eb43-1eee-4cff-9d70-62c5bb89c32a - 9438eb43-1eee-4cff-9d70-62c5bb89c32a - - - 4 - 72.353651827365923 - 184b1ab4 - part_184b1ab4-9f2b-4154-bc06-b8b474d19fd7 - 184b1ab4-9f2b-4154-bc06-b8b474d19fd7 - - - 60.849965950869944 - - MI_Restricted_Substances - 278c6b66-fb3e-4e2d-b915-df6a231b2342 - - Oil quenched & tempered at 540°C - Carbon steel, AISI 1080, oil quenched & tempered at 540°C - 4f8dabc3-4b4f-4511-a439-029bfedcc353 - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - fee9befe-d44a-4412-bf3b-51a47282a443 - Mass - 100 - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - ad08b701-b6a5-48cf-ae9b-b35f7bf697cd - Area - 98.9209647285384 - - - - - 4.893754256141257 - - MI_Restricted_Substances - aa963e30-fca0-439d-bee2-ff48daa946f3 - - As rolled - Carbon steel, AISI 1095, as rolled - 7dcd1b01-ad72-4233-bb61-b06115c241bd - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - ad815955-2ea1-4810-bd9f-e0807ef38e3a - Mass - 100 - - - - - 4.893754256141257 - - MI_Restricted_Substances - a403e867-5052-44f9-b24b-5b11a3860cf4 - - Glass/polyimide honeycomb, ±45° fabric (0.051) - Glass/polyimide honeycomb, ±45° fabric (0.051), W Direction - ab7e0983-57d9-4403-87c7-2bba8ff091d3 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - a8d4437c-ca53-49f3-89ab-6f97f764defd - Length - 4.346819130865307 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - d9034901-0090-4e0a-a31a-bed850729cd0 - Mass - 100 - - - - - 4.893754256141257 - - MI_Restricted_Substances - 109eaa8c-e01c-4663-8802-f7dd1f10d61b - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 8630, oil quenched & tempered at 205°C - 3758b153-7456-4598-b41b-c53921a08384 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 61055064-79d2-46eb-9266-65253cdb2511 - Length - 93.752556896653289 - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - 772bd1ed-edad-4c73-9949-13006f3b1dcf - Mass - 100 - - - - - 4.893754256141257 - - MI_Restricted_Substances - ee3c0238-df7d-426d-90f6-c073cddea37b - - Oil quenched & tempered at 425°C - Carbon steel, AISI 1340, oil quenched & tempered at 425°C - 3efcc781-9e69-4f6f-82e3-fc6cc6a137d0 - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - ebd5fdc0-5126-4b32-b4ee-23fd2c6147b4 - Area - 16.777495535452616 - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - 3a6dafa6-ec47-4b1c-a67b-2de364a10ca4 - Mass - 100 - - - - - 4.893754256141257 - - MI_Restricted_Substances - e62ec0fe-66ca-4b17-88d1-609c5568e318 - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 4340, oil quenched & tempered at 650°C - a02fee99-5c91-4df9-a446-8a6da1b9d9db - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 5861f36e-aa3e-4358-b32d-8e558fb5586b - Mass - 100 - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - f928ee5f-60be-4f4f-bb08-ad8423b00867 - Mass - 100 - - - - - 4.893754256141257 - - MI_Restricted_Substances - c62d668e-5411-4845-b19c-3a0c4eedf872 - - 10CrMo9-10, normalized & tempered - Low alloy steel, 10CrMo9-10, normalized & tempered - 81e18383-3a45-4ba3-9bfc-7c36e2f23521 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - ef654035-33a9-4daf-8115-2cada5ba7c41 - Length - 25.672625389728985 - - - - - 4.893754256141257 - - MI_Restricted_Substances - 8245dc6c-3d61-4f18-82c8-6fb946e1582c - - Glass foam (0.13) - Glass foam (0.13) - 85aa7086-4a24-4732-9d0c-288fae52b970 - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - cdda3e82-ef97-4ea2-a6a4-b4e96d2ff278 - Mass - 100 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 4c8fbc06-e918-4dd4-b0f0-40a9f037aa05 - Mass - 100 - - - - - 4.893754256141257 - - MI_Restricted_Substances - 71a3cd24-5128-46e5-8ef8-9ca8b5ed9892 - - 50% glass and mineral filled - PA46 (50% glass and mineral filled) - 066fdc49-0e2a-450e-b40e-f4f71e33a67d - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - 8f98f3c3-3955-4b09-832c-7c8c1eeeb9b3 - Mass - 100 - - - - - - - 5 - 8.8805127930271031 - 4b2adbeb - part_4b2adbeb-72da-44b5-8bf9-697c3b7db31b - 4b2adbeb-72da-44b5-8bf9-697c3b7db31b - - - 65.331763338917753 - - MI_Restricted_Substances - 0f2ac0c2-16b0-422e-9f3c-48efb1a11594 - - Hardened and tempered - Low alloy steel, AISI 8620H, hardened and tempered - 966a2d0c-b2a1-4cff-b09e-70af1c7feafa - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - d3f2b6bf-5dc3-4af1-97e4-655b745bec8d - Area - 67.572932628715847 - - - - - 4.9526052372974636 - - MI_Restricted_Substances - 28d51559-b49b-4a2b-9f09-9a198db03164 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 4340, oil quenched & tempered at 425°C - 0a0484e4-e4d6-46a3-8a89-980d72ee02e1 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - fd9523ae-9d66-44e6-88e5-e699e4bb6710 - Mass - 100 - - - - - 4.9526052372974636 - - MI_Restricted_Substances - d53daeda-87b2-4ade-a7a2-1ebe84e7e3ef - - Annealed - Low alloy steel, AISI 5115, annealed - 65f38ac2-4598-4986-a161-fa9d2f9befa8 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 5ebf42e6-45c0-4782-bae6-f26fbb9c608f - Mass - 100 - - - - - 4.9526052372974636 - - MI_Restricted_Substances - 50c388cf-bb91-442a-9b62-8d34f7822f13 - - Oil quenched & tempered at 540°C - Carbon steel, AISI 1040, oil quenched & tempered at 540°C - 208eed49-b80a-4f9c-8d52-57ea802dbcfe - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - a3504bc5-92e6-4d45-869d-c64cd77071af - Mass - 100 - - - - - 4.9526052372974636 - - MI_Restricted_Substances - a84110a5-15ac-4560-8e1e-642b3441da3c - - water quenched & tempered at 540°C - Low alloy steel, AISI 4130, water quenched & tempered at 540°C - 954b9af8-ad49-400a-ba3d-c054db41c64c - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 46cd55fe-643e-4274-bc72-6eb959283ea8 - Mass - 100 - - - - - 4.9526052372974636 - - MI_Restricted_Substances - 5303364c-b06b-40d9-bca9-e0e2cd1d682c - - Normalized - Low alloy steel, AISI 8740, normalized - 39b96e26-6d23-44f6-83b7-884409172eab - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - 6d9de306-4aae-485e-8018-527f177f25c0 - Length - 6.1955351877005471 - - - - - 4.9526052372974636 - - MI_Restricted_Substances - a83cb894-badf-47de-8aff-fe75bbb39ecd - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 81B45, oil quenched & tempered at 540°C - cd5f8484-59ff-40c1-8867-292095d1b9c6 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 75aaabe7-2e82-4bec-b265-80f2beb2a4fe - Mass - 100 - - - - - 4.9526052372974636 - - MI_Restricted_Substances - ac1b4f23-a357-459b-bfeb-deabffbc7020 - - Oil quenched & tempered at 315°C - Carbon steel, AISI 1050, oil quenched & tempered at 315°C - d23864dc-a8f2-4660-8e78-9ec574d6be3b - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 612bfbb6-4eb3-4282-8c9d-7332de9801b1 - Length - 92.551196689042825 - - - - - - - 1 - 26.153060247261571 - 45b2723f - part_45b2723f-b76c-4076-81bb-f3aecd32b356 - 45b2723f-b76c-4076-81bb-f3aecd32b356 - - - 100 - - MI_Restricted_Substances - 50ad77de-f231-48a8-a909-3dc689e19ac8 - - YS500, cold rolled - TWIP steel, YS500, cold rolled - cb2f5fa4-88c1-4234-9c99-c073df19e86a - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - 45b62425-e6d6-4621-b79d-16266a05e004 - Mass - 100 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - c7722ec0-5403-4eab-9421-4aaf19d9aef2 - Mass - 100 - - - - - - - 4 - 40.539438203228379 - bab849e1 - part_bab849e1-aa58-4769-acc9-be284f83a250 - bab849e1-aa58-4769-acc9-be284f83a250 - - - 100 - - MI_Restricted_Substances - 48753642-e968-4a1f-92a1-c7b2e10c3fa0 - - Oil quenched & tempered at 540°C - Carbon steel, AISI 1060, oil quenched & tempered at 540°C - e9ca9bfc-2ac6-4e0a-b295-5ffa707baf1a - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - 24532770-7d53-47c3-b1ed-27abd0be182b - Mass - 100 - - - - - - - 1 - 36.071550304103432 - 3a1c477f - part_3a1c477f-440a-4b0a-a064-a4487adefde0 - 3a1c477f-440a-4b0a-a064-a4487adefde0 - - - 94.927668010316637 - - MI_Restricted_Substances - cdb1bf9d-b906-4bef-afbf-7bb9f67e9562 - - Galvanized - Coated steel, steel, galvanized - c245e82a-cc15-44f5-a687-2be0187ef917 - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - 47c269e2-54b2-4e47-a0b5-12bc0cf26ae0 - Area - 39.427965804668126 - - - - - 1.2680829974208407 - - MI_Restricted_Substances - a89802d6-13c5-496d-b139-57ae43e6591c - - As rolled - Carbon steel, AISI 1022, as rolled - 45169ece-d893-442d-bc03-57139b6d4d7a - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - 3cfa5e61-937e-456d-a331-3e0ced1fae00 - Mass - 100 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - 87f279ae-53fb-4ded-9910-3634fe179af4 - MassRemoved - 97.750562568079019 - - - - - 1.2680829974208407 - - MI_Restricted_Substances - 2ab1643a-3aff-46c7-a249-21c58b33f214 - - Annealed - Carbon steel, AISI 1144, annealed - 2edfdc17-8e02-4060-a0f4-e754d3c2d653 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 684f35b5-f8bb-4a0f-957d-4c58d08c32b2 - Mass - 60.250060800579405 - - - - - 1.2680829974208407 - - MI_Restricted_Substances - 0e008ce6-63df-4b25-81d6-02398cb9cc62 - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 8660, oil quenched & tempered at 540°C - 68cbe79e-e13e-44d6-9573-7f9e77f22cd1 - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - 8bf277bf-f275-4e32-9bf4-1fe49fafb994 - Mass - 100 - - - - - 1.2680829974208407 - - MI_Restricted_Substances - 6134776a-9764-4c71-b7a7-d2f9b7549541 - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 8650, oil quenched & tempered at 315°C - e1b57077-4f40-4da6-977e-c67e9e778639 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 0e3a51c9-09b0-45a2-aedf-34ea1d17a8bd - Length - 40.742407339039453 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - b729456a-04c5-4c5a-a8d2-3196ce5464f9 - Length - 99.61028662492069 - - - - - - - 7 - 29.038112717232718 - ac3877a8 - part_ac3877a8-bab4-4a77-9d83-086ae6c8c1be - ac3877a8-bab4-4a77-9d83-086ae6c8c1be - - - 2.8898164643392974 - - MI_Restricted_Substances - 8ef69f01-44dd-4b96-ac5c-731bff7ceb6c - - Glass ceramic - 9606 - Glass ceramic - 9606 - a6ef08ec-0069-4005-bbe1-b41dd44704c0 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 6af6b4b1-5bf5-471c-b6e1-a54b3d4d2085 - Area - 54.02260178421745 - - - - - 32.370061178553563 - - MI_Restricted_Substances - 2096ca77-9981-4fd5-9bc6-afe56b3bbbd4 - - Glass/phenolic honeycomb, 0°/90° fabric (0.096) - Glass/phenolic honeycomb, 0°/90° fabric (0.096), W Direction - 9d3b8e4d-c4de-4b15-98cc-e3c0dba146de - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - a680b387-9a93-4d57-bf18-ce9452a624cb - Mass - 100 - - - - - 32.370061178553563 - - MI_Restricted_Substances - 158e73a4-18c6-4e1a-b5d8-57669c377335 - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 8740, oil quenched & tempered at 650°C - c58ebde6-692b-44ad-a160-2185520c1fb7 - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - b6344a2b-56f2-4386-87df-767576302146 - Mass - 100 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - 3a0745ff-06f7-4320-9acb-a29e3fe1d090 - Length - 8.736669555649474 - - - - - 32.370061178553563 - - MI_Restricted_Substances - fc7fda6b-9d56-4e1f-b472-a664568c1169 - - Annealed - Carbon steel, AISI 1095, annealed - 001626e3-6549-4ddc-8cce-b828f12624fd - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - ffbb984e-4730-4035-9061-803e32f97eb7 - Mass - 100 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - 20b0fdd3-f25d-4e84-928a-caa2749e5be5 - Length - 11.594373598505916 - - - - - - - 8 - 92.475714205054445 - 4a5223eb - part_4a5223eb-b35f-4b2c-bf59-4f7b81e6e11f - 4a5223eb-b35f-4b2c-bf59-4f7b81e6e11f - - - 21.060252525406074 - - MI_Restricted_Substances - b879bb01-8648-4b5b-8159-d591cb251ca8 - - Normalized - Carbon steel, AISI 1080, normalized - 297897c7-4c4a-45cc-8d61-44600c915c0c - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 0c515822-13ff-4c07-9bb2-de14104f8980 - Mass - 100 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - 1d490bb8-6f77-4a2f-b71d-6f3b66e60dc8 - Length - 71.96799226662516 - - - - - 11.277106782084847 - - MI_Restricted_Substances - d7980de6-355d-48d2-93d7-471e3ef3b2cf - - Glass/phenolic honeycomb, ±45° fabric (0.032) - Glass/phenolic honeycomb, ±45° fabric (0.032), L Direction - fb82fa0f-c0f9-4569-90b6-a0592ffa029b - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - 54981275-6cda-4f6e-bd84-3d665c863111 - Area - 77.647445713005709 - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - a9374b93-9dce-47dd-9652-158248388b3c - Mass - 100 - - - - - 11.277106782084847 - - MI_Restricted_Substances - a6ee4feb-80c5-43a7-b3ee-a1423218f502 - - AF1410 - High alloy steel, AF1410, solution treated & overaged - 2edf1e77-1033-4b37-a10a-dd1ca6f9a9c7 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 5f14dda3-a81a-4378-9843-67d10402440b - Length - 11.760172765590331 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - 2d1547ac-de50-4aa9-a2b7-dbe536b42c1e - Mass - 100 - - - - - 11.277106782084847 - - MI_Restricted_Substances - 82880431-c70c-4df9-856a-d5e00671a184 - - Annealed - Carbon steel, AISI 1020, annealed - 126da0ae-9ad2-4d46-8712-87716360c682 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 4e259791-dfc8-44ff-be04-a437f2945a23 - Mass - 37.62075800337864 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 946d277f-7c61-48a2-a0fa-e4b871588d2d - Mass - 100 - - - - - 11.277106782084847 - - MI_Restricted_Substances - 00cd78de-6c78-46f3-81b3-ec03803fa034 - - Glass/phenolic honeycomb, ±45° fabric (0.048) - Glass/phenolic honeycomb, ±45° fabric (0.048), W Direction - 56afd2d4-eed8-4d8e-ad4e-bd5029463b6a - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - e35e60e0-ca24-4c0a-86ab-29db1b5f185c - Area - 39.506165003174061 - - - - - 11.277106782084847 - - MI_Restricted_Substances - ab732b70-3546-4a94-b914-643f38c2443f - - 24CrMo13-6, quenched & tempered - Low alloy steel, 24CrMo13-6, quenched & tempered - 40dd174d-6d19-4fd9-abe0-1055299bef5f - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - 3f980ef4-aa91-4002-8694-15f8c4c9caf3 - Mass - 100 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - 379bb0ec-69dc-4fec-82c8-a9ffaff56261 - MassRemoved - 27.657357849021142 - - - - - 11.277106782084847 - - MI_Restricted_Substances - 496cca2a-43ad-4943-9e9b-23076f2e3a5c - - Glass/polyimide honeycomb, ±45° fabric (0.128) - Glass/polyimide honeycomb, ±45° fabric (0.128), L Direction - 5bfc5037-9bf2-43ba-ab06-5bb5ad11de76 - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - 75945f4f-fdd8-47bb-969c-bc07e382e033 - Mass - 100 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 09d7e6b4-4b3c-4784-a62d-908036e510d0 - Mass - 100 - - - - - 11.277106782084847 - - MI_Restricted_Substances - 439e62b9-4268-44c6-a084-695412628448 - - water quenched & tempered at 425°C - Carbon steel, AISI 1095, water quenched & tempered at 425°C - b5a24b72-e09d-4fc4-8bdc-93b928e91fff - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - b173992a-931e-49bb-99cb-284c471d0437 - Mass - 100 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - 91e8113c-bb59-487e-97ee-2142e2ec1a71 - MassRemoved - 72.033606549740583 - - - - - - - 7 - 37.364186037967066 - - MI_Restricted_Substances - 47392269-2164-43ef-9890-518e6ea446fc - - c4b720bf - part_c4b720bf-7152-4199-ba3a-0beb9c811ddc - c4b720bf-7152-4199-ba3a-0beb9c811ddc - - - 1 - 75.03948122031963 - 5d1b372e - part_5d1b372e-556f-4e07-9c99-4d1973e0956b - 5d1b372e-556f-4e07-9c99-4d1973e0956b - - - 38.582426513816429 - - MI_Restricted_Substances - 190cf17e-dbc1-40c7-a3d1-cc776977cb47 - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 50B46, oil quenched & tempered at 650°C - 6d8ea439-0bcd-4357-bc2c-4f5f7b539cd1 - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - b717c6e1-b356-4193-a09a-779833a5491d - Mass - 100 - - - - - 61.417573486183571 - - MI_Restricted_Substances - 0ff273b3-9539-465b-9d91-21fc52f8e16c - - Lithium aluminosilicate - Lithium aluminosilicate - 968b3dec-5e80-492f-a30d-ecdf1a74c80d - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - c7f0dc2f-fe5e-43de-b9ba-1f0ad322866e - Area - 64.574601857259211 - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - 00a56e08-69f5-474a-867f-187d3480a611 - Mass - 100 - - - - - - - 4 - 79.432184099886655 - 84fa7b6b - part_84fa7b6b-dcb3-42a7-9a11-df90dc8813bd - 84fa7b6b-dcb3-42a7-9a11-df90dc8813bd - - - 100 - - MI_Restricted_Substances - 940150b6-2d2e-4762-b1a0-6f354a75d95b - - Potash lead glass - Potash lead glass - 45d577fa-9e98-4254-b369-b09d9ae34dea - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - ddf7abd7-804d-47cd-838b-5d6e5758f5bc - MassRemoved - 41.91323963083012 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - 5c3ae651-26b4-4c94-a704-c181b75171df - Length - 4.94128288931273 - - - - - - - 9 - 93.35876684326621 - e72320dd - part_e72320dd-1afd-432f-bd03-eefddd678339 - e72320dd-1afd-432f-bd03-eefddd678339 - - - 80.4446916004851 - - MI_Restricted_Substances - 3fc5450b-689d-4ced-bf3d-c91f339a95da - - Normalized - Low alloy steel, AISI 5150, normalized - 46179b7b-bc34-4765-88c5-494383858dd6 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 62efad99-f536-4714-be22-b9a5e4462cff - Mass - 31.524746227788153 - - - - - 2.4444135499393624 - - MI_Restricted_Substances - 408a337f-8eb7-4225-96bd-1225da437143 - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 5140, oil quenched & tempered at 315°C - 1909b1f4-ede3-443c-a8e1-b7df1425057a - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - cc5799ab-1216-495a-964f-ed77c8c9ef20 - Mass - 100 - - - - - 2.4444135499393624 - - MI_Restricted_Substances - 75a1c963-399c-444d-a38f-1929c00d15b7 - - Normalized - Low alloy steel, AISI 4150, normalized - e5f13a79-e874-4575-8e7b-0f680c91c464 - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - 4229b4ae-cfe2-42c1-8696-47fe938b7892 - MassRemoved - 46.8832479542509 - - - - - 2.4444135499393624 - - MI_Restricted_Substances - 158e73a4-18c6-4e1a-b5d8-57669c377335 - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 8740, oil quenched & tempered at 650°C - c8f26e0c-6f90-4518-9399-b2419ed7b03e - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - 3bd0f0cb-124b-4c07-8983-fc20d22303a7 - Mass - 100 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 4ac89751-c8c9-44cd-a879-3bd567445c4d - Mass - 100 - - - - - 2.4444135499393624 - - MI_Restricted_Substances - 181f9596-7516-43ca-b989-8284ee056051 - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 8630, oil quenched & tempered at 315°C - 824e264c-aa4f-4814-9514-7dbc00187a63 - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - c860ca6f-6794-4288-a09b-6d5b1706b068 - Mass - 100 - - - - - 2.4444135499393624 - - MI_Restricted_Substances - 0ff273b3-9539-465b-9d91-21fc52f8e16c - - Lithium aluminosilicate - Lithium aluminosilicate - 4f8c8192-bfd6-420f-9006-52ae67d51144 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - 3f54437c-f9be-482e-ac61-7f158845e71d - MassRemoved - 7.4207230505630006 - - - - - 2.4444135499393624 - - MI_Restricted_Substances - 3fc5450b-689d-4ced-bf3d-c91f339a95da - - Normalized - Low alloy steel, AISI 5150, normalized - e91f49be-553e-44e4-84d6-d794788dd34e - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - ca1138c5-5460-4fec-9558-cb346771a9a6 - Mass - 40.548966145398545 - - - - - 2.4444135499393624 - - MI_Restricted_Substances - 7c0b2792-bc51-4837-a380-6cdb1c2fba31 - - water quenched & tempered at 205°C - Carbon steel, AISI 1030, water quenched & tempered at 205°C - 009eb512-a2c6-4f54-9d2f-ee7e522cc525 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - 7d963a71-ad65-49d7-87cf-1d526d17ecf8 - Mass - 100 - - - - - 2.4444135499393624 - - MI_Restricted_Substances - e9388a2e-df9f-4ef4-8f47-d4cc5a94b8e7 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 50B46, oil quenched & tempered at 425°C - ca917412-77c1-42a2-9559-f5ce8b14380e - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - 9bf7f8ea-70f7-4df8-9d42-cfa787bb92ef - Mass - 58.372439890342044 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - 11f586e0-0d5a-4108-a4e0-dec1a10ed8f1 - Mass - 100 - - - - - - - 6 - 98.910817736252582 - fc8daa76 - part_fc8daa76-313f-4416-91dc-f4184b57ac71 - fc8daa76-313f-4416-91dc-f4184b57ac71 - - - 11.365721426608841 - - MI_Restricted_Substances - 3fd6cebb-a683-45be-b014-7c3fb617c3e7 - - Glass/polyimide honeycomb, ±45° fabric (0.064) - Glass/polyimide honeycomb, ±45° fabric (0.064), L Direction - 43ac285d-b87c-4460-9c87-ad5dc4611237 - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - 42fca2f6-0417-49d7-a522-c7503940de71 - Mass - 19.470181511468336 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 1edd567a-b467-4c79-b267-2894398bee56 - Area - 74.248126090619763 - - - - - 22.158569643347789 - - MI_Restricted_Substances - 2839a622-af73-4a9f-90fa-0f3498243808 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 4042, oil quenched & tempered at 425°C - 6af79c06-d0e3-46ee-898b-80667674c307 - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - e6f0e479-ca89-431c-b43e-234dc35f3768 - Mass - 100 - - - - - 22.158569643347789 - - MI_Restricted_Substances - 21dcdeeb-524a-488e-b332-fcd4e1caf6f7 - - water quenched & tempered at 650°C - Carbon steel, AISI 1095, water quenched & tempered at 650°C - a74f3555-bdd6-4433-a45b-5e86f7360f81 - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - 813642e4-8307-4b63-9092-bb0ab8d445e1 - Mass - 100 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - 60b06372-c082-4197-b40e-a5e7a807c344 - Mass - 100 - - - - - 22.158569643347789 - - MI_Restricted_Substances - f6a8c45a-d545-43b7-acd0-7c51bd97ab52 - - Oil quenched & tempered at 425°C - Carbon steel, AISI 1095, oil quenched & tempered at 425°C - e4530039-6d97-4080-8cff-63281a88347b - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - 9c980678-54cc-479f-b0bb-15463d9b0ad3 - Mass - 100 - - - - - 22.158569643347789 - - MI_Restricted_Substances - 2a821f5c-97b0-4a08-81b1-de3f1543fb44 - - Alkali strontium clear glass - Alkali strontium clear glass - b33a0c52-e5a3-43a3-b80a-eddad97ff6d3 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - 1a071692-299c-4951-9e50-d95e02778526 - Length - 24.532270210111641 - - - - - - - - - 4 - 13.084379217161043 - eaab6ed5 - part_eaab6ed5-6189-4b0e-9a04-b351346795f9 - eaab6ed5-6189-4b0e-9a04-b351346795f9 - - - 34.273220428392861 - - MI_Restricted_Substances - 71841c03-2a43-418a-9a04-c18b2b603646 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 4150, oil quenched & tempered at 425°C - ebcdf539-f264-497e-b5eb-9065b8d16cdd - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - 030a4e68-4a19-4d96-bc52-facd972fd523 - Mass - 100 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 2138223c-491b-48d7-87f8-4ccd8a89dafa - Mass - 100 - - - - - 8.2158474464508924 - - MI_Restricted_Substances - 9cae15c6-b5b6-4ab9-9008-d962bee0e662 - - Glass/phenolic honeycomb, 0°/90° fabric (0.128) - Glass/phenolic honeycomb, 0°/90° fabric (0.128), L Direction - fd0c866c-664b-4ff0-87da-7571eeba3863 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 65c3952e-9995-49f8-b50a-6a6dd8ec1908 - Mass - 37.0300206528185 - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 290d62f5-bd97-4f1c-b997-bc0ec64fe69a - Mass - 100 - - - - - 8.2158474464508924 - - MI_Restricted_Substances - bbe0765c-012b-434e-878b-b40ad692b373 - - YS550, hot rolled - High strength low alloy steel, YS550, hot rolled - 6272492b-6615-4e16-96f1-a7e9a715a3e0 - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - c7a22d3d-5300-416d-be87-a3561d7a3b35 - Mass - 100 - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - 289630a9-9b30-4964-af5a-10155a53ad10 - Mass - 100 - - - - - 8.2158474464508924 - - MI_Restricted_Substances - 190cf17e-dbc1-40c7-a3d1-cc776977cb47 - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 50B46, oil quenched & tempered at 650°C - 7d1db0cf-3bf8-4194-80e8-b4f4a3816437 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - 13cbdc73-00ac-4995-8aa3-50bee3d6e803 - Mass - 100 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - d4a408ae-de74-4866-99cb-31142105ade7 - Mass - 100 - - - - - 8.2158474464508924 - - MI_Restricted_Substances - 92565d61-24fc-4880-9be5-0faeb9a8a3e8 - - Titanium silicate - Titanium silicate - 7db8274a-8d36-4fa7-8064-6b2d9f106c3c - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - 986d99e8-9853-4ef3-9e51-88d18f934ec3 - Mass - 37.446228618475715 - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - b3e68082-8c66-4835-8ed8-225e9e4ceab1 - Mass - 100 - - - - - 8.2158474464508924 - - MI_Restricted_Substances - 87e1a3cd-fd79-4013-b5f8-56d6f28bef34 - - Oil quenched & tempered at 540°C - Carbon steel, AISI 1144, oil quenched & tempered at 540°C - fa1e5541-f878-4ae6-87ba-8bea39fb760f - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - 6663a73a-ebb8-4ca5-91e0-49b6cb9fca98 - Mass - 100 - - - - - 8.2158474464508924 - - MI_Restricted_Substances - 9df55457-5300-4ddb-b92e-122b5c121621 - - Glass and mineral filled, encapsulation, molding - Novolac (glass and mineral filled, encapsulation, molding) - a9652672-4387-4d33-90dc-797daf6a2247 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 867ce557-1eec-4ea4-ac1e-e6c063117dd5 - Area - 85.998112422413243 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - f5d984ea-e10a-41b8-b2fc-714f5497cfb8 - MassRemoved - 44.685697622916521 - - - - - 8.2158474464508924 - - MI_Restricted_Substances - 80d691ec-471b-4ef6-9060-a0e5cc0c1a91 - - Annealed - Carbon steel, AISI 1340, annealed - 740938e5-cbf4-4329-a132-317986c42928 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - a051fd93-c079-4c56-814e-f1a1f06ae422 - Mass - 100 - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - 1302c3cc-958c-4115-8576-14da6ff3319b - Mass - 24.247723270323 - - - - - 8.2158474464508924 - - MI_Restricted_Substances - 1a7c6e51-066a-4f25-9c48-76ca6fbd8330 - - Glass ceramic - 9658 - Glass ceramic - 9658 - 3e32010b-4f5e-40c0-bd19-89a0a002d4ca - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - 853274a8-e09a-46e7-9fa2-a83c8460da8d - MassRemoved - 64.194198960528809 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 6c6b7134-8bd3-46d4-bcb9-f1207971edd5 - Mass - 100 - - - - - - - 2 - 74.93542394364971 - 600de0c1 - part_600de0c1-269a-4cb5-a3dd-0f06a65e8a04 - 600de0c1-269a-4cb5-a3dd-0f06a65e8a04 - - - 14.679744241144388 - - MI_Restricted_Substances - b869cbb1-f68c-4d4a-ba09-c5ac060f1e31 - - Normalized - Low alloy steel, AISI 4620, normalized - f06a9b56-aca5-4ff8-abbe-575e72b1f4a6 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - 61a4cbdc-a3f0-45bc-98b6-48e86dbf7d04 - Mass - 100 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - e138600b-057c-4217-9d69-d02397975bb1 - MassRemoved - 86.673751886316467 - - - - - 28.440085252951871 - - MI_Restricted_Substances - a371ea54-94e0-4a85-9b8a-856cf82f2e1d - - SAE 4130, cast, quenched & tempered - Low alloy steel, SAE 4130, cast, quenched & tempered - 8e5f94e3-ba10-4e42-93d8-bd5830929189 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - 053df7ee-4b20-4403-a01a-1a974af58e88 - MassRemoved - 3.6997650767209773 - - - - - 28.440085252951871 - - MI_Restricted_Substances - 7c0b2792-bc51-4837-a380-6cdb1c2fba31 - - water quenched & tempered at 205°C - Carbon steel, AISI 1030, water quenched & tempered at 205°C - 0ca4f619-8307-4733-9d1f-b25c1baa17b4 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 26b196c4-c9f8-4937-bf2e-cb1b4cf0a508 - Mass - 100 - - - - - 28.440085252951871 - - MI_Restricted_Substances - 8dd7188c-28e5-44bd-9d82-dc7a3890fe9b - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 8660, oil quenched & tempered at 425°C - f7318ab7-62ca-4424-8c50-9f0a0b9973ac - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - 487d792d-3b4b-4d68-b262-e07419d26ee7 - Mass - 100 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - e3f0937a-c3ec-4bb5-a88a-cf06b71192c2 - Mass - 100 - - - - - - - 6 - 81.249335306347035 - 69cb5bfe - part_69cb5bfe-9b6e-4526-a72d-355b609a9766 - 69cb5bfe-9b6e-4526-a72d-355b609a9766 - - - 22.138060965639568 - - MI_Restricted_Substances - 0840d007-df07-4e12-bda5-bfc060fb15e6 - - Annealed - Low alloy steel, AISI 4320, annealed - 9ebb0694-21c8-43a3-9f5c-c85a7a30681f - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 133c245b-aaf6-4ac7-ae8d-cf874add17fe - Mass - 100 - - - - - 19.465484758590108 - - MI_Restricted_Substances - eb2b811b-1da6-465a-857f-6d14b372a38b - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 50B60, oil quenched & tempered at 650°C - 5f7e24e3-0b39-41bc-b5f8-389db535d06d - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 66988dcc-8901-4913-9730-c3a1271333f5 - Mass - 100 - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - a2000eb3-8982-4192-9600-2daf6daed5f5 - Mass - 100 - - - - - 19.465484758590108 - - MI_Restricted_Substances - dbf855b9-a140-458a-af71-ee8bc216e050 - - YS140, cold rolled - Drawing quality, YS140, cold rolled - 8752cd77-a987-4ae3-98f4-685752472913 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - 34a218b2-9122-4935-99c5-12ea2f110f66 - MassRemoved - 83.817196583290212 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - e901dc5d-4eae-4a52-ba77-589ac8e3a737 - Mass - 3.4734596514485121 - - - - - 19.465484758590108 - - MI_Restricted_Substances - e9388a2e-df9f-4ef4-8f47-d4cc5a94b8e7 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 50B46, oil quenched & tempered at 425°C - 7c8c7a54-e6ed-4e22-8b59-8101d8103a7c - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - ce65f8df-0e6d-4139-b034-106e035ab92f - Mass - 100 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - 057914de-e8e5-461c-aa09-5009156e79ad - MassRemoved - 92.896151539355586 - - - - - 19.465484758590108 - - MI_Restricted_Substances - 8dc38bb5-eff9-4c60-9233-271a3c8f6270 - - Kovar, annealed - High alloy steel, Kovar, annealed - 608d3663-2d8a-4746-8fdc-171aaef76480 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - de7681c8-627f-4d67-be73-f14fb9a5cb08 - Mass - 100 - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - fd0a4cbb-ee32-4ad7-a7b7-dacdd530c9e5 - Mass - 100 - - - - - - - 2 - 69.549875785387059 - - MI_Restricted_Substances - 5fd070ef-bb1b-4857-abcf-7eda481ecfbe - - 585c4a04 - part_585c4a04-66ae-4320-ac0b-1862c814961b - 585c4a04-66ae-4320-ac0b-1862c814961b - - - 7 - 85.600161592289879 - 6c61c8d8 - part_6c61c8d8-c73d-4b8d-a826-102684aa9aeb - 6c61c8d8-c73d-4b8d-a826-102684aa9aeb - - - 50.493672327368365 - - MI_Restricted_Substances - 4ff376ea-25d8-4792-a34f-9bd7b33c210c - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 4150, oil quenched & tempered at 540°C - c8bb3e17-04cf-45a1-bcd7-99d3fb74a16f - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - 34e02d17-c4e5-435b-8ed3-ffb1ef4c9d2a - Mass - 100 - - - - - 7.072332524661662 - - MI_Restricted_Substances - 181b484f-4ada-4e9e-8c47-103ae23d76c3 - - Quenched & tempered - Low alloy steel, AISI 8740, quenched & tempered - 3a92cc02-c44b-44e4-a148-15aea8a90035 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 4e022716-d5fe-4c11-91e5-a62b08090d7e - Length - 3.6326395830291505 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - e8a2af71-51b8-4ef4-8387-739f2b5fe836 - Mass - 100 - - - - - 7.072332524661662 - - MI_Restricted_Substances - a8f02f5c-c80e-446f-92f4-0046f3d093fc - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 8630, oil quenched & tempered at 425°C - a9791003-2e6c-4557-8c19-e80bc23a8e15 - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - cb06c772-3325-4721-809c-aa202f9520a5 - Mass - 100 - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - c9e53a39-ce3f-4a5b-8a54-a92185f46219 - Mass - 100 - - - - - 7.072332524661662 - - MI_Restricted_Substances - 81ce98b3-d459-4695-9dd9-d53244be47ed - - Annealed - Carbon steel, SA216 (Type WCC), cast, annealed - 8a55ec37-ad56-4cec-87c9-365c731bfe1b - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - da1a7f41-d844-4f49-afa9-ca6d593638db - MassRemoved - 83.995902670545462 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 6d7c3052-e17d-473f-afd4-3d90020677be - Mass - 100 - - - - - 7.072332524661662 - - MI_Restricted_Substances - 181b484f-4ada-4e9e-8c47-103ae23d76c3 - - Quenched & tempered - Low alloy steel, AISI 8740, quenched & tempered - 9dad5bd2-58a6-431c-b5cc-59ce56b4bcb3 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - 5a78a2fc-7fe3-419f-a323-3b74619f1bac - MassRemoved - 79.99000604263972 - - - - - 7.072332524661662 - - MI_Restricted_Substances - a583e694-02c0-408e-9af4-6fbee856b58f - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 9260, oil quenched & tempered at 650°C - f42679cc-9f4b-4473-95a1-5106c67077d8 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 7db14ace-659a-4a27-960b-2944742fd32a - Mass - 100 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 534e9bc3-533d-4407-b6e7-2bd6ab1e33a9 - Mass - 100 - - - - - 7.072332524661662 - - MI_Restricted_Substances - 66ed26ec-15e8-47d9-a7dc-140271411c07 - - Quenched & tempered - Low alloy steel, AISI 4130, air melted, quenched & tempered - 873fb86e-f515-4a35-a234-56f49c739b2c - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - dae4d4ee-2726-4d17-8bff-16ba89e95b77 - Mass - 100 - - - - - 7.072332524661662 - - MI_Restricted_Substances - 9ce914d8-75c1-4c5f-8c57-11c0e62b2cfa - - ASTM A299 Grade A - Structural steel, ASTM A299 Grade A - c8c694d5-afa2-4005-8c11-8825d43bfdb2 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - dd8d3ad7-3f40-4818-946d-86d68c06a83c - Mass - 100 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - baa2cf65-ab4e-459d-854a-cf25eaff975e - Mass - 100 - - - - - - - 8 - 75.952568639047712 - 76726401 - part_76726401-baa8-44b6-a4e0-e5302dec10f6 - 76726401-baa8-44b6-a4e0-e5302dec10f6 - - - 74.780161154819723 - - MI_Restricted_Substances - 535f6e21-a16f-4d54-8413-97634da82122 - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 8650, oil quenched & tempered at 205°C - bae80313-e173-4052-b2fa-50a9e2e60960 - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - 492b6ff3-0321-4fcb-aa5e-3158f3e62904 - MassRemoved - 2.2527213684528697 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - f4706c49-7f96-4bca-a23f-206a398e6230 - Mass - 100 - - - - - 25.219838845180277 - - MI_Restricted_Substances - aec2777b-f126-4f12-b748-b94bf7393f2a - - Oil quenched & tempered at 650°C - Carbon steel, AISI 1060, oil quenched & tempered at 650°C - def7eaff-9817-496c-af57-856706c1a06e - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - ace803c1-43fb-4f08-a0c3-cfefe45ce798 - MassRemoved - 87.7672261967171 - - - - - - - 8 - 86.782260186403178 - - MI_Restricted_Substances - 65d980fe-c0ba-4642-af12-1fcec979852d - - e14a88c7 - part_e14a88c7-45e1-423e-b27e-86babfd9dcf3 - e14a88c7-45e1-423e-b27e-86babfd9dcf3 - - - 1 - 38.069795276070849 - c414229d - part_c414229d-a82c-4aa3-8452-dcb41b67dea2 - c414229d-a82c-4aa3-8452-dcb41b67dea2 - - - 100 - - MI_Restricted_Substances - 9124b244-f2f8-44df-b2cf-b05d3406eb9e - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 4042, oil quenched & tempered at 315°C - 124ef859-be1e-4318-a6b3-42da196e9137 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 4d6c7aba-caad-4a94-b180-6d4379626e21 - Mass - 100 - - - - - - - 5 - 66.076528730837865 - c781e004 - part_c781e004-6dec-4760-8d43-243728f8e4d5 - c781e004-6dec-4760-8d43-243728f8e4d5 - - - 78.259487998792665 - - MI_Restricted_Substances - 75a1c963-399c-444d-a38f-1929c00d15b7 - - Normalized - Low alloy steel, AISI 4150, normalized - 8d70de8d-1d0e-4a4b-801f-f95215c3976a - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 5ebcadfc-4777-48c0-8c5a-d9cfbfa16325 - Mass - 100 - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - 52139b6c-770b-46c3-9071-80999f8382a7 - Mass - 100 - - - - - 3.1057874287439051 - - MI_Restricted_Substances - 1851a6ff-c2e6-4bc6-ab7a-a0eae431e281 - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 5140, oil quenched & tempered at 540°C - c729cdfe-6a51-4370-b488-c287406172e2 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - 34620b10-bb57-496d-8575-9a758f6e5672 - Length - 73.591168398778493 - - - - - 3.1057874287439051 - - MI_Restricted_Substances - 644fc87d-87f3-468c-9a88-b8e2db43ae6b - - water quenched & tempered at 650°C - Low alloy steel, AISI 4130, water quenched & tempered at 650°C - 658cb1e8-b222-4188-9e64-f4df80338b62 - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - adf2d187-1992-4151-a37c-c2149382bb0b - Mass - 65.685986851195793 - - - - - 3.1057874287439051 - - MI_Restricted_Substances - c15a44c3-d8be-4ae8-9a58-281f13b731cd - - YS420, cold rolled - High strength low alloy steel, YS420, cold rolled - 75c9a03c-429e-4914-a23d-a4b305f0cf9c - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - 85c5e31f-cc31-485d-a4d5-4f439b884794 - MassRemoved - 23.233038058147319 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - d4b40bf2-bc76-4582-b25a-b90a0cadcfad - Mass - 100 - - - - - 3.1057874287439051 - - MI_Restricted_Substances - 21dcdeeb-524a-488e-b332-fcd4e1caf6f7 - - water quenched & tempered at 650°C - Carbon steel, AISI 1095, water quenched & tempered at 650°C - ae27b040-e52b-4a16-8609-dbbc671c97f3 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - c5a8c571-1e07-406a-b2ef-9e6aa295ea19 - Length - 53.134468408829747 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 5b8d094f-3398-4ef9-a662-0f4c5ab3a86e - Area - 51.965984912573347 - - - - - 3.1057874287439051 - - MI_Restricted_Substances - 1b3f17f9-2754-4fc4-bfa2-75ff0df55185 - - Polytetrafluoroethylene (PTFE)/Glass fiber, PCB laminate - Polytetrafluoroethylene (PTFE)/Glass fiber, PCB laminate - 7c1f398f-df49-45f6-b3b6-432c087f268d - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - 537e1811-9212-4162-beab-93f0bf581d6f - Mass - 100 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - 4ae4ce1a-50e8-4c13-9b14-b04cdb768561 - Length - 91.3594422821698 - - - - - 3.1057874287439051 - - MI_Restricted_Substances - 4f35be96-97d7-4cea-bd9a-316ce3dbe46e - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 8740, oil quenched & tempered at 425°C - 711d23f1-e1d1-4071-acc0-a71da961a93e - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - bda1ae1e-2cee-4f9d-a249-608570a13981 - Mass - 100 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - 592bba8e-fff8-473e-ae64-fa414716e95c - Area - 94.373309237125 - - - - - 3.1057874287439051 - - MI_Restricted_Substances - 2fca0cda-4548-4601-ade6-49478da1542f - - Potash soda lead glass - 0120 - Potash soda lead glass - 0120 - 144549de-c05a-4f1d-ab02-55b3b7864a35 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - cccde058-d3c4-47f6-b3ea-7cd7ecb9738d - Mass - 100 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - 21969510-545d-40d2-9285-022e1e4c34b9 - Mass - 100 - - - - - - - 4 - 34.739925868222457 - 3faf1c02 - part_3faf1c02-59c7-4ecd-aeee-a7e858166b6e - 3faf1c02-59c7-4ecd-aeee-a7e858166b6e - - - 17.061088474961505 - - MI_Restricted_Substances - 5b117a10-9c48-4dd0-a869-6eb490031da5 - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 8640, oil quenched & tempered at 315°C - f9f46acf-b949-4c88-a4fc-1fac6b060499 - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - 27bbf502-8873-4da2-a061-5fac31a30463 - Mass - 100 - - - - - 11.848415932148356 - - MI_Restricted_Substances - 0c03540d-4b15-4c02-ac02-22aeb9a026d1 - - As rolled - Carbon steel, AISI 1050, as rolled - 86de2392-1c0c-4669-84e6-e9706904b083 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - d12be22d-c654-43de-a124-dbeb82fe01af - Mass - 100 - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - 6262f7bd-bdcc-425a-b0ab-839797dfd342 - Mass - 100 - - - - - 11.848415932148356 - - MI_Restricted_Substances - b0c0246d-7238-46e4-9081-5bad34efbbdb - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 5140, oil quenched & tempered at 205°C - 3670ad3e-b86c-42d6-9369-98cbe97b1784 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - 5751da81-aab6-4ec8-bfa5-3b0fc3aa666f - Mass - 100 - - - - - 11.848415932148356 - - MI_Restricted_Substances - 31491cd8-6f82-4358-a2d6-ef62bfbbfadd - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 4150, oil quenched & tempered at 205°C - 5668f21e-c347-4e6e-8600-007a6685dcf3 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 4576df90-6acf-478e-aa20-3ff3daf41fac - Mass - 100 - - - - - 11.848415932148356 - - MI_Restricted_Substances - 2a821f5c-97b0-4a08-81b1-de3f1543fb44 - - Alkali strontium clear glass - Alkali strontium clear glass - 82762369-e6d6-4208-bc80-ebec9047c104 - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - 5ad105d9-bc68-4a9d-94b1-71fb52ae712b - Mass - 100 - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - d3f08ad0-5a6b-4586-858b-f774abfb5e4d - Mass - 100 - - - - - 11.848415932148356 - - MI_Restricted_Substances - e86ced85-7d75-4b62-8f8e-90bd345ae003 - - Normalized - Low alloy steel, AISI 5140, normalized - c62f6af4-a772-4fae-a097-6102d8585d71 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 88628cc8-966c-43a4-bf3f-ae07beb03e30 - Mass - 100 - - - - - 11.848415932148356 - - MI_Restricted_Substances - 1c7183ad-1608-4e9b-8d01-76721872fbf0 - - Glass/polyimide honeycomb, ±45° fabric (0.088) - Glass/polyimide honeycomb, ±45° fabric (0.088), W Direction - 0184e1c1-d32a-4391-bea7-c89d45ca500c - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - a738a823-8f01-4c63-be05-36c7bf87e740 - Mass - 9.0853340500431763 - - - - - 11.848415932148356 - - MI_Restricted_Substances - c15a44c3-d8be-4ae8-9a58-281f13b731cd - - YS420, cold rolled - High strength low alloy steel, YS420, cold rolled - 068e5759-afc8-4b4b-9ad6-dbe2c9bb6a9e - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - ec0efe92-6a72-4967-84d2-95261d4c6c08 - Length - 75.221976952265 - - - - - - - 8 - 26.336370979592377 - 0dbc4bcb - part_0dbc4bcb-7860-4d68-9e1c-2262ae49c643 - 0dbc4bcb-7860-4d68-9e1c-2262ae49c643 - - - 31.877887170704959 - - MI_Restricted_Substances - 817b973c-3e12-4b5f-96b3-89b05d14d76c - - ASTM A500 Grade C - Structural steel, ASTM A500 Grade C - ebfeefe1-6b1e-4e0c-955f-0fab4f7c9923 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 6f0add2b-811a-4910-bc00-819613f56130 - Mass - 100 - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - 9a201574-74b0-4655-afee-b0cde6b6c0ad - Mass - 100 - - - - - 68.122112829295048 - - MI_Restricted_Substances - 9df55457-5300-4ddb-b92e-122b5c121621 - - Glass and mineral filled, encapsulation, molding - Novolac (glass and mineral filled, encapsulation, molding) - a510660d-8847-40e7-9013-1b3a2aa1e846 - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - 721bb10d-40b3-40f8-a442-31329929a99a - Mass - 100 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 0dbd4f92-52da-4612-8f9b-445d36bd2baf - Mass - 100 - - - - - - - 4 - 43.539729082742582 - 8719cee3 - part_8719cee3-7e5e-419e-82b4-a33ad703e445 - 8719cee3-7e5e-419e-82b4-a33ad703e445 - - - 6.8166290907266687 - - MI_Restricted_Substances - 91d7e1bd-d353-4eb1-9634-286e8e69d0d5 - - Oil quenched & tempered at 540°C - Carbon steel, AISI 1141, oil quenched & tempered at 540°C - 09339501-b90d-4cc7-b6f3-ad949f588d4d - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - 3e935dc2-739a-49b1-9698-176143391e94 - Mass - 44.908148210918604 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - c343fa32-2b7b-42c9-aee9-0c00bce27843 - Length - 72.754816465431276 - - - - - 15.530561818212222 - - MI_Restricted_Substances - 0c03540d-4b15-4c02-ac02-22aeb9a026d1 - - As rolled - Carbon steel, AISI 1050, as rolled - 04b0c57d-d8dd-4273-8532-8996b5b50db9 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - 865313d8-57a7-40af-85b4-929a1aac2fcb - Mass - 100 - - - - - 15.530561818212222 - - MI_Restricted_Substances - bbe0765c-012b-434e-878b-b40ad692b373 - - YS550, hot rolled - High strength low alloy steel, YS550, hot rolled - da34dc54-db5a-40de-a63d-af3f077d3709 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - a3719d7a-5b96-47ca-97a0-bddd60ff8504 - Mass - 100 - - - - - 15.530561818212222 - - MI_Restricted_Substances - 28d51559-b49b-4a2b-9f09-9a198db03164 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 4340, oil quenched & tempered at 425°C - b6f03f03-413a-4337-ba39-05190a7b2dd7 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - 594dabbe-39fd-4dd1-b88e-478b03efea2a - Mass - 100 - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - 921a2ff2-aff7-4122-a3e3-1d9b999e2e22 - Mass - 100 - - - - - 15.530561818212222 - - MI_Restricted_Substances - ab895171-8c16-4056-9062-78f7516be1b0 - - Borosilicate - 7050 - Borosilicate - 7050 - 9c05940d-1c2a-4e3d-969c-d01087aaf891 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - bff839a3-d322-4f30-ab57-f2a490f66d3a - MassRemoved - 56.520598594341706 - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - c29daa43-5f13-4db1-850f-84554bde107e - MassRemoved - 14.154799102877638 - - - - - 15.530561818212222 - - MI_Restricted_Substances - 9e11a8f7-0b35-4610-aee9-557a236bbe5c - - Soda borosilicate - Soda borosilicate - 5dc0bd97-c630-46fb-a89e-16a37070be8c - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 2ded6187-797e-46b0-bc88-cd21cb67e9dd - Mass - 100 - - - - - 15.530561818212222 - - MI_Restricted_Substances - 0a203f13-4112-4c7b-8d17-bd9ce600f647 - - YS350, cold rolled - Dual phase steel, YS350, cold rolled - f2dfa513-aae0-4797-beb9-1ed13e79d1d8 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - bf617362-33d0-4391-a330-bb1605b6106a - Mass - 100 - - - - - - - 6 - 81.783242049526066 - a0b611b5 - part_a0b611b5-342d-4b79-be32-7c9a076e0e8f - a0b611b5-342d-4b79-be32-7c9a076e0e8f - - - 18.181860315698135 - - MI_Restricted_Substances - 99d1c1c6-eca3-40ed-a479-6dec902f52da - - YS400, cold rolled - TRIP steel, YS400, cold rolled - f4beeddc-916c-4c6b-b4ef-579374ef198d - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - 5046dd39-4752-4147-877b-f1661f6e3812 - Mass - 23.847984161157154 - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - 636cacf1-3471-4160-b4da-89d7cb071e26 - Mass - 100 - - - - - 20.454534921075467 - - MI_Restricted_Substances - 59606aaf-e663-4044-b533-b4b8cb684253 - - YS500, cold rolled - Complex phase steel, YS500, cold rolled - e9403f7e-9696-4f1d-a154-714de79d9668 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 730d48fa-c6ef-4824-88ff-55453ba45851 - Mass - 100 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - 028e4dc7-f215-4846-9938-98ef924d2a7e - MassRemoved - 83.675200857070834 - - - - - 20.454534921075467 - - MI_Restricted_Substances - b44fad5b-b59d-4153-addf-f70a7895947d - - Annealed - Low alloy steel, AISI 4130, annealed - 618cbf4c-398c-4566-ae46-3b02aeea4d07 - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - 5e318605-a8ed-40be-9d53-8871d8887891 - Mass - 100 - - - - - 20.454534921075467 - - MI_Restricted_Substances - dce2dc34-54db-4d0a-bab0-85d4e6e08d8e - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 6150, oil quenched & tempered at 650°C - 7a112c50-ea81-4f06-9f2b-e0bb931100f1 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - be96ad5c-ea44-4e45-a520-83bd94672ada - Area - 0.5402269775700882 - - - - - 20.454534921075467 - - MI_Restricted_Substances - 0c172430-369d-48ad-910e-69fe1451a36e - - Normalized - Carbon steel, AISI 1095, normalized - e81306d4-b281-4497-ba8a-5b2a664492c7 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - 9803fbe4-2ff3-4ba5-83cd-4ab5cb34d1b7 - Mass - 100 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - dab3d543-1214-4a62-b05e-3f3291a45893 - MassRemoved - 36.132488789098566 - - - - - - - 4 - 35.294632024734575 - 208ce13a - part_208ce13a-b5f1-4feb-a7bd-e85b0bb4a8ad - 208ce13a-b5f1-4feb-a7bd-e85b0bb4a8ad - - - 100 - - MI_Restricted_Substances - 046c72ad-662c-4ce8-8132-16d5254188ee - - Heat resistant, molding - PF (glass and/or mineral filled, heat resistant, molding) - 3e668c82-8399-4eb2-b017-b473ff533ac3 - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - 650bd447-3070-4a45-bb76-27c65e9e4ca4 - Area - 96.301162008336348 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 9d95b09b-f3c6-448d-95c8-f6231f465cd3 - Mass - 100 - - - - - - - 1 - 31.815718874249477 - - MI_Restricted_Substances - 19db41d7-f431-4cae-8977-8bdab8435374 - - a50db05b - part_a50db05b-55c0-48e8-b262-8bffcfa8738c - a50db05b-55c0-48e8-b262-8bffcfa8738c - - - 9 - 67.046943896937634 - 3a641f16 - part_3a641f16-839e-4d1f-aae2-ee4563f538c1 - 3a641f16-839e-4d1f-aae2-ee4563f538c1 - - - 100 - - MI_Restricted_Substances - 72799627-a7c0-4df4-8250-e2be8538565f - - Glass ceramic (N11) - Glass ceramic (N11) - 1f60f091-b4e3-4c58-b54d-61be8f2f0000 - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - c3674baf-8976-4c3f-944b-0c659f07fd2f - Area - 77.0971026630593 - - - - - - - 2 - 39.97497518545714 - ba8288a7 - part_ba8288a7-5880-41d0-a8bc-4a42f0ee5be7 - ba8288a7-5880-41d0-a8bc-4a42f0ee5be7 - - - 79.03927889607813 - - MI_Restricted_Substances - fc29cc59-a670-4ad6-85a0-eb07bf011f1a - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 6150, oil quenched & tempered at 425°C - 4e1f456c-0ea0-40ac-bb59-3c78d035d548 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - 27d27927-bd18-4356-bb79-401374ff5801 - MassRemoved - 8.4510101044788062 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 8a6c5514-4b0d-4384-b2fd-1819bdf963aa - Length - 1.7234645326265434 - - - - - 20.96072110392187 - - MI_Restricted_Substances - 874b8433-2e47-45c3-9c89-226428104214 - - Glass and mineral filled, heat resistant, molding - Novolac (glass and mineral filled, heat resistant, molding) - 7eda1423-f305-4bde-9d90-2e83666732fd - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - dfc3b8b7-afa2-41a4-8e7d-7d8682633f0d - Length - 17.662342273472966 - - - - - - - 2 - 38.256926992096439 - 19bd4234 - part_19bd4234-39b1-47f8-8eac-af3b32dbf354 - 19bd4234-39b1-47f8-8eac-af3b32dbf354 - - - 60.8626597844356 - - MI_Restricted_Substances - 67ea6f19-34d5-40af-9b8c-059058fd840a - - Oil quenched & tempered at 205°C - Carbon steel, AISI 1080, oil quenched & tempered at 205°C - cd2796d3-e2ad-4034-bb16-0ed081b6ba85 - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - 6d20e938-760d-4d91-80bb-7ef9c624bdd4 - Mass - 15.575744544889659 - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - 2dd4aba0-cfb4-40e5-9e8a-6dc04a8ef5b7 - Mass - 100 - - - - - 19.5686701077822 - - MI_Restricted_Substances - ed1b937b-1738-408f-9591-bd3e40cc5e33 - - Quenched & tempered - Low alloy steel, D6AC, quenched & tempered - a2e8261e-5fd8-40b8-b1de-bf192c84f1a6 - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - 4f611131-8c4a-4d39-b8ee-dad994576bb7 - Mass - 100 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - 3f84b836-0ee0-4a42-a86f-5367cdc47fb1 - Mass - 100 - - - - - 19.5686701077822 - - MI_Restricted_Substances - 3606ab13-13f3-49fb-bded-2e3470bcf7d9 - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 81B45, oil quenched & tempered at 650°C - 438e3a3e-b57b-4f61-a754-c1a9f8f14655 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - ba4a6d40-3e32-41ca-8396-b53a02414c81 - Length - 53.875004013010766 - - - - - - - 5 - 3.5629354433915279 - 9dd6db59 - part_9dd6db59-314a-44cb-a1f8-80d8fef48bf7 - 9dd6db59-314a-44cb-a1f8-80d8fef48bf7 - - - 20.78174591100856 - - MI_Restricted_Substances - 0a203f13-4112-4c7b-8d17-bd9ce600f647 - - YS350, cold rolled - Dual phase steel, YS350, cold rolled - 7e1abe58-dc2f-49e9-b7c0-dbc38cbc01d0 - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - 6728f46f-986a-4275-9387-1cc4faa4da0b - Mass - 85.852806915460533 - - - - - 39.609127044495722 - - MI_Restricted_Substances - 55c8dd10-b62f-4136-b1c8-6260fcec05cc - - Annealed - Carbon steel, AISI 1040, annealed - a63a43fb-bd3e-4713-9d59-14cd253dcfb8 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - e10732c7-d7d9-40f8-9ce9-834264f73e30 - Mass - 100 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 312ad884-6078-48de-ac21-4b1cb4df5195 - Mass - 100 - - - - - 39.609127044495722 - - MI_Restricted_Substances - 9052201a-a41d-4b86-8c7c-2e80163afd47 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 9255, oil quenched & tempered at 425°C - 3f0e83fa-2dc2-40fd-8673-7af055ac9ebb - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - fdd1873a-08e3-49d6-ac02-ac8740413d2f - Mass - 98.71991826161738 - - - - - - - 2 - 65.842380172499631 - 91357df5 - part_91357df5-a0a9-4613-9e4e-4db5c3dd290a - 91357df5-a0a9-4613-9e4e-4db5c3dd290a - - - 29.547984213357786 - - MI_Restricted_Substances - c62d668e-5411-4845-b19c-3a0c4eedf872 - - 10CrMo9-10, normalized & tempered - Low alloy steel, 10CrMo9-10, normalized & tempered - 3f3c809b-73b8-49b9-9c0b-bc086b8b39a9 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 3d8df13c-3e9f-4988-bede-97cdbdea9c70 - Mass - 100 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - d644e2f7-3fb6-4478-a0e6-492dc9095c10 - Mass - 100 - - - - - 10.064573683806032 - - MI_Restricted_Substances - bf6aa85b-3059-4b2c-86af-6bcb1996d5b9 - - Oil quenched & tempered at 540°C - Carbon steel, AISI 1340, oil quenched & tempered at 540°C - 992bae49-43ed-4d6f-9ab8-9a32662693fe - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - d9c54a78-22a2-4129-8026-e53bf8b5e318 - Area - 24.615524534422683 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 23cdc31f-0efe-4f13-9490-41453d6a83ed - Mass - 100 - - - - - 10.064573683806032 - - MI_Restricted_Substances - 26c4e2ce-ddb9-499d-bc00-aa0f3bdd9c24 - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 8740, oil quenched & tempered at 540°C - 2ea7361e-06a4-4657-87e0-1c0de2008304 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - 65a19922-4bb3-4ca4-a6a5-69dca645c5ff - Mass - 100 - - - - - 10.064573683806032 - - MI_Restricted_Substances - 7ab4723d-0e73-471b-9be3-18cf27157318 - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 5130, oil quenched & tempered at 540°C - 99975f48-c24c-4386-ba08-6128ca010a84 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 622c3df4-5555-49e5-873b-382ad90ef3ba - Length - 68.233961969722984 - - - - - 10.064573683806032 - - MI_Restricted_Substances - 6ad310ec-db2b-43b1-afa1-9b6ddae5880c - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 94B30, oil quenched & tempered at 425°C - 0da179b9-8835-487a-9c7e-dc94a332499c - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - 7567cd31-1442-4f82-b28a-fe35bc1588d2 - Mass - 100 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - e7d87153-23d8-4119-8d80-f876d25399c0 - Mass - 100 - - - - - 10.064573683806032 - - MI_Restricted_Substances - 8dbb57f2-b225-4f57-9a5a-c25a03292d6e - - Annealed - Low alloy steel, AISI 6150, annealed - b9be711b-55d6-4195-b9d0-e0a8d321904c - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - 1834584f-afbf-4ab2-bc96-be73a97aa21e - Length - 65.84657596696475 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 00887d64-3f95-46fc-9953-4f368a07f0eb - Mass - 100 - - - - - 10.064573683806032 - - MI_Restricted_Substances - a43e27db-2962-4e19-aebb-f135744741e3 - - Annealed - Low alloy steel, AISI 5120, annealed - ddf239e2-6149-43a3-8000-236874b5839b - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 0ef4f2b1-4984-4c98-90bd-180542bd7dde - Mass - 100 - - - - - 10.064573683806032 - - MI_Restricted_Substances - 5169a157-0d18-4d45-b197-799e06aa00bc - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 9255, oil quenched & tempered at 315°C - b85fa4ef-7d24-45db-b8ab-89797f8458c2 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 727324d2-de0e-483e-869c-5ce872d30888 - Length - 39.335817768860522 - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - eef71883-cb51-409a-b7ce-70882f5ef579 - Mass - 100 - - - - - - - 3 - 19.394435323492825 - 1ff628be - part_1ff628be-8e3f-4c38-879f-0b4048e9e811 - 1ff628be-8e3f-4c38-879f-0b4048e9e811 - - - 65.8800943130069 - - MI_Restricted_Substances - b00ee3d8-d653-4c76-8154-c2f07820ceda - - As rolled - Carbon steel, AISI 1080, as rolled - 34f2f2b5-283d-41db-9853-4563182a132c - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - 666ac6f9-c3bc-48e2-bc93-7e95e405309a - Length - 13.8378301699822 - - - - - 5.6866509478321845 - - MI_Restricted_Substances - dcce1340-a96d-465a-8878-4d8f44c2f7f7 - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 5150, oil quenched & tempered at 540°C - 1f4c5613-0146-4a59-a030-e486677f0f9b - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 1963c1c5-b111-47ea-bb86-1bbde20ee277 - Mass - 100 - - - - - 5.6866509478321845 - - MI_Restricted_Substances - b879bb01-8648-4b5b-8159-d591cb251ca8 - - Normalized - Carbon steel, AISI 1080, normalized - a01b000d-fda4-4c5d-8d5d-d69fd0bb5e70 - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - 56e8844a-a9f1-4e73-b34e-8dda8ee558ec - Mass - 100 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 578cc726-506b-4075-ad45-8cff91a53ada - Mass - 100 - - - - - 5.6866509478321845 - - MI_Restricted_Substances - 2be5267e-fce0-4169-a0fe-d8de913e1d71 - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 8640, oil quenched & tempered at 205°C - f68aa67a-f7f4-489e-9eaa-286340efe2d1 - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - dc22fa7d-7549-4386-8c95-1837f5c128b2 - Mass - 100 - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - 530a525e-76b2-4f7f-9788-0e6d257c2238 - Mass - 100 - - - - - 5.6866509478321845 - - MI_Restricted_Substances - f95fb065-be79-4298-84c9-9f276ea46e48 - - Glass/polyimide honeycomb, ±45° fabric (0.088) - Glass/polyimide honeycomb, ±45° fabric (0.088), L Direction - 03a3141d-7b1e-4fff-a8a6-37299f364430 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 56360d01-e86f-423e-b37b-9fa3ba08185e - Mass - 59.824284752749037 - - - - - 5.6866509478321845 - - MI_Restricted_Substances - 2017a3b5-88e7-473f-b7c9-1ab8afe722fe - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 5160, oil quenched & tempered at 540°C - 9904d2c7-5bf9-4f27-8090-81297a499433 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 0b71141e-c7c1-41f5-87e5-badcfc0a5a0c - Length - 67.201602164284139 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - a22737bb-cc0a-4f41-9a11-64e3af9a7db4 - Area - 42.627087767527946 - - - - - 5.6866509478321845 - - MI_Restricted_Substances - e678781a-1b38-4709-816b-9db609651db6 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 50B60, oil quenched & tempered at 425°C - e7349359-10ab-4551-be4e-c99c7405dde4 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 93c0653b-b85f-40c7-93ee-3a0d7f16d0a6 - Mass - 100 - - - - - - - 9 - 66.3558430347386 - 873e2b55 - part_873e2b55-ef6f-416b-9880-a137f2b762af - 873e2b55-ef6f-416b-9880-a137f2b762af - - - 54.279447185937059 - - MI_Restricted_Substances - 81ce98b3-d459-4695-9dd9-d53244be47ed - - Annealed - Carbon steel, SA216 (Type WCC), cast, annealed - 023a42db-39d1-420c-bd0c-c50e7ec5d6b3 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 219011eb-716b-4b65-9d55-75b1e95d8541 - Mass - 100 - - - - - 45.720552814062941 - - MI_Restricted_Substances - b872537b-c0a0-4c3e-8388-e5544183cdd3 - - water quenched & tempered at 425°C - Carbon steel, AISI 1030, water quenched & tempered at 425°C - 85907385-a5ab-40fb-a8a1-d2d28034c0eb - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - c35e2aff-f3f8-4e4e-9a92-f70a56d3e198 - Length - 72.001279877499343 - - - - - - - 8 - 25.110623578126834 - 260376b9 - part_260376b9-7f28-4b9d-ba85-c71529c2e558 - 260376b9-7f28-4b9d-ba85-c71529c2e558 - - - 100 - - MI_Restricted_Substances - 2096ca77-9981-4fd5-9bc6-afe56b3bbbd4 - - Glass/phenolic honeycomb, 0°/90° fabric (0.096) - Glass/phenolic honeycomb, 0°/90° fabric (0.096), W Direction - cd0e804b-5055-491c-91bb-f578cd24b402 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - ac430bac-6be6-4ca3-a355-eaf8a392dca2 - Mass - 100 - - - - - - - 4 - 81.728687594518391 - 650a75cd - part_650a75cd-cf12-4f02-894a-47b250a8a649 - 650a75cd-cf12-4f02-894a-47b250a8a649 - - - 35.709987178309817 - - MI_Restricted_Substances - 44a3cdc8-1092-45c0-be37-1802daa92d30 - - Borosilicate - 7052 - Borosilicate - 7052 - 5c6db892-edf7-4a01-891a-62b1a8c3c0b3 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - a27619f0-e851-4da1-a062-7e6c7629df5f - Mass - 100 - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - 29cedba9-c8e5-484f-8b1e-1573897b939a - Area - 74.103033949669012 - - - - - 32.145006410845092 - - MI_Restricted_Substances - 874b8433-2e47-45c3-9c89-226428104214 - - Glass and mineral filled, heat resistant, molding - Novolac (glass and mineral filled, heat resistant, molding) - 3bd97cc5-55ff-4338-8f5b-868161733ffb - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - d09771bf-6836-4948-99e4-add1146832cc - Mass - 70.765653238988321 - - - - - 32.145006410845092 - - MI_Restricted_Substances - bafd43bc-822e-4a22-bbac-ea5d189fb539 - - Glass/phenolic honeycomb, 0°/90° fabric (0.096) - Glass/phenolic honeycomb, 0°/90° fabric (0.096), L Direction - 9adcfe4f-0bcb-4a67-b39a-cb7ce736e73b - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - 3b5ffc91-f48d-403f-ae38-123563087d04 - MassRemoved - 57.180027364371355 - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - a921ce26-772c-4779-8f41-ef92162af905 - Area - 19.032967425432506 - - - - - - - 1 - 41.888644752040804 - 9ebdc15a - part_9ebdc15a-d6ae-45be-99de-789d4100ca40 - 9ebdc15a-d6ae-45be-99de-789d4100ca40 - - - 100 - - MI_Restricted_Substances - a89802d6-13c5-496d-b139-57ae43e6591c - - As rolled - Carbon steel, AISI 1022, as rolled - 94c367bb-be30-41d7-b198-c89579e1eacd - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - cd0c3208-da44-4c68-bea8-bde114513392 - Mass - 100 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - b65d9c76-58c0-4361-9dc0-a64d214066cb - MassRemoved - 76.781887224308164 - - - - - - - 5 - 13.107623305687504 - b489c8c7 - part_b489c8c7-b4d5-4664-aa4b-bb5250ccf3b2 - b489c8c7-b4d5-4664-aa4b-bb5250ccf3b2 - - - 100 - - MI_Restricted_Substances - 23967b46-b6a1-4f82-9a4f-d0ea6e728ece - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 5160, oil quenched & tempered at 650°C - 73ef86b5-6d18-4588-a375-1e5a070886e8 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - fbf0e496-74ad-4a0d-9726-2358bc601732 - Length - 39.468133654197743 - - - - - - - 4 - 96.196341093721031 - 5b9257d1 - part_5b9257d1-f821-4fff-a137-7e3ee55bfa4e - 5b9257d1-f821-4fff-a137-7e3ee55bfa4e - - - 93.020738238944091 - - MI_Restricted_Substances - be8a7515-ee24-4272-814c-77d9175f6448 - - As rolled - Carbon steel, AISI 1137, as rolled - 6ea1fac4-fb32-4f3c-af4b-f096113a38dc - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - aa5fbc04-e9e0-454a-bc5d-97ee7d8abd00 - Mass - 100 - - - - - 0.99703739443655848 - - MI_Restricted_Substances - 96ffbd8d-b296-4749-a0b0-fc5d243affda - - water quenched & tempered at 540°C - Carbon steel, AISI 1095, water quenched & tempered at 540°C - 156d7400-497b-46ae-b90a-01d15ae3584a - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 52debb42-5c4c-4d64-894a-f848f6076635 - Mass - 100 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - 83a1e091-bf83-4510-906d-e127384dbaba - Length - 30.027891476651604 - - - - - 0.99703739443655848 - - MI_Restricted_Substances - 9e6962c2-d850-4285-97e5-fbb27dbc0447 - - water quenched & tempered at 425°C - Carbon steel, AISI 1050, water quenched & tempered at 425°C - ed8f8b22-77d8-47c4-8445-35f902c2fd70 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - 48d616ec-5d6c-43ef-8222-c9f556facab8 - Area - 36.975034250400512 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 2598e531-13cd-4f51-924c-73bd3f0cbc5d - Length - 22.492894587336526 - - - - - 0.99703739443655848 - - MI_Restricted_Substances - 6c7c9029-b53e-45cd-9578-92083101604c - - Glass/phenolic honeycomb, ±45° fabric (0.032) - Glass/phenolic honeycomb, ±45° fabric (0.032), W Direction - fa45dc1e-1853-45e1-83a8-443a15d8245d - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - d9f0a1eb-bbaa-40ee-a757-f8cdedaa53e8 - Mass - 65.565940814821957 - - - - - 0.99703739443655848 - - MI_Restricted_Substances - f92ff01e-ed35-4c66-96d1-607d9684b44b - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 94B30, oil quenched & tempered at 315°C - 3e210ce1-97e5-430d-803f-b12cade81d95 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 7a24a97b-8f05-466b-918b-4dc2f6c5ed90 - Mass - 100 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 60b3d98f-e477-465c-abc1-f70e10b5d9da - Mass - 1.4603360097204969 - - - - - 0.99703739443655848 - - MI_Restricted_Substances - 8cd50236-3f00-4460-9e77-bc85138f34c4 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 51B60, oil quenched & tempered at 425°C - fdb12a23-07e4-41ed-a7db-1d63e9dba3dc - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 13e03c77-918f-49ce-823b-98f25145eb80 - Mass - 100 - - - - - 0.99703739443655848 - - MI_Restricted_Substances - 6d6a3603-a2a8-4db9-9e7e-ad4fc4f9c724 - - Glass/phenolic honeycomb, ±45° fabric (0.064) - Glass/phenolic honeycomb, ±45° fabric (0.064), W Direction - 642bc4ec-7dc1-4e24-b9de-f50f4971c09c - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - dcf23f35-d5c6-4368-b02e-6c0aa653c3eb - Mass - 100 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - 900cce51-db5c-4b9c-b9b4-9a315fb29b16 - MassRemoved - 52.897117916912364 - - - - - 0.99703739443655848 - - MI_Restricted_Substances - 87e1a3cd-fd79-4013-b5f8-56d6f28bef34 - - Oil quenched & tempered at 540°C - Carbon steel, AISI 1144, oil quenched & tempered at 540°C - 15f2d5f4-0d3f-4dcb-ac36-3502ea6bc955 - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - 63823504-d8fb-4123-933c-f810c438558b - Mass - 18.231672615852055 - - - - - - - 3 - 22.852098812745929 - 7d1e9930 - part_7d1e9930-f664-42e2-9303-926b6b2461e0 - 7d1e9930-f664-42e2-9303-926b6b2461e0 - - - 70.843362794650417 - - MI_Restricted_Substances - a6ee4feb-80c5-43a7-b3ee-a1423218f502 - - AF1410 - High alloy steel, AF1410, solution treated & overaged - 2f3e003b-677d-4d37-8f9f-8d1464636002 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - fc55e36d-d625-4e4c-98a3-e04855bb014e - Mass - 100 - - - - - 29.156637205349583 - - MI_Restricted_Substances - d121aded-0a6a-41ae-be9f-f0532fab5cfd - - water quenched & tempered at 540°C - Carbon steel, AISI 1030, water quenched & tempered at 540°C - 8b20fef8-50e4-45ea-8bd2-cca011716365 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - f1eebee2-01d2-4e54-b6c3-d097f4ad32bf - Mass - 100 - - - - - - - 3 - 95.2344635944974 - 4023ab0f - part_4023ab0f-9880-418e-8820-5951c5d64aca - 4023ab0f-9880-418e-8820-5951c5d64aca - - - 19.395717149318994 - - MI_Restricted_Substances - ce76abdf-c476-4643-8436-8e49a2813e39 - - Oil quenched & tempered at 425°C - Carbon steel, AISI 1080, oil quenched & tempered at 425°C - 1bde5ecf-700e-4a11-97af-e0288a8e8c9b - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - d7eafcf8-27cc-4ebe-934c-6d935638c057 - Mass - 46.434849661977431 - - - - - 80.604282850681 - - MI_Restricted_Substances - af4f67b9-f5a7-4fc3-9f1d-da3309e4b19a - - Solution treated & aged - Iron-base-superalloy, Cr-Ni alloy, A-286, solution treated & aged - 98d98926-df80-4f95-9608-402ddc11f352 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - 11ab8d32-b3f3-49f9-9742-57531e3f2a0f - Mass - 100 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 9b3018cd-88ea-4707-885d-edf6ad1b12dc - Mass - 100 - - - - - - - 3 - 31.530401078765468 - b5828b97 - part_b5828b97-1075-4774-be6c-accf9015044f - b5828b97-1075-4774-be6c-accf9015044f - - - 46.062491203687387 - - MI_Restricted_Substances - 00fe0155-9aca-4c9d-b0a2-1289f92fa2a0 - - Alkaline earth lead glass - Alkaline earth lead glass - 217f3630-b6ca-496a-9cf2-f3de87d86d02 - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - e032fb18-10f2-491f-b682-593060272c98 - Mass - 100 - - - - - 8.989584799385435 - - MI_Restricted_Substances - fab0ed5a-7494-4bcb-b57a-e0d565751dfe - - Potash soda lead glass - 1990 - Potash soda lead glass - 1990 - 689fa427-652b-49ea-af17-4831b88b7446 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 7e70493a-73d5-40e6-b18d-87553700cf8a - Mass - 100 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 7ca68a1c-ff4c-43e4-93f4-8bb83e0f0e75 - Length - 20.890187016171492 - - - - - 8.989584799385435 - - MI_Restricted_Substances - a68201e5-218b-4387-9e30-d1332ccfa44f - - Oil quenched & tempered at 315°C - Carbon steel, AISI 1340, oil quenched & tempered at 315°C - 57c62021-7086-4950-a92c-456b85b9e884 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 676d724a-c0d0-49ab-9f89-5b4d9254e89e - Mass - 100 - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - d8787978-abf8-42e7-84b8-015687e6c2c7 - Mass - 100 - - - - - 8.989584799385435 - - MI_Restricted_Substances - 1d5dd59c-75a0-4bf2-8862-7d77996aa0be - - Annealed - Low alloy steel, AISI 8650, annealed - c0d00feb-229c-45d8-b780-8d491e068b28 - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - a4a4e099-acc5-405a-8bda-09da836ffc14 - Mass - 100 - - - - - 8.989584799385435 - - MI_Restricted_Substances - ef4e19ac-4c9c-4fc1-b971-3ce21de330a2 - - Glass/polyimide honeycomb, ±45° fabric (0.128) - Glass/polyimide honeycomb, ±45° fabric (0.128), W Direction - d0328aa0-162b-40b6-852c-c3aa591010b9 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 08fbec63-9041-46ca-b103-6b5477c34130 - Mass - 100 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 70cf2e8c-ff1b-4eef-81ff-44b95dcc433f - Mass - 100 - - - - - 8.989584799385435 - - MI_Restricted_Substances - 2096ca77-9981-4fd5-9bc6-afe56b3bbbd4 - - Glass/phenolic honeycomb, 0°/90° fabric (0.096) - Glass/phenolic honeycomb, 0°/90° fabric (0.096), W Direction - 9f41888e-8aac-4160-b914-30890b83248c - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 49748196-7cb6-4172-b1da-1f5290340c74 - Length - 5.7102597345180151 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - cc937aff-8c52-4315-b307-e41c7e4ef08c - Mass - 100 - - - - - 8.989584799385435 - - MI_Restricted_Substances - 67cc68ee-c8ab-40bd-bf62-4babd642a1fd - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 81B45, oil quenched & tempered at 425°C - 47a5075d-5e27-4e53-8b2a-eabaec901f1c - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - 4a76f34b-6d55-432e-ad78-60128d843a4f - Mass - 100 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - abd73439-a4ae-4ba3-a258-fd5fc322115a - Mass - 100 - - - - - - - 4 - 23.832178359773092 - 06628875 - part_06628875-d9ee-4c09-89e7-0f454a13cd45 - 06628875-d9ee-4c09-89e7-0f454a13cd45 - - - 81.659225226221238 - - MI_Restricted_Substances - ee08f647-79af-49f3-98c5-043480a0fed4 - - Quenched & tempered - Low alloy steel, 4330V, quenched & tempered - 33f6730d-9f32-4321-8418-a3d9a8e4c514 - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - d423ef7a-2f61-4992-9f5f-e4bacf13607b - Mass - 100 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - f4171533-291f-4ce9-9087-d31d486f10d0 - Mass - 100 - - - - - 18.340774773778762 - - MI_Restricted_Substances - d411a96b-aa1c-4651-a405-5a2bc5c32dff - - Modified, Grade 91 - Alloy steel, 9Cr-1Mo-V, modified, Grade 91 - a5fa4139-e40c-47fb-a213-a703316d9a57 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - f96af788-4771-487b-a457-aeafa787e071 - Mass - 100 - - - - - - - 8 - 88.412138441769471 - - MI_Restricted_Substances - fd7a9f3d-cb52-4422-8ede-c25a48f61056 - - 6795518b - part_6795518b-1296-4afe-b918-433b4c411abc - 6795518b-1296-4afe-b918-433b4c411abc - - - 8 - 1.5978388961394499 - - MI_Restricted_Substances - fd7a9f3d-cb52-4422-8ede-c25a48f61056 - - 52486ce9 - part_52486ce9-d674-4917-bb14-f25a244a5a8e - 52486ce9-d674-4917-bb14-f25a244a5a8e - - - 7 - 43.843906439768105 - - MI_Restricted_Substances - 80083213-3621-42c0-9e23-cdaa30c759e6 - - 5392a22c - part_5392a22c-ee32-4fd6-8428-0968c023863e - 5392a22c-ee32-4fd6-8428-0968c023863e - - - 3 - 39.933078754662105 - fd45e442 - part_fd45e442-8f0c-4731-b486-355c460e573f - fd45e442-8f0c-4731-b486-355c460e573f - - - 100 - - MI_Restricted_Substances - 90b2285b-4295-429d-beb8-90d9f5df0101 - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 5046, oil quenched & tempered at 315°C - cb7ea85e-72ec-4dee-bee5-f9a93f4ad9ad - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 5b3d7c37-3bb1-41e3-91f3-d37aefcdfd96 - Mass - 100 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - f1deacca-1590-431d-b8fc-fe4934ecb0e3 - Mass - 100 - - - - - - - 2 - 99.169801780567411 - 76104c26 - part_76104c26-866e-4db9-9d90-7097e3982b3d - 76104c26-866e-4db9-9d90-7097e3982b3d - - - 38.343663391817209 - - MI_Restricted_Substances - 3cad12a9-0765-402c-a6b1-0be665ecd2e6 - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 4140, oil quenched & tempered at 540°C - fc0e832c-2179-4f80-850a-a311863ffadd - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 89e7a6a4-d35c-4b53-b22a-188467bcd226 - Mass - 100 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - 1b37e761-da85-4f06-8215-34330d7f61cf - Mass - 100 - - - - - 7.7070420760228489 - - MI_Restricted_Substances - 45a257d5-da48-4520-9174-ffe7bbadcd1c - - Glass/phenolic honeycomb, ±45° fabric (0.088) - Glass/phenolic honeycomb, ±45° fabric (0.088), L Direction - 83e993b0-6437-4eb5-a265-245d967243f1 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - 176aea18-0ec1-4b4f-bceb-bddb9547aebe - Area - 88.583230408180142 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 93dea267-4bef-403b-a62d-1a8a007593c2 - Mass - 100 - - - - - 7.7070420760228489 - - MI_Restricted_Substances - 211ae46e-0827-4d61-af66-5a72c42d0cd8 - - T-glass - T-glass - a9a90986-ee65-4929-a4b6-f935adf547e9 - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - 25b28a90-51c9-4416-9ad3-3fe04a1746e2 - Mass - 100 - - - - - 7.7070420760228489 - - MI_Restricted_Substances - 4df9287d-c8fa-47a8-8f7b-218fdc14a141 - - Normalized - Low alloy steel, AISI 4340, normalized - edf4f538-5d79-419b-929f-aaa781ef585d - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 561f8a3b-3a9a-4141-aa92-ecca13669933 - Mass - 100 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - 4d917439-f220-47bc-9ed2-cb39bb0b83cd - Mass - 100 - - - - - 7.7070420760228489 - - MI_Restricted_Substances - 644fc87d-87f3-468c-9a88-b8e2db43ae6b - - water quenched & tempered at 650°C - Low alloy steel, AISI 4130, water quenched & tempered at 650°C - 3c3474e6-baf8-44fa-b65b-095b10e30b8d - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 2c8a6e29-c719-489c-b5cc-4068a6161ded - Mass - 100 - - - - - 7.7070420760228489 - - MI_Restricted_Substances - 9ce914d8-75c1-4c5f-8c57-11c0e62b2cfa - - ASTM A299 Grade A - Structural steel, ASTM A299 Grade A - 48671cfe-bff1-4aef-a9ec-7ca411fb54f1 - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - 5010ab7a-ded4-4271-827c-cd2bfdbc5f4e - MassRemoved - 56.047520114131046 - - - - - 7.7070420760228489 - - MI_Restricted_Substances - 90b2285b-4295-429d-beb8-90d9f5df0101 - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 5046, oil quenched & tempered at 315°C - 15109e4a-788f-45d7-b307-7eae9067ed3b - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 482c2990-9110-46c6-b63b-1fd1332ec968 - Mass - 100 - - - - - 7.7070420760228489 - - MI_Restricted_Substances - 966360b2-fda5-432b-9069-4a9814db3e6b - - YS1200, hot rolled - Martensitic steel, YS1200, hot rolled - 615c2e3c-f676-4a21-8bd3-aa289ab2f97f - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - 1bc2734f-76ea-4eee-ac4e-3d305cac579e - Mass - 100 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - ee9438ae-3a81-4135-94df-b9c951d9e3b0 - Mass - 100 - - - - - 7.7070420760228489 - - MI_Restricted_Substances - 924b3986-e315-4b28-9daa-56a075aa18e9 - - Annealed - Low alloy steel, AISI 52100, annealed - 70eb3599-7754-404f-bbf4-c843a0d22ab8 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - beff16be-fa66-4825-94ed-f0627705c853 - Mass - 73.715334419959845 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 95e5da93-2323-4390-9111-995c2f3b4a15 - Mass - 100 - - - - - - - 2 - 84.140368077969356 - fa4944fc - part_fa4944fc-c700-4f4f-8520-ba8f7173c98d - fa4944fc-c700-4f4f-8520-ba8f7173c98d - - - 83.08901138747531 - - MI_Restricted_Substances - 87b588e6-604a-4acb-a651-c882f6211f74 - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 8660, oil quenched & tempered at 650°C - 700b12bc-62b3-4c8d-ae28-a486940d8001 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - 223ffc08-825b-4d8d-9930-631abbb47b36 - MassRemoved - 77.06509645891613 - - - - - 2.8184981020874482 - - MI_Restricted_Substances - 5169a157-0d18-4d45-b197-799e06aa00bc - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 9255, oil quenched & tempered at 315°C - 0b984f84-b973-4107-b1b6-b17ccefbd7f8 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - 67d84b4a-6da7-4fc2-98cf-e5220310f972 - Mass - 100 - - - - - 2.8184981020874482 - - MI_Restricted_Substances - 23967b46-b6a1-4f82-9a4f-d0ea6e728ece - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 5160, oil quenched & tempered at 650°C - 6db0fe77-beeb-4841-b6fb-1ca4e65c1d5d - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - 6d9f7993-fd2d-4dae-949b-77639a6bc6c6 - MassRemoved - 49.375426000624628 - - - - - 2.8184981020874482 - - MI_Restricted_Substances - 619c1e62-d6e1-4a5d-9abc-99a0b6c0ed7e - - Oil quenched & tempered at 315°C - Carbon steel, AISI 1141, oil quenched & tempered at 315°C - bab1cdce-dc22-49ec-bae4-99408792ca79 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - 290a4dc9-7b4c-49b0-97c7-e93b67c2b124 - Mass - 100 - - - - - 2.8184981020874482 - - MI_Restricted_Substances - f92ff01e-ed35-4c66-96d1-607d9684b44b - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 94B30, oil quenched & tempered at 315°C - 84013519-f260-4996-8f52-eae2dd77a93d - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - 4c1c16e7-e2d4-4e31-91e1-c17abd37e0fc - Length - 1.5871109913974584 - - - - - 2.8184981020874482 - - MI_Restricted_Substances - fdf47c86-6c5b-4bba-b434-574871039636 - - Glass/phenolic honeycomb, 0°/90° fabric (0.035) - Glass/phenolic honeycomb, 0°/90° fabric (0.035), W Direction - 90bcb052-78bc-4251-85aa-0555a18e93ae - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - 5f85a2cc-06aa-4971-95b2-20133fe72956 - MassRemoved - 75.496429752323976 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - 13d90310-e45a-4c4d-a6db-66fbe8b84c3e - Mass - 100 - - - - - 2.8184981020874482 - - MI_Restricted_Substances - 31491cd8-6f82-4358-a2d6-ef62bfbbfadd - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 4150, oil quenched & tempered at 205°C - b3b3edfa-7cb4-4d3c-8c11-9e0bf7ceb4da - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - aeaa7c7d-552a-45bc-8fee-9369f478869e - Mass - 100 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - a7bacc7a-94ee-411a-b005-0a903e9276c8 - Mass - 93.806148922911916 - - - - - - - 1 - 18.80020835381011 - 3890ee72 - part_3890ee72-ec9e-4a61-956a-2f3bf7cff8f1 - 3890ee72-ec9e-4a61-956a-2f3bf7cff8f1 - - - 35.719457844141616 - - MI_Restricted_Substances - 1851a6ff-c2e6-4bc6-ab7a-a0eae431e281 - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 5140, oil quenched & tempered at 540°C - 55a1b794-3e9e-4975-a05a-14b7b6e0b6ad - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - 967af45a-0b14-473a-8705-a9e81e9b7dac - Length - 50.224826834269251 - - - - - 16.070135538964596 - - MI_Restricted_Substances - 55c8dd10-b62f-4136-b1c8-6260fcec05cc - - Annealed - Carbon steel, AISI 1040, annealed - 1a7dccf4-7487-4ad5-b672-fe8762edc3b9 - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - 8960a5e0-b2ce-4d40-b5b4-acca4e81a78a - MassRemoved - 81.076484676951765 - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - 13897563-6b51-4c26-8e14-0ecbf4347286 - MassRemoved - 18.305671316713873 - - - - - 16.070135538964596 - - MI_Restricted_Substances - ddefbfb8-3b97-480b-887d-0ddadf161d95 - - YS350, cold rolled - High strength low alloy steel, YS350, cold rolled - 609457c6-aebc-4d31-9fa5-b007283c4915 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 74ae08d1-3c4f-4117-867f-fec0de55cb8e - Mass - 100 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - b4f9cb90-f827-4693-822e-ac9d8bb3f4d7 - Mass - 100 - - - - - 16.070135538964596 - - MI_Restricted_Substances - 3fd6cebb-a683-45be-b014-7c3fb617c3e7 - - Glass/polyimide honeycomb, ±45° fabric (0.064) - Glass/polyimide honeycomb, ±45° fabric (0.064), L Direction - f7bb6e24-035c-40c0-b457-64f08fb203a7 - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - e79a3e3f-5602-47b6-9d53-51234b906e4c - MassRemoved - 87.743540195628782 - - - - - 16.070135538964596 - - MI_Restricted_Substances - aebf8cac-5529-4a72-9e09-71badd344c6a - - Oil quenched & tempered at 315°C - Carbon steel, AISI 1137, oil quenched & tempered at 315°C - 30ec6d3e-5040-4bba-b1a3-ef36ff8e9a06 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - bfdc7b6a-8c3a-4462-a1cf-355129719f80 - Mass - 100 - - - - - - - 5 - 19.40949811572651 - 2c40d687 - part_2c40d687-52db-4733-8bc8-39d3e975dedc - 2c40d687-52db-4733-8bc8-39d3e975dedc - - - 25.917724625169171 - - MI_Restricted_Substances - c19a6c59-b937-499d-ac22-fe742ae42287 - - As rolled - Carbon steel, AISI 1117, as rolled - 682616f3-5dd4-43a6-87bc-b12c7efbebbf - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - 677e0150-2a59-4e0a-a20d-34eb9781a1a0 - Mass - 100 - - - - - 10.583182196404405 - - MI_Restricted_Substances - 6f7c4754-84f7-46f0-873a-ec2e9f29e345 - - Glass/phenolic honeycomb, ±45° fabric (0.088) - Glass/phenolic honeycomb, ±45° fabric (0.088), W Direction - fae5f8c6-be59-4dfc-a8d1-b04ffab08fd6 - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - e3fe3509-873f-49ae-9de5-e767c41476db - MassRemoved - 89.708564053153879 - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - fbbafbef-49e9-4808-8e0a-7e52fbbc08ea - Mass - 100 - - - - - 10.583182196404405 - - MI_Restricted_Substances - 82eabba3-2697-4f74-a530-ae27f5e33ffe - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 50B46, oil quenched & tempered at 540°C - 676c75ce-1bbe-49fc-8a31-8bfc0946e5a4 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - b1e59de2-5ebd-486d-964a-6e331ee54fde - Mass - 100 - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - de5634e0-eadc-4dc3-bf5e-0c1425af3cef - Mass - 100 - - - - - 10.583182196404405 - - MI_Restricted_Substances - ff23c6a6-3046-4f35-b5d2-ca7f0956efc7 - - Oil quenched & tempered at 650°C - Carbon steel, AISI 1144, oil quenched & tempered at 650°C - 89b207c0-acfc-48ec-bca3-5ce2642f0854 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - be06024e-a2c8-4ab6-99cc-72927a9505a0 - Mass - 100 - - - - - 10.583182196404405 - - MI_Restricted_Substances - 874b8433-2e47-45c3-9c89-226428104214 - - Glass and mineral filled, heat resistant, molding - Novolac (glass and mineral filled, heat resistant, molding) - 00a0bfef-99f5-4c56-a026-47749011ab84 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 5bde1064-f66e-4f88-b834-31456faceb1a - Mass - 100 - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - d199e4a4-561b-4906-a67a-ca0118ec38bf - Mass - 100 - - - - - 10.583182196404405 - - MI_Restricted_Substances - 644fc87d-87f3-468c-9a88-b8e2db43ae6b - - water quenched & tempered at 650°C - Low alloy steel, AISI 4130, water quenched & tempered at 650°C - 4393fcfb-263c-4a72-837a-a614a9313933 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - cf5779a2-b757-4d07-81c5-42c1bf46b82a - MassRemoved - 20.518396664652229 - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - 64a74480-f724-4d60-9eed-bac3907ff551 - Mass - 100 - - - - - 10.583182196404405 - - MI_Restricted_Substances - fa4e12fa-2919-41e2-b7ef-1c487def0cd7 - - High ductility - Press hardening steel, 22MnB5, high ductility - 02c244ad-b832-4db8-8ac1-f47b2c6015b3 - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - ad72b93b-2b56-43fa-a98d-988c4912c594 - Mass - 100 - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - 2a5f5f25-0e8b-47b6-8c61-fb1eaafcb459 - Mass - 100 - - - - - 10.583182196404405 - - MI_Restricted_Substances - 7468aa92-eb02-4838-8030-fdd8673f2710 - - Oil quenched & tempered at 650°C - Carbon steel, AISI 1137, oil quenched & tempered at 650°C - e4e02809-be4b-4c18-9937-8f69a032d385 - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - cbf6fe52-eb1a-4f99-9fe1-bbb285bc1054 - Mass - 100 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - eef076b3-fb93-47b5-b699-9dcc261d1cf7 - Mass - 100 - - - - - - - 9 - 19.088955837808992 - 5f1c46ee - part_5f1c46ee-9cad-4e9b-92b3-1713e5f2ff0d - 5f1c46ee-9cad-4e9b-92b3-1713e5f2ff0d - - - 60.512046404421348 - - MI_Restricted_Substances - cfb19c31-b156-4a8d-854c-f264975539e1 - - water quenched & tempered at 205°C - Carbon steel, AISI 1095, water quenched & tempered at 205°C - 54726a26-d5d1-4891-ac76-39e512bfc31a - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - 93932fda-bdb4-4ba5-92fc-1cf9c0200668 - Mass - 100 - - - - - 9.8719883988946631 - - MI_Restricted_Substances - 87e1a3cd-fd79-4013-b5f8-56d6f28bef34 - - Oil quenched & tempered at 540°C - Carbon steel, AISI 1144, oil quenched & tempered at 540°C - ff06982b-3b87-494e-8ea2-2289a468ac8d - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 20a674de-92bb-4885-9b60-ce739490865a - Mass - 38.959660864882011 - - - - - 9.8719883988946631 - - MI_Restricted_Substances - fc29cc59-a670-4ad6-85a0-eb07bf011f1a - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 6150, oil quenched & tempered at 425°C - 4dfb5330-7d89-4875-9af5-4a1797930125 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - 415b4cf6-8c18-4891-95cc-97c099853f98 - Area - 80.037293899821719 - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - 48f16f83-03c9-4fad-b00e-e3ad7885ec54 - Mass - 100 - - - - - 9.8719883988946631 - - MI_Restricted_Substances - 44a3cdc8-1092-45c0-be37-1802daa92d30 - - Borosilicate - 7052 - Borosilicate - 7052 - f8dbfbcf-67ab-4546-a00f-734231e99272 - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - d6a69287-e598-465d-8afc-8245664c5644 - Mass - 100 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - be1875f6-d842-414c-a8b6-517d43e196a0 - Area - 30.765419281444238 - - - - - 9.8719883988946631 - - MI_Restricted_Substances - 5169a157-0d18-4d45-b197-799e06aa00bc - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 9255, oil quenched & tempered at 315°C - 02d18f6b-77f7-4931-8cfc-8c5052bfffa1 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - d70b65cd-5829-4430-acd0-8cf419f0ad4e - Mass - 100 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 769319c4-d5ef-4263-9501-606ae66528f3 - Mass - 100 - - - - - - - 9 - 74.429648730172616 - a85dd27e - part_a85dd27e-e8bc-4368-bc9c-215f8fae7541 - a85dd27e-e8bc-4368-bc9c-215f8fae7541 - - - 65.106619086631866 - - MI_Restricted_Substances - e678781a-1b38-4709-816b-9db609651db6 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 50B60, oil quenched & tempered at 425°C - def1fda8-f648-4965-96ec-26c053b4019b - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - 4b9c70b2-8f84-46ad-83be-e4e9517fc95a - Mass - 100 - - - - - 11.631126971122711 - - MI_Restricted_Substances - e06fc27c-5e39-4218-a5ca-6927af12a511 - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 4140, oil quenched & tempered at 205°C - fb54bac5-2cb9-4c8b-8ab2-5658261a71ef - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - fa81b70f-3425-48de-864b-261523b1dad4 - Mass - 100 - - - - - 11.631126971122711 - - MI_Restricted_Substances - 856cb700-78b1-46a2-8832-739a0d2c9a91 - - SAE 8630, cast, normalized & tempered - Low alloy steel, SAE 8630, cast, normalized & tempered - acf5bbf5-c930-48a5-95ad-dabdfa8dd275 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - cc1543da-80bc-442a-ae0a-d7e2e49140ef - Length - 91.340356129845773 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 2af08795-9cb2-4853-93cc-1229612571b0 - Mass - 22.867845149183573 - - - - - 11.631126971122711 - - MI_Restricted_Substances - 644fc87d-87f3-468c-9a88-b8e2db43ae6b - - water quenched & tempered at 650°C - Low alloy steel, AISI 4130, water quenched & tempered at 650°C - cb8e1ef3-aef0-4756-8c53-1f3e7d54bbbe - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - a48d7d60-3698-445d-9103-c1acecde702d - Mass - 100 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - eed8bb55-7968-4bcf-b369-760c417fb0e4 - Mass - 37.434310809445712 - - - - - - - - - 8 - 70.773215252334822 - d52d6c76 - part_d52d6c76-2b2a-4f0b-972a-46d6f2ad13e3 - d52d6c76-2b2a-4f0b-972a-46d6f2ad13e3 - - - 36.78084655514958 - - MI_Restricted_Substances - 59ed9004-2126-437f-aa61-b8a0189e69d3 - - Oil quenched & tempered at 650°C - Carbon steel, AISI 1095, oil quenched & tempered at 650°C - 5a9e0bf6-34f8-4139-b5e3-b2f85a89888f - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - fa2f6a0c-db85-48ed-9e55-624d4ae06730 - Mass - 100 - - - - - 63.21915344485042 - - MI_Restricted_Substances - 01ec383d-8c37-48b7-80b4-e1f3106fae04 - - Alumino silicate - 1723 - Alumino silicate - 1723 - f77d4be2-a6df-4143-a55c-c765d5aa7d96 - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - df74fc86-f286-4690-a6d3-ef81470e62b6 - Mass - 100 - - - - - - - 8 - 66.293420068124973 - c4c003a6 - part_c4c003a6-872c-405a-b62d-7c6e971b2bb4 - c4c003a6-872c-405a-b62d-7c6e971b2bb4 - - - 73.853041778250144 - - MI_Restricted_Substances - 9e11a8f7-0b35-4610-aee9-557a236bbe5c - - Soda borosilicate - Soda borosilicate - d4d7ef9d-6f6a-406e-8f9b-caee54055563 - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - c35d914b-a45d-43bd-8841-5445cba2fe5a - Area - 35.214935212961834 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - f255a03e-041f-4c57-bd65-a4f7852439d0 - Area - 28.655219091407591 - - - - - 3.2683697777187319 - - MI_Restricted_Substances - c87d2bef-0549-4a3b-b699-3ad17b079fa1 - - YS355, hot rolled - High strength low alloy steel, YS355, hot rolled - 6513bd3c-9be5-4b57-a0dc-278a1a6d1068 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - d4f57470-0eeb-4f6b-832b-a59d8c6a2c95 - Mass - 100 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - 2b4f6f8f-6567-4c03-ad95-b732e5e75959 - Length - 39.425063151598472 - - - - - 3.2683697777187319 - - MI_Restricted_Substances - 78055acc-4fc2-46ae-bba8-f28bda85357e - - Annealed - Carbon steel, AISI 1060, annealed - 0c2e5260-a7bf-4425-b318-aa0ec4f9fa31 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - b165e2f7-b227-4571-9267-40ad9db6956c - MassRemoved - 1.5298774473042589 - - - - - 3.2683697777187319 - - MI_Restricted_Substances - 19b67562-02fa-47ea-8fba-af5b14d1fafa - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 4042, oil quenched & tempered at 650°C - ff1f0f52-3799-424b-beb5-049b2cc99995 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - 64cef77d-ae60-40d0-b1ac-b22fd6abea77 - MassRemoved - 2.8174644814885523 - - - - - 3.2683697777187319 - - MI_Restricted_Substances - d2c2408b-ddaa-4dc0-825b-b2d3ef39767b - - Oil quenched & tempered at 315°C - Carbon steel, AISI 1095, oil quenched & tempered at 315°C - a7f4e72d-87ef-48c6-a86e-712f3d4e2138 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 42f13e55-e7bd-4c7b-b051-d07aa3898add - Mass - 100 - - - - - 3.2683697777187319 - - MI_Restricted_Substances - 99d1c1c6-eca3-40ed-a479-6dec902f52da - - YS400, cold rolled - TRIP steel, YS400, cold rolled - 118cc1b4-36aa-4b69-b9d3-32e9790caad1 - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - 8e06e192-0347-43a3-839a-5a71b6c9fcae - Mass - 100 - - - - - 3.2683697777187319 - - MI_Restricted_Substances - 21dcdeeb-524a-488e-b332-fcd4e1caf6f7 - - water quenched & tempered at 650°C - Carbon steel, AISI 1095, water quenched & tempered at 650°C - 52ad598e-1416-4dec-b5bd-8aff8208b8db - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - b50aea2b-3688-4402-9914-dddbe738e838 - Mass - 100 - - - - - 3.2683697777187319 - - MI_Restricted_Substances - f05d84ea-b8e2-46d1-83a4-577038c5ed32 - - As rolled - Carbon steel, AISI 1040, as rolled - f93339bb-c71d-4b31-a6a9-08cb87199b53 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - d52ddc93-319a-4966-8e46-25012692b1ef - Length - 10.129719837629105 - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - a57649bf-cd41-44db-a5f7-351790d77ae2 - Mass - 100 - - - - - 3.2683697777187319 - - MI_Restricted_Substances - 8d48bb04-5031-4d20-b935-741272060e1d - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 4150, oil quenched & tempered at 650°C - 1233f1ab-df39-45bc-be89-2e26a570ae60 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 4dc61dbb-37e5-4863-bb6c-5e1b2243217e - Mass - 100 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - c8a0c32f-758b-4155-9f4e-7641ee45d39e - Mass - 100 - - - - - - - 4 - 66.636380770540043 - 03edde95 - part_03edde95-b982-4543-a5df-195356497f8c - 03edde95-b982-4543-a5df-195356497f8c - - - 13.505580841333408 - - MI_Restricted_Substances - a01be0be-96e7-4123-b061-dfdbba1f1748 - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 4037, oil quenched & tempered at 315°C - 478bbb14-123b-4410-b504-d39ac82c0490 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - ef85d650-06c1-4321-b76e-cd16a7220037 - Mass - 2.3459902044134169 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - afbc9e21-777e-41a0-b763-9b6e2a5653dd - Mass - 100 - - - - - 12.356345594095227 - - MI_Restricted_Substances - e6b45bea-dec9-4b91-996a-885bb0c31f8d - - Glass, S grade (10 micron monofilament, f) - Glass, S grade (10 micron monofilament, f) - 1487a836-de1a-4be0-af28-3db5013290c9 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 5e81e7e7-8422-405a-bc3b-5bd5fe550de4 - Mass - 70.858186749209736 - - - - - 12.356345594095227 - - MI_Restricted_Substances - bafce5b8-9e49-4ba7-918f-1ddea11d2a80 - - Glass/phenolic honeycomb, ±45° fabric (0.048) - Glass/phenolic honeycomb, ±45° fabric (0.048), L Direction - 4923b9f5-46ef-4b25-8b0b-c8295e4a7ffa - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - 42a4fe3a-2d8e-4d4d-89db-5392a0361584 - MassRemoved - 16.027386168030734 - - - - - 12.356345594095227 - - MI_Restricted_Substances - 7b330562-a44d-4de7-8944-99c0b7b0d3e1 - - Quenched & tempered - Low alloy steel, AISI 8630, air melted, quenched & tempered - d845a77e-1e71-447e-b0ca-a5cf02fd9304 - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - 0757b759-02d5-48d8-b162-b4a4a475414c - Mass - 100 - - - - - 12.356345594095227 - - MI_Restricted_Substances - 302db922-ffc4-4955-9a98-ddaa64c43d26 - - Borosilicate - 7720 - Borosilicate - 7720 - e6cae0a2-d7c1-44f4-9491-ef2d12c258ea - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - 50f44c04-64c2-497d-b596-07591a9ae790 - Mass - 100 - - - - - 12.356345594095227 - - MI_Restricted_Substances - 45a257d5-da48-4520-9174-ffe7bbadcd1c - - Glass/phenolic honeycomb, ±45° fabric (0.088) - Glass/phenolic honeycomb, ±45° fabric (0.088), L Direction - dd89e19a-16eb-4921-b5fa-75ded58ad9c7 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - ecbdce81-bcf2-456b-8658-3568e7d4d22c - Mass - 100 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - a547e090-52c3-489f-90a8-ae8cfc4e8c88 - MassRemoved - 91.819181848233185 - - - - - 12.356345594095227 - - MI_Restricted_Substances - 4b01d1e1-0f4c-4861-a797-7ea504ca38c4 - - Annealed - Low alloy steel, AISI 5150, annealed - b2289e42-0275-47f1-90dc-b31e07510f54 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 13116d75-e9d8-47c1-822c-bf54a65afa77 - Mass - 100 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - 9657051c-e2a1-4316-bca7-d78bb12b9950 - Length - 92.933817111390553 - - - - - 12.356345594095227 - - MI_Restricted_Substances - 439e62b9-4268-44c6-a084-695412628448 - - water quenched & tempered at 425°C - Carbon steel, AISI 1095, water quenched & tempered at 425°C - 940ad85c-6e92-46b6-80ce-d10d866d406b - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - f08e98d5-2df7-4e66-aab2-77a852180cf3 - Mass - 100 - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - c068ff86-6275-43bc-b654-be85b2356f53 - Mass - 100 - - - - - - - 3 - 44.304700961478382 - - MI_Restricted_Substances - 3d4d35cd-1db3-477c-8f3f-b90800ea1c4d - - 2383795b - part_2383795b-301d-446f-a7be-cfa59c010ba5 - 2383795b-301d-446f-a7be-cfa59c010ba5 - - - 8 - 93.199041948280779 - 9bf6b170 - part_9bf6b170-b0fa-45a3-b267-7678a39b64ca - 9bf6b170-b0fa-45a3-b267-7678a39b64ca - - - 15.18438603504765 - - MI_Restricted_Substances - bea16e1d-784b-41e4-b5f5-e21dd7b27217 - - S275J - Structural steel, S275J - 8fb52277-fcc3-4fd8-8040-c4f8e6ebc609 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - ec9717f3-4f66-4889-a85a-775536fae8d4 - Mass - 100 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - ed2e6f3e-6c30-413a-a7cc-dc0d3687f3da - MassRemoved - 55.602397003957257 - - - - - 28.271871321650782 - - MI_Restricted_Substances - 72799627-a7c0-4df4-8250-e2be8538565f - - Glass ceramic (N11) - Glass ceramic (N11) - ecfa2d96-bb9a-4014-a89b-12157cec2108 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - e282f3d8-ee59-40d9-9d7f-f22de0874625 - Length - 60.697405394491469 - - - - - 28.271871321650782 - - MI_Restricted_Substances - dbdb9330-8683-439b-8246-f873ee3ba9ed - - Oil quenched & tempered at 205°C - Carbon steel, AISI 1040, oil quenched & tempered at 205°C - 9d832bea-99e2-4270-a051-3ed24a3eec51 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 0b3796ce-3c68-457b-9897-cab81563639f - Mass - 100 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - afd8a295-e9bd-4f8b-b36f-4767fd5fe198 - Mass - 100 - - - - - 28.271871321650782 - - MI_Restricted_Substances - 31098687-aa58-4d56-99a0-f005a0258573 - - Glass/phenolic honeycomb, 0°/90° fabric (0.192) - Glass/phenolic honeycomb, 0°/90° fabric (0.192), L Direction - a9eb6336-e275-4b28-817f-85ed12dc53b7 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - ff831347-4460-4dee-946d-093c1fc16ca4 - Mass - 100 - - - - - - - 5 - 69.127918998304722 - 3b713dbf - part_3b713dbf-a4cc-4a3c-b566-00173c57a996 - 3b713dbf-a4cc-4a3c-b566-00173c57a996 - - - 75.658543350016018 - - MI_Restricted_Substances - dbdb9330-8683-439b-8246-f873ee3ba9ed - - Oil quenched & tempered at 205°C - Carbon steel, AISI 1040, oil quenched & tempered at 205°C - 98c21e49-732c-4212-9e89-f5625f7c0964 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 659a0e9a-ff98-4967-b1ca-617faedb8f55 - Area - 21.064121239382828 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - e59562de-dfc5-4b15-a7f4-91a0a0d135cf - Mass - 100 - - - - - 4.8682913299967963 - - MI_Restricted_Substances - aec3ed84-0fb0-4317-b8b1-9f6714a7a07f - - Normalized - Low alloy steel, AISI 4130, air melted, normalized - 6012ba6b-e23f-40dc-aa54-e131fcda591c - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - 33fb5add-5127-42d3-9bdf-e6e4741cc5fe - Area - 48.934675915601979 - - - - - 4.8682913299967963 - - MI_Restricted_Substances - c07a0ada-0510-4f27-be52-15e07d6c70c5 - - Soda-zinc glass - 6720 - Soda-zinc glass - 6720 - c7fa3134-6224-400b-9b23-198757dc3820 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - 429d60eb-d5b1-44e5-b153-1f8a74a80ce6 - Mass - 100 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 83fbc8e3-74c1-4021-8f20-0e847ae8f35f - Mass - 100 - - - - - 4.8682913299967963 - - MI_Restricted_Substances - 78055acc-4fc2-46ae-bba8-f28bda85357e - - Annealed - Carbon steel, AISI 1060, annealed - 399f34bd-bcf3-4cd0-9a54-0bc17d32f3c4 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - 7c597799-6150-4af3-ad3d-231f653568b1 - MassRemoved - 6.9922199971006354 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - bb3a21eb-f858-45d6-be8e-87456d6b6082 - Mass - 100 - - - - - 4.8682913299967963 - - MI_Restricted_Substances - aa963e30-fca0-439d-bee2-ff48daa946f3 - - As rolled - Carbon steel, AISI 1095, as rolled - 2ee2ea05-84bc-40c9-b373-30c6e7ae2bc3 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - d877e42f-ade4-4b77-aacb-465ae3cad5a9 - Mass - 100 - - - - - 4.8682913299967963 - - MI_Restricted_Substances - 1992b264-49ea-405f-82f9-41dd972b9510 - - FR-4.1 (Df < 0.01 at 10GHz), Epoxy/Glass fiber, PCB laminate - FR-4.1 (Df < 0.01 at 10GHz), Epoxy/Glass fiber, PCB laminate - aa85effd-cd5a-4852-9412-ce1cc988d929 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - a47eb5f5-d295-4709-948e-ecf31a6ef286 - Mass - 100 - - - - - - - 1 - 89.092612028630739 - b5fb6cb3 - part_b5fb6cb3-980e-42f7-802c-7d606f5d8526 - b5fb6cb3-980e-42f7-802c-7d606f5d8526 - - - 61.030266136410773 - - MI_Restricted_Substances - df40828d-d5c3-4a43-9f00-5de867f4f406 - - Normalized - Low alloy steel, AISI 4320, normalized - 472fa5d7-1d4a-4992-a0f6-c72997cae49e - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - daa001ac-b1c2-4169-908b-79616b5cc18c - Area - 92.137139193777529 - - - - - 19.484866931794613 - - MI_Restricted_Substances - 278c6b66-fb3e-4e2d-b915-df6a231b2342 - - Oil quenched & tempered at 540°C - Carbon steel, AISI 1080, oil quenched & tempered at 540°C - d3060c58-6ab9-45a4-a1a3-cd528624447f - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - e2046142-3a32-4076-a3de-62d1f1c81fe8 - Mass - 100 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - 5256e8bd-15f6-4a3e-b1d3-0a4023e12c36 - Mass - 100 - - - - - 19.484866931794613 - - MI_Restricted_Substances - 4a35d8d1-5fb1-47e9-a669-37204ae732dc - - ASTM A500 Grade A - Structural steel, ASTM A500 Grade A - 76378b6e-199e-40a8-8042-12fe586291fb - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 67a6a904-0a2f-4872-aea6-b42b049a76cb - Mass - 100 - - - - - - - 6 - 75.069702079086426 - 8f1805fd - part_8f1805fd-3fd6-446b-8c46-7cc566012579 - 8f1805fd-3fd6-446b-8c46-7cc566012579 - - - 27.989640286187473 - - MI_Restricted_Substances - b067ed19-a836-41f7-9267-d9b04647d09f - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 5150, oil quenched & tempered at 650°C - 09c973c8-c5de-4ff3-9839-56d08d67fe11 - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 2a7dbbbc-7c8c-47b9-bcd7-769e57644485 - Mass - 100 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 60adf4f5-af28-4293-9f07-3c079c8c949d - Length - 37.377998902172784 - - - - - 14.402071942762508 - - MI_Restricted_Substances - b82c121d-fcc2-41fa-b7ac-6cddb03c3e4f - - Oil quenched & tempered at 650°C - Carbon steel, AISI 1040, oil quenched & tempered at 650°C - fa156b69-3f5e-48ca-871b-cd8924b9d3c3 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - 1970e7cb-2498-4daa-8eee-92c76dbb076c - MassRemoved - 23.763837443554696 - - - - - 14.402071942762508 - - MI_Restricted_Substances - 1d0ad45b-4da7-4c47-9850-754d0f67c02a - - Glass/polyimide honeycomb, ±45° fabric (0.096) - Glass/polyimide honeycomb, ±45° fabric (0.096), W Direction - 7804a639-9401-412f-a1a6-1a80d1ad60aa - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - df4fecc3-1710-423a-9ae0-d3b35be07f09 - Length - 20.417703464821773 - - - - - 14.402071942762508 - - MI_Restricted_Substances - 2656c71b-a4ea-4fc6-9139-adc0deae35b1 - - 65wt% glass, biaxial lay-up - Polyester/E-glass fiber, woven fabric, 65wt% glass, biaxial lay-up - 3bd1703e-538f-42db-9a5b-37106e562ff0 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - bc321ce8-99ce-4611-a562-ffb1d707261a - Mass - 100 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - e2368259-146c-46ed-8ec4-30e67366455a - Mass - 100 - - - - - 14.402071942762508 - - MI_Restricted_Substances - 1d55049a-3c25-4c8c-9125-70fd014c2a1e - - Normalized - Low alloy steel, AISI 8735, normalized - 7766937f-e107-46aa-a175-3a959b856fc9 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - ae7d75b2-8a65-41ba-8937-dfe5fc9976d3 - Mass - 100 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 695d82cd-d142-44b8-9b44-5ec0e5b63ffa - Mass - 100 - - - - - 14.402071942762508 - - MI_Restricted_Substances - 4ad00a9e-92b5-4e28-92a0-409da4495c54 - - Oil quenched & tempered at 205°C - Carbon steel, AISI 1060, oil quenched & tempered at 205°C - ad706008-b329-4fcf-9abf-b2b6deb1535d - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - 977d0b15-5816-4f50-ab12-00bd7e388304 - Mass - 100 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 7713104b-4aef-41fd-9f56-d732708449cc - Mass - 100 - - - - - - - 5 - 10.30961340773367 - 753acfd6 - part_753acfd6-dc51-4f91-bfa1-38b28336fee8 - 753acfd6-dc51-4f91-bfa1-38b28336fee8 - - - 0.67350398780475551 - - MI_Restricted_Substances - 3cad12a9-0765-402c-a6b1-0be665ecd2e6 - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 4140, oil quenched & tempered at 540°C - e2dfc2fe-532f-4a00-8ff4-6bda6706bfa6 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - af0ae7dd-aee5-4e61-a22f-88ebf0501060 - Mass - 100 - - - - - 24.831624003048812 - - MI_Restricted_Substances - 22fec326-b233-4c44-9751-288ad3ccc86c - - Glass/phenolic honeycomb, 0°/90° fabric (0.088) - Glass/phenolic honeycomb, 0°/90° fabric (0.088), L Direction - a683a8ec-a087-4b43-ad85-858f23368bac - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - 9b3f5d71-e1e9-4043-b65b-27d43377df91 - Mass - 100 - - - - - 24.831624003048812 - - MI_Restricted_Substances - f8d1136f-3c1a-41e2-8b78-cf5f3965cba2 - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 6150, oil quenched & tempered at 205°C - ed6d5273-fd70-4a69-8437-df4b48b9acb9 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - d98068d6-2777-436f-a3c2-18a9b6232b62 - Mass - 100 - - - - - 24.831624003048812 - - MI_Restricted_Substances - ce68d49d-fe57-4723-8f98-557cd3558504 - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 5130, oil quenched & tempered at 205°C - 6a0e39ba-62bb-42b2-8e4d-91b78cb6f061 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - 3dec1b14-9f9d-402f-aa14-373b6c555013 - MassRemoved - 50.4954248901901 - - - - - 24.831624003048812 - - MI_Restricted_Substances - 5303364c-b06b-40d9-bca9-e0e2cd1d682c - - Normalized - Low alloy steel, AISI 8740, normalized - 336e441c-b20d-4baa-84ca-632e34116c09 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 1ca9c90f-01cb-4a4c-83c2-7fb303f09af7 - Mass - 12.181936256672227 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - ce16085e-fd9a-4f4d-9613-3250d6096d15 - Mass - 100 - - - - - - - 5 - 31.833864670169476 - - MI_Restricted_Substances - a0987114-e9d2-4390-9d0f-e47283d2f4d0 - - 65a6a323 - part_65a6a323-21c5-4cff-aa6d-87714e747f34 - 65a6a323-21c5-4cff-aa6d-87714e747f34 - - - 8 - 94.493642772777775 - 2760b4b9 - part_2760b4b9-8183-455c-9700-3367063c3001 - 2760b4b9-8183-455c-9700-3367063c3001 - - - 86.939953727154034 - - MI_Restricted_Substances - f7a5d844-1935-486f-adbe-99917b26b44b - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 4340, oil quenched & tempered at 315°C - 4b0c9723-8966-4e2d-b648-eece2a96b763 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - eb8f7ee6-58ee-4336-88f9-7e23d74d556a - Mass - 100 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - b563c586-2c48-49d3-8273-093d240d9c80 - Mass - 100 - - - - - 1.6325057841057458 - - MI_Restricted_Substances - ee5b018e-8d7f-4fb1-bad0-c73e871592bc - - 16Mo3, normalized - Low alloy steel, 16Mo3, normalized - 44333aa5-f26c-4408-85a3-b6b4a34488de - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - 3f8f3b8d-4b81-4a61-b7f4-cdc435f53801 - Mass - 100 - - - - - 1.6325057841057458 - - MI_Restricted_Substances - 8f779b79-a040-48d7-ac26-b9a1edf50ad2 - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 8640, oil quenched & tempered at 650°C - f2cb69f2-0efa-448f-b175-522f45304d2c - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 7d437191-a633-4670-820a-48bae896e2d7 - Mass - 100 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 1c8c6369-4064-47e4-8c90-783c0ba053f8 - Mass - 100 - - - - - 1.6325057841057458 - - MI_Restricted_Substances - 753c75df-7593-4169-a2e8-9f4c173887ff - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 50B46, oil quenched & tempered at 315°C - 023d3736-3ffc-4020-bebc-dd40856a62d1 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 5f8f5467-95fc-45a1-8f51-8ae537a2c36d - Mass - 100 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - c59f2d8d-13ad-45b6-b3a6-02385880f46b - Mass - 100 - - - - - 1.6325057841057458 - - MI_Restricted_Substances - 9c1918f9-aa9f-4078-93df-23539c8df8a8 - - Soda-lime - 0091 - Soda-lime - 0091 - 919838b1-8a20-4911-af04-c26dc5afa25d - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - 023b8dd5-5c8e-40bb-ad2d-e608e25ecf13 - Mass - 100 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 75ace459-2773-4a33-845c-ee99ce3895c8 - Length - 19.431832767758443 - - - - - 1.6325057841057458 - - MI_Restricted_Substances - 5d611e30-0b00-4036-a656-f5fdc5bd2a52 - - Glass ceramic - slipcast - Glass ceramic - slipcast - d453edbd-aa0c-4920-a12f-95036ef7681e - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 5f088df8-c4ca-4fd0-88e8-a3cb1205c251 - Length - 30.624887547746717 - - - - - 1.6325057841057458 - - MI_Restricted_Substances - 2b606408-37c3-4801-a307-dda7384ff7cc - - Glass/phenolic honeycomb, 0°/90° fabric (0.072) - Glass/phenolic honeycomb, 0°/90° fabric (0.072), W Direction - fc9ab45a-15b8-41e8-b533-f6e9218ee2d1 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 50b45eba-cc6e-41d7-ab9d-c1f47d6ec832 - Length - 69.8365239286034 - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - 2254e39a-2db3-40b2-920c-2fa067c7596b - Mass - 100 - - - - - 1.6325057841057458 - - MI_Restricted_Substances - 1345051c-8b29-468f-a10d-37712b50f19a - - Borosilicate - 9741 - Borosilicate - 9741 - 9d243586-11e4-400e-8397-9dfe3923cf14 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - 0c005414-105b-4564-91d9-f6c9f6ef1bee - Mass - 100 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 57ff55eb-62d2-4127-b306-401303abac76 - Mass - 100 - - - - - 1.6325057841057458 - - MI_Restricted_Substances - 5d611e30-0b00-4036-a656-f5fdc5bd2a52 - - Glass ceramic - slipcast - Glass ceramic - slipcast - 04f7ece0-0796-4c04-85e9-c03cea57ab73 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 4303cb87-26e2-4493-8464-9b1fe77488c6 - Mass - 100 - - - - - - - 9 - 23.416724206608126 - 727a37db - part_727a37db-5802-42b7-aff1-af1338dc0857 - 727a37db-5802-42b7-aff1-af1338dc0857 - - - 100 - - MI_Restricted_Substances - 7468aa92-eb02-4838-8030-fdd8673f2710 - - Oil quenched & tempered at 650°C - Carbon steel, AISI 1137, oil quenched & tempered at 650°C - 07e14de9-dcb2-478c-afe9-7cb05feba43c - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - 4fe0db44-8ceb-465e-86e2-e83403bcf8c3 - MassRemoved - 13.810230797999646 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - b3ed2f02-3c2e-4f0f-b2e6-8858eb8f4a71 - Mass - 100 - - - - - - - 6 - 56.339652443462818 - 02290f60 - part_02290f60-7fec-49de-a8db-3b8b9f5cf1ef - 02290f60-7fec-49de-a8db-3b8b9f5cf1ef - - - 45.485820688999176 - - MI_Restricted_Substances - c19a6c59-b937-499d-ac22-fe742ae42287 - - As rolled - Carbon steel, AISI 1117, as rolled - 82ea51af-a3c8-446e-89f0-c514db3c3f55 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - de6608fe-6ca8-49c1-b62f-17e8567b86c0 - Area - 65.494238382901173 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - 01df642e-3603-4ee3-8bd1-db3793559d46 - Area - 86.317930224499634 - - - - - 9.08569655183347 - - MI_Restricted_Substances - 0c172430-369d-48ad-910e-69fe1451a36e - - Normalized - Carbon steel, AISI 1095, normalized - 21c73577-2514-48da-8442-c4256d44afbc - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - 2a04e721-bba3-4dea-961c-c11a93d95acd - Mass - 100 - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - 2728a71c-5a18-4c08-a639-4246e0a84aba - Area - 67.0766513175688 - - - - - 9.08569655183347 - - MI_Restricted_Substances - 2c2dc98a-ef9d-420d-aa00-25552c8f8bab - - S355J - Structural steel, S355J - 22c4c7c0-6f03-458c-81bd-2083c00a0610 - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - 5e93ffd1-e73e-4fc9-bbd1-813b5f0fc345 - Area - 50.010276190010025 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 6253fbd0-d1ed-4054-91b2-a35ca93c5e1a - Mass - 79.462263025093023 - - - - - 9.08569655183347 - - MI_Restricted_Substances - e721d8b7-256a-4b7b-af09-6b40d8309979 - - water quenched & tempered at 425°C - Carbon steel, AISI 1040, water quenched & tempered at 425°C - 4a8a7f46-5f7d-4c70-b10b-7b4ecb313ec1 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - 9595c1ba-d1bd-4ba0-8515-4aee43bcfb02 - Mass - 100 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - 19317cad-3c28-4ba7-9f2e-efd8088d560f - Length - 77.445913654494063 - - - - - 9.08569655183347 - - MI_Restricted_Substances - 2cfe1f1b-d831-4f62-acc6-672a44ba9bff - - Silica (fused) - Silica (fused) - 9e31ed64-a69b-4545-91ef-d8e243393777 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - a769d123-75f2-4ff7-bbe7-e386cc2a55f5 - Length - 32.943807604230848 - - - - - 9.08569655183347 - - MI_Restricted_Substances - ac443865-33d5-466d-89e2-c3f26e668369 - - Borosilicate - 3320 - Borosilicate - 3320 - 43a53775-5555-48fa-ba6c-e2cbcd629736 - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - 5fc73ba6-1428-4907-b22f-ea5c30f994bd - Mass - 100 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - b43eb407-aadd-4762-9fe7-8fdfd3a2505a - Mass - 1.7586886890971516 - - - - - 9.08569655183347 - - MI_Restricted_Substances - d02817f7-7500-4fcb-8c34-40927da681a5 - - Quenched & tempered - Carbon steel, SA216 (Type WCC), cast, quenched & tempered - b9baa811-cc92-42ce-a230-da12ef580185 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 10d0cd5c-c61e-40a6-b7bc-d27ff514e973 - Mass - 100 - - - - - - - 9 - 30.286148437432082 - - MI_Restricted_Substances - 8d808e11-061a-47b9-9f0f-83290dd83a3f - - 9319811e - part_9319811e-87ba-4711-a931-61c2e90125f8 - 9319811e-87ba-4711-a931-61c2e90125f8 - - - 1 - 2.1470312039121198 - ee0f57be - part_ee0f57be-f5a6-492d-a77a-53a9b3ef1876 - ee0f57be-f5a6-492d-a77a-53a9b3ef1876 - - - 25.576796161745115 - - MI_Restricted_Substances - b3c74dfc-9d72-4938-89cb-1a49ce0fdb80 - - Normalized - Carbon steel, AISI 1137, normalized - dde4e29f-f4be-42a5-b2c6-6f26e13a27b2 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 3b6a3762-0a63-4a5a-936f-d3a56d99b7ff - Mass - 100 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 59dd2f0e-c97e-4f91-86b0-c5c92c012a6a - Mass - 100 - - - - - 74.423203838254892 - - MI_Restricted_Substances - b17713f9-59e9-48f4-8bb3-27c72b0884b2 - - water quenched & tempered at 540°C - Carbon steel, AISI 1137, water quenched & tempered at 540°C - 6d25a69a-28c7-4838-83f7-695e221c91fd - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 56be02c9-8403-4ba1-aa7c-4485b3d84979 - Mass - 100 - - - - - - - 4 - 98.696554963801319 - 9554b085 - part_9554b085-4f0d-4fd8-8f0e-1d5909e3a9ee - 9554b085-4f0d-4fd8-8f0e-1d5909e3a9ee - - - 21.831664872277372 - - MI_Restricted_Substances - 04970b9b-7242-4f31-9a78-dee5e31ed341 - - As rolled - Carbon steel, AISI 1030, as rolled - 0f9c5716-bde8-4226-9278-7de69c6e3dab - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - b619b686-d734-4353-8871-2f4b05e99430 - Mass - 100 - - - - - 39.084167563861314 - - MI_Restricted_Substances - 5dbabc2e-4263-4458-abe1-31a2ece9e122 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 5160, oil quenched & tempered at 425°C - 065d0b45-fe12-459c-9970-5a4258e6ac61 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - 0a01f3f6-763c-47e8-8b72-b2cb8e7396e9 - Mass - 100 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 5676795c-d40c-4d41-98fe-9b61f18b91e8 - Mass - 80.443980768529684 - - - - - 39.084167563861314 - - MI_Restricted_Substances - 5169a157-0d18-4d45-b197-799e06aa00bc - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 9255, oil quenched & tempered at 315°C - a643f14c-e497-4667-912a-71cc5729d714 - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - 6510b67c-35e3-4355-9fa6-dcf9494bb9b1 - Mass - 100 - - - - - - - 8 - 53.010334890806277 - - MI_Restricted_Substances - 0dedeb55-6f6f-42f9-b703-5225f1cab2fb - - 3ed0a4d7 - part_3ed0a4d7-9196-4cf2-b960-6425844f853f - 3ed0a4d7-9196-4cf2-b960-6425844f853f - - - 1 - 73.759037150889185 - 301f7b0e - part_301f7b0e-dcc1-4414-a23c-42e6856223af - 301f7b0e-dcc1-4414-a23c-42e6856223af - - - 7.2784501161791626 - - MI_Restricted_Substances - 546a4247-5e3b-4adb-bc7e-3fc87f992447 - - Glass/phenolic honeycomb, 0°/90° fabric (0.055) - Glass/phenolic honeycomb, 0°/90° fabric (0.055), W Direction - 3157cd4e-49f4-40af-a349-3a9bc64e52f0 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - f7b0c970-b280-4bf5-8913-c794c228b468 - Length - 4.87922271940821 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 194e2592-b023-4d9f-94f2-929f1a2fad18 - Mass - 100 - - - - - 46.360774941910421 - - MI_Restricted_Substances - 535f6e21-a16f-4d54-8413-97634da82122 - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 8650, oil quenched & tempered at 205°C - df931ea7-79c2-4a95-80c2-5d594e6d441f - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - 7da753ff-132b-4d27-b3c4-b619ac47c427 - Mass - 100 - - - - - 46.360774941910421 - - MI_Restricted_Substances - 6505c582-906c-4706-a572-efb422916885 - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 4037, oil quenched & tempered at 650°C - 056cb572-28fa-43a9-898b-ff35e53d41c9 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 2088b41e-79c5-4d6b-988a-d8095482c4b1 - Mass - 100 - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - 29bb7831-5820-41e0-b925-cc6c9f6efbbe - Mass - 100 - - - - - - - 9 - 21.367660873275092 - - MI_Restricted_Substances - d89d67b6-c08f-47cb-b03a-4203cebfdf32 - - c489932b - part_c489932b-a409-4051-9252-48e4425937a6 - c489932b-a409-4051-9252-48e4425937a6 - - - 7 - 3.245221918097335 - 08c9570d - part_08c9570d-8c4e-4846-9efb-2182a4470c17 - 08c9570d-8c4e-4846-9efb-2182a4470c17 - - - 12.418997246967162 - - MI_Restricted_Substances - 75a1c963-399c-444d-a38f-1929c00d15b7 - - Normalized - Low alloy steel, AISI 4150, normalized - 3adc0016-9664-4e08-bdbf-ea8810efda3e - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - 1764a56c-aae3-4f59-8157-2971fc63fbb5 - Length - 92.122710166556161 - - - - - 10.947625344129104 - - MI_Restricted_Substances - c2db0402-57c5-422f-b8c1-470fc9c6a9c8 - - Glass/phenolic honeycomb, 0°/90° fabric (0.112) - Glass/phenolic honeycomb, 0°/90° fabric (0.112), W Direction - 54560eb0-0565-4833-b83c-6d90c0411637 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - 67454c48-015a-40b8-8bef-b833defc2871 - MassRemoved - 60.786825446778359 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - f23047ce-7be6-49b6-bf91-05b843e0bc48 - Length - 36.957266804276621 - - - - - 10.947625344129104 - - MI_Restricted_Substances - ed1b937b-1738-408f-9591-bd3e40cc5e33 - - Quenched & tempered - Low alloy steel, D6AC, quenched & tempered - 3b5a6b78-5fa2-42f4-97a0-0238b84dd118 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 62cebf70-e386-499a-88cf-2bad6945a0d5 - Mass - 100 - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - b453695b-b216-4d5c-bfb3-52b1fda5077c - Mass - 100 - - - - - 10.947625344129104 - - MI_Restricted_Substances - 1d9c8629-4a1d-4aaf-bb7c-ba7a97eef5f5 - - Normalized - Carbon steel, AISI 1340, normalized - b237902f-f130-4d97-a358-5f75db3fd7bd - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - d7307d47-47d5-4e58-824b-fdd7aab0e26b - Mass - 100 - - - - - 10.947625344129104 - - MI_Restricted_Substances - 67cc68ee-c8ab-40bd-bf62-4babd642a1fd - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 81B45, oil quenched & tempered at 425°C - aa20df4a-a828-4f26-9da3-b048036c5caf - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - 3b56c56e-2cab-4cb0-ac71-3128598ec5d6 - Mass - 88.486676518100623 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 7261bef5-9a8e-49cb-9b8e-30ab1515aab8 - Mass - 100 - - - - - 10.947625344129104 - - MI_Restricted_Substances - dfe65b4e-afb8-4397-a303-1266359ccfda - - Quenched & tempered - Low alloy steel, Hy-Tuf, quenched & tempered - b95a75bb-0c0a-43b0-9f59-8443690290f3 - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - ee5a3fce-52cb-4165-9135-20bf1035748c - Area - 4.2994518318676631 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - 34b36de7-62cf-4963-b711-e2a6eb04cd0e - Length - 50.606898335091252 - - - - - 10.947625344129104 - - MI_Restricted_Substances - 87e1a3cd-fd79-4013-b5f8-56d6f28bef34 - - Oil quenched & tempered at 540°C - Carbon steel, AISI 1144, oil quenched & tempered at 540°C - aa099eec-229f-4cf2-a849-3f01ada8241a - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 6b15a5cd-a1de-41bd-8fa3-e307e857c1c9 - Mass - 100 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - e047ad62-a283-49bd-b6ce-f4bff5177bc2 - Length - 12.756512552852051 - - - - - 10.947625344129104 - - MI_Restricted_Substances - 508489f2-cc48-4f0a-a6ee-482bb89a0386 - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 5160, oil quenched & tempered at 205°C - 17511d11-f82e-4ad3-b3c4-99be4f16b7ee - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 5a39fdd0-7032-47f4-a96f-de0cc060177e - Mass - 100 - - - - - 10.947625344129104 - - MI_Restricted_Substances - 8db72069-1e87-4b0f-84bc-cddf9ad19b4b - - water quenched & tempered at 540°C - Carbon steel, AISI 1050, water quenched & tempered at 540°C - f8e918cc-1bab-4412-8b06-656d510582f3 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 9b3a3c87-2cd8-47d2-955a-6d4dcc4b5f2e - Mass - 100 - - - - - - - 4 - 23.415807831760407 - 19177595 - part_19177595-0720-4efe-a6b1-7a6c88a6cfd4 - 19177595-0720-4efe-a6b1-7a6c88a6cfd4 - - - 89.142506518001909 - - MI_Restricted_Substances - fc29cc59-a670-4ad6-85a0-eb07bf011f1a - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 6150, oil quenched & tempered at 425°C - d26c6998-802f-4b07-ba68-b3df6cd5c10c - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 59a6b857-29fa-45b8-832a-2a6b0c49369d - Area - 48.246371116603896 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 64e0b548-fd4d-4c60-960d-1bdccf33204d - Mass - 100 - - - - - 3.6191644939993637 - - MI_Restricted_Substances - 99d1c1c6-eca3-40ed-a479-6dec902f52da - - YS400, cold rolled - TRIP steel, YS400, cold rolled - 0c276c46-13c1-4b9f-ba3c-28896fcdc00e - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 4b0bdd1c-8d70-4292-9c4c-c5b183fe65ac - Mass - 100 - - - - - 3.6191644939993637 - - MI_Restricted_Substances - 2b606408-37c3-4801-a307-dda7384ff7cc - - Glass/phenolic honeycomb, 0°/90° fabric (0.072) - Glass/phenolic honeycomb, 0°/90° fabric (0.072), W Direction - 32217508-170e-4abd-82dc-8453a57ce9cc - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 309576da-8c52-4532-b892-294b9d96bbb1 - Mass - 100 - - - - - 3.6191644939993637 - - MI_Restricted_Substances - 5b117a10-9c48-4dd0-a869-6eb490031da5 - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 8640, oil quenched & tempered at 315°C - 211278c8-5738-4088-a2ab-3110ba29f0a1 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - bbf8f2a5-4707-434d-906c-2b96b155561c - Mass - 100 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - d92145c6-3b71-4f80-aaa0-2da5ea2c3529 - Mass - 100 - - - - - - - 8 - 70.693638953703285 - - MI_Restricted_Substances - 2c677abc-5da2-4b21-9ce7-1d4e1cc0fb1c - - 7be3482d - part_7be3482d-71f1-4c23-a257-b65c80c953b5 - 7be3482d-71f1-4c23-a257-b65c80c953b5 - - - 9 - 13.07026916792163 - - MI_Restricted_Substances - b49e47be-bf96-4bf1-9366-5c1b840267d4 - - 6126ed15 - part_6126ed15-1e6c-45e9-9de8-21bf8fa238f1 - 6126ed15-1e6c-45e9-9de8-21bf8fa238f1 - - - 1 - 38.224890007742161 - 07cea42e - part_07cea42e-7a03-47e3-8a83-75d43afc0b1c - 07cea42e-7a03-47e3-8a83-75d43afc0b1c - - - 15.621604312035069 - - MI_Restricted_Substances - a6078356-e79c-4ddd-86ef-a3f01680dd35 - - As rolled - Carbon steel, AISI 1020, as rolled - 9c130994-2b19-4444-bb66-d6a078de87a6 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 945e032d-a8c5-4020-b29a-26f31023a3fd - Mass - 100 - - - - - 12.054056526852133 - - MI_Restricted_Substances - 9124b244-f2f8-44df-b2cf-b05d3406eb9e - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 4042, oil quenched & tempered at 315°C - 6f645f4e-aeb2-493b-a0bd-0f0193d02160 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - 46cb2c29-e3be-4a31-babd-ab7d4c9b0730 - Length - 31.963613038865667 - - - - - 12.054056526852133 - - MI_Restricted_Substances - 9c05e644-9257-4778-9c68-be0cff6f58b5 - - Annealed - Low alloy steel, AISI 8620, annealed - 330d4475-b152-4293-9395-d6dc67b6a3db - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 3c21e613-08d7-4dec-84d7-51274ba6f236 - Area - 52.581935027885216 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - cb618223-8436-4637-8fe0-999bb920c62d - Length - 54.144588464007057 - - - - - 12.054056526852133 - - MI_Restricted_Substances - 78055acc-4fc2-46ae-bba8-f28bda85357e - - Annealed - Carbon steel, AISI 1060, annealed - 6aa1cddb-6418-4d38-be7a-61ebed04f993 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 90abe56e-8173-4ec6-9926-97b81934ed90 - Mass - 52.727100091393616 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - fd69c437-4c7a-4904-9c40-b37ad6996418 - Length - 0.84681157062147339 - - - - - 12.054056526852133 - - MI_Restricted_Substances - cec978ca-2cf6-489b-a21f-c424c7d49a61 - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 4042, oil quenched & tempered at 540°C - 2cdb3acd-5890-47f2-ac24-51f198b2a0c5 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 551b2060-7f85-47e2-82e4-99ddf3ebb25a - Mass - 100 - - - - - 12.054056526852133 - - MI_Restricted_Substances - 8643d806-94c5-42f9-9ffc-4c21a6e16bd0 - - Annealed - Carbon steel, AISI 1141, annealed - 93db24a2-5c53-4e87-b40b-a91744f8e56a - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - ee620648-3497-4047-9e95-5a53c37f0db8 - Mass - 100 - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - ef500286-8392-48ec-9d44-f6e7a8cac39f - Mass - 100 - - - - - 12.054056526852133 - - MI_Restricted_Substances - b076430e-dc1c-4448-86c9-bb8d0b8da741 - - Annealed - Low alloy steel, AISI 4620, annealed - 31314268-e853-4e65-a945-c067ed09df61 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 3626f437-79b1-45f5-b330-2f4a8b9ac615 - Area - 35.592545585517094 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 41200b68-01de-450c-b044-0134f41415eb - Mass - 100 - - - - - 12.054056526852133 - - MI_Restricted_Substances - 18384726-ca55-4d5f-880a-5a2b8776be3a - - Normalized - Carbon steel, AISI 1022, normalized - d349f636-70d5-4184-a03e-13cad9e80de4 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - ce8185ba-fc9f-48ae-8663-c8202c8cc8ec - Length - 37.2446677820965 - - - - - - - 5 - 21.27724104620388 - 8c3f38f0 - part_8c3f38f0-6e0b-4aca-b254-4132233af614 - 8c3f38f0-6e0b-4aca-b254-4132233af614 - - - 32.914368777030319 - - MI_Restricted_Substances - 28d51559-b49b-4a2b-9f09-9a198db03164 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 4340, oil quenched & tempered at 425°C - 34176637-a7e1-440f-be4f-2972da9bb57a - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - c06ac6d4-00cf-4a25-a01b-730c32a82a55 - Mass - 100 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - 59f03655-f8fa-427f-9454-81bd9c0e5420 - MassRemoved - 96.736644626006779 - - - - - 13.417126244593936 - - MI_Restricted_Substances - dcba95c6-8741-4b93-bb8b-f433a9c39a78 - - 45wt% glass, biaxial lay-up - Polyester/E-glass fiber, woven fabric, 45wt% glass, biaxial lay-up - eca1ba7c-8432-4282-adeb-82fa79e7fd4d - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - be94a6ab-6d58-484f-8898-e1acaf00e506 - Mass - 100 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - f34fa341-34b1-4877-b30e-48c14af24bf6 - Area - 61.96187011057598 - - - - - 13.417126244593936 - - MI_Restricted_Substances - 6d6a3603-a2a8-4db9-9e7e-ad4fc4f9c724 - - Glass/phenolic honeycomb, ±45° fabric (0.064) - Glass/phenolic honeycomb, ±45° fabric (0.064), W Direction - c9a0792f-5002-423d-a659-e9712ffd763d - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - 364cf3fb-aeb3-49e5-a9c1-d805299db30c - Mass - 100 - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - f19ea066-91cd-460d-842a-f32d39a67aea - Area - 21.551902695350304 - - - - - 13.417126244593936 - - MI_Restricted_Substances - 3fd6cebb-a683-45be-b014-7c3fb617c3e7 - - Glass/polyimide honeycomb, ±45° fabric (0.064) - Glass/polyimide honeycomb, ±45° fabric (0.064), L Direction - 7a2ba64c-04cc-49e9-bc59-7d536d6f9e28 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - bc944cda-7533-407b-b00d-569eb379a60a - Mass - 100 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 6b48f74b-ecf8-4d5f-8092-2d4349c269fd - Mass - 100 - - - - - 13.417126244593936 - - MI_Restricted_Substances - 829ba125-1962-4803-a2ea-acd4eb899642 - - Annealed - Carbon steel, AISI 1030, annealed - 3b8852b5-0a4b-4eb3-945c-02bd69abd718 - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - a1f35a33-91aa-41ff-99a8-4b171149ddaf - Mass - 100 - - - - - 13.417126244593936 - - MI_Restricted_Substances - 3a464919-b1b2-4ce0-88b2-824bc9a81e6b - - Borosilicate - 2405 - Borosilicate - 2405 - c85dd726-02f4-445c-a87a-cbfa7dab58ea - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - 91fa02b9-77b8-4cf5-84d5-8483e0ead798 - Mass - 100 - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - f756b894-c24d-4f04-90c7-ed5031cfab0e - Mass - 100 - - - - - - - 2 - 49.798439373168371 - - MI_Restricted_Substances - f5833937-26a5-4d36-aaae-722b03f04a3b - - 0fd51798 - part_0fd51798-b2a2-4efb-a0bf-6fa79eea315b - 0fd51798-b2a2-4efb-a0bf-6fa79eea315b - - - 1 - 67.432213466350092 - - MI_Restricted_Substances - 63c278b1-c877-40c9-b18c-e03bc07a1dd1 - - 722e564a - part_722e564a-777e-4f9c-8811-193145d86934 - 722e564a-777e-4f9c-8811-193145d86934 - - - 8 - 9.25529180525583 - 49942221 - part_49942221-0621-4af1-a2fc-0a4093a6d639 - 49942221-0621-4af1-a2fc-0a4093a6d639 - - - 50.883502955959884 - - MI_Restricted_Substances - b44fad5b-b59d-4153-addf-f70a7895947d - - Annealed - Low alloy steel, AISI 4130, annealed - a4ec8808-b585-496d-a5cc-d59c512f313e - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - 6c81acc0-5663-48a0-80fb-0c2d91b678ad - Length - 25.633306440726532 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - 11cd72a3-ed84-4616-ac4c-ebaed41492c9 - Length - 21.16212259100849 - - - - - 7.0166424348628738 - - MI_Restricted_Substances - 8f779b79-a040-48d7-ac26-b9a1edf50ad2 - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 8640, oil quenched & tempered at 650°C - ff9a65cd-ebb1-451d-b40b-6b0647b7f578 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 6bbad37a-8852-47d4-abb8-cc6ffba27678 - Mass - 100 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - 8018ee5d-e0de-46af-ae92-55ebdfa74e2b - Mass - 100 - - - - - 7.0166424348628738 - - MI_Restricted_Substances - a831e691-2a34-4edf-807f-dfd38c316ef0 - - Borosilicate - 7740 - Borosilicate - 7740 - 2a1d6322-a0ea-436c-9538-cceb38c18a83 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 04a0a0dd-d457-4389-920e-b89aff73af52 - Mass - 100 - - - - - 7.0166424348628738 - - MI_Restricted_Substances - 38da30dc-d742-49da-bc7e-998b66397040 - - Oil quenched & tempered at 425°C - Carbon steel, AISI 1144, oil quenched & tempered at 425°C - e5309be8-4142-4935-8a91-72fa921fdf2d - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - efbe77cf-4e96-4bb9-ac92-59e4e213384d - Length - 4.8390723321768787 - - - - - 7.0166424348628738 - - MI_Restricted_Substances - ee5b018e-8d7f-4fb1-bad0-c73e871592bc - - 16Mo3, normalized - Low alloy steel, 16Mo3, normalized - d4294b82-7ffe-47d3-b655-dc8b66bc7020 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - a1b45db5-85b0-4f26-9b01-2968d3776b26 - Length - 4.0306716710471884 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - 477ee7d7-60b9-4ac0-8262-9e93cd7c26d3 - Mass - 100 - - - - - 7.0166424348628738 - - MI_Restricted_Substances - 9cae15c6-b5b6-4ab9-9008-d962bee0e662 - - Glass/phenolic honeycomb, 0°/90° fabric (0.128) - Glass/phenolic honeycomb, 0°/90° fabric (0.128), L Direction - 3d11b8af-1fd4-4675-8258-5b3b35f3c032 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 3bfd5fb1-23db-422d-90b3-f1e1a7c8a39a - Area - 5.0300065451441363 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - cbc4230b-cee3-48f8-8712-f8df2c6ba37d - Mass - 100 - - - - - 7.0166424348628738 - - MI_Restricted_Substances - 33160988-8422-40e2-93d1-e3e7467eafe9 - - Normalized - Carbon steel, AISI 1030, normalized - 6c76498c-79e8-4812-9fd1-af346f992f7e - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - 359a2740-1b43-4fd0-8d89-4cd4b18d63f0 - Mass - 100 - - - - - 7.0166424348628738 - - MI_Restricted_Substances - 72799627-a7c0-4df4-8250-e2be8538565f - - Glass ceramic (N11) - Glass ceramic (N11) - 96182ae5-ac0c-49fa-91bf-c58715109f6f - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - 096e3ee6-8be5-4a27-9e82-195bcd236082 - Mass - 100 - - - - - - - 7 - 57.228530550947667 - 0a2f97d7 - part_0a2f97d7-dc23-4588-90f2-3a7dad859ea6 - 0a2f97d7-dc23-4588-90f2-3a7dad859ea6 - - - 49.671437661010508 - - MI_Restricted_Substances - 75a1c963-399c-444d-a38f-1929c00d15b7 - - Normalized - Low alloy steel, AISI 4150, normalized - 9729d0c1-9bae-49be-b5d5-bad7b0e57c20 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - 3b462f60-aa3a-44b3-91a0-b9584d987069 - Area - 15.348283953661232 - - - - - 25.164281169494746 - - MI_Restricted_Substances - d2b08d58-fc58-402d-98a4-6ee646a8fff5 - - Potash soda lead glass - 0010 - Potash soda lead glass - 0010 - 42fe1c07-bf61-43fe-b200-091c0a99d3eb - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 9a3fb36d-fb3b-4899-a6c6-a492e6344ada - Area - 53.442114989013469 - - - - - 25.164281169494746 - - MI_Restricted_Substances - 3fd6cebb-a683-45be-b014-7c3fb617c3e7 - - Glass/polyimide honeycomb, ±45° fabric (0.064) - Glass/polyimide honeycomb, ±45° fabric (0.064), L Direction - f31b86d3-3d73-45d7-b335-dc80c6fe3797 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 390fa0ad-01b8-4920-8c1b-cb3b44fc86e3 - Mass - 100 - - - - - - - 1 - 31.800849098619473 - 6982cff1 - part_6982cff1-1540-4179-9bfb-6085885c7e80 - 6982cff1-1540-4179-9bfb-6085885c7e80 - - - 42.985126582433061 - - MI_Restricted_Substances - 3fd6cebb-a683-45be-b014-7c3fb617c3e7 - - Glass/polyimide honeycomb, ±45° fabric (0.064) - Glass/polyimide honeycomb, ±45° fabric (0.064), L Direction - 2f198640-ec20-443e-bce0-aa2480ebc5fa - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - a95b81e7-3165-4c66-b27c-79f80b8a77c1 - Mass - 100 - - - - - 28.507436708783469 - - MI_Restricted_Substances - 405361fd-5b54-4a33-b835-7eb9eee13310 - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 4042, oil quenched & tempered at 205°C - be2142f9-d6ab-490f-97dc-a6a35fae95f0 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - effd4e9c-9b82-4183-b83a-1c7b6373a274 - Mass - 100 - - - - - 28.507436708783469 - - MI_Restricted_Substances - e678781a-1b38-4709-816b-9db609651db6 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 50B60, oil quenched & tempered at 425°C - 9b463961-9e1d-49ac-a291-a22f41835348 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - f9a42968-f583-4ea2-8f08-7abb2b3d7c69 - Area - 15.600100073777185 - - - - - - - 5 - 5.3799660435784453 - c59f3dd3 - part_c59f3dd3-5757-4896-be0f-fe4a52ac813f - c59f3dd3-5757-4896-be0f-fe4a52ac813f - - - 1.0071820584159261 - - MI_Restricted_Substances - ed1b937b-1738-408f-9591-bd3e40cc5e33 - - Quenched & tempered - Low alloy steel, D6AC, quenched & tempered - 52cf4b83-73d4-4df3-8a79-30543a4005bd - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - 85be6d38-4183-4573-a6fe-b2d0883d1e7e - MassRemoved - 42.003885163927393 - - - - - 49.496408970792039 - - MI_Restricted_Substances - 99d1c1c6-eca3-40ed-a479-6dec902f52da - - YS400, cold rolled - TRIP steel, YS400, cold rolled - 6795f40a-00cf-4910-81e0-e6bfd760da45 - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - 0c6e3617-bc3c-4f77-9b0b-ce00180df965 - Mass - 52.913747752510822 - - - - - 49.496408970792039 - - MI_Restricted_Substances - cc556116-e08b-4aa7-a2f1-af5315cb6a49 - - Annealed - Low alloy steel, AISI 8740, annealed - d2c298de-fc99-4858-a8d0-3ff585bfbee9 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - afb02586-6603-4e8b-9df6-62bdbcfc9562 - Area - 51.587891556130671 - - - - - - - 9 - 29.531311956016026 - fe91d311 - part_fe91d311-524b-4814-93bc-0e03eec4d4ea - fe91d311-524b-4814-93bc-0e03eec4d4ea - - - 100 - - MI_Restricted_Substances - ee08f647-79af-49f3-98c5-043480a0fed4 - - Quenched & tempered - Low alloy steel, 4330V, quenched & tempered - b1170aef-0d45-4706-bf6e-58a6290598f8 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - bc36cb23-5d3d-4152-91e8-94d719fef358 - Mass - 100 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 72eb8ad1-7f1d-4ec2-a7f8-c2f2fb390bb5 - Length - 32.99316960991974 - - - - - - - 4 - 81.231096611000169 - e0e5af0a - part_e0e5af0a-e0c5-4e59-af5b-fb8261eaf757 - e0e5af0a-e0c5-4e59-af5b-fb8261eaf757 - - - 99.876987701224621 - - MI_Restricted_Substances - 6ad310ec-db2b-43b1-afa1-9b6ddae5880c - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 94B30, oil quenched & tempered at 425°C - 5603f0cd-721c-4d66-97e3-0fae5da13c6e - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - 53e81066-b63d-4911-8057-e3c49aaa7138 - Area - 20.675033619941694 - - - - - 0.015376537346922348 - - MI_Restricted_Substances - b00ee3d8-d653-4c76-8154-c2f07820ceda - - As rolled - Carbon steel, AISI 1080, as rolled - 9cc836ff-8d2f-41dd-82b9-747946f2675f - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - e2ed0c08-5f2f-48f6-ab7e-e6e6b91f51f5 - Mass - 100 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 47ff2e6f-c4fc-481b-ac7a-88e391b3d956 - Length - 20.458014225800529 - - - - - 0.015376537346922348 - - MI_Restricted_Substances - 00cd78de-6c78-46f3-81b3-ec03803fa034 - - Glass/phenolic honeycomb, ±45° fabric (0.048) - Glass/phenolic honeycomb, ±45° fabric (0.048), W Direction - a3e8d452-f55c-4b4f-afb4-78b5105fab0b - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 83448319-1f36-4f78-b6b2-ddccb968a8d6 - Mass - 100 - - - - - 0.015376537346922348 - - MI_Restricted_Substances - 1345051c-8b29-468f-a10d-37712b50f19a - - Borosilicate - 9741 - Borosilicate - 9741 - 34ee0405-4c30-4272-aa74-8cd0006c7cdc - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - e1dad974-b607-47f0-897c-389bce8c3130 - Length - 32.534031026314025 - - - - - 0.015376537346922348 - - MI_Restricted_Substances - f7146c54-87d0-4395-b57a-86bb0c43716a - - ASTM A106 Grade B - Structural steel, ASTM A106 Grade B - b1097059-ddc7-4042-9c37-ca46873934aa - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - a643177b-46b3-48e6-b617-520aa03a590a - Mass - 100 - - - - - 0.015376537346922348 - - MI_Restricted_Substances - bac6ffd4-6d83-432c-90f4-de9606502589 - - Alkali barium glass - Alkali barium glass - 13adc0ad-d341-44b0-bd5a-0e4be59efd3c - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - f1502dd5-5b95-4b45-8d0b-deb5e9a4673d - Mass - 100 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - 84af3f8c-8dba-49b4-9c0d-fd2aebc545b2 - Length - 15.257700353515194 - - - - - 0.015376537346922348 - - MI_Restricted_Substances - 92565d61-24fc-4880-9be5-0faeb9a8a3e8 - - Titanium silicate - Titanium silicate - 969b4e8d-aa09-45d8-b760-9a6d5f39bd17 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - cf49c522-0eee-46ad-b8fb-0bb1617f3b1f - MassRemoved - 71.953743915983353 - - - - - 0.015376537346922348 - - MI_Restricted_Substances - 90b2285b-4295-429d-beb8-90d9f5df0101 - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 5046, oil quenched & tempered at 315°C - c55b3a48-af24-4adb-8756-73a57c037afd - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - 9de8fabe-f587-4fbf-af1a-0737dbf6e562 - Mass - 100 - - - - - 0.015376537346922348 - - MI_Restricted_Substances - 50c388cf-bb91-442a-9b62-8d34f7822f13 - - Oil quenched & tempered at 540°C - Carbon steel, AISI 1040, oil quenched & tempered at 540°C - 85ea47d0-5bbe-4bfa-8dd5-351374048369 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 553326e4-d43e-4a2a-a8a7-e9a26f0a8dcf - Mass - 100 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - b5fbf9f0-b92e-477b-9ce7-aa33dddfaa3f - Mass - 28.596958857307659 - - - - - - - 1 - 97.074463729315653 - 437de059 - part_437de059-b008-4e7c-b520-10a8123000e1 - 437de059-b008-4e7c-b520-10a8123000e1 - - - 63.048234937269356 - - MI_Restricted_Substances - dce50f42-7360-4343-bf6c-8ed14aa0f092 - - 40% glass and mineral - PA66 (40% glass and mineral) - 701e5165-2c25-4cea-96ed-7750f5f41acc - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 6aa5c7f2-e8e6-41ab-9717-77236751e16f - Mass - 100 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - d509c5d2-e8e1-4640-9d90-8b15141ea57f - Mass - 100 - - - - - 18.475882531365322 - - MI_Restricted_Substances - 0c172430-369d-48ad-910e-69fe1451a36e - - Normalized - Carbon steel, AISI 1095, normalized - 1f7e073c-a7eb-49f3-adc0-0417aa2cfa5f - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - c33eccae-1ac4-4d8d-8b3d-a449ae0752dc - Mass - 100 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - d71fb4fe-b849-4560-a0e0-68b2e512cc69 - Mass - 100 - - - - - 18.475882531365322 - - MI_Restricted_Substances - 00cd78de-6c78-46f3-81b3-ec03803fa034 - - Glass/phenolic honeycomb, ±45° fabric (0.048) - Glass/phenolic honeycomb, ±45° fabric (0.048), W Direction - e56af113-d40b-42ac-a2df-f2472f70efee - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - ec8a21c1-8d76-4127-a2c3-83673ca72874 - Length - 19.651641752408651 - - - - - - - 7 - 27.138954786182829 - 04fa7bb4 - part_04fa7bb4-3a59-43c1-a203-6be1b2da9fcf - 04fa7bb4-3a59-43c1-a203-6be1b2da9fcf - - - 22.9690014957306 - - MI_Restricted_Substances - 7a62318a-eff2-4f36-9925-ee919c5b4369 - - S235J - Structural steel, S235J - b5b0bc54-ff16-4e30-aa8e-1174d01b0db9 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - f7e1d2c7-2fa3-4356-8737-63d41dea09cf - Mass - 100 - - - - - 25.676999501423136 - - MI_Restricted_Substances - 29b76cdc-672e-4a1f-8f6e-a5644857c880 - - Normalized - Low alloy steel, AISI 4135, normalized - 8b2a4aa2-e23e-4c9e-90b7-03a4272434ce - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - b7749878-bcea-4e27-92e1-43cbe27fa037 - Mass - 100 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 6006957c-f765-4ba5-bb70-31ffeab91dd8 - Mass - 100 - - - - - 25.676999501423136 - - MI_Restricted_Substances - 72799627-a7c0-4df4-8250-e2be8538565f - - Glass ceramic (N11) - Glass ceramic (N11) - cd3d696d-39e4-4ba2-beb9-220431560555 - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - b84b3ae8-bb31-4e8a-8081-ecf61c235074 - Mass - 100 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - 47bae213-7435-4793-96f0-733c137b25a9 - Mass - 100 - - - - - 25.676999501423136 - - MI_Restricted_Substances - aa85aa64-c83c-4dec-afe9-120ed38bfd6b - - Quenched & tempered - Intermediate alloy, Fe-5Cr-Mo-V aircraft steel, quenched & tempered - 82f871e0-b0dc-41a1-85fc-c757560e0d45 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - 443ee55b-1242-420a-b5ef-a1785070b80a - Mass - 100 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - df470091-0c62-4e4b-b5cc-ace6fc3bcedc - Mass - 100 - - - - - - - 1 - 37.721345777493596 - 5b8a41c6 - part_5b8a41c6-a8e6-44ab-bf66-c6f9793fa82e - 5b8a41c6-a8e6-44ab-bf66-c6f9793fa82e - - - 63.613183453498955 - - MI_Restricted_Substances - 829ba125-1962-4803-a2ea-acd4eb899642 - - Annealed - Carbon steel, AISI 1030, annealed - 16e80a3f-6e09-41a2-9cf5-4ba5eb4a7e14 - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - 55446e81-a459-4b89-84db-e9afdca8258d - Mass - 100 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - e13a47ea-20e1-427d-aa4d-c96d2f032ab5 - Length - 65.540538106831036 - - - - - 9.0967041366252612 - - MI_Restricted_Substances - 3c7e2f5d-1c0d-4d81-8f90-3aa111fa97ee - - water quenched & tempered at 205°C - Carbon steel, AISI 1040, water quenched & tempered at 205°C - bf017666-33ee-4e9c-a7c7-c79809c76bd5 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - b7d09318-089b-4b93-acb0-da0f87626678 - Mass - 100 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 986f836b-cbcf-4eca-a03e-94505ea593da - Mass - 100 - - - - - 9.0967041366252612 - - MI_Restricted_Substances - fbdbafa4-b1a5-410d-a3f0-0b7077b0d7be - - Glass/polyimide honeycomb, ±45° fabric (0.112) - Glass/polyimide honeycomb, ±45° fabric (0.112), L Direction - 930d52cf-2cee-4c4b-b1a9-b1d96d3044c9 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 6a48fca9-fbaf-4264-9482-96ab92322e57 - Mass - 100 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 72adcdd4-1469-4a17-84e7-9d58cf04a38e - Mass - 100 - - - - - 9.0967041366252612 - - MI_Restricted_Substances - 6f9ce415-05a1-4774-bf1d-8952ab0f7306 - - Annealed - Low alloy steel, AISI 3140, annealed - 676c5e9b-ff60-4183-a7a9-9d7fcd32c4ed - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - a0295e52-f3ba-4990-a17d-a6d1be73ff17 - Mass - 100 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 6b7c542c-ddd3-4aa2-8c5d-24e74a10c92d - Area - 68.080936403982776 - - - - - 9.0967041366252612 - - MI_Restricted_Substances - a8bcc71d-ff19-40c8-9520-f11553c604d2 - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 5140, oil quenched & tempered at 650°C - a21a8da1-da97-4c1b-8fbe-4a5aa1a91a46 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - 499b161c-fe41-45c5-a2ad-a21511698d33 - Mass - 100 - - - - - - - 5 - 45.262771633110368 - - MI_Restricted_Substances - 5fd070ef-bb1b-4857-abcf-7eda481ecfbe - - c8fe4f3d - part_c8fe4f3d-a700-4d0c-84e3-a14b889a4cc7 - c8fe4f3d-a700-4d0c-84e3-a14b889a4cc7 - - - 5 - 24.669284105612562 - eb2deb8b - part_eb2deb8b-b41d-4c74-8e4b-a7e85b8ec439 - eb2deb8b-b41d-4c74-8e4b-a7e85b8ec439 - - - 11.293506487875016 - - MI_Restricted_Substances - c95c73c3-4701-4efd-902e-cbf342cdcf96 - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 6150, oil quenched & tempered at 540°C - 745d6d44-8f46-419e-9b32-25bc47eaa59e - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 89f9c223-e5c2-4ebd-9633-4d3e6f846f0a - Mass - 100 - - - - - 44.353246756062489 - - MI_Restricted_Substances - 36e1311d-2e77-4147-8cf3-c4cdce6f6c7f - - Grade F9 - Alloy steel, 9Cr-1Mo, Grade F9 - 9b22d40c-ac77-4697-9810-85b65fe477be - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 08d160c5-0163-43da-9917-db0b516d1d61 - Area - 23.876643285097852 - - - - - 44.353246756062489 - - MI_Restricted_Substances - b10ab099-72fd-4e47-9274-015a08f619c2 - - Annealed - Low alloy steel, AISI 5160, annealed - 31356a48-ade5-4b4d-a93b-9808b6383d9e - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - f7533552-c5cd-4a4e-ab60-a532681d340a - Mass - 100 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - e3b12039-e222-49f5-8803-779b9f7fd7af - Length - 66.376230244699968 - - - - - - - 4 - 15.264850256622234 - 7ec1f344 - part_7ec1f344-f8f3-4bb7-a8bb-91fc987da37d - 7ec1f344-f8f3-4bb7-a8bb-91fc987da37d - - - 48.340723639512774 - - MI_Restricted_Substances - ab895171-8c16-4056-9062-78f7516be1b0 - - Borosilicate - 7050 - Borosilicate - 7050 - 4a413853-4f19-4033-99e9-d2558285fd77 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - b141dd7a-08fe-49c9-9e5e-60c573dff406 - Mass - 100 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - ebc20434-b632-4a83-98ce-36397e7cc4b6 - Length - 84.008895598356091 - - - - - 10.331855272097446 - - MI_Restricted_Substances - 92565d61-24fc-4880-9be5-0faeb9a8a3e8 - - Titanium silicate - Titanium silicate - e2589441-809a-4632-b5f5-604e86d5df1d - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 49000dd4-39c6-4c0e-91a4-9733e7cdc4cc - Mass - 100 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 2a8c198d-6795-43a2-89b0-18d302c51e22 - Mass - 4.0292751528459023 - - - - - 10.331855272097446 - - MI_Restricted_Substances - d424fe56-b6f6-42c2-99fb-3e92da8ce70b - - Molding, glass filled - DAP (molding, glass filled) - 9f8bae76-87c4-4a92-9d2e-7acd712324b4 - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 5a4e401d-dfcd-43eb-a876-1e11b6606ba3 - Mass - 100 - - - - - 10.331855272097446 - - MI_Restricted_Substances - 0a203f13-4112-4c7b-8d17-bd9ce600f647 - - YS350, cold rolled - Dual phase steel, YS350, cold rolled - c0ce1d7a-cd01-4611-bf88-190e3d52c5c6 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - 4c5daa87-9d94-4e0c-b0ed-f6e29891ec70 - Length - 60.250467090052773 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - c33605f5-647b-4115-ba26-4220139253f8 - MassRemoved - 19.773969203128466 - - - - - 10.331855272097446 - - MI_Restricted_Substances - d56a3593-45b4-418e-8f28-3fde55e8479f - - Homopolymer, 40% glass and mineral - PP (homopolymer, 40% glass and mineral) - 18c72c1f-62dc-424a-b1e3-829ebae03638 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - 39556d21-4b67-439a-ab9a-aa687ff13719 - Length - 88.799339946731621 - - - - - 10.331855272097446 - - MI_Restricted_Substances - c62d668e-5411-4845-b19c-3a0c4eedf872 - - 10CrMo9-10, normalized & tempered - Low alloy steel, 10CrMo9-10, normalized & tempered - eb75a1ff-cfed-4cff-9ee0-51b0ae2bff51 - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 97aba755-6d6b-476a-9d91-b4ae031e069d - Mass - 100 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - 8d6ff545-b87a-4f86-b87e-b0c67814fc8a - Length - 7.2227010537044611 - - - - - - - 6 - 83.811494653956728 - 82a614ac - part_82a614ac-71f0-43c2-9f05-50d6d6bc5dd7 - 82a614ac-71f0-43c2-9f05-50d6d6bc5dd7 - - - 27.351893311064639 - - MI_Restricted_Substances - d2c2408b-ddaa-4dc0-825b-b2d3ef39767b - - Oil quenched & tempered at 315°C - Carbon steel, AISI 1095, oil quenched & tempered at 315°C - 6ca8c8cd-314f-49f3-98a2-fe7da413b8dd - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - a37f7e86-aa84-4a27-991a-117d1677ba50 - Length - 56.536164393898183 - - - - - 18.162026672233839 - - MI_Restricted_Substances - 8b442749-964a-49d6-be5c-9a55c81d85f8 - - Annealed - Carbon steel, AISI 1137, annealed - c476e626-5152-486e-86db-e1e4879b8322 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - ea5ab7ac-c8d8-4223-b0ed-27111a71e53f - MassRemoved - 32.525596224016326 - - - - - 18.162026672233839 - - MI_Restricted_Substances - 81ce98b3-d459-4695-9dd9-d53244be47ed - - Annealed - Carbon steel, SA216 (Type WCC), cast, annealed - 49e350c2-4a76-46dc-91c9-a053293f1246 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - 44afe398-fa7e-4205-b019-ff981c913696 - Mass - 100 - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - efd3f567-f565-4c76-bfdd-53016814b06f - Mass - 100 - - - - - 18.162026672233839 - - MI_Restricted_Substances - 158e73a4-18c6-4e1a-b5d8-57669c377335 - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 8740, oil quenched & tempered at 650°C - f67e261d-6a6d-460c-b268-c2d94e6e6095 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - 95f56dd5-b66f-4a7a-bcf5-23248b4bf618 - Mass - 100 - - - - - 18.162026672233839 - - MI_Restricted_Substances - 4b01d1e1-0f4c-4861-a797-7ea504ca38c4 - - Annealed - Low alloy steel, AISI 5150, annealed - 2b4ff675-7d16-452a-aa95-6822f6f80a28 - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - 65d94de4-5ac4-4511-93bd-5c4493f91339 - Mass - 86.868624476189083 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 1927203e-d336-40f9-9ac8-002e3fb8404f - Mass - 100 - - - - - - - 2 - 26.229461061875085 - 8b6c545e - part_8b6c545e-01a8-4124-a864-f4715e58b341 - 8b6c545e-01a8-4124-a864-f4715e58b341 - - - 8.0149594731698546 - - MI_Restricted_Substances - 7c667712-7c0d-46fe-bf29-e73482f1a937 - - Normalized - Carbon steel, AISI 1040, normalized - 436bf9aa-eeaa-43b2-b091-946739429e46 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - b04303aa-fa93-4a4b-b15a-1d399aa6ef2a - Mass - 100 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - cc3e31e1-5109-4d2c-89c5-e9afbe14ac07 - Mass - 100 - - - - - 91.985040526830147 - - MI_Restricted_Substances - 879f3268-e8b6-48c0-822a-40a010d12911 - - AISI 1010, annealed - Carbon steel, AISI 1010, annealed - 5b140538-a83a-4932-8530-b6b9b1354b33 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - bd4e9820-9ff3-4955-adf8-a54c1fb91c6f - Mass - 100 - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - 21454e66-9f53-46ce-bc28-9eae97e8e2aa - Mass - 100 - - - - - - - 5 - 68.122599864435657 - 32a97613 - part_32a97613-8749-4521-911a-dadce88e2fbc - 32a97613-8749-4521-911a-dadce88e2fbc - - - 87.248372979112148 - - MI_Restricted_Substances - 9124b244-f2f8-44df-b2cf-b05d3406eb9e - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 4042, oil quenched & tempered at 315°C - fb4f654c-e2e5-4e46-82a7-135d9d12e8b8 - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - 899c2231-7fab-4232-9b1b-90460bf58577 - Mass - 100 - - - - - 1.5939533776109816 - - MI_Restricted_Substances - 29d2e9de-9de0-4ea9-9bff-3a1cee0c26e3 - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 4037, oil quenched & tempered at 205°C - e3442955-c1af-4772-8b05-38a14c8b56d6 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - 106b9d46-3e65-4149-82ad-e1be183c3aa0 - Mass - 100 - - - - - 1.5939533776109816 - - MI_Restricted_Substances - 5dbabc2e-4263-4458-abe1-31a2ece9e122 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 5160, oil quenched & tempered at 425°C - bafe2017-cae7-4cb0-a9a9-a0a07178065f - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - 04dae83c-67b6-4578-88e8-186be8062412 - Mass - 100 - - - - - 1.5939533776109816 - - MI_Restricted_Substances - e5cb0b28-b074-4eb6-95ab-12e8692a87ea - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 50B60, oil quenched & tempered at 540°C - ede158ad-d3b7-4822-9c1b-7baa9a4a09ec - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - 3d7da978-b277-4a25-b720-5638eeb242a3 - Mass - 67.539811678016477 - - - - - 1.5939533776109816 - - MI_Restricted_Substances - d6e501d1-0349-4e73-a9da-d539d7cd5486 - - Normalized & tempered - Carbon steel, SA216 (Type WCC), cast, normalized & tempered - 89b60b9d-50b9-458a-8a79-bc7fabf95943 - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - 22dc52e0-34ca-4412-952e-49bc1bf22f01 - Mass - 100 - - - - - 1.5939533776109816 - - MI_Restricted_Substances - 9baf14a0-efff-4bce-9674-553db30bee1b - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 9255, oil quenched & tempered at 650°C - 669c5e9a-c19c-4473-a1d7-4ac59cedb10a - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - dfcbbda8-fb7c-4a18-b4b8-67ce4d0a060e - Length - 10.265371115070474 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 777fa19d-d738-4b3b-915d-6996371d9079 - Mass - 100 - - - - - 1.5939533776109816 - - MI_Restricted_Substances - a1ecb25a-cbfa-484f-8221-3c08313c0d09 - - Glass/polyimide honeycomb, ±45° fabric (0.051) - Glass/polyimide honeycomb, ±45° fabric (0.051), L Direction - 2a239261-e9fa-4492-b6d9-487b94adce00 - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - 3231389f-f837-46b2-ab9f-65bd393369dc - Mass - 3.3359815847761842 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 965ee3ad-4b83-4b1c-aeb6-280f7931ac17 - Mass - 100 - - - - - 1.5939533776109816 - - MI_Restricted_Substances - cec978ca-2cf6-489b-a21f-c424c7d49a61 - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 4042, oil quenched & tempered at 540°C - b9ea77fb-a00b-4873-9afe-bebec9745c86 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - a9fc01c6-b5f8-4d21-ab7e-6afa5fb68b26 - Mass - 100 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 6a975675-91de-4ed0-a7da-0a74e72c8af0 - Mass - 100 - - - - - 1.5939533776109816 - - MI_Restricted_Substances - 940150b6-2d2e-4762-b1a0-6f354a75d95b - - Potash lead glass - Potash lead glass - 6f275f8d-94c9-458c-bf77-a73191c7d328 - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - 8662860d-124e-4acd-987c-ee1d0d4d7046 - MassRemoved - 4.0768485535294046 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 1889b177-f9b6-4429-ad45-cd5dda537c09 - Mass - 100 - - - - - - - 8 - 52.665403649520783 - - MI_Restricted_Substances - 19db41d7-f431-4cae-8977-8bdab8435374 - - f45aed28 - part_f45aed28-e2ce-47d9-9f72-262b61b4cf4c - f45aed28-e2ce-47d9-9f72-262b61b4cf4c - - - 5 - 67.809588400558368 - 029eebe4 - part_029eebe4-61d9-4313-8b11-48a3b2ddaa26 - 029eebe4-61d9-4313-8b11-48a3b2ddaa26 - - - 100 - - MI_Restricted_Substances - e6ccd83b-bd9f-45c2-a45e-53933b3b3638 - - YS170, hot rolled - Drawing quality, YS170, hot rolled - a1084c64-0392-4ae2-8349-95b72dd23979 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 20e30242-be1b-4382-abb8-ae0a7c43b0b5 - Mass - 100 - - - - - - - 9 - 72.54869717757623 - 9d4a9735 - part_9d4a9735-5832-40b9-a0c7-374f7f8ef4eb - 9d4a9735-5832-40b9-a0c7-374f7f8ef4eb - - - 100 - - MI_Restricted_Substances - b0c0246d-7238-46e4-9081-5bad34efbbdb - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 5140, oil quenched & tempered at 205°C - 69802d0e-a351-4e61-822e-72bef720e710 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 60c7e574-7a63-4b65-aa28-e295f5d044fe - Mass - 100 - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 48ff2572-798d-43a3-937f-b1e0d1412155 - Mass - 100 - - - - - - - 5 - 45.7524002742732 - 08e41ceb - part_08e41ceb-09ac-4b39-aec4-13ca0971e3f3 - 08e41ceb-09ac-4b39-aec4-13ca0971e3f3 - - - 19.097819933247667 - - MI_Restricted_Substances - be0bbb94-0c22-4276-9615-902f13ee0363 - - Oil quenched & tempered at 315°C - Carbon steel, AISI 1144, oil quenched & tempered at 315°C - 562fb1a0-2d01-4d8e-ab17-daed570352ce - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - c7299a56-0153-46d0-a959-7608c0a3e4b8 - Mass - 100 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - 1cff8140-3e0c-417e-a513-0dfa93a2efdb - MassRemoved - 2.8178233666428474 - - - - - 16.180436013350466 - - MI_Restricted_Substances - 00fe5279-94a1-43fd-8b88-d83679a1bdce - - Normalized - Low alloy steel, AISI 8650, normalized - 4d72c6e4-2025-4bcc-9f26-0bd1a1e025f0 - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - b8497ea3-22dd-4402-9297-c567f477f441 - Mass - 100 - - - - - 16.180436013350466 - - MI_Restricted_Substances - 44170b93-ef3d-4d60-848c-1d454eadbd1f - - As rolled - Carbon steel, AISI 1118, as rolled - fab0c294-61a5-4f4e-ba4e-1e003c0add97 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 12c5941f-9f7d-4a7c-a233-d62edcba2b73 - Mass - 100 - - - - - 16.180436013350466 - - MI_Restricted_Substances - 8d11e762-0e0a-4010-873b-28aa9eda77f1 - - water quenched & tempered at 650°C - Carbon steel, AISI 1040, water quenched & tempered at 650°C - 91e457fb-587b-4340-9663-d6588e04a9ef - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - 6d8b3ee0-b47a-45a7-b221-d37c4af789df - Length - 87.838828371762673 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - c0019e0b-9940-4b0a-8012-bb274efe6a46 - Mass - 100 - - - - - 16.180436013350466 - - MI_Restricted_Substances - ff23c6a6-3046-4f35-b5d2-ca7f0956efc7 - - Oil quenched & tempered at 650°C - Carbon steel, AISI 1144, oil quenched & tempered at 650°C - c1f1d2ae-d067-4cb6-9b97-0cb20f40aebb - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 391d1f1f-4586-47a2-9597-7a988ac7fbab - Area - 9.24836546613293 - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - 07e2be6c-604c-4c09-b7a1-5f96e5172fbc - Mass - 100 - - - - - 16.180436013350466 - - MI_Restricted_Substances - 3cad12a9-0765-402c-a6b1-0be665ecd2e6 - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 4140, oil quenched & tempered at 540°C - 73da6b78-b8b6-434a-b85c-9f69819556d8 - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - 1fc8a46d-4615-47eb-8e25-3868bcde3026 - Mass - 100 - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - 173921f9-7fc6-4d2f-861f-477d238a8158 - Mass - 55.180364500349555 - - - - - - - 1 - 67.484517613185815 - - MI_Restricted_Substances - a78dcd3a-f108-4fdb-857e-e2d00ed319d4 - - 0aa5949f - part_0aa5949f-02ce-4d0d-8c81-2c420977ba2c - 0aa5949f-02ce-4d0d-8c81-2c420977ba2c - - - 7 - 72.33532828853248 - 14a60b45 - part_14a60b45-ed26-4545-91b1-579cf92fd920 - 14a60b45-ed26-4545-91b1-579cf92fd920 - - - 81.390423412150909 - - MI_Restricted_Substances - a831e691-2a34-4edf-807f-dfd38c316ef0 - - Borosilicate - 7740 - Borosilicate - 7740 - af47e5bf-dc1e-4631-8029-06abeb8d8aa9 - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - b1dd64a2-c274-46bd-8687-3d33878586b1 - Mass - 100 - - - - - 2.3261970734811364 - - MI_Restricted_Substances - ab732b70-3546-4a94-b914-643f38c2443f - - 24CrMo13-6, quenched & tempered - Low alloy steel, 24CrMo13-6, quenched & tempered - 107419cf-caf4-4a12-99ab-00b4a6924134 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 0c3c00cc-917f-4ec7-9aaf-7c89dbfd4515 - Mass - 100 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - 64849db1-58f0-4cc6-a61e-19fc913cae47 - Length - 89.790219156905181 - - - - - 2.3261970734811364 - - MI_Restricted_Substances - 33160988-8422-40e2-93d1-e3e7467eafe9 - - Normalized - Carbon steel, AISI 1030, normalized - 5acf8036-ea0f-4650-bf06-d513c66556d7 - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - 6960e6d3-8999-4b93-8a23-f1254b1b62b8 - Mass - 100 - - - - - 2.3261970734811364 - - MI_Restricted_Substances - 52f4bd78-04b3-4f59-ad9d-f4d9e695cec1 - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 8640, oil quenched & tempered at 540°C - 7b765542-1a51-4dd5-84c6-c364df62912c - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - 52723d99-ec82-4965-82a5-fb22addcdd55 - Mass - 100 - - - - - 2.3261970734811364 - - MI_Restricted_Substances - b6d7f7bf-6ae9-4782-adb0-3c8684b58ab7 - - water quenched & tempered at 205°C - Low alloy steel, AISI 4130, water quenched & tempered at 205°C - cf75a3bf-9adf-4a7d-8531-24962738c224 - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - 4431c3ad-10d5-40ff-b98f-6b99b8d09273 - Mass - 100 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 9c3b4101-5c00-4270-be01-b034398c6850 - Mass - 100 - - - - - 2.3261970734811364 - - MI_Restricted_Substances - 63d5d6b5-3b52-4cd9-a56f-6e7c5c945139 - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 81B45, oil quenched & tempered at 315°C - 78d1af3d-f686-40b0-bb54-b1f232113dd9 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 8620f028-3d43-485e-95b8-c002cbbd1e66 - Mass - 100 - - - - - 2.3261970734811364 - - MI_Restricted_Substances - b3d89bcf-5e9a-4fe8-a953-98ceb384b8a3 - - water quenched & tempered at 650°C - Carbon steel, AISI 1030, water quenched & tempered at 650°C - 37dddd7a-f7db-44aa-925f-ce0d3b6d2daf - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - b3a173fe-d3fa-4fd1-a112-3526a28e9216 - Mass - 100 - - - - - 2.3261970734811364 - - MI_Restricted_Substances - 21dcdeeb-524a-488e-b332-fcd4e1caf6f7 - - water quenched & tempered at 650°C - Carbon steel, AISI 1095, water quenched & tempered at 650°C - 0a9b7806-e04f-42d4-a59e-34cdec3357a3 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - 91eea166-f867-4a19-8026-f9c59a7efbb3 - Area - 51.02855272173349 - - - - - 2.3261970734811364 - - MI_Restricted_Substances - b7281866-0d52-4e7c-b595-207e18a0a759 - - Glass ceramic (ZD) - Glass ceramic (ZD) - 8c8132bb-5369-4aee-a41b-e9fc45f6bbec - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 8b451d54-b071-44e9-960b-5a76f446e6ad - Mass - 100 - - - - - - - - - 4 - 94.962504690029888 - dbd26773 - part_dbd26773-8e8f-4777-ac11-5ae169b0adeb - dbd26773-8e8f-4777-ac11-5ae169b0adeb - - - 76.005991071465417 - - MI_Restricted_Substances - d42eaa02-9811-4935-b9cd-652adc845e8c - - Oil quenched & tempered at 650°C - Carbon steel, AISI 1050, oil quenched & tempered at 650°C - b664d6da-3d02-4c61-beca-ac15117002b4 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 0c30cc1c-7adb-42ff-9e3c-6df6902dd623 - Mass - 41.32548810044559 - - - - - 3.4277155612192263 - - MI_Restricted_Substances - 9df55457-5300-4ddb-b92e-122b5c121621 - - Glass and mineral filled, encapsulation, molding - Novolac (glass and mineral filled, encapsulation, molding) - 129b2bc8-e985-4f46-a8e6-9df04926e059 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - 4b3e027e-808e-43e5-9b43-24670aa70a5a - Mass - 100 - - - - - 3.4277155612192263 - - MI_Restricted_Substances - 1a9ca626-1709-4d7b-954c-65aa69bf6536 - - YS300, cold rolled - High strength low alloy steel, YS300, cold rolled - 6b2a51a6-4f05-4529-b956-d5f89154aea1 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - 4f7389b7-6ed6-4bde-9a00-47eba952c0cb - Mass - 100 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 663bef70-ccb1-4122-bf49-37c1ecdbc270 - Mass - 100 - - - - - 3.4277155612192263 - - MI_Restricted_Substances - b067ed19-a836-41f7-9267-d9b04647d09f - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 5150, oil quenched & tempered at 650°C - a6928515-9d7b-425b-87d6-77dd32f92761 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - 9b5e8df2-1fdf-456d-b942-69d71caa3bdb - Mass - 100 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - e47e033a-4cbb-4a05-b953-ddd17520582c - Length - 66.68110939985192 - - - - - 3.4277155612192263 - - MI_Restricted_Substances - 1a9a8159-774b-4fc9-9c09-4bbc5474f364 - - Oil quenched & tempered at 315°C - Carbon steel, AISI 1060, oil quenched & tempered at 315°C - 8fe9ddc8-d93d-4141-b1e6-e6d7c7ca7714 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 14745818-f77a-49c3-8543-cec80704e400 - Length - 63.610596472216116 - - - - - 3.4277155612192263 - - MI_Restricted_Substances - 8349c912-772a-4fd7-90a5-7d52aa9c9448 - - Oil quenched & tempered at 425°C - Carbon steel, AISI 1137, oil quenched & tempered at 425°C - 45eb05de-7dfa-4c59-8020-7a62fe7ffe9b - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - b92ed420-a919-4d7c-b717-467ed447e789 - Mass - 100 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 3e345310-3294-49ec-9563-4a560a1cbd77 - Mass - 100 - - - - - 3.4277155612192263 - - MI_Restricted_Substances - 877882c6-9b86-4643-a4a0-363d7d8023fd - - P355N/NH, normalized - High strength low alloy steel, P355N/NH, normalized - f6f762d4-60e6-41df-bd5b-a3c9a913e2a5 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 801772a7-9f20-4d3a-be55-c1d56953929c - Mass - 100 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - 9b415600-3892-4880-8548-5d2a1771f6df - Mass - 100 - - - - - 3.4277155612192263 - - MI_Restricted_Substances - ae5812e1-18fd-4a4d-aaa2-a04ca5e84b7a - - YS400, hot rolled - Dual phase steel, YS400, hot rolled - 65c218e8-5bf8-4ffe-b06f-33330785a050 - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - de4d8201-fd83-49b7-bdaa-17fe3fc25396 - Mass - 100 - - - - - - - 2 - 68.68658208692753 - 3c323160 - part_3c323160-5fd8-44e4-a13d-2b9f8d257e5c - 3c323160-5fd8-44e4-a13d-2b9f8d257e5c - - - 38.656917232394648 - - MI_Restricted_Substances - 15dcb0d7-3be1-4d92-952e-c80ccbdc6a58 - - Annealed - Carbon steel, AISI 1117, annealed - 495b33c6-6072-4b51-abeb-ea0631bda54a - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - 804ba7d8-7241-430b-a8bd-ffbfd8e9e1e6 - Mass - 97.846216986815548 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - 4032f224-a752-4e9b-9239-1216ab831a2a - Area - 23.4050722901733 - - - - - 20.447694255868452 - - MI_Restricted_Substances - ac443865-33d5-466d-89e2-c3f26e668369 - - Borosilicate - 3320 - Borosilicate - 3320 - 79b889c4-0a6a-43ee-a624-d1edde521eee - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - 2fdcde75-03c6-4ca8-95ee-94c569666985 - Area - 49.369266000282607 - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - 32429d18-f93d-4f9a-8b3b-b2185d113077 - Mass - 100 - - - - - 20.447694255868452 - - MI_Restricted_Substances - 0d45da58-d026-4a44-b2b5-3109fe88f824 - - Annealed - Carbon steel, AISI 1022, annealed - b52b229c-244e-43e4-a7af-d62cf3dcbc7b - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - ead16e14-f3e0-4428-9590-75daef15c905 - MassRemoved - 1.858558180676102 - - - - - 20.447694255868452 - - MI_Restricted_Substances - c95c73c3-4701-4efd-902e-cbf342cdcf96 - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 6150, oil quenched & tempered at 540°C - 6ee1f13a-259e-4c0d-808e-8ba5bfaee21a - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - f57655a3-883e-40dd-a093-9964a8356299 - Mass - 100 - - - - - - - 8 - 54.49852945958196 - 5dd3822f - part_5dd3822f-b24c-4067-b80a-a757c8cd42af - 5dd3822f-b24c-4067-b80a-a757c8cd42af - - - 9.03867003928808 - - MI_Restricted_Substances - 90514ab4-75b3-48a9-9a07-98eb8f83ef81 - - As rolled - Carbon steel, AISI 1015, as rolled - 5be59a06-d6b7-41ad-b182-8fde7d1e4ef0 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - a6ec4773-da93-4378-b1ab-ae3501c1c3a3 - Length - 56.508613357557266 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - 359cb7f8-ca98-47e0-a518-e151f66bb612 - Mass - 100 - - - - - 12.994475708673132 - - MI_Restricted_Substances - b7281866-0d52-4e7c-b595-207e18a0a759 - - Glass ceramic (ZD) - Glass ceramic (ZD) - 08e59c8a-2717-49be-9877-99514a1d892c - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - fb977997-cc93-43b1-97a2-fce283ab53c3 - Mass - 100 - - - - - 12.994475708673132 - - MI_Restricted_Substances - 6d6a3603-a2a8-4db9-9e7e-ad4fc4f9c724 - - Glass/phenolic honeycomb, ±45° fabric (0.064) - Glass/phenolic honeycomb, ±45° fabric (0.064), W Direction - 4d7fbb98-5105-4379-91f3-c0e83a36490f - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - 4f99306f-f5d8-4a01-a9c2-4bec570e02c1 - Mass - 100 - - - - - 12.994475708673132 - - MI_Restricted_Substances - f92ff01e-ed35-4c66-96d1-607d9684b44b - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 94B30, oil quenched & tempered at 315°C - 94ee114f-4921-482e-b6f0-bcf062174668 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 86a3e3ac-e646-4dc8-bd37-31f184e119b8 - Mass - 100 - - - - - 12.994475708673132 - - MI_Restricted_Substances - db238d75-fcb8-41f5-9289-83a352fa83a6 - - Annealed - Carbon steel, AISI 1015, annealed - 4f63a2b4-ca62-458e-a376-2e8c16a35be6 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - bd30ba17-0112-479e-86a4-ed7cd8a7e16d - Length - 32.4986593017814 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - dd48f4ee-fed1-4743-a078-97593acdbb3d - MassRemoved - 1.4542936819858354 - - - - - 12.994475708673132 - - MI_Restricted_Substances - a1ecb25a-cbfa-484f-8221-3c08313c0d09 - - Glass/polyimide honeycomb, ±45° fabric (0.051) - Glass/polyimide honeycomb, ±45° fabric (0.051), L Direction - cba81f0c-37ce-4fa0-98eb-cd0f1f202dbc - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - aadbc19e-955c-4d2d-b6d2-eb1c26ba3ac6 - MassRemoved - 22.666930417840803 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - 76780348-4023-4a50-9c95-d2021dca2c25 - MassRemoved - 18.420393494153579 - - - - - 12.994475708673132 - - MI_Restricted_Substances - 87e1a3cd-fd79-4013-b5f8-56d6f28bef34 - - Oil quenched & tempered at 540°C - Carbon steel, AISI 1144, oil quenched & tempered at 540°C - da444f58-762b-4434-a8b4-68e908157cbc - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - 4d5bf7d5-e56b-46dd-93d1-a791d41ebe7e - Mass - 100 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - 2f5e2e30-90dc-422e-ad04-7e4a745524ee - Length - 40.701439623116251 - - - - - 12.994475708673132 - - MI_Restricted_Substances - ee08f647-79af-49f3-98c5-043480a0fed4 - - Quenched & tempered - Low alloy steel, 4330V, quenched & tempered - 743e0b8f-fc4b-4b51-b429-4add411a3d50 - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - 35b35d9a-b0e3-48ad-842c-7989acce53f7 - Mass - 41.913643917959945 - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 6a9dcf43-279e-4b1a-b9e6-05b7f00e03df - Mass - 100 - - - - - - - 6 - 76.823358320083173 - - MI_Restricted_Substances - 022614af-ecf8-4797-af86-25b711d65e30 - - ede9c4dc - part_ede9c4dc-b959-4cd3-886d-d73c16ba410f - ede9c4dc-b959-4cd3-886d-d73c16ba410f - - - 5 - 65.1566377678684 - c6deee78 - part_c6deee78-ba90-46e1-bf50-943770fe74f5 - c6deee78-ba90-46e1-bf50-943770fe74f5 - - - 59.535038219548312 - - MI_Restricted_Substances - 5b4ea232-c032-4f8d-a633-3b059e93651a - - 36%Co steel - Hard magnetic alloy, 36%Co steel - a4a505df-4b60-4496-8bca-af20cff0717c - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - ad5e3fec-5699-4265-9bff-4a5337d214e0 - Length - 90.222387896022937 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 64596daa-99ae-48b6-a37d-f3fa3730f7e4 - Area - 44.093146335376957 - - - - - 6.7441602967419483 - - MI_Restricted_Substances - e6461f0f-809d-4f17-8ea9-b85d7219639a - - Glass/phenolic honeycomb, ±45° fabric (0.128) - Glass/phenolic honeycomb, ±45° fabric (0.128), L Direction - aa3e1d42-4b4a-4b04-8309-006cc76ba803 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - 5d230694-57bd-43d6-8494-9ab67a963c63 - Length - 58.901326525444787 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - bfed3d36-890a-457d-ad16-0e33003a5c8e - Length - 66.634482362603066 - - - - - 6.7441602967419483 - - MI_Restricted_Substances - f17caf23-cca0-47c9-a216-c29c1533ed51 - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 50B60, oil quenched & tempered at 315°C - 576ada76-20e0-4680-8d0d-354906e8d430 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - a086531c-9ed6-445c-8011-ad89a896fb3f - Length - 4.8088964097243254 - - - - - 6.7441602967419483 - - MI_Restricted_Substances - 2a840794-eac4-4f77-90ba-f84bce518c0f - - Glass/phenolic honeycomb, 0°/90° fabric (0.055) - Glass/phenolic honeycomb, 0°/90° fabric (0.055), L Direction - b0d69130-2193-4218-8e43-bdc5990b9811 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 6443405a-6eb7-4cdb-9e03-9151c4d973e5 - Area - 13.542481331872978 - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - 8ef1914b-82a3-4b4c-8136-82b22c52426d - Mass - 100 - - - - - 6.7441602967419483 - - MI_Restricted_Substances - 1d9c8629-4a1d-4aaf-bb7c-ba7a97eef5f5 - - Normalized - Carbon steel, AISI 1340, normalized - 8ac39931-3435-41fe-9cd4-79a44528d043 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 3add1843-5548-42ea-8cd5-a6bc7ab62e06 - Mass - 100 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 4f7fb088-a550-4303-8c43-bb2c5f9d463f - Mass - 100 - - - - - 6.7441602967419483 - - MI_Restricted_Substances - 2656c71b-a4ea-4fc6-9139-adc0deae35b1 - - 65wt% glass, biaxial lay-up - Polyester/E-glass fiber, woven fabric, 65wt% glass, biaxial lay-up - 205d1b5d-8be2-451c-abd9-7db894c4f25e - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - d8276af2-5e1b-425b-b32e-6a243751c623 - Mass - 100 - - - - - 6.7441602967419483 - - MI_Restricted_Substances - d07fe7e1-e745-42a8-9761-6f68c2a7bd1b - - Annealed - Low alloy steel, AISI 4150, annealed - ff18eea8-708c-4a5e-b423-dfd95959a9ec - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 9ef576f6-f156-400a-b8aa-0036675290ba - Mass - 100 - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - 392e0c5f-13c3-4c87-bc47-2eb2e6905400 - Mass - 100 - - - - - - - 7 - 33.034452997629742 - c4d2141a - part_c4d2141a-9ba8-46ec-9f1b-cd0d9b30cdcf - c4d2141a-9ba8-46ec-9f1b-cd0d9b30cdcf - - - 30.825772197370309 - - MI_Restricted_Substances - 0afa77bf-df9b-456c-8c48-3c84b1ccd2e0 - - Low density glass-sphere filled - Bisphenol molding compound (low density glass-sphere filled) - cb3eb454-1ec1-4bea-a815-1fb838a21831 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 31e23a0f-0a29-4e65-89b2-d93541db603e - Mass - 100 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - bc72ef57-53db-4fe6-aaaa-ad09ba171161 - Area - 92.217149721559679 - - - - - 23.058075934209896 - - MI_Restricted_Substances - 50342378-5548-45ea-9a21-c0f16c6dcb1a - - Steel, terne coated - Coated steel, steel, terne coated - 5776bdfe-4912-49c1-85d3-0713d6a6d0fe - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 8fbb6564-41cb-4784-afb4-598244cd31d6 - Mass - 100 - - - - - 23.058075934209896 - - MI_Restricted_Substances - 67ea6f19-34d5-40af-9b8c-059058fd840a - - Oil quenched & tempered at 205°C - Carbon steel, AISI 1080, oil quenched & tempered at 205°C - d8af9b19-e096-4e1d-a96e-77f0e70f87a9 - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - ae9b8fa6-82e4-4518-a408-29804f7900ec - Mass - 100 - - - - - 23.058075934209896 - - MI_Restricted_Substances - e6b45bea-dec9-4b91-996a-885bb0c31f8d - - Glass, S grade (10 micron monofilament, f) - Glass, S grade (10 micron monofilament, f) - e4923503-0e75-4099-909f-cd195156daf8 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 225b44b1-2efa-48de-93d8-03f8ecd7ef75 - Mass - 100 - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - 163fc9e0-4602-455c-b0d0-7fa5bffbe4ef - Mass - 100 - - - - - - - 9 - 28.289836565167565 - 594a4dd2 - part_594a4dd2-ce0c-4965-9bb3-36af1a32b5a7 - 594a4dd2-ce0c-4965-9bb3-36af1a32b5a7 - - - 44.68628249349365 - - MI_Restricted_Substances - b1b14aff-8354-447c-9883-df4969a517a3 - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 86B45, oil quenched & tempered at 315°C - 4f79bf51-0531-4f50-bb8a-df6902de48cd - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - bc48191a-0d55-4729-a6db-1bac764cd512 - Mass - 100 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - a44b17b1-ae57-4836-ad1a-9d8cb71ad42e - Length - 4.8352695558384378 - - - - - 11.06274350130127 - - MI_Restricted_Substances - f7146c54-87d0-4395-b57a-86bb0c43716a - - ASTM A106 Grade B - Structural steel, ASTM A106 Grade B - ca1f9eb2-30f5-42c6-937a-3ea2ca2f4d2a - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - 0aded0e8-09f1-41e5-b847-8182cf58fed2 - Mass - 100 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 6ee5135e-0662-4010-a3a7-be01a3fd96f6 - Mass - 100 - - - - - 11.06274350130127 - - MI_Restricted_Substances - 81ce98b3-d459-4695-9dd9-d53244be47ed - - Annealed - Carbon steel, SA216 (Type WCC), cast, annealed - 3c64a19c-38df-4a75-8dea-04697e832cb8 - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - 29e1accd-4ed8-4250-8ee8-e3f9e5b155af - Mass - 100 - - - - - 11.06274350130127 - - MI_Restricted_Substances - d41a9d62-4a05-4cd7-98ac-f1acb5d39658 - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 9255, oil quenched & tempered at 540°C - b02cf418-c984-4b2d-81f3-c2c6bdc78eb8 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - 1ba1cac9-17cb-4ede-a6f6-18a75f2373ce - Length - 56.162055421696067 - - - - - 11.06274350130127 - - MI_Restricted_Substances - 7a62318a-eff2-4f36-9925-ee919c5b4369 - - S235J - Structural steel, S235J - 4afca0bd-8482-4501-b933-c2c4f00a1e43 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - f1346717-38e4-4925-a6b6-0645ca8949e5 - Length - 52.162394277827062 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 13e8ee9b-153a-4fd9-81dc-cc83a571e7ec - Area - 93.833674115051366 - - - - - 11.06274350130127 - - MI_Restricted_Substances - db7d255c-6269-4097-a5aa-e18a13019915 - - FR-4.0 (Df < 0.01 at 10GHz), Epoxy/Glass fiber, PCB laminate - FR-4.0 (Df < 0.01 at 10GHz), Epoxy/Glass fiber, PCB laminate - 00c7da4f-fc24-4233-a13b-93d9b85f404d - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - 94055cf8-2c15-465d-96f8-ce0b25246c07 - Mass - 100 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 6138dc7b-3602-45ac-94bd-4847d94d1570 - Mass - 100 - - - - - - - 2 - 97.771993790647016 - ac138146 - part_ac138146-5194-40a7-afa3-349c4345f39a - ac138146-5194-40a7-afa3-349c4345f39a - - - 11.777257319436064 - - MI_Restricted_Substances - afc85ad6-9e99-44a7-a959-f75ddbacff15 - - FR-5, Epoxy/Glass fiber, PCB laminate - FR-5, Epoxy/Glass fiber, PCB laminate - 066fbaf0-5b98-435c-b493-64d5892cadde - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - ad47d1f6-bd11-488e-b825-3147dd8a0b0d - Mass - 100 - - - - - 44.11137134028197 - - MI_Restricted_Substances - 3b818b25-e6de-4e5c-b546-e97c68e10225 - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 5046, oil quenched & tempered at 650°C - 3b208f3b-1113-4f4b-a983-943d22590029 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - ad68552e-cc31-494a-b899-0363e52ff508 - Mass - 100 - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - ca93ef19-cf1a-4ea2-8aa5-c7e1207b8901 - MassRemoved - 79.367918558124416 - - - - - 44.11137134028197 - - MI_Restricted_Substances - c15a44c3-d8be-4ae8-9a58-281f13b731cd - - YS420, cold rolled - High strength low alloy steel, YS420, cold rolled - cbbd1922-4a1d-4ccd-bb7b-1f6200ea54d2 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - 757d131d-bfd7-4b49-9b42-d0a25856f793 - Mass - 100 - - - - - - - 2 - 19.663618653856041 - ee26367d - part_ee26367d-0bcb-470b-a527-67a3b872892d - ee26367d-0bcb-470b-a527-67a3b872892d - - - 100 - - MI_Restricted_Substances - ed1b937b-1738-408f-9591-bd3e40cc5e33 - - Quenched & tempered - Low alloy steel, D6AC, quenched & tempered - 8cde10fa-e9a7-4913-b5cc-927b86a872e8 - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - 1947e9d9-a9d2-4f50-8e37-0e15f16f5504 - Mass - 100 - - - - - - - 1 - 85.8339871679591 - - MI_Restricted_Substances - 19db41d7-f431-4cae-8977-8bdab8435374 - - 4c8dc587 - part_4c8dc587-a97e-4506-8131-725ceaa59696 - 4c8dc587-a97e-4506-8131-725ceaa59696 - - - 5 - 1.9630376258692879 - - MI_Restricted_Substances - 80083213-3621-42c0-9e23-cdaa30c759e6 - - 688d58f6 - part_688d58f6-c50e-49e8-9a82-b2d516050610 - 688d58f6-c50e-49e8-9a82-b2d516050610 - - - 6 - 55.042830787153378 - eeb0858c - part_eeb0858c-7c6f-4c91-b611-86f355ae9e89 - eeb0858c-7c6f-4c91-b611-86f355ae9e89 - - - 100 - - MI_Restricted_Substances - 3606ab13-13f3-49fb-bded-2e3470bcf7d9 - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 81B45, oil quenched & tempered at 650°C - a28c71b6-8dc4-4c8d-8b5d-2fbc0092dab9 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 26d4f20b-6511-40ab-befd-fb38f522e745 - Mass - 100 - - - - - - - 8 - 57.843534442523278 - 2a3b25e9 - part_2a3b25e9-fca6-4e5f-9b98-fe2ce973810f - 2a3b25e9-fca6-4e5f-9b98-fe2ce973810f - - - 26.934134926150616 - - MI_Restricted_Substances - 2f1d8340-2d1b-4b7a-b236-f9924123bb33 - - ASTM A36 - Structural steel, ASTM A36 - 6f0f316e-86cd-411c-a55d-2df8bb735b25 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - bea52eff-5ecd-443b-beb2-7d6157ad5338 - Mass - 100 - - - - - 18.266466268462345 - - MI_Restricted_Substances - d02817f7-7500-4fcb-8c34-40927da681a5 - - Quenched & tempered - Carbon steel, SA216 (Type WCC), cast, quenched & tempered - 45174c87-f58a-4227-9e14-2b3b74d04890 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 33219f1e-6ff6-4254-a2d5-02fe3c0ad4c2 - Mass - 100 - - - - - 18.266466268462345 - - MI_Restricted_Substances - 8245dc6c-3d61-4f18-82c8-6fb946e1582c - - Glass foam (0.13) - Glass foam (0.13) - faf424bd-e724-47e9-ad77-070fc9b8c516 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - c79a3353-8f86-4943-bf90-27ce904735ac - Length - 79.649383472115446 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - e3c506d8-8c0f-4f71-b852-52a049df532c - Mass - 100 - - - - - 18.266466268462345 - - MI_Restricted_Substances - 4ad00a9e-92b5-4e28-92a0-409da4495c54 - - Oil quenched & tempered at 205°C - Carbon steel, AISI 1060, oil quenched & tempered at 205°C - e179e37a-2ffe-48ba-8fd5-38f96742c82c - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - 6fe9513f-2ebb-4255-8b57-5175a2fb5301 - Mass - 100 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - c1365da9-9c8e-479a-844d-31329ca62c6f - Mass - 100 - - - - - 18.266466268462345 - - MI_Restricted_Substances - 74efd204-f3f9-4a40-b3a6-0b48295b815b - - Annealed - Low alloy steel, AISI 4820, annealed - 74fbb2dd-5b0b-45a7-8d1a-97f82013df63 - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - 6115d183-bb4f-4295-b816-54a7a78a79b4 - Mass - 47.649450063542211 - - - - - - - 7 - 44.481351619810496 - 752b9eaf - part_752b9eaf-5396-46c5-bcbc-d117e67e2f96 - 752b9eaf-5396-46c5-bcbc-d117e67e2f96 - - - 22.263660711359073 - - MI_Restricted_Substances - a7ada434-62e4-411d-9c85-56dd9d44f094 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 4037, oil quenched & tempered at 425°C - 5208a1a6-321f-4a4f-bcbe-15661555a999 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - 9a7ab126-e2ea-4b43-82a2-eca4d9ae391a - MassRemoved - 73.804193909188825 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - c5f7c1a0-78e3-4e38-9110-c5ffcc28052e - Length - 72.204110385945114 - - - - - 38.86816964432046 - - MI_Restricted_Substances - 7b1fcb28-a127-417b-978f-6a5c58305d24 - - Annealed - Carbon steel, AISI 1118, annealed - b0b5ed93-ca11-440d-a2a1-664c6bcac957 - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - 5c79f499-9c93-41ec-bd6d-d37c328af4a8 - Mass - 100 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - ad5ae1ba-3a86-473d-9ba7-7c9f207b9d6e - Mass - 100 - - - - - 38.86816964432046 - - MI_Restricted_Substances - 82eabba3-2697-4f74-a530-ae27f5e33ffe - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 50B46, oil quenched & tempered at 540°C - 54555277-80b6-4c9a-8da3-b8e285ae98b2 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - 9ea0a363-7c54-4a24-8b4a-8cbdbe6c35a4 - Length - 23.485833463950936 - - - - - - - 2 - 74.286081862769123 - 2e0b4bbe - part_2e0b4bbe-5824-4f04-9403-e4f67aec2048 - 2e0b4bbe-5824-4f04-9403-e4f67aec2048 - - - 83.898301135701274 - - MI_Restricted_Substances - aa4540cb-3277-459f-a69a-ca324ddd0125 - - Glass ceramic (N0) - Glass ceramic (N0) - 549b49a4-59fe-4e55-983e-59f6201188c0 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - b960c1ca-3311-4ced-ab97-6bfb02fd2191 - Mass - 100 - - - - - 8.0508494321493629 - - MI_Restricted_Substances - 2c2dc98a-ef9d-420d-aa00-25552c8f8bab - - S355J - Structural steel, S355J - 2a660257-441e-4c57-8125-05d3218ad94e - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 72ef15df-ca91-48a0-bbd7-1ebdfb8bdcd3 - Mass - 100 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - 9742cee8-239e-48ac-be60-9892713d4e00 - Mass - 100 - - - - - 8.0508494321493629 - - MI_Restricted_Substances - 356303d7-c574-4db7-80f9-427e176a5308 - - 40CrMoV13-9, quenched & tempered - Low alloy steel, 40CrMoV13-9, quenched & tempered - a3459071-3026-41a8-a904-69f211082c8a - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - 7947cbf5-9a0f-4dfd-a747-1febff1d0340 - Mass - 100 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - d863c646-cf1e-4b41-82a6-a226ab0dec22 - Mass - 100 - - - - - - - 5 - 70.405681510644811 - 8d0be01b - part_8d0be01b-cd46-49cb-81ec-b2b4c50964cf - 8d0be01b-cd46-49cb-81ec-b2b4c50964cf - - - 7.14154662896951 - - MI_Restricted_Substances - 9ce914d8-75c1-4c5f-8c57-11c0e62b2cfa - - ASTM A299 Grade A - Structural steel, ASTM A299 Grade A - 780ef8f9-0a79-4f8b-94f4-f1d0c4dec462 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 08a232b4-2a98-4633-bbf3-baed71150706 - Mass - 100 - - - - - 11.607306671378812 - - MI_Restricted_Substances - b00ee3d8-d653-4c76-8154-c2f07820ceda - - As rolled - Carbon steel, AISI 1080, as rolled - 8ba7ceb6-645f-4fef-9c4a-c447e49d1da4 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - 01d0d6b3-f68f-416e-b445-f48b3a3ce19e - Length - 72.121478231680342 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - e1cde062-59c4-42ad-a43b-9c66e8760037 - Mass - 100 - - - - - 11.607306671378812 - - MI_Restricted_Substances - a371ea54-94e0-4a85-9b8a-856cf82f2e1d - - SAE 4130, cast, quenched & tempered - Low alloy steel, SAE 4130, cast, quenched & tempered - ed9f8659-9b73-4ff7-a9ac-e4273cb6ab76 - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - 7092b96c-cefa-4e67-8da6-9c7779335375 - Mass - 100 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 8c7953d2-68b5-4d7e-9f01-0d34f54c3fc2 - Mass - 100 - - - - - 11.607306671378812 - - MI_Restricted_Substances - 546a4247-5e3b-4adb-bc7e-3fc87f992447 - - Glass/phenolic honeycomb, 0°/90° fabric (0.055) - Glass/phenolic honeycomb, 0°/90° fabric (0.055), W Direction - f65d11fe-0f04-4ba2-ac2d-5542ec8c2670 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - 7580986d-3ee6-4c6a-9a94-6b99b6ed12f2 - Mass - 100 - - - - - 11.607306671378812 - - MI_Restricted_Substances - 1a53b354-59b1-4129-a78d-0bfe95923541 - - Normalized - Carbon steel, AISI 1117, normalized - 02a05e20-e8b9-4787-aeda-496e299a562e - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 3ec679b8-7a36-46ad-bdd5-4ba75842cb86 - Length - 81.291739214813219 - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - e29497ec-64a7-44e2-b3a8-b3f770ba7c78 - Area - 57.871781828753541 - - - - - 11.607306671378812 - - MI_Restricted_Substances - 54bbb9b3-efe0-473b-ac70-caea9951e470 - - Normalized - Carbon steel, AISI 1015, normalized - 8ad15042-122a-4394-bcb0-2a56ed110de8 - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - 2008b7c6-e12f-4136-9367-de9f2a6d072d - Mass - 100 - - - - - 11.607306671378812 - - MI_Restricted_Substances - 4b01d1e1-0f4c-4861-a797-7ea504ca38c4 - - Annealed - Low alloy steel, AISI 5150, annealed - c366e688-47cf-4eaf-acd3-370c008eea59 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - f616899b-8d17-422b-b9ba-090eb825b8f1 - Mass - 100 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 3e713ee4-69e8-40e1-9bd3-a2e20b2b66b0 - Area - 76.453028049530928 - - - - - 11.607306671378812 - - MI_Restricted_Substances - 181b484f-4ada-4e9e-8c47-103ae23d76c3 - - Quenched & tempered - Low alloy steel, AISI 8740, quenched & tempered - c5f7e172-3732-466c-8c3a-e6ecc194ca4f - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - fcb2b75a-217b-440e-a1cf-af410418a94e - Mass - 100 - - - - - 11.607306671378812 - - MI_Restricted_Substances - dfe65b4e-afb8-4397-a303-1266359ccfda - - Quenched & tempered - Low alloy steel, Hy-Tuf, quenched & tempered - 8c447b96-27ef-469f-bb52-4c30c221dc6c - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - b61e3ed4-60fa-43e8-8492-b21edf314aad - Mass - 100 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 45dd58ca-a1a6-4d56-a27e-39e6e13aab7c - Mass - 100 - - - - - - - 6 - 87.74853874358746 - fc816c81 - part_fc816c81-a4dd-4dbd-b057-77d33b2f6164 - fc816c81-a4dd-4dbd-b057-77d33b2f6164 - - - 81.516732918804863 - - MI_Restricted_Substances - 90514ab4-75b3-48a9-9a07-98eb8f83ef81 - - As rolled - Carbon steel, AISI 1015, as rolled - 19c6e2e4-b12f-4b6c-ab24-9d6ae0efe7a4 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 20d186fd-4564-4e69-be02-a1892a71baf7 - Mass - 100 - - - - - 3.6966534162390277 - - MI_Restricted_Substances - 8643d806-94c5-42f9-9ffc-4c21a6e16bd0 - - Annealed - Carbon steel, AISI 1141, annealed - 99975f5e-3441-4c19-abe7-1213b862408f - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - 9adb3451-4da0-4f78-82b2-c2a889364b23 - MassRemoved - 64.340470481822493 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 08361ab9-fa03-427d-9348-179d5086d15d - Mass - 100 - - - - - 3.6966534162390277 - - MI_Restricted_Substances - b067ed19-a836-41f7-9267-d9b04647d09f - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 5150, oil quenched & tempered at 650°C - 9b87de39-67d3-4897-880a-12702f2e28b5 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - 025f356b-b30a-47cf-b1f8-907108147f00 - Length - 59.377822540410705 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 8113c9c1-0bed-4c38-8ae7-0d1b761e7311 - Mass - 100 - - - - - 3.6966534162390277 - - MI_Restricted_Substances - e8c6d73a-bd7a-4ef3-ae11-48e45d4a5515 - - Glass, E grade (0.4-12 micron monofilament, f) - Glass, E grade (0.4-12 micron monofilament, f) - cb5eb97c-7540-4e16-875d-0bb131bb3e50 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 8e626599-1413-442a-a50e-98fc9b5e5328 - Mass - 100 - - - - - 3.6966534162390277 - - MI_Restricted_Substances - 53268754-75cd-4016-8ed0-2577d32f766e - - As rolled - Carbon steel, AISI 1060, as rolled - 04d19f03-af42-47d7-8f68-fe846602a7be - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - b2cfdd42-6c18-4810-b594-cf360f47cb55 - Mass - 93.583163243524339 - - - - - 3.6966534162390277 - - MI_Restricted_Substances - 82eabba3-2697-4f74-a530-ae27f5e33ffe - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 50B46, oil quenched & tempered at 540°C - 10c7c9ea-394a-4280-8af9-bda6bfd5e307 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - 84fa5022-2526-4aa2-9fd1-4b989f0d0b21 - Mass - 100 - - - - - - - 3 - 75.5753188745935 - 6f4ea3c5 - part_6f4ea3c5-a560-45f6-85b8-efcc4021f17d - 6f4ea3c5-a560-45f6-85b8-efcc4021f17d - - - 29.577397382621374 - - MI_Restricted_Substances - f82520a6-b061-4bc7-b873-40211a51aca5 - - Glass/phenolic honeycomb, 0°/90° fabric (0.035) - Glass/phenolic honeycomb, 0°/90° fabric (0.035), L Direction - c60b55d8-4b8d-4131-a9b6-c56872672986 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 947e4440-d7c0-46d4-aa13-288ef2c8111e - Length - 5.5953458443262365 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 7afbe458-61cb-451c-8c13-39a13573658c - Mass - 100 - - - - - 70.422602617378629 - - MI_Restricted_Substances - ae5812e1-18fd-4a4d-aaa2-a04ca5e84b7a - - YS400, hot rolled - Dual phase steel, YS400, hot rolled - 795d3e5d-15f9-4a9f-bea5-e2c87939073d - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - 2a150d7e-f85b-4124-a8f4-740f7c7d4a82 - Length - 35.414769423853031 - - - - - - - 6 - 43.720106009263596 - - MI_Restricted_Substances - 544dcb08-b28a-4b6c-9af7-20182b64b0d5 - - 20e6b945 - part_20e6b945-da4f-4a53-8dff-867f7572e201 - 20e6b945-da4f-4a53-8dff-867f7572e201 - - - 1 - 47.330395666570588 - 70bb5351 - part_70bb5351-c3a4-4d02-8ddd-bab2abc64736 - 70bb5351-c3a4-4d02-8ddd-bab2abc64736 - - - 4.8230129782217617 - - MI_Restricted_Substances - db7d255c-6269-4097-a5aa-e18a13019915 - - FR-4.0 (Df < 0.01 at 10GHz), Epoxy/Glass fiber, PCB laminate - FR-4.0 (Df < 0.01 at 10GHz), Epoxy/Glass fiber, PCB laminate - 8b451981-2b7a-4e40-9ac4-8c12fc1333fc - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - bd408aff-759c-48ed-9276-eadd50a0b216 - Mass - 69.312933166191414 - - - - - 23.794246755444561 - - MI_Restricted_Substances - dec2859d-9573-49bd-846a-5e2a288c063f - - Soda barium glass - Soda barium glass - 9f39f2a6-0599-4e0c-824c-79c6f486a44d - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - 53eae939-c16c-4057-8c64-f9c12cb2f5ef - MassRemoved - 45.088557873428122 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - c27ee4cd-2b72-4c46-b68a-9c1026279818 - Mass - 100 - - - - - 23.794246755444561 - - MI_Restricted_Substances - 6ad310ec-db2b-43b1-afa1-9b6ddae5880c - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 94B30, oil quenched & tempered at 425°C - e82ad814-b0c3-4722-9b6f-71ac40e64ee6 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 6b869a1e-25a3-43f4-bac6-3cff261c374f - Mass - 100 - - - - - 23.794246755444561 - - MI_Restricted_Substances - b4c065d7-6405-44fb-82cf-24ca2072f5c9 - - 300M (high carbon), quenched & tempered - Low alloy steel, 300M (high carbon), quenched & tempered - 4e99b4bd-16c5-4612-91cb-3952e0dc3898 - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - f4876557-b875-4b71-8d35-029df65ce865 - Area - 63.322926621568818 - - - - - 23.794246755444561 - - MI_Restricted_Substances - 9df55457-5300-4ddb-b92e-122b5c121621 - - Glass and mineral filled, encapsulation, molding - Novolac (glass and mineral filled, encapsulation, molding) - 3576fa9a-49e7-44f7-a99d-6775a875d4bd - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - d52732f0-161d-4e4c-8463-3a4e85c75d72 - Mass - 100 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - b2cb5a54-a8ee-4c3a-9a07-7e083363d2ee - Length - 34.494777272685795 - - - - - - - 7 - 57.098844860260769 - - MI_Restricted_Substances - 80083213-3621-42c0-9e23-cdaa30c759e6 - - 0fcb7c9e - part_0fcb7c9e-dbdd-4c19-ad50-ddf5a00e01c2 - 0fcb7c9e-dbdd-4c19-ad50-ddf5a00e01c2 - - - 6 - 45.430244340296014 - 0576d8c4 - part_0576d8c4-c39b-4493-b636-374dba713f25 - 0576d8c4-c39b-4493-b636-374dba713f25 - - - 83.058517558061766 - - MI_Restricted_Substances - 117e786a-5af5-40b0-9511-e7c38ca3cfc8 - - Glass/polyimide honeycomb, ±45° fabric (0.072) - Glass/polyimide honeycomb, ±45° fabric (0.072), W Direction - f8101f90-713a-4793-b01f-ad55639b49cb - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 1c3b25a1-0b5c-4e0e-890c-6563239f6ce2 - Mass - 100 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - 56b0591d-04d3-4e8b-b09e-4b9ccad5a5ad - Length - 28.862317152722888 - - - - - 16.941482441938234 - - MI_Restricted_Substances - 1d0ad45b-4da7-4c47-9850-754d0f67c02a - - Glass/polyimide honeycomb, ±45° fabric (0.096) - Glass/polyimide honeycomb, ±45° fabric (0.096), W Direction - 42bf9baa-39d4-483b-85de-46e4326430c5 - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - 3faf0869-1db6-47e3-bc34-fc636587259d - Mass - 100 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - f16f3737-1e44-4ce0-a379-43b7f3ad7e4c - Mass - 100 - - - - - - - 9 - 46.750087592168754 - - MI_Restricted_Substances - a0987114-e9d2-4390-9d0f-e47283d2f4d0 - - c4325510 - part_c4325510-db9e-4f15-9ef8-66a97e028988 - c4325510-db9e-4f15-9ef8-66a97e028988 - - - 5 - 18.38959623984508 - - MI_Restricted_Substances - 544dcb08-b28a-4b6c-9af7-20182b64b0d5 - - 85107a1d - part_85107a1d-27db-4878-a5b4-fc404d4c5668 - 85107a1d-27db-4878-a5b4-fc404d4c5668 - - - 7 - 15.805600730611758 - c75365fa - part_c75365fa-98cf-40aa-9d90-68b2529b0508 - c75365fa-98cf-40aa-9d90-68b2529b0508 - - - 24.249886825797095 - - MI_Restricted_Substances - 01ec383d-8c37-48b7-80b4-e1f3106fae04 - - Alumino silicate - 1723 - Alumino silicate - 1723 - 0c05f18a-1f67-4ac8-b0da-7c71265eacd5 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 6798addc-42ba-4b2f-a691-c10c0bffb185 - Length - 76.796792948989562 - - - - - 18.937528293550727 - - MI_Restricted_Substances - a762be42-466e-4a8e-8819-d5270e44d056 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 5046, oil quenched & tempered at 425°C - ca4c6fb3-b09a-4c8d-9884-cf50c1071638 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 71abf1c0-362e-4877-8785-be423591c697 - Mass - 100 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - 9caa083b-cce8-40d0-ba47-b8bffba47504 - Area - 24.17301532075415 - - - - - 18.937528293550727 - - MI_Restricted_Substances - e721d8b7-256a-4b7b-af09-6b40d8309979 - - water quenched & tempered at 425°C - Carbon steel, AISI 1040, water quenched & tempered at 425°C - 1c24ebe1-b57e-4c56-92e1-6df2174a2e0b - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 1675e5e7-c66b-420c-9bf8-e2949d6a1a7f - Mass - 100 - - - - - 18.937528293550727 - - MI_Restricted_Substances - e721d8b7-256a-4b7b-af09-6b40d8309979 - - water quenched & tempered at 425°C - Carbon steel, AISI 1040, water quenched & tempered at 425°C - df500fac-ba7d-42f6-894b-69ff466b31c7 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 6a1a0d20-cecf-47af-92be-015ee0b17539 - Mass - 100 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - d8b5098d-8109-4eb3-9ca4-c62419c9ffd3 - Area - 25.70968541582566 - - - - - 18.937528293550727 - - MI_Restricted_Substances - 9e6962c2-d850-4285-97e5-fbb27dbc0447 - - water quenched & tempered at 425°C - Carbon steel, AISI 1050, water quenched & tempered at 425°C - 5c28dcb5-193b-4e9c-8623-70f937166824 - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - ce5e29df-02de-4836-a411-8d4e080128c2 - Mass - 100 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - 5f382dc7-27c8-42c0-93e9-133ece0d9c5d - Mass - 100 - - - - - - - 9 - 49.851170112309589 - afe15050 - part_afe15050-4a7a-48cc-86c0-a34446c4d25e - afe15050-4a7a-48cc-86c0-a34446c4d25e - - - 100 - - MI_Restricted_Substances - 817b973c-3e12-4b5f-96b3-89b05d14d76c - - ASTM A500 Grade C - Structural steel, ASTM A500 Grade C - 471ba675-c826-419d-9111-c902a4a1d4cb - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - c3dd28cd-7242-433e-a8b9-f5ec656edb2f - MassRemoved - 74.795963510310258 - - - - - - - 9 - 79.07995198810471 - - MI_Restricted_Substances - 5fd070ef-bb1b-4857-abcf-7eda481ecfbe - - fd38543e - part_fd38543e-2ac8-46c6-9945-e879f1e6d043 - fd38543e-2ac8-46c6-9945-e879f1e6d043 - - - 4 - 91.771853105990147 - 2fc0eed1 - part_2fc0eed1-9aab-4b0e-8636-67dc838dec78 - 2fc0eed1-9aab-4b0e-8636-67dc838dec78 - - - 47.4155172926446 - - MI_Restricted_Substances - 06a05a3e-1419-430e-bd94-120296b4c49e - - Normalized - Low alloy steel, AISI 9255, normalized - a67754f0-ea35-42e0-9169-80df7eb59057 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 04f597ff-4d91-4149-8140-e709349f2e3f - Length - 68.854388906086967 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - e92babea-36ac-4c89-90e2-b88b7b14daee - Mass - 100 - - - - - 10.51689654147108 - - MI_Restricted_Substances - f931cdfe-568b-40b5-b238-ea22a815f312 - - ASTM A537 Class 1, normalized - Structural steel, ASTM A537 Class 1, normalized - 24ff9c57-a699-487d-b778-bc706c394c05 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 9fed9a45-3a29-4476-805c-6edd642feb3e - Mass - 71.037765066622654 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 33605c7b-486e-47cd-81f3-681f399de83c - Mass - 100 - - - - - 10.51689654147108 - - MI_Restricted_Substances - 44a3cdc8-1092-45c0-be37-1802daa92d30 - - Borosilicate - 7052 - Borosilicate - 7052 - a8b12cda-618b-44bd-bc34-a9b0333ff458 - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - aa7cf824-fbef-48ca-84c5-ae19e80961ba - Mass - 100 - - - - - 10.51689654147108 - - MI_Restricted_Substances - 36e1311d-2e77-4147-8cf3-c4cdce6f6c7f - - Grade F9 - Alloy steel, 9Cr-1Mo, Grade F9 - 4c8622ed-a969-4911-b5bf-d1ff0098db47 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - c55b65b1-28c1-48ba-a11e-9cae31e736bb - MassRemoved - 9.684168458769177 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 01fe6c09-b96c-48cc-9bbb-32ace592981c - Area - 56.77588300629327 - - - - - 10.51689654147108 - - MI_Restricted_Substances - f0e0782d-fdaa-43d9-ab8f-24d22dc5b6dd - - Glass ceramic - 9608 - Glass ceramic - 9608 - 7bbdc680-6d10-4890-b5bf-03906ee4f30c - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - 0002114a-bdce-4ef1-9acc-ec6dc50574a2 - Area - 51.10335394325822 - - - - - 10.51689654147108 - - MI_Restricted_Substances - aec2777b-f126-4f12-b748-b94bf7393f2a - - Oil quenched & tempered at 650°C - Carbon steel, AISI 1060, oil quenched & tempered at 650°C - f1a82f7f-8728-4954-b9fb-caf45531c9f5 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - f5295f87-f76e-4f3a-922b-f14f6ec81595 - Mass - 100 - - - - - - - 2 - 85.746784035929849 - b1d8c895 - part_b1d8c895-0906-409d-99e6-4c5919fb9b6b - b1d8c895-0906-409d-99e6-4c5919fb9b6b - - - 3.2550883028912772 - - MI_Restricted_Substances - e1d1747e-ff7a-4817-9dcc-e889d45170d7 - - ASTM A500 Grade B - Structural steel, ASTM A500 Grade B - 79f1b5c2-32ef-4860-90e7-30cbe94313be - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 30bb6304-7941-4b04-8e75-0618496f653b - Mass - 100 - - - - - 24.18622792427718 - - MI_Restricted_Substances - 91d7e1bd-d353-4eb1-9634-286e8e69d0d5 - - Oil quenched & tempered at 540°C - Carbon steel, AISI 1141, oil quenched & tempered at 540°C - 4fbd0d4b-53a4-4b73-91a8-783fd0110759 - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - d376f895-8b83-43a1-82ff-1c938cb2c6a0 - Mass - 100 - - - - - 24.18622792427718 - - MI_Restricted_Substances - 1a7c6e51-066a-4f25-9c48-76ca6fbd8330 - - Glass ceramic - 9658 - Glass ceramic - 9658 - db2f5774-4815-4522-8fd0-cf95620dee65 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 695799ab-341b-4eb6-a057-79255d347a9d - Mass - 100 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - ee9b5a3d-3387-4007-8c05-5b752e0712c4 - Mass - 100 - - - - - 24.18622792427718 - - MI_Restricted_Substances - 9b08ec7e-e481-47fa-a36b-849db7ef2432 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 8640, oil quenched & tempered at 425°C - 219af804-fba3-4969-95d9-15acd6d89103 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - c8e629d8-7f63-4bf7-a48d-1965f7221999 - Length - 96.1120123956874 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 8857c24c-af73-48d3-81f8-550c4aa46582 - Mass - 100 - - - - - 24.18622792427718 - - MI_Restricted_Substances - 385dc8fe-7c8c-4fe3-9382-2a7182e05f0d - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 5130, oil quenched & tempered at 425°C - 7b333b0a-326f-4a21-afec-f792c08d4d8d - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 9ffa563d-2079-4734-86f2-dba1ca12318c - Mass - 100 - - - - - - - 7 - 62.57189580359119 - - MI_Restricted_Substances - b49e47be-bf96-4bf1-9366-5c1b840267d4 - - 60239b93 - part_60239b93-5be2-4036-967e-2afeb7065fd6 - 60239b93-5be2-4036-967e-2afeb7065fd6 - - - 1 - 34.507880003428035 - 5a030026 - part_5a030026-d9e8-4a55-9529-1de2a3eb8198 - 5a030026-d9e8-4a55-9529-1de2a3eb8198 - - - 42.039970281552506 - - MI_Restricted_Substances - 302db922-ffc4-4955-9a98-ddaa64c43d26 - - Borosilicate - 7720 - Borosilicate - 7720 - 56c9f4c4-33d4-4405-8dfe-36340475ce5f - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - d96f47c4-59ef-4dad-89d2-c976ed12a1d5 - Mass - 100 - - - - - 9.6600049530745817 - - MI_Restricted_Substances - e62ec0fe-66ca-4b17-88d1-609c5568e318 - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 4340, oil quenched & tempered at 650°C - 369ebc5c-f45b-4a95-8dd5-80a361a5c326 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - 40b73cfe-a6a1-424a-9960-11449ecd040f - MassRemoved - 66.544521211900062 - - - - - 9.6600049530745817 - - MI_Restricted_Substances - 2a821f5c-97b0-4a08-81b1-de3f1543fb44 - - Alkali strontium clear glass - Alkali strontium clear glass - bd589432-665c-4ef9-9d92-66b17a82eab6 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - b9fba68d-8a09-41e0-baab-68cc96db7559 - Mass - 100 - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - 9817b026-cd99-4ac4-91aa-7caa79f0c4c6 - MassRemoved - 21.932605291685373 - - - - - 9.6600049530745817 - - MI_Restricted_Substances - 9e4c9bc1-b3b6-42dd-a32f-7af4e3190d72 - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 86B45, oil quenched & tempered at 205°C - 27d7103f-bcb4-4f37-820f-4a834cab7231 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 5d53a7ab-207c-4801-bd76-31d384a9faae - Mass - 100 - - - - - 9.6600049530745817 - - MI_Restricted_Substances - 874b8433-2e47-45c3-9c89-226428104214 - - Glass and mineral filled, heat resistant, molding - Novolac (glass and mineral filled, heat resistant, molding) - 6779227e-472b-405d-8086-e00c7a69ad00 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 3eca388a-b85a-4678-a38f-2f25f7b98507 - Length - 44.56747772384783 - - - - - 9.6600049530745817 - - MI_Restricted_Substances - fce75b98-deb8-41ba-b343-cc7385cdac54 - - Normalized - Carbon steel, AISI 1050, normalized - e306def9-6d76-4a97-888f-d39b9974c797 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - 1d8cba15-9394-42a6-a029-556bcffab1f8 - Mass - 100 - - - - - 9.6600049530745817 - - MI_Restricted_Substances - 2096ca77-9981-4fd5-9bc6-afe56b3bbbd4 - - Glass/phenolic honeycomb, 0°/90° fabric (0.096) - Glass/phenolic honeycomb, 0°/90° fabric (0.096), W Direction - 5795e66e-2a08-4228-bdb4-92539278f4f7 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - ea5d9b88-8e43-40da-a972-18d6fc15ed98 - Mass - 100 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - bbbc7617-982c-43f5-a5db-702f38e7ef69 - Mass - 100 - - - - - - - 5 - 85.552923560865651 - bc8e6ffa - part_bc8e6ffa-8b27-4321-8456-10bc4f3e7d19 - bc8e6ffa-8b27-4321-8456-10bc4f3e7d19 - - - 100 - - MI_Restricted_Substances - ccc92e6a-14f4-4ec6-9c3a-35ef3d6c9d8e - - Annealed - Carbon steel, AISI 1025, annealed - b64ecb2d-305d-4678-ad0f-08783eb2f374 - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - 5df561aa-20c7-4c4d-88c3-c0dc93b04997 - MassRemoved - 85.516044071650157 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - 3f99c16f-500d-4cb8-969f-92035a8e9aae - Mass - 100 - - - - - - - 8 - 83.626185582776628 - 6a607cfd - part_6a607cfd-65b1-4917-8374-36d286e28ee4 - 6a607cfd-65b1-4917-8374-36d286e28ee4 - - - 68.800139971450037 - - MI_Restricted_Substances - bfd46ac9-4021-49b6-9656-d1e426bd1c79 - - Oil quenched & tempered at 205°C - Carbon steel, AISI 1340, oil quenched & tempered at 205°C - a7d39015-8698-4a5b-b3e0-e5b265a71b0e - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - f1f551c9-a71e-442a-b237-1b73837c0ad5 - Mass - 100 - - - - - 15.599930014274982 - - MI_Restricted_Substances - 0ff3d25e-2024-43a5-9654-bb095ad302ce - - YS260, cold rolled - Bake hardening steel, YS260, cold rolled - 08b7b0d1-0161-4afa-818d-142d5257881e - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - f4e8b684-fdbc-440b-bb16-bdd6e5dc66b1 - Mass - 100 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - a92f3b13-cc3b-4fdd-ac36-a2e4cd214b22 - Mass - 100 - - - - - 15.599930014274982 - - MI_Restricted_Substances - 190cf17e-dbc1-40c7-a3d1-cc776977cb47 - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 50B46, oil quenched & tempered at 650°C - b353e0da-bc65-4e67-8422-3bce015ee9fd - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 995c18cc-f708-4937-b3bc-c4462d7a0f7f - Mass - 100 - - - - - - - 7 - 87.425868253887572 - - MI_Restricted_Substances - 2fcb534e-37c5-4b25-add8-ff02d2541953 - - c997a949 - part_c997a949-3734-4f78-9866-a447dfa7aa44 - c997a949-3734-4f78-9866-a447dfa7aa44 - - - 7 - 13.381408813121453 - 8e95a169 - part_8e95a169-d4b7-4e5d-bed6-a39cc76be1a5 - 8e95a169-d4b7-4e5d-bed6-a39cc76be1a5 - - - 32.832744546622386 - - MI_Restricted_Substances - 5dbabc2e-4263-4458-abe1-31a2ece9e122 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 5160, oil quenched & tempered at 425°C - 07e936d2-1016-4eb6-871b-573615c7c7c8 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - fd989855-85eb-43ef-93d9-84bc7a9a80dd - MassRemoved - 97.496870671164643 - - - - - 22.389085151125869 - - MI_Restricted_Substances - 0e008ce6-63df-4b25-81d6-02398cb9cc62 - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 8660, oil quenched & tempered at 540°C - 3a848f66-c7d2-4da9-80f8-1ed69363c023 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - 31563959-eb4b-46f7-a3d6-8b438a498e2b - Mass - 100 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - 1ba4994a-d2f9-4463-a80f-696a35e15e73 - Mass - 100 - - - - - 22.389085151125869 - - MI_Restricted_Substances - 00cd78de-6c78-46f3-81b3-ec03803fa034 - - Glass/phenolic honeycomb, ±45° fabric (0.048) - Glass/phenolic honeycomb, ±45° fabric (0.048), W Direction - 44fa0e99-bc9e-4595-a489-d2e166778188 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - 4337ff91-2af3-40da-a7fa-a67a94a428e9 - Area - 18.064450061910065 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - aff00a81-6a29-423f-95f3-99f6c4b2be77 - Area - 69.015454765882083 - - - - - 22.389085151125869 - - MI_Restricted_Substances - 53268754-75cd-4016-8ed0-2577d32f766e - - As rolled - Carbon steel, AISI 1060, as rolled - 6cb131f2-70f7-4b9c-b0b9-d120775abcb9 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - 443eccb7-655d-431a-b524-43bed794f997 - Length - 68.815057058266859 - - - - - - - 6 - 76.043504511957764 - cae856bf - part_cae856bf-64b8-4a2c-b9ce-63fcd115b52e - cae856bf-64b8-4a2c-b9ce-63fcd115b52e - - - 25.048650254052436 - - MI_Restricted_Substances - d424fe56-b6f6-42c2-99fb-3e92da8ce70b - - Molding, glass filled - DAP (molding, glass filled) - 223cf977-1df7-49b8-82f4-67945bd2c3d3 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - 668935b6-9930-4325-ad98-0c8a54f077d5 - Mass - 100 - - - - - 74.951349745947567 - - MI_Restricted_Substances - dec7564b-7c27-43fc-9f05-8965e384367a - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 51B60, oil quenched & tempered at 540°C - a6f0b2b1-608e-409c-96fc-733c8873de63 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 3707a636-2e10-452a-89ec-51b15cb875bc - Mass - 100 - - - - - - - 8 - 66.343702546480912 - 56b4f594 - part_56b4f594-a9e8-4e3b-a813-588e42dafa72 - 56b4f594-a9e8-4e3b-a813-588e42dafa72 - - - 0.61400756268483 - - MI_Restricted_Substances - 211ae46e-0827-4d61-af66-5a72c42d0cd8 - - T-glass - T-glass - 2c65e5f7-741d-487a-869b-1726fa6a37bd - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - d53e38b8-5876-49b8-a484-90c4c6a2a731 - Mass - 100 - - - - - 14.197998919616452 - - MI_Restricted_Substances - 408a337f-8eb7-4225-96bd-1225da437143 - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 5140, oil quenched & tempered at 315°C - be0900d2-62f9-4365-85e4-463b8bd776dd - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - 721a16f9-1256-4322-99e8-1774a6202966 - Mass - 100 - - - - - 14.197998919616452 - - MI_Restricted_Substances - 0f82772a-b4f0-4ed3-a8cc-6c721ad4b9ac - - Potash soda zinc - Potash soda zinc - 34bdc8cb-ae4d-4f37-bbf5-dd6894e95004 - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 644495c6-0047-4cd5-b2a2-748aa6ecdb0d - Mass - 100 - - - - - 14.197998919616452 - - MI_Restricted_Substances - 2096ca77-9981-4fd5-9bc6-afe56b3bbbd4 - - Glass/phenolic honeycomb, 0°/90° fabric (0.096) - Glass/phenolic honeycomb, 0°/90° fabric (0.096), W Direction - cbd9105b-8a92-41b8-8c1e-00601241859a - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - 38a3b737-2b6e-401e-8465-5e1ed7619f2b - Mass - 59.021085993862286 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - a711d2a6-d325-40d0-8164-b4eeaa30d36b - Area - 55.370409859051186 - - - - - 14.197998919616452 - - MI_Restricted_Substances - 1d5dd59c-75a0-4bf2-8862-7d77996aa0be - - Annealed - Low alloy steel, AISI 8650, annealed - 5bb492cb-1d62-4f49-bcdc-a43831448785 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - 3b618581-8302-4403-967c-a81638512e9f - Length - 31.769880993184579 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - cffc250d-acec-41ed-b562-6c6dddf00ed4 - MassRemoved - 11.271175747397903 - - - - - 14.197998919616452 - - MI_Restricted_Substances - 91d7e1bd-d353-4eb1-9634-286e8e69d0d5 - - Oil quenched & tempered at 540°C - Carbon steel, AISI 1141, oil quenched & tempered at 540°C - 019601ba-d111-4682-88b5-004b2a41848e - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - 2f0ea54d-7e78-4a80-8655-3b9e1bd1d721 - MassRemoved - 50.962580112257314 - - - - - 14.197998919616452 - - MI_Restricted_Substances - d411a96b-aa1c-4651-a405-5a2bc5c32dff - - Modified, Grade 91 - Alloy steel, 9Cr-1Mo-V, modified, Grade 91 - a86b311d-7528-4d4c-b2a3-da67f2e81884 - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - 1f845714-341b-442d-aa4a-d1ba844719b5 - Area - 55.852763334220633 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - 1c595b1c-d4de-4e19-90bd-b8323a12e1e6 - Length - 74.532069766210427 - - - - - 14.197998919616452 - - MI_Restricted_Substances - 5169a157-0d18-4d45-b197-799e06aa00bc - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 9255, oil quenched & tempered at 315°C - 3c82221e-f220-447b-8353-fbc156f544ed - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 0e962534-eaab-491a-b461-aff65ecbe25e - Mass - 100 - - - - - - - 3 - 43.268384758042352 - 034ae570 - part_034ae570-6b72-4588-8858-d05fe8ec4265 - 034ae570-6b72-4588-8858-d05fe8ec4265 - - - 64.118560340310708 - - MI_Restricted_Substances - a89802d6-13c5-496d-b139-57ae43e6591c - - As rolled - Carbon steel, AISI 1022, as rolled - 2430abfe-a4d5-450e-b249-b1ff3006f50d - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - ab0dc822-7a2f-4f1d-8319-46a360810b4e - MassRemoved - 97.34478066551722 - - - - - 7.1762879319378587 - - MI_Restricted_Substances - e86ced85-7d75-4b62-8f8e-90bd345ae003 - - Normalized - Low alloy steel, AISI 5140, normalized - 2aacd7fb-6f52-4112-9e9f-2718f5f9ac37 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - 49bc9837-9417-4b98-aec6-9353098a48a1 - Mass - 100 - - - - - 7.1762879319378587 - - MI_Restricted_Substances - 021e3fde-941b-4d44-bc55-a1c5a346d6d9 - - Quenched & tempered - Intermediate alloy, Fe-9Ni-4Co-0.20C steel, quenched & tempered - e3d1ac3a-608f-4766-b1ae-c521602c3f52 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - 6f34c420-447e-43ac-87f4-ebbd6fd1e91d - Length - 18.833783463963208 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 1945f590-e5fa-461a-884e-e9bf4ca3d301 - Mass - 100 - - - - - 7.1762879319378587 - - MI_Restricted_Substances - 19b67562-02fa-47ea-8fba-af5b14d1fafa - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 4042, oil quenched & tempered at 650°C - 584c4675-c341-4e74-a273-9fbaa509f17b - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - d4c6f167-a12a-4b18-af27-9bb9c9ac9770 - Mass - 100 - - - - - 7.1762879319378587 - - MI_Restricted_Substances - 410f0fc7-aeda-4f4e-bb83-0595b7ba09d0 - - Solution treated - Iron-base-superalloy, N-155, solution treated - 85173ead-dc76-4602-9409-e0d379bc5f67 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - f3ed9441-ef86-45c4-85da-a71c014cdb35 - Length - 0.33939192087361214 - - - - - 7.1762879319378587 - - MI_Restricted_Substances - 7b1fcb28-a127-417b-978f-6a5c58305d24 - - Annealed - Carbon steel, AISI 1118, annealed - 396fd799-d5c0-44ef-85fb-309959f4e4b9 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 06fab3de-256c-48f9-93a7-1b2849ca4b4f - Mass - 100 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - b85a77bf-b67d-4805-bef6-1176e4ab66c5 - Mass - 100 - - - - - - - 9 - 9.6230559561508979 - 892d8144 - part_892d8144-5af7-4433-a93d-2c0fd1355046 - 892d8144-5af7-4433-a93d-2c0fd1355046 - - - 9.1305946508099289 - - MI_Restricted_Substances - c19a6c59-b937-499d-ac22-fe742ae42287 - - As rolled - Carbon steel, AISI 1117, as rolled - 5edc8f84-3ef2-456f-8007-b3db426f53c6 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - 68a418f0-f161-4882-9578-a7e1abef180a - Mass - 100 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - 38b2029f-3112-4b68-a716-d1fe6554d580 - MassRemoved - 0.8057812232551077 - - - - - 45.434702674595037 - - MI_Restricted_Substances - 6e5c3f76-3954-45fb-bd02-a4b4203f29ee - - Normalized - Low alloy steel, AISI 3140, normalized - a59c9c63-bbc8-4b08-874c-432f04b3f67a - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 27435063-ed4f-4b17-9d26-35642427bfdb - Mass - 100 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 96848ba2-a5ef-4328-afe2-6f8989a9c358 - Mass - 100 - - - - - 45.434702674595037 - - MI_Restricted_Substances - 5e96987a-3cc6-4330-bccc-e8d163c47831 - - Normalized - Low alloy steel, AISI 9310, normalized - 18fd487b-24b7-40be-bb09-bf7e916c2729 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - 18cb0958-5b95-4080-992c-80f3553253d3 - Mass - 100 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - 774c39fc-977e-4097-81a8-c5c5cc995da4 - Mass - 100 - - - - - - - 6 - 9.89473164542333 - fef19823 - part_fef19823-f258-40d3-b7d7-7d59f9d377cf - fef19823-f258-40d3-b7d7-7d59f9d377cf - - - 100 - - MI_Restricted_Substances - 74df2f0b-340a-4267-a759-197069aea298 - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 8740, oil quenched & tempered at 205°C - 044eedee-721e-4717-9291-b816ab286628 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 1751808a-1424-41e4-b362-35afdc7c2003 - Mass - 100 - - - - - - - - - - - Factory to port - - MI_Restricted_Substances - c29ab353-2bd5-4964-b577-a0e4cfb4d284 - - 7777000000 - - - Port to center - - MI_Restricted_Substances - c29ab353-2bd5-4964-b577-a0e4cfb4d284 - - 9999 - - + + + + 1.0 + 69.51478876 + 2edd8862 + part_2edd8862-ace1-4911-87c8-70c3c78b52d4 + 2edd8862-ace1-4911-87c8-70c3c78b52d4 + + + 9.0 + 99.97526681 + 767e11c2 + part_767e11c2-8ed5-4348-b3a2-3595f3a20fae + 767e11c2-8ed5-4348-b3a2-3595f3a20fae + + + 1.0 + 54.00371134 + a0f7f357 + part_a0f7f357-2e54-4f03-9187-b15cc3836f14 + a0f7f357-2e54-4f03-9187-b15cc3836f14 + + + 8.0 + 5.18495436 + 16b848a3 + part_16b848a3-e1f1-4b92-9532-ba54b8ac2457 + 16b848a3-e1f1-4b92-9532-ba54b8ac2457 + + + 20.92056973 + + MI_Restricted_Substances + 71a3cd24-5128-46e5-8ef8-9ca8b5ed9892 + + 50% glass and mineral filled + PA46 (50% glass and mineral filled) + 064e366e-d6a5-46c9-879f-c9a410ede6dc + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 10263c71-b6d0-4cbf-b766-87587f080397 + MassRemoved + 10.93788892 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + ffb05405-d056-41b4-a383-b9cce86f751e + Mass + 100.0 + + + + + 9.88492878 + + MI_Restricted_Substances + 1a9ca626-1709-4d7b-954c-65aa69bf6536 + + YS300, cold rolled + High strength low alloy steel, YS300, cold rolled + d0024420-607f-4df3-bc95-a54d8d229458 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + e2cddf27-4ea2-463e-b282-13eaeca17fbb + Mass + 100.0 + + + + + 9.88492878 + + MI_Restricted_Substances + dce2dc34-54db-4d0a-bab0-85d4e6e08d8e + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 6150, oil quenched & tempered at 650°C + 0765cf01-c96b-45ed-9122-69a5a248d1c2 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + e97413f5-f82c-4427-ba8a-b8b5e88b9ff4 + MassRemoved + 44.45124903 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 9b96d8f5-da0d-4177-9266-1eb3a6d7e3f7 + Mass + 100.0 + + + + + 9.88492878 + + MI_Restricted_Substances + 2b606408-37c3-4801-a307-dda7384ff7cc + + Glass/phenolic honeycomb, 0°/90° fabric (0.072) + Glass/phenolic honeycomb, 0°/90° fabric (0.072), W Direction + ff90d60e-13d4-4c5a-919f-ab1031be0717 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + d78d10a0-f89a-4089-84e9-d64e97e93e5c + Mass + 100.0 + + + + + 9.88492878 + + MI_Restricted_Substances + e721d8b7-256a-4b7b-af09-6b40d8309979 + + water quenched & tempered at 425°C + Carbon steel, AISI 1040, water quenched & tempered at 425°C + 8d73a9ca-bb77-43e4-8fa4-8946507c3096 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + a341e1db-07ff-416c-a5c6-d24c5a231984 + Mass + 100.0 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + 9c61bce8-ca3e-4abf-9c83-a3f216749256 + Mass + 100.0 + + + + + 9.88492878 + + MI_Restricted_Substances + 5303364c-b06b-40d9-bca9-e0e2cd1d682c + + Normalized + Low alloy steel, AISI 8740, normalized + 6cf0a04f-e4ae-4fca-8562-dc1371963383 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 105fe4b9-ad2a-4d32-ab6f-bfa023a68b63 + Mass + 100.0 + + + + + 9.88492878 + + MI_Restricted_Substances + 817b973c-3e12-4b5f-96b3-89b05d14d76c + + ASTM A500 Grade C + Structural steel, ASTM A500 Grade C + f7778c27-d8c0-4a32-b08f-454c5183182a + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 6933fd5a-02a4-4af0-a422-d49aff160f77 + Mass + 100.0 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + c08d5b0f-ccac-498b-b52f-396787c0a6c5 + Mass + 100.0 + + + + + 9.88492878 + + MI_Restricted_Substances + 3f3508d4-1ff6-40ea-a45f-04de1cb740f7 + + 300M (low carbon), quenched & tempered + Low alloy steel, 300M (low carbon), quenched & tempered + a749da65-2c9c-422c-90b7-22ee8412334e + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 04911b2a-f9e3-494a-bbe0-60c75b8b2d24 + Mass + 100.0 + + + + + 9.88492878 + + MI_Restricted_Substances + a403e867-5052-44f9-b24b-5b11a3860cf4 + + Glass/polyimide honeycomb, ±45° fabric (0.051) + Glass/polyimide honeycomb, ±45° fabric (0.051), W Direction + 91962407-dccf-4f25-a1cd-f0ae3a85a62e + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 54c1f697-44bb-4b4a-a2b2-02864c24a2fe + Mass + 100.0 + + + + + + + 3.0 + 96.1091224 + 72362b93 + part_72362b93-bb7a-40f6-a225-4c78654ccc16 + 72362b93-bb7a-40f6-a225-4c78654ccc16 + + + 74.63770679 + + MI_Restricted_Substances + 93e14fb3-4376-4df5-9d31-299bee56ea49 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 4340, oil quenched & tempered at 540°C + 3cc47072-1ea4-4d94-94a0-59687596368f + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 2008c572-5a8f-42f2-8aa1-7fe8164b9264 + Area + 75.70770502 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + b5c8e19d-9b00-4a92-a45a-2a64e07f2ebc + Mass + 100.0 + + + + + 6.3405733 + + MI_Restricted_Substances + b872537b-c0a0-4c3e-8388-e5544183cdd3 + + water quenched & tempered at 425°C + Carbon steel, AISI 1030, water quenched & tempered at 425°C + 81a776a8-6893-44b3-9a12-42398e147b6e + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 0588f4d7-f328-45b6-bd55-912e0f26452c + Length + 74.04176046 + + + + + 6.3405733 + + MI_Restricted_Substances + a6b1ab49-1d3b-4551-9345-3bf24da33ec1 + + As rolled + Carbon steel, AISI 1144, as rolled + 0559b5da-6817-4676-8058-8375c6a6be10 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + a2b0bdd8-dd12-4b7f-b778-4e0649297d12 + Mass + 100.0 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 16b6404c-7eec-40ae-b4f9-3d3c9cd6f5e9 + Mass + 100.0 + + + + + 6.3405733 + + MI_Restricted_Substances + 09469002-6519-4b02-bdd9-f385d0a44d2f + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 9260, oil quenched & tempered at 540°C + 77d49906-e661-4a85-8156-d8f3d73a92dc + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 46f5cd87-7e01-45cf-b6f5-860967d7589d + MassRemoved + 16.56462676 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 1f8d1845-5df3-44bf-9c93-6537b540b155 + Mass + 100.0 + + + + + 6.3405733 + + MI_Restricted_Substances + e62ec0fe-66ca-4b17-88d1-609c5568e318 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 4340, oil quenched & tempered at 650°C + 9d559c57-5793-4793-bd28-ed84fb779ea0 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 1bd74c29-bc15-4b36-a47d-8fdb63b109e2 + Mass + 100.0 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 317bf483-7b41-4304-9448-09649ebf64f2 + Mass + 100.0 + + + + + + + 5.0 + 81.58610923 + 08d30467 + part_08d30467-d47a-48ad-8369-2ae0fd4a610a + 08d30467-d47a-48ad-8369-2ae0fd4a610a + + + 7.0 + 58.34084728 + 5afcdec3 + part_5afcdec3-66ab-4879-be37-65cdd51b3869 + 5afcdec3-66ab-4879-be37-65cdd51b3869 + + + 6.0 + 77.60876108 + 5df40cce + part_5df40cce-ebd8-405e-87b9-bc32fb7bcb9f + 5df40cce-ebd8-405e-87b9-bc32fb7bcb9f + + + 86.33457021 + + MI_Restricted_Substances + 2017a3b5-88e7-473f-b7c9-1ab8afe722fe + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 5160, oil quenched & tempered at 540°C + 3b23bf68-8640-40ed-a435-afdff06555ec + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + 37108ceb-3daa-40b1-a5b6-569d95423517 + Mass + 100.0 + + + + + 1.95220425 + + MI_Restricted_Substances + 33160988-8422-40e2-93d1-e3e7467eafe9 + + Normalized + Carbon steel, AISI 1030, normalized + f28cde90-f4f6-447e-a172-155b0de30e10 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 91fa5230-7620-4fa4-baab-2f5d1c016d8f + Mass + 100.0 + + + + + 1.95220425 + + MI_Restricted_Substances + 5ed89a0b-5f7a-43b7-b9cb-3db4035f942f + + Glass/phenolic honeycomb, 0°/90° fabric (0.072) + Glass/phenolic honeycomb, 0°/90° fabric (0.072), L Direction + 4bde2a84-4758-4c2b-b06d-2c0688011310 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 0fa2b71b-f530-4884-a8de-b25713b85054 + MassRemoved + 64.46132248 + + + + + 1.95220425 + + MI_Restricted_Substances + a01be0be-96e7-4123-b061-dfdbba1f1748 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 4037, oil quenched & tempered at 315°C + 1f200c4e-66c9-41a9-94cc-67a0fac88829 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 8f8d0342-3ef2-4965-8f76-a154e1a45705 + Mass + 100.0 + + + + + 1.95220425 + + MI_Restricted_Substances + 496cca2a-43ad-4943-9e9b-23076f2e3a5c + + Glass/polyimide honeycomb, ±45° fabric (0.128) + Glass/polyimide honeycomb, ±45° fabric (0.128), L Direction + a386b2fd-bc60-4cdf-a33f-e69c5a75539e + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + e69b87a3-49c0-42e5-81e8-73bc9a5ba208 + Mass + 100.0 + + + + + 1.95220425 + + MI_Restricted_Substances + 3b122722-399e-43ad-bc30-86f556db96e7 + + Stainless steel, terne coated + Coated steel, stainless steel, terne coated + 07d04467-4714-4163-834b-1a149cde2fef + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 5704161a-a022-4303-b808-ab16fba90bdb + Mass + 100.0 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + b2cda790-0c8a-4dd2-ab76-f0d2540c8cfa + Mass + 72.57710787 + + + + + 1.95220425 + + MI_Restricted_Substances + 2017a3b5-88e7-473f-b7c9-1ab8afe722fe + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 5160, oil quenched & tempered at 540°C + c3a81cf6-3677-4edf-8d88-2da112b80d69 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 99b9a1db-9782-4890-a5b9-bad13fbf8714 + Mass + 100.0 + + + + + 1.95220425 + + MI_Restricted_Substances + b01d2f15-7182-442c-ac97-e7c259e8169d + + Annealed + Low alloy steel, AISI 9310, annealed + bbfa5ab2-b25b-4911-a0be-e0d8e01f1e8e + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + def28e40-fc5e-4ecb-830b-b79d3207a90a + Mass + 100.0 + + + + + + + 2.0 + 74.08976288 + b9eb4836 + part_b9eb4836-f811-41e9-ad40-7f8fcc7c64e1 + b9eb4836-f811-41e9-ad40-7f8fcc7c64e1 + + + 86.28546417 + + MI_Restricted_Substances + 9cae15c6-b5b6-4ab9-9008-d962bee0e662 + + Glass/phenolic honeycomb, 0°/90° fabric (0.128) + Glass/phenolic honeycomb, 0°/90° fabric (0.128), L Direction + 966a9201-5491-4807-9abf-b884b78c31c9 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 96d371e7-648d-4ded-9ba8-ab2ffd4b9f9d + Area + 66.47920388 + + + + + 4.57151194 + + MI_Restricted_Substances + dc5a66d7-3ba8-4879-b455-ac29d54cbf17 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 5150, oil quenched & tempered at 315°C + 20436c9f-d0c6-47b0-987f-cd98e65dfb36 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 2d1baf08-df85-4e41-b6e6-11becfd02d68 + Mass + 91.22655349 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 19cb429e-34eb-4a9a-b08a-b4dd94736fab + Mass + 100.0 + + + + + 4.57151194 + + MI_Restricted_Substances + 88943d73-219a-4090-93e9-c0454a8b5ad5 + + FR-4.0 (Df < 0.015 at 10GHz), Epoxy/Glass fiber, PCB laminate + FR-4.0 (Df < 0.015 at 10GHz), Epoxy/Glass fiber, PCB laminate + d8fe04e2-9546-49c9-a7a7-363a17eb7c9f + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 45ca39ef-f00c-4e3c-8624-eb50a185f9f4 + Mass + 100.0 + + + + + 4.57151194 + + MI_Restricted_Substances + b85ebb9e-b198-4497-ae8e-b9b61ecde102 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 5160, oil quenched & tempered at 315°C + 73bd3313-2941-4b17-a1ea-4f3f91438e52 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 893e1329-2a02-4d98-bc21-9b74ce683a30 + Length + 66.15440159 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 9fa58166-cf72-41d9-9a2c-caa998091110 + MassRemoved + 35.58720007 + + + + + + + 3.0 + 29.26936602 + 862f58e7 + part_862f58e7-67aa-42a2-87c3-516640f3d8f3 + 862f58e7-67aa-42a2-87c3-516640f3d8f3 + + + 31.68638699 + + MI_Restricted_Substances + 034898f1-834f-4079-a0d3-65fffc17cb4d + + Silica (quartz fused) + Silica (quartz fused) + a3e3a1db-cb4e-438b-940e-faa5eedb5dda + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 8af392e4-7d44-4f7d-8842-b4bbafcf94d5 + MassRemoved + 49.64227194 + + + + + 11.38560216 + + MI_Restricted_Substances + 2befe0b1-24d6-401d-9a98-97e6fe8668bb + + Annealed + Low alloy steel, AISI 9255, annealed + 5fb97d30-7560-4200-891e-c5ec639bc300 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 2963e8a2-6456-4d71-bb03-9bca208dcdd9 + Mass + 14.28825152 + + + + + 11.38560216 + + MI_Restricted_Substances + 6d658600-d198-46ed-bcca-cd0e3e2f5f4d + + Oil quenched & tempered at 425°C + Carbon steel, AISI 1060, oil quenched & tempered at 425°C + fdd7f75c-224f-49fd-ae6c-99c47d60353a + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + afc22575-39ad-439f-bd40-0e3f938417fe + Area + 93.19756994 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + 4b0ec717-4d41-4cc1-a951-c1a8c8f7c068 + Area + 63.14605249 + + + + + 11.38560216 + + MI_Restricted_Substances + 6e6b280b-c24a-40b9-a181-4586c4b341c2 + + SAE 4335M, cast, quenched & tempered + Low alloy steel, SAE 4335M, cast, quenched & tempered + af2d314f-1fb4-41c4-aea0-7d2cf06fc241 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 77617534-de47-403a-80e1-676aff0839f6 + Mass + 100.0 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + b56d23f0-f522-47e7-83af-7d376b81216a + Mass + 100.0 + + + + + 11.38560216 + + MI_Restricted_Substances + 2096ca77-9981-4fd5-9bc6-afe56b3bbbd4 + + Glass/phenolic honeycomb, 0°/90° fabric (0.096) + Glass/phenolic honeycomb, 0°/90° fabric (0.096), W Direction + 1077ef3b-714e-45d4-a5d7-85269fab040b + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 86ca949d-a134-4ef1-abd8-e2704ae62c38 + Mass + 100.0 + + + + + 11.38560216 + + MI_Restricted_Substances + af0c74e2-f44f-4698-a194-c3f6496a73fa + + Quenched & tempered + Low alloy steel, AISI 4135, air melted, quenched & tempered + 135bdc9a-42cb-4cbb-8904-6663153b3a1d + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + a7e5e15b-2672-4d54-b6a8-e37d01edd6b8 + Length + 92.91450036 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 0934bebd-6784-4368-a792-3d6cf632bd1e + MassRemoved + 96.55168596 + + + + + 11.38560216 + + MI_Restricted_Substances + 90514ab4-75b3-48a9-9a07-98eb8f83ef81 + + As rolled + Carbon steel, AISI 1015, as rolled + fef0eedb-3e60-4db6-b002-21aa58a8daf7 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 87322eda-6234-471b-8bb6-ad0b0223439b + Mass + 100.0 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + e56d3e3a-cbb1-4fe9-8bc8-db7afc99adc6 + Mass + 100.0 + + + + + + + 5.0 + 62.36669503 + fd8d642b + part_fd8d642b-af21-46e6-afc1-f2f8b0e21b43 + fd8d642b-af21-46e6-afc1-f2f8b0e21b43 + + + 45.50164358 + + MI_Restricted_Substances + b3d89bcf-5e9a-4fe8-a953-98ceb384b8a3 + + water quenched & tempered at 650°C + Carbon steel, AISI 1030, water quenched & tempered at 650°C + 9b8384ef-1579-4b88-b189-215e3d38d262 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 8e326262-e605-41e3-87f6-5a0f717e2347 + Mass + 100.0 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + eb1f17a9-42d9-47d6-a277-6d478a4dd7e2 + Length + 18.67924147 + + + + + 18.1661188 + + MI_Restricted_Substances + 55c8dd10-b62f-4136-b1c8-6260fcec05cc + + Annealed + Carbon steel, AISI 1040, annealed + 411ce775-02cf-481d-b199-97032ed29d4f + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 6f9878f7-4b1e-483e-a855-e06ac6b01914 + Area + 70.61582476 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 14c8e637-d272-4179-bcba-5b835682e9d7 + Mass + 100.0 + + + + + 18.1661188 + + MI_Restricted_Substances + 924b3986-e315-4b28-9daa-56a075aa18e9 + + Annealed + Low alloy steel, AISI 52100, annealed + 431c8143-a497-47c1-85e0-ffffa2053e8b + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + f447c5c2-b1d4-49a9-b6b8-09ad043dfc9e + Area + 37.98598537 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 7e7ae2be-fcf4-4959-b548-d0086e941ca1 + Mass + 100.0 + + + + + 18.1661188 + + MI_Restricted_Substances + 7bb749f5-f155-4528-bd9b-59c2c0796b40 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 4140, oil quenched & tempered at 650°C + f5eb794e-27b9-4ddc-b870-db994c597db4 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 60aaea04-97ed-404a-8fbc-38943d3d5474 + Length + 54.64898243 + + + + + + + 7.0 + 2.43501281 + 7975cf31 + part_7975cf31-1767-4df5-9f29-aa34a15f7cce + 7975cf31-1767-4df5-9f29-aa34a15f7cce + + + 55.30402108 + + MI_Restricted_Substances + 190cf17e-dbc1-40c7-a3d1-cc776977cb47 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 50B46, oil quenched & tempered at 650°C + ba83beb2-043a-40b2-8d3f-d0ae0fec847a + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 9b19dea1-9ffb-40e5-bba1-982ad7a4bc39 + MassRemoved + 63.36875798 + + + + + 11.17399472 + + MI_Restricted_Substances + daa4f620-4e8c-4670-b517-9cbca2154c44 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 5130, oil quenched & tempered at 315°C + be7599d8-421d-4054-b5dc-fe7be813aca1 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + c4c67b2f-7b8f-4989-bcd4-ccc2166fd211 + Area + 40.54536532 + + + + + 11.17399472 + + MI_Restricted_Substances + 8ef69f01-44dd-4b96-ac5c-731bff7ceb6c + + Glass ceramic - 9606 + Glass ceramic - 9606 + 966349fa-ddb8-4eea-bae6-e85f731ce179 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + c20a9763-e8a7-46a7-ba02-d7e92f319231 + Mass + 100.0 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 0ced7fbc-5ef4-409f-822b-08ce98d0dc83 + MassRemoved + 66.84070144 + + + + + 11.17399472 + + MI_Restricted_Substances + 6ee51b17-7fe0-46fd-8e32-a71585a34000 + + 40-45% glass and mineral + PBT (40-45% glass and mineral) + eef55f76-06b8-4345-baaa-b63d6726e571 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + a7848db7-c57e-4c94-9aa6-3a2916b19738 + Mass + 100.0 + + + + + 11.17399472 + + MI_Restricted_Substances + 0a203f13-4112-4c7b-8d17-bd9ce600f647 + + YS350, cold rolled + Dual phase steel, YS350, cold rolled + f0898add-5dbb-4f37-b205-3d06ebbc5d0b + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 60a689e4-7b96-4f29-be3e-4a47c344b98b + Mass + 100.0 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 5db7413f-3be8-49db-a34e-5a3270934554 + Mass + 24.11155524 + + + + + + + 2.0 + 0.11838702 + 5bcd7ed0 + part_5bcd7ed0-2e39-42ff-a746-c455faca941d + 5bcd7ed0-2e39-42ff-a746-c455faca941d + + + 31.80981503 + + MI_Restricted_Substances + 9a48479a-292f-4bdd-aab5-0ad0835d7480 + + Oil quenched & tempered at 205°C + Carbon steel, AISI 1095, oil quenched & tempered at 205°C + 9a15c711-a161-42a2-a9b1-b26fe16575a0 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 8a3a5758-48b7-40d6-818f-703ec1cd289f + MassRemoved + 6.97987405 + + + + + 9.74145499 + + MI_Restricted_Substances + 0a203f13-4112-4c7b-8d17-bd9ce600f647 + + YS350, cold rolled + Dual phase steel, YS350, cold rolled + b35d0c2b-2dc1-44f8-8a66-8dc93bc65bac + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + 900e5516-afde-47e5-a410-07ea20aab158 + Mass + 100.0 + + + + + 9.74145499 + + MI_Restricted_Substances + 2ab1643a-3aff-46c7-a249-21c58b33f214 + + Annealed + Carbon steel, AISI 1144, annealed + 6858c273-5411-40f7-99d5-1fa003402096 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 5611fa6a-e4f6-4072-81b1-78c3440a1324 + Mass + 100.0 + + + + + 9.74145499 + + MI_Restricted_Substances + 29d2e9de-9de0-4ea9-9bff-3a1cee0c26e3 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 4037, oil quenched & tempered at 205°C + 911ed045-63a1-4f2e-a700-554eadbcc264 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 00fe288c-fad6-4303-a1e5-4f3d065f2d2b + Length + 35.87249803 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + a563c236-fd40-472d-a6d3-81debb12cb46 + Mass + 100.0 + + + + + 9.74145499 + + MI_Restricted_Substances + 80d691ec-471b-4ef6-9060-a0e5cc0c1a91 + + Annealed + Carbon steel, AISI 1340, annealed + 9250893c-69f0-40bb-8668-efba7d2bfe6f + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + b10e57a9-906d-45e7-ad95-31cb30e993a3 + Length + 48.3716971 + + + + + 9.74145499 + + MI_Restricted_Substances + 3e7feb56-09b4-498c-9966-c13b33dedccd + + water quenched & tempered at 205°C + Carbon steel, AISI 1137, water quenched & tempered at 205°C + 064ed8a8-2f06-4180-896d-8d850d1ca883 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + cadc9afd-fe49-4df7-8098-a4ddc0f4be4f + Mass + 100.0 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + f79dd6d1-4b2c-4708-9b6e-7dd40097d339 + MassRemoved + 42.44372446 + + + + + 9.74145499 + + MI_Restricted_Substances + 9e11a8f7-0b35-4610-aee9-557a236bbe5c + + Soda borosilicate + Soda borosilicate + 40d9f571-bb28-47ec-a850-08b3ecb865ef + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 9ab5e351-8a29-4780-9b16-8c27d5c6fa07 + Mass + 100.0 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + 345503aa-c7f0-4221-9ce8-0eafddd4e4c2 + Length + 97.5973383 + + + + + 9.74145499 + + MI_Restricted_Substances + 9d224642-fb07-41ce-8191-c9b152122364 + + Quenched & tempered + Intermediate alloy, Fe-9Ni-4Co-0.30C steel, quenched & tempered + cb3739a0-3d30-46d6-92f5-084983867378 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 50e8ccbc-6981-4512-a86c-56ac38788a3d + Mass + 100.0 + + + + + + + 9.0 + 49.67689893 + ebb8ffdf + part_ebb8ffdf-686d-41d7-9d9e-e9005283b434 + ebb8ffdf-686d-41d7-9d9e-e9005283b434 + + + 8.75198645 + + MI_Restricted_Substances + 45a257d5-da48-4520-9174-ffe7bbadcd1c + + Glass/phenolic honeycomb, ±45° fabric (0.088) + Glass/phenolic honeycomb, ±45° fabric (0.088), L Direction + f01c60bb-f680-45c1-85cd-acbd6e7c0e95 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + ab126da3-5938-4d75-bd59-964cdca979c8 + Mass + 100.0 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 4cea0757-a34b-4b3c-aa34-5b0686e2814b + Mass + 100.0 + + + + + 91.24801354 + + MI_Restricted_Substances + 827c892c-b90a-4b05-a8c4-ef1c047d8859 + + Glass/polyimide honeycomb, ±45° fabric (0.112) + Glass/polyimide honeycomb, ±45° fabric (0.112), W Direction + 70910778-cb6b-4d23-baba-c89dbff3ba59 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 5aac6bef-0c6b-4d84-bb59-584f21b02395 + Mass + 44.03669207 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 79f9f625-1e57-4d90-b886-ccc120129152 + Mass + 100.0 + + + + + + + 9.0 + 32.16575339 + 1d1de73b + part_1d1de73b-1743-4079-9578-1cf97e7becd8 + 1d1de73b-1743-4079-9578-1cf97e7becd8 + + + 79.60662929 + + MI_Restricted_Substances + b228f0f2-a947-4ee3-bdb9-00fdb153caff + + Glass ceramic (FC) + Glass ceramic (FC) + 8abd286f-4a84-4f43-b1be-46822033789e + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + 5dcdd898-398d-489a-b0a1-c783342ddb2f + Mass + 100.0 + + + + + 2.91333867 + + MI_Restricted_Substances + f8d1136f-3c1a-41e2-8b78-cf5f3965cba2 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 6150, oil quenched & tempered at 205°C + 3c55eb1b-5950-40e0-bb06-5647255227dc + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 0a89705d-324f-471c-9755-d476521034ab + Mass + 100.0 + + + + + 2.91333867 + + MI_Restricted_Substances + 827c892c-b90a-4b05-a8c4-ef1c047d8859 + + Glass/polyimide honeycomb, ±45° fabric (0.112) + Glass/polyimide honeycomb, ±45° fabric (0.112), W Direction + 6d01f042-4095-4b85-8eaf-8c8dbfcf8153 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 283d3bd7-bf80-470a-bf3a-cbcff32f7d28 + Area + 43.61133312 + + + + + 2.91333867 + + MI_Restricted_Substances + b879bb01-8648-4b5b-8159-d591cb251ca8 + + Normalized + Carbon steel, AISI 1080, normalized + 1d048369-92f6-44e8-84f2-30278212856b + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + 731a4ba2-d31e-4db1-8793-9324b3e237b7 + Length + 15.02251979 + + + + + 2.91333867 + + MI_Restricted_Substances + ccc92e6a-14f4-4ec6-9c3a-35ef3d6c9d8e + + Annealed + Carbon steel, AISI 1025, annealed + 2b009d89-e163-4adf-9bf9-8afb678c2a48 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + 62c79bd0-ae11-422c-90f1-fa594571e903 + Mass + 100.0 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + a2fcb803-add8-49a0-900b-3703f84244d9 + Length + 53.29273606 + + + + + 2.91333867 + + MI_Restricted_Substances + 034898f1-834f-4079-a0d3-65fffc17cb4d + + Silica (quartz fused) + Silica (quartz fused) + 835299c6-a6b5-43a8-aa88-f284052171cc + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 855bee01-9184-47d2-8581-76e01886ea0b + Mass + 100.0 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 12eabb99-224c-43ea-a98d-bb596ecee29f + Length + 16.26422755 + + + + + 2.91333867 + + MI_Restricted_Substances + 4a35d8d1-5fb1-47e9-a669-37204ae732dc + + ASTM A500 Grade A + Structural steel, ASTM A500 Grade A + 638823b6-f9d3-46bb-8a05-0db107889b22 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 0c0f61c2-70c2-4f98-ac5a-7f9df5ecc483 + Mass + 100.0 + + + + + 2.91333867 + + MI_Restricted_Substances + 55a81649-3016-4213-a621-af408fcdc777 + + Annealed + Carbon steel, AISI 1080, annealed + 1a6d6276-4d4a-427a-a4b4-6f2e620db768 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 97cbf528-7960-4df3-9374-18f69b658e42 + Mass + 100.0 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 1bc461bc-ed33-486d-a70d-de4a056b9240 + Length + 80.37181858 + + + + + + + 2.0 + 36.11134911 + 8c7e1228 + part_8c7e1228-bf08-4749-97f1-a110415528b4 + 8c7e1228-bf08-4749-97f1-a110415528b4 + + + 84.02418805 + + MI_Restricted_Substances + 92565d61-24fc-4880-9be5-0faeb9a8a3e8 + + Titanium silicate + Titanium silicate + e7ec98ac-e273-46ab-9474-ea04a3890a5e + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 9762f77c-d28f-4826-9540-79879aa0b386 + Mass + 100.0 + + + + + 3.19516238 + + MI_Restricted_Substances + 109eaa8c-e01c-4663-8802-f7dd1f10d61b + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 8630, oil quenched & tempered at 205°C + 9f70bd1c-4fd9-4e12-b6cd-b24ec8e36b3a + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + b3367ef8-54f4-4af1-ae6f-0471c59b1e3f + Mass + 100.0 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 1892cc1f-2ea4-4542-84fa-734a1738d47d + Mass + 32.10523451 + + + + + 3.19516238 + + MI_Restricted_Substances + 9cde0ddf-b39b-4eba-9ca0-333508cee034 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 86B45, oil quenched & tempered at 540°C + e9a533e7-8687-4edb-8b8c-b598338050b2 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 69388365-f692-4ca3-be8f-c29f6a11512d + Mass + 100.0 + + + + + 3.19516238 + + MI_Restricted_Substances + ae5812e1-18fd-4a4d-aaa2-a04ca5e84b7a + + YS400, hot rolled + Dual phase steel, YS400, hot rolled + 3faedb49-7a6d-4c00-9c9e-39a7ef664e21 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + f210d48f-623d-4898-aa23-ebacd6a343c0 + Mass + 100.0 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + d6908901-bc8f-4702-ba84-a02927d44d92 + Length + 75.51994494 + + + + + 3.19516238 + + MI_Restricted_Substances + e8c6d73a-bd7a-4ef3-ae11-48e45d4a5515 + + Glass, E grade (0.4-12 micron monofilament, f) + Glass, E grade (0.4-12 micron monofilament, f) + ac819a8f-9291-46bd-9a24-39b6ae982568 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 31211b96-96bc-4c45-a8a1-5b02eb5b9885 + Mass + 100.0 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + bbc5fe2a-94ea-40ef-86a7-942a40cc05b2 + MassRemoved + 34.48724203 + + + + + 3.19516238 + + MI_Restricted_Substances + 1d24ecfa-ec45-4a74-9ad7-ceac6eef8ad3 + + Annealed + Low alloy steel, AISI 41L40, annealed + 8ea00983-914a-498b-94fa-1c042eac5ea4 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 2b02ebe7-5e6e-491c-a82b-5a11d3505560 + Mass + 100.0 + + + + + + + 9.0 + 9.44912606 + bfd7768c + part_bfd7768c-8123-46d9-ac11-f0c6afcabb52 + bfd7768c-8123-46d9-ac11-f0c6afcabb52 + + + 65.3019523 + + MI_Restricted_Substances + 01f21cc5-bbad-4a5d-875d-c626eabc11c8 + + water quenched & tempered at 425°C + Carbon steel, AISI 1137, water quenched & tempered at 425°C + c320bf61-1e2b-4df3-b206-058e077ab81e + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 20f242e5-4016-4a57-adc9-37f1bf901366 + Mass + 100.0 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + d34384d5-e48e-43bf-8930-94889569b199 + Length + 95.75490853 + + + + + 11.56601589 + + MI_Restricted_Substances + 88943d73-219a-4090-93e9-c0454a8b5ad5 + + FR-4.0 (Df < 0.015 at 10GHz), Epoxy/Glass fiber, PCB laminate + FR-4.0 (Df < 0.015 at 10GHz), Epoxy/Glass fiber, PCB laminate + bf27755b-7cec-4ae3-b621-6d307b6bbf64 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 68a06571-548b-4a4a-a436-d8dd70d4df06 + Mass + 100.0 + + + + + 11.56601589 + + MI_Restricted_Substances + ab895171-8c16-4056-9062-78f7516be1b0 + + Borosilicate - 7050 + Borosilicate - 7050 + a08c1674-4940-40a7-94fc-c3d9d183a7f0 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 7d76a166-c302-4db8-abb1-f8be6336b506 + Area + 75.84649127 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 4a1655e1-c1f6-4b1a-96f7-58405a76625b + MassRemoved + 92.34172706 + + + + + 11.56601589 + + MI_Restricted_Substances + a1a73282-61fc-4ecd-9e82-a15e366f99bc + + Low-e glass + Low-e glass + c1bd4e16-ddfd-4e33-9ea0-9f71d3f3fac8 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 27d68193-6372-43ef-85c5-2a05dea773bf + Mass + 100.0 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 9185ca4f-d644-478a-b1d3-accea6fd78f8 + Mass + 100.0 + + + + + + + 2.0 + 96.54120388 + d4ad1b0c + part_d4ad1b0c-b83c-4a72-8d37-353582787606 + d4ad1b0c-b83c-4a72-8d37-353582787606 + + + 86.57915442 + + MI_Restricted_Substances + a6078356-e79c-4ddd-86ef-a3f01680dd35 + + As rolled + Carbon steel, AISI 1020, as rolled + 8f185b5c-7663-4004-babc-399eafd054fc + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + a1312113-8da3-4855-9e62-082d236a73e8 + Mass + 3.27874776 + + + + + 6.71042278 + + MI_Restricted_Substances + 52906b79-1e89-49de-b2cf-c09d53f34f92 + + Borosilicate - N16B + Borosilicate - N16B + e9f58e88-6551-4b55-826e-7a6719f7d8c1 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 3b3e32a9-86ca-4102-910a-96fb55997319 + Mass + 100.0 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + b15c2027-79ed-47aa-b2e3-c4c7c63d4fcb + Mass + 100.0 + + + + + 6.71042278 + + MI_Restricted_Substances + 00268f25-08c7-4add-91f3-3cc4ed1d7e34 + + Oil quenched & tempered at 425°C + Carbon steel, AISI 1141, oil quenched & tempered at 425°C + 9309dcdb-9e9a-476b-af68-bf11e4429595 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + a514f8bf-7700-46fa-b19a-e2847e4bbe19 + Mass + 100.0 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + be8949b8-400f-46e3-ad5b-c128b25d09ae + Mass + 100.0 + + + + + + + 5.0 + 46.46198239 + bec3a206 + part_bec3a206-acc2-47e0-9d06-bef2d678f4b1 + bec3a206-acc2-47e0-9d06-bef2d678f4b1 + + + 66.97789922 + + MI_Restricted_Substances + 8dbb57f2-b225-4f57-9a5a-c25a03292d6e + + Annealed + Low alloy steel, AISI 6150, annealed + 3377d345-91c4-4b3c-aaa0-d63d7218b1ac + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 3688e835-1b68-4603-b5b9-a819a57502a7 + Mass + 100.0 + + + + + 5.50368346 + + MI_Restricted_Substances + a583e694-02c0-408e-9af4-6fbee856b58f + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 9260, oil quenched & tempered at 650°C + 1abd8f9a-0b92-427e-9717-6c09ce13dc00 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 2c5d44c6-e3bd-4ec6-ad22-b11d3649ed17 + Mass + 100.0 + + + + + 5.50368346 + + MI_Restricted_Substances + 1d55049a-3c25-4c8c-9125-70fd014c2a1e + + Normalized + Low alloy steel, AISI 8735, normalized + 66c4fad4-af15-4672-9943-9425e4c0e0a8 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 826a9d5a-36ba-4609-b926-7000913958f2 + Mass + 100.0 + + + + + 5.50368346 + + MI_Restricted_Substances + aa4540cb-3277-459f-a69a-ca324ddd0125 + + Glass ceramic (N0) + Glass ceramic (N0) + 06b90bd7-bfac-4f73-824f-f416b61e79b4 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 10cc87fa-8688-4a93-be50-8cb08c6545cf + Mass + 30.99538801 + + + + + 5.50368346 + + MI_Restricted_Substances + 6f7c4754-84f7-46f0-873a-ec2e9f29e345 + + Glass/phenolic honeycomb, ±45° fabric (0.088) + Glass/phenolic honeycomb, ±45° fabric (0.088), W Direction + 5cdefe18-ca24-4c8e-87dd-e422cbafad17 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 3d241091-1a8c-472a-988b-46aff0cc1c3d + Length + 27.58628294 + + + + + 5.50368346 + + MI_Restricted_Substances + ca72e2f5-a1d0-4bb0-b612-ed5bc26a4f70 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 9255, oil quenched & tempered at 205°C + c32929c3-9ade-4355-892f-28ddb0c5e1f8 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + f1960bc6-4caf-450d-bb34-5f45dbb2034c + Length + 15.925735 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 9224038e-b0d7-42bd-9b97-6478c055cc71 + Mass + 100.0 + + + + + 5.50368346 + + MI_Restricted_Substances + 3427457c-2b3d-4a7e-adbc-40fddd4c1f0e + + Normalized + Carbon steel, AISI 1020, normalized + e4212f84-23c9-4e24-86a9-2c480a88575c + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 6ab49720-c919-4711-9306-ebc18eea494b + Mass + 100.0 + + + + + + + 7.0 + 6.36567981 + + MI_Restricted_Substances + 2fcb534e-37c5-4b25-add8-ff02d2541953 + + 19e9d742 + part_19e9d742-08ce-4539-bce0-4d8df1627884 + 19e9d742-08ce-4539-bce0-4d8df1627884 + + + 4.0 + 14.78572646 + 8274b460 + part_8274b460-c082-4717-ab9e-9920ef0ff3d2 + 8274b460-c082-4717-ab9e-9920ef0ff3d2 + + + 29.59185029 + + MI_Restricted_Substances + 8be87fd7-f406-4a50-9150-2a29e4a26bfa + + Aluminoborosilicate - N51a + Aluminoborosilicate - N51a + 38f43e87-1708-47f1-a30c-59a2cbb7cf94 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 4b410e14-b7b7-4433-857e-8db7dea9b5aa + Mass + 100.0 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 4488c58c-5812-4e2c-beca-734bdb61837f + Length + 51.94191208 + + + + + 35.20407485 + + MI_Restricted_Substances + cfb19c31-b156-4a8d-854c-f264975539e1 + + water quenched & tempered at 205°C + Carbon steel, AISI 1095, water quenched & tempered at 205°C + 3e49ad92-4885-477d-8acf-bfbc5c7e2611 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 5ec6e628-d313-42c1-a5cd-138d782e3063 + Mass + 100.0 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 877d894a-0761-45cd-b67a-f0a004becbd1 + Mass + 100.0 + + + + + 35.20407485 + + MI_Restricted_Substances + d50d4fb1-e03a-43e7-b96d-6e8947848f36 + + Borosilicate - 7760 + Borosilicate - 7760 + 18d13a6a-8fff-4cd4-9df8-9fcfd052e5f7 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 5538fe15-9297-4520-9024-6283734a17df + Mass + 100.0 + + + + + + + 8.0 + 3.46279093 + 41fcfe96 + part_41fcfe96-0cb7-459b-990e-0a9cf466b84e + 41fcfe96-0cb7-459b-990e-0a9cf466b84e + + + 46.12358559 + + MI_Restricted_Substances + bbe3f98a-e574-482b-99cc-74e13b224dd3 + + Normalized + Low alloy steel, AISI 5160, normalized + 0d3845c5-34d7-400a-bee3-80981f3a9c22 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 155c8b69-3aec-488c-9e84-81ec2a967947 + Mass + 100.0 + + + + + 7.69663062 + + MI_Restricted_Substances + d42eaa02-9811-4935-b9cd-652adc845e8c + + Oil quenched & tempered at 650°C + Carbon steel, AISI 1050, oil quenched & tempered at 650°C + 4f4d69c6-1bbc-4f09-ab53-60a95498a714 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + 1cc110c5-64f2-4880-b63a-3312b46119e4 + Mass + 100.0 + + + + + 7.69663062 + + MI_Restricted_Substances + 90b2285b-4295-429d-beb8-90d9f5df0101 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 5046, oil quenched & tempered at 315°C + 475c1813-eff4-4d7f-aa34-21a625870575 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 5c3292e1-9cf2-405f-9958-bbbb7740198e + Mass + 100.0 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + b2a90408-ff4a-4255-a4da-7c2f1daa045c + Mass + 100.0 + + + + + 7.69663062 + + MI_Restricted_Substances + 0ff273b3-9539-465b-9d91-21fc52f8e16c + + Lithium aluminosilicate + Lithium aluminosilicate + 46737ede-6178-4dee-a3a4-e68cffa11485 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + cc4b5ba7-e4ba-4408-a75a-4e70b9a2b97c + Mass + 100.0 + + + + + 7.69663062 + + MI_Restricted_Substances + 9b08ec7e-e481-47fa-a36b-849db7ef2432 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 8640, oil quenched & tempered at 425°C + a7ae4f2b-6b9a-4a32-a9a5-55fb9d080317 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + e05cb907-5ab8-4186-b865-5206ef069385 + Area + 96.17254799 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 89f28aa9-fc07-4ac9-8788-58ac8ea3c3bc + Length + 70.02312269 + + + + + 7.69663062 + + MI_Restricted_Substances + 2839a622-af73-4a9f-90fa-0f3498243808 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 4042, oil quenched & tempered at 425°C + aeb72541-06c9-445d-a583-d17e4b217af3 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 2e21bc42-8482-4b45-8cdf-9cc033838ded + Mass + 100.0 + + + + + 7.69663062 + + MI_Restricted_Substances + 7a62318a-eff2-4f36-9925-ee919c5b4369 + + S235J + Structural steel, S235J + 51fa18b8-ed5b-4e70-9a85-926d20aff4d3 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 599dc39e-fbe9-4918-903c-201f8fafd517 + Mass + 100.0 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 444c53a5-922f-42ca-8e27-4250419a6c82 + MassRemoved + 76.33822913 + + + + + 7.69663062 + + MI_Restricted_Substances + 8b442749-964a-49d6-be5c-9a55c81d85f8 + + Annealed + Carbon steel, AISI 1137, annealed + c71f0b62-bad3-4169-b642-97466bac096c + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 5c175ac7-6633-426d-b196-43311b19d2d6 + Mass + 100.0 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 80d9c995-9272-4b42-bcdb-da53a364eb1e + MassRemoved + 79.85557032 + + + + + + + 5.0 + 42.08067056 + b577fb1d + part_b577fb1d-285b-409e-9c73-c4c67aef072f + b577fb1d-285b-409e-9c73-c4c67aef072f + + + 24.33908322 + + MI_Restricted_Substances + aa963e30-fca0-439d-bee2-ff48daa946f3 + + As rolled + Carbon steel, AISI 1095, as rolled + 18de39e1-efa3-416c-8305-820c511d7755 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + fdc3ff67-af49-4e3f-ab5a-5ae7dbc8aea3 + Length + 34.56840297 + + + + + 18.91522919 + + MI_Restricted_Substances + 33160988-8422-40e2-93d1-e3e7467eafe9 + + Normalized + Carbon steel, AISI 1030, normalized + e6b8c0f4-9881-4c32-b3c1-f2c03707a676 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + b74da865-8a31-4d41-b8a8-8883acb68bf3 + Length + 50.00760795 + + + + + 18.91522919 + + MI_Restricted_Substances + 9966da3f-c3f0-414e-9bce-4211a9eca2c3 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 8650, oil quenched & tempered at 425°C + 51209b86-7420-495a-9ae3-2917c45bb6d5 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 376fbb2f-af03-4c94-bbdd-fb020dd33243 + Mass + 100.0 + + + + + 18.91522919 + + MI_Restricted_Substances + 0840d007-df07-4e12-bda5-bfc060fb15e6 + + Annealed + Low alloy steel, AISI 4320, annealed + d026b0f7-b323-4658-b701-dd5b9ef0642b + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + b90ce3a2-6d75-4559-9ea6-6d7d03afe3d8 + Mass + 100.0 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + e59147df-ab41-4304-beda-98aa64536cf5 + Mass + 100.0 + + + + + 18.91522919 + + MI_Restricted_Substances + db238d75-fcb8-41f5-9289-83a352fa83a6 + + Annealed + Carbon steel, AISI 1015, annealed + 10de9487-5e02-4fd3-9e50-cf813f9100e3 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 4d3e67b7-82de-46e0-9939-d476f85856d6 + Mass + 100.0 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + 4f80d53e-42d7-4017-a30c-e81cb7c4723f + Length + 56.07903206 + + + + + + + 7.0 + 25.02103844 + 98aa21d0 + part_98aa21d0-06fc-44b1-8fe5-2e59b4c5bb01 + 98aa21d0-06fc-44b1-8fe5-2e59b4c5bb01 + + + 82.30747412 + + MI_Restricted_Substances + bbe3f98a-e574-482b-99cc-74e13b224dd3 + + Normalized + Low alloy steel, AISI 5160, normalized + 66055c02-c174-48cf-a93b-b2a1caa95b51 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + d269bdba-90f7-4b96-9e75-6df612bf51a3 + Length + 50.76314683 + + + + + 5.89750862 + + MI_Restricted_Substances + 9ce914d8-75c1-4c5f-8c57-11c0e62b2cfa + + ASTM A299 Grade A + Structural steel, ASTM A299 Grade A + 5f3b5299-698b-4670-9ff2-02b9eb219537 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + 90dd5b2e-8f4d-46f0-add5-99ff1689d833 + Area + 67.00907785 + + + + + 5.89750862 + + MI_Restricted_Substances + c15a44c3-d8be-4ae8-9a58-281f13b731cd + + YS420, cold rolled + High strength low alloy steel, YS420, cold rolled + a0ee3dee-d81a-48de-b448-54d0cfebab12 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + 0e1f1be9-bef9-43ba-9414-e54b8d4b254f + Mass + 100.0 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 289c98e6-f616-4f8e-9ef9-324927836d0d + Mass + 100.0 + + + + + 5.89750862 + + MI_Restricted_Substances + 55eaa961-cbe2-4f0a-9531-ec40dc32555a + + YS260, cold rolled + Interstitial free steel, YS260, cold rolled + c5ed30f9-03dd-4053-8b5b-c4e1a60cfe8e + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + 70d819c9-38b0-4d64-a6e0-bfd003d04728 + Area + 52.55875673 + + + + + + + 8.0 + 32.50793317 + + MI_Restricted_Substances + 4a2d9161-0f0a-46c5-91c5-ecc05f02ab7d + + 910f76f0 + part_910f76f0-66f9-452f-8090-72c07bb16e3f + 910f76f0-66f9-452f-8090-72c07bb16e3f + + + 3.0 + 67.53728257 + 6c0e2111 + part_6c0e2111-9a45-49b2-89f9-e75b9236807b + 6c0e2111-9a45-49b2-89f9-e75b9236807b + + + 18.61153776 + + MI_Restricted_Substances + 1a2673ec-4671-4e9c-a73b-2fef7045fb02 + + Aluminoborosilicate - G20 + Aluminoborosilicate - G20 + ad5ea6d8-bd5e-4129-8ecf-54d9e5e5f38e + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 73960487-6fc0-4df7-b3e3-7e034b13713c + Mass + 100.0 + + + + + 20.34711555 + + MI_Restricted_Substances + e678781a-1b38-4709-816b-9db609651db6 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 50B60, oil quenched & tempered at 425°C + f6b11b46-7824-436b-bcd0-0c4f7072fcf2 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + e2857007-525e-42e0-856d-ea8e587e1af9 + Mass + 100.0 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 1cd84982-979f-476d-9569-a73014bd478d + Mass + 64.81055634 + + + + + 20.34711555 + + MI_Restricted_Substances + 0ff3d25e-2024-43a5-9654-bb095ad302ce + + YS260, cold rolled + Bake hardening steel, YS260, cold rolled + e1c23815-ad33-4f51-97b0-6f79b533359c + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 0a7ced6d-460a-4301-b350-afa4640aef30 + Area + 88.82514708 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + 59aef919-4ba8-4fad-bc83-f909df5bb444 + Length + 90.45346956 + + + + + 20.34711555 + + MI_Restricted_Substances + 93e14fb3-4376-4df5-9d31-299bee56ea49 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 4340, oil quenched & tempered at 540°C + 0fc7dbac-bf70-45c7-90e8-3bd27a45fc1f + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 0c1a5db1-afbb-4a9b-b9da-d5f3c050426d + MassRemoved + 59.38715397 + + + + + 20.34711555 + + MI_Restricted_Substances + 3fd6cebb-a683-45be-b014-7c3fb617c3e7 + + Glass/polyimide honeycomb, ±45° fabric (0.064) + Glass/polyimide honeycomb, ±45° fabric (0.064), L Direction + d5016dee-0d50-4fb4-abc4-ff412b6567a2 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + 8daed5ae-3333-47bf-963f-5693dfe3963e + Mass + 100.0 + + + + + + + 1.0 + 76.9348563 + 637e0437 + part_637e0437-da8d-40d6-b882-cabd56acb117 + 637e0437-da8d-40d6-b882-cabd56acb117 + + + 45.9378408 + + MI_Restricted_Substances + d50d4fb1-e03a-43e7-b96d-6e8947848f36 + + Borosilicate - 7760 + Borosilicate - 7760 + 41aa4011-d38d-40e0-82e6-eefa8d9d6860 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + 18e019cd-e438-4439-aba5-793bfff432df + Area + 36.64996839 + + + + + 18.02071973 + + MI_Restricted_Substances + 6d658600-d198-46ed-bcca-cd0e3e2f5f4d + + Oil quenched & tempered at 425°C + Carbon steel, AISI 1060, oil quenched & tempered at 425°C + 09dddbfa-2400-4660-93fc-d0c784324731 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 4f40fad3-7ce7-40f8-bd4d-0940db95abc6 + Mass + 67.77865806 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 52e9ddf8-90c1-4f1b-9003-eb8de3f2a997 + Mass + 100.0 + + + + + 18.02071973 + + MI_Restricted_Substances + 00268f25-08c7-4add-91f3-3cc4ed1d7e34 + + Oil quenched & tempered at 425°C + Carbon steel, AISI 1141, oil quenched & tempered at 425°C + 244a218d-da02-4600-901f-3c795a8ed628 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 0c7a49f5-6aa3-4cf2-9870-f8b97e7d9e9e + Mass + 100.0 + + + + + 18.02071973 + + MI_Restricted_Substances + 034898f1-834f-4079-a0d3-65fffc17cb4d + + Silica (quartz fused) + Silica (quartz fused) + cc1dcc59-58ce-4ad0-b222-a342e392f666 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + 02a20918-409d-4751-a8c1-d14dafa88081 + Mass + 100.0 + + + + + + + 5.0 + 11.67781735 + f8a14e94 + part_f8a14e94-a386-4489-9648-e6082d18b30c + f8a14e94-a386-4489-9648-e6082d18b30c + + + 13.87572014 + + MI_Restricted_Substances + 0d45da58-d026-4a44-b2b5-3109fe88f824 + + Annealed + Carbon steel, AISI 1022, annealed + 65ec6136-26bc-442d-9570-1ce48f7690c7 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + bd16cf39-76af-43f8-b198-aeb8ad7be932 + Mass + 59.98469724 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + e6bb7f1e-7071-4e1d-a373-45ffe368eadc + Mass + 100.0 + + + + + 86.12427985 + + MI_Restricted_Substances + c60fa280-eb24-4c9a-b6cf-a8304e0eb1b5 + + YS500, hot rolled + High strength low alloy steel, YS500, hot rolled + 5aa8cb62-04fb-411f-9001-dec103cb7f1f + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + d42f33b8-5c49-477c-af67-ecb132d88eae + Mass + 100.0 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + e4979d16-32cf-4bb4-93a5-fa69b3693f69 + Mass + 100.0 + + + + + + + 6.0 + 86.29580404 + + MI_Restricted_Substances + 022614af-ecf8-4797-af86-25b711d65e30 + + c36583cf + part_c36583cf-709d-4e48-bcfa-afb789e667d9 + c36583cf-709d-4e48-bcfa-afb789e667d9 + + + 6.0 + 67.96339203 + b786aa15 + part_b786aa15-0e95-4b0a-82e6-923db26e9143 + b786aa15-0e95-4b0a-82e6-923db26e9143 + + + 28.16058794 + + MI_Restricted_Substances + 8c7579d0-7b78-40f6-a9e7-d11eea746c1f + + Uncoated + Press hardening steel, 22MnB5, austenized & H20 quenched, uncoated + f0f45be9-288d-4aa4-989b-0e8bfa87419b + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + a485a8f2-d7fc-4bc3-988b-da33a5828f70 + Length + 21.04648902 + + + + + 10.26277315 + + MI_Restricted_Substances + 8643d806-94c5-42f9-9ffc-4c21a6e16bd0 + + Annealed + Carbon steel, AISI 1141, annealed + b5578b36-590a-4ff3-9586-de0bc55d7ca5 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 9c75e21c-d10b-44e9-bfdb-16d235fd0245 + Area + 33.54337766 + + + + + 10.26277315 + + MI_Restricted_Substances + e6b45bea-dec9-4b91-996a-885bb0c31f8d + + Glass, S grade (10 micron monofilament, f) + Glass, S grade (10 micron monofilament, f) + da3524da-b989-495a-80bc-6a03e4dff35a + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 208aabda-3a37-4f4f-9759-695034f23d93 + Mass + 100.0 + + + + + 10.26277315 + + MI_Restricted_Substances + 82880431-c70c-4df9-856a-d5e00671a184 + + Annealed + Carbon steel, AISI 1020, annealed + f5c11d3d-e942-460a-a6e6-88d85c845501 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + bb96f553-a236-4770-9e20-ccbd1709d75c + Length + 16.77892739 + + + + + 10.26277315 + + MI_Restricted_Substances + 9052201a-a41d-4b86-8c7c-2e80163afd47 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 9255, oil quenched & tempered at 425°C + 259dbdfd-48fd-490b-b87e-c1a2e85fc26e + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + a36cc3bf-3a2e-4f6d-92bd-1ce74df99da7 + Length + 13.0660519 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + c12a6707-fd5a-4b34-8443-ab1cd3886c62 + Area + 17.75081242 + + + + + 10.26277315 + + MI_Restricted_Substances + 356303d7-c574-4db7-80f9-427e176a5308 + + 40CrMoV13-9, quenched & tempered + Low alloy steel, 40CrMoV13-9, quenched & tempered + 9f92067c-64e2-43cd-a019-67fcbd40b9d4 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + c4afe641-9b45-4754-ba04-d0f4d10a862c + Mass + 100.0 + + + + + 10.26277315 + + MI_Restricted_Substances + b85ebb9e-b198-4497-ae8e-b9b61ecde102 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 5160, oil quenched & tempered at 315°C + ff3c1af1-7726-48cf-9111-2405634e69c8 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 4c4e97c0-8d3f-43e2-b07b-3dc30b243b4b + Mass + 100.0 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + d091f519-b7d6-4d1d-9425-5fc6116d2bcf + Mass + 100.0 + + + + + 10.26277315 + + MI_Restricted_Substances + 30d9edb0-09d2-4270-b4f5-8dceb44a6bd6 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1137, oil quenched & tempered at 540°C + 5ec4816a-1e17-49e3-87f2-7045ba08b4a6 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + c43d69af-0147-4859-b393-3a06d193be25 + Mass + 100.0 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 9e5c4c82-e18a-4143-b951-79a464daa2ee + Mass + 100.0 + + + + + + + 8.0 + 55.56172149 + 7f1ea467 + part_7f1ea467-91f8-4023-8fd4-a144cdab337e + 7f1ea467-91f8-4023-8fd4-a144cdab337e + + + 54.56153832 + + MI_Restricted_Substances + c87d2bef-0549-4a3b-b699-3ad17b079fa1 + + YS355, hot rolled + High strength low alloy steel, YS355, hot rolled + 7ac8785d-6c83-4f8f-90de-933949972289 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 26432953-6f0e-4d93-96c7-bd5fcf6379f2 + Mass + 100.0 + + + + + 9.08769233 + + MI_Restricted_Substances + 21dcdeeb-524a-488e-b332-fcd4e1caf6f7 + + water quenched & tempered at 650°C + Carbon steel, AISI 1095, water quenched & tempered at 650°C + a790407d-9ced-4977-a510-4e069d78d746 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 03eb66c3-f545-462f-9769-f86b3dd6affc + Mass + 100.0 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + b61ec8b9-64a3-446e-b1ca-34ec20bca0ed + Mass + 100.0 + + + + + 9.08769233 + + MI_Restricted_Substances + a8f02f5c-c80e-446f-92f4-0046f3d093fc + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 8630, oil quenched & tempered at 425°C + 07fde33a-6f9f-45f7-a3ea-e654b0ce2405 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 442eafc3-87b0-40ac-b29e-e5250db24a9e + Length + 51.49531678 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + 2e2d0c69-7030-4356-9abd-21c9a343f13f + Length + 33.97501107 + + + + + 9.08769233 + + MI_Restricted_Substances + af4f67b9-f5a7-4fc3-9f1d-da3309e4b19a + + Solution treated & aged + Iron-base-superalloy, Cr-Ni alloy, A-286, solution treated & aged + 50b835ed-171b-447e-bd43-b8458edb8a36 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + bb3d5628-9b59-4a22-a339-57214c20ae1d + Mass + 100.0 + + + + + 9.08769233 + + MI_Restricted_Substances + 8dbb57f2-b225-4f57-9a5a-c25a03292d6e + + Annealed + Low alloy steel, AISI 6150, annealed + 0f20032f-64dd-4407-a483-f204c69438fb + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + b2907993-60fd-4b39-9d19-a6320539f3ff + Mass + 100.0 + + + + + 9.08769233 + + MI_Restricted_Substances + 9ecfadb9-f61f-48b3-81b1-bcac80eb164f + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 4150, oil quenched & tempered at 315°C + 8a787e70-737e-46e6-8dab-306d179ef24a + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 203cae3c-c8ea-468a-b0c2-1a2f1dba8083 + Mass + 100.0 + + + + + + + 9.0 + 10.82996819 + f5dacbb9 + part_f5dacbb9-c1f8-419a-9053-2a4d2c9d18a8 + f5dacbb9-c1f8-419a-9053-2a4d2c9d18a8 + + + 39.23288953 + + MI_Restricted_Substances + c62d668e-5411-4845-b19c-3a0c4eedf872 + + 10CrMo9-10, normalized & tempered + Low alloy steel, 10CrMo9-10, normalized & tempered + 33d3df79-d373-4b94-b3a6-660eb38c7e27 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 8314c26c-a7ee-4c74-bb24-5fd5a019029a + Mass + 50.22395157 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + 29e7d889-d958-4cf6-a9e9-4f530b87ea79 + Area + 5.86994639 + + + + + 10.12785174 + + MI_Restricted_Substances + 0afa77bf-df9b-456c-8c48-3c84b1ccd2e0 + + Low density glass-sphere filled + Bisphenol molding compound (low density glass-sphere filled) + 31c5fa38-c9cb-4a05-82b0-b841e128dbcf + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 2f9ef32d-cf41-40d8-b44e-1b8261e8da15 + Mass + 100.0 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 5fad0148-6141-4b01-bc17-321eb4744943 + MassRemoved + 76.2154308 + + + + + 10.12785174 + + MI_Restricted_Substances + ee5b018e-8d7f-4fb1-bad0-c73e871592bc + + 16Mo3, normalized + Low alloy steel, 16Mo3, normalized + a529dc2e-5812-49a2-95b6-6dd4275ccfaf + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + f7aaf415-d27b-4f53-bb9d-8395e0f29297 + Mass + 100.0 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + df76aa4d-4723-48c9-a1ae-f9609cf40fa4 + Mass + 100.0 + + + + + 10.12785174 + + MI_Restricted_Substances + a583e694-02c0-408e-9af4-6fbee856b58f + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 9260, oil quenched & tempered at 650°C + a71e7f88-dd9f-4bd5-97c5-ba0e454c8a86 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 25e57cf3-f067-4f6d-8227-81f597c51a51 + Mass + 100.0 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 60c7a5c7-b458-4867-bc66-6a7b7cf161e4 + MassRemoved + 51.18256791 + + + + + 10.12785174 + + MI_Restricted_Substances + 8ef69f01-44dd-4b96-ac5c-731bff7ceb6c + + Glass ceramic - 9606 + Glass ceramic - 9606 + ac8979df-ffa0-4867-92bd-4f50e905e723 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + dc7fe693-f05f-4a56-a129-0f668f88f684 + Mass + 100.0 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + d3632ca9-6bb1-4658-a277-3ecec3de1232 + Mass + 100.0 + + + + + 10.12785174 + + MI_Restricted_Substances + a583e694-02c0-408e-9af4-6fbee856b58f + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 9260, oil quenched & tempered at 650°C + beaa77bc-aa95-48b4-a090-f8d2d782206a + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + d42538b4-5ecd-43e4-8fe5-566b54d31b2f + Mass + 100.0 + + + + + 10.12785174 + + MI_Restricted_Substances + bac6ffd4-6d83-432c-90f4-de9606502589 + + Alkali barium glass + Alkali barium glass + c6e0f32c-d30b-482b-ae39-6a157d6c056b + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + c199a1d4-2aa7-4696-b556-67be5a32877e + Mass + 100.0 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 143e76aa-6810-4714-9c4b-0df021ee35c0 + Mass + 100.0 + + + + + + + 8.0 + 56.75165851 + bbcf0cb7 + part_bbcf0cb7-3799-419c-bb91-69efc6a773a2 + bbcf0cb7-3799-419c-bb91-69efc6a773a2 + + + 39.58289531 + + MI_Restricted_Substances + ac1b4f23-a357-459b-bfeb-deabffbc7020 + + Oil quenched & tempered at 315°C + Carbon steel, AISI 1050, oil quenched & tempered at 315°C + 75e963b5-5092-420b-8f67-36bb94675137 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 25d88b7e-7987-4bcd-9d04-0a59ca932205 + Length + 67.65751534 + + + + + 12.08342093 + + MI_Restricted_Substances + bfd46ac9-4021-49b6-9656-d1e426bd1c79 + + Oil quenched & tempered at 205°C + Carbon steel, AISI 1340, oil quenched & tempered at 205°C + cc19f7cb-4027-4c5e-a5db-2dd7a7559226 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + d7ecc6bf-c407-41c3-8b1a-6ba1b26dd902 + Area + 38.52274936 + + + + + 12.08342093 + + MI_Restricted_Substances + e06fc27c-5e39-4218-a5ca-6927af12a511 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 4140, oil quenched & tempered at 205°C + 9420bb2f-2d32-4cfe-a1f6-2ee9dc88147e + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 8baa897b-6b55-43c3-a1bf-76df9b858209 + MassRemoved + 54.65452426 + + + + + 12.08342093 + + MI_Restricted_Substances + d53daeda-87b2-4ade-a7a2-1ebe84e7e3ef + + Annealed + Low alloy steel, AISI 5115, annealed + ba3706f1-d63d-4915-aaf4-64fbbb441514 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + be2a3e2b-dc24-46df-b793-11fdbaf7a046 + Mass + 100.0 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 8992ea99-439f-4945-8d59-7b1da55af53c + Mass + 100.0 + + + + + 12.08342093 + + MI_Restricted_Substances + 6ee51b17-7fe0-46fd-8e32-a71585a34000 + + 40-45% glass and mineral + PBT (40-45% glass and mineral) + c5e03d92-c8bb-4bd6-8807-22324b49bdd8 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + ef746a79-0608-45eb-9625-1009cad3791e + Mass + 100.0 + + + + + 12.08342093 + + MI_Restricted_Substances + f8d1136f-3c1a-41e2-8b78-cf5f3965cba2 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 6150, oil quenched & tempered at 205°C + 66478372-76a4-407e-b812-4526b76fe9ef + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + e6b23627-745a-46ec-849e-ddfb9fb69ff9 + Mass + 100.0 + + + + + + + 3.0 + 47.09622312 + f6fbbc6b + part_f6fbbc6b-42d8-4d0f-8b82-95595f7cfc97 + f6fbbc6b-42d8-4d0f-8b82-95595f7cfc97 + + + 11.8254642 + + MI_Restricted_Substances + dec2859d-9573-49bd-846a-5e2a288c063f + + Soda barium glass + Soda barium glass + 8d38f1ad-6599-48e2-b23c-68fc43a64acf + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + e4279d68-ed80-4c1b-bd24-575b9cceb825 + Mass + 100.0 + + + + + 22.04363394 + + MI_Restricted_Substances + dec2859d-9573-49bd-846a-5e2a288c063f + + Soda barium glass + Soda barium glass + f0390429-7c94-4cb2-9d6d-61f157e52841 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + c6db4588-d5e0-4219-968b-eed84cd89885 + Length + 4.21755383 + + + + + 22.04363394 + + MI_Restricted_Substances + 6f7c4754-84f7-46f0-873a-ec2e9f29e345 + + Glass/phenolic honeycomb, ±45° fabric (0.088) + Glass/phenolic honeycomb, ±45° fabric (0.088), W Direction + 252842a8-fb2a-4c4f-8d28-41739c6318dc + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + ec951dd2-d457-4e17-8988-b99dc3b2c87d + Mass + 100.0 + + + + + 22.04363394 + + MI_Restricted_Substances + c3e12411-ba5c-485f-b516-f489b95e8233 + + FR-4.1 (Df < 0.005 at 10GHz), Epoxy/Glass fiber, PCB laminate + FR-4.1 (Df < 0.005 at 10GHz), Epoxy/Glass fiber, PCB laminate + b39e6f9f-e41f-4cdd-b189-87298b42a606 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 789840db-daaa-4de1-b9a3-bc19836d8c37 + Mass + 100.0 + + + + + 22.04363394 + + MI_Restricted_Substances + 8245dc6c-3d61-4f18-82c8-6fb946e1582c + + Glass foam (0.13) + Glass foam (0.13) + a9e396af-a85b-416d-a610-0c044c88995e + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + f55d8028-28c0-40be-80f8-3ca1f420e68b + Mass + 100.0 + + + + + + + 6.0 + 55.60882997 + 7d472c22 + part_7d472c22-d1df-40ef-a113-6c4122effb2e + 7d472c22-d1df-40ef-a113-6c4122effb2e + + + 74.36814684 + + MI_Restricted_Substances + afc85ad6-9e99-44a7-a959-f75ddbacff15 + + FR-5, Epoxy/Glass fiber, PCB laminate + FR-5, Epoxy/Glass fiber, PCB laminate + 4bc44872-9a5d-495a-9caf-980d43e66b11 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 21ec7642-fe81-4c1c-a592-fabcaeff2b6b + Mass + 4.40019215 + + + + + 4.27197552 + + MI_Restricted_Substances + 63d5d6b5-3b52-4cd9-a56f-6e7c5c945139 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 81B45, oil quenched & tempered at 315°C + 74879e4c-7f99-47b3-b943-54b7b54f6222 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 20c2c644-69b9-4aa2-a360-e60e64f749e6 + Mass + 100.0 + + + + + 4.27197552 + + MI_Restricted_Substances + 00268f25-08c7-4add-91f3-3cc4ed1d7e34 + + Oil quenched & tempered at 425°C + Carbon steel, AISI 1141, oil quenched & tempered at 425°C + d69c5639-1b8b-4737-907f-ed4d5be46e4d + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + 7cec420e-96c3-4ebc-b0da-625f9feb724e + Mass + 100.0 + + + + + 4.27197552 + + MI_Restricted_Substances + 9c1918f9-aa9f-4078-93df-23539c8df8a8 + + Soda-lime - 0091 + Soda-lime - 0091 + 4fa78796-c5a9-46ca-86ce-f88f8a01b793 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + d3fb1692-a0d2-4ed7-8e3b-4933bb09a70f + Mass + 100.0 + + + + + 4.27197552 + + MI_Restricted_Substances + 8349c912-772a-4fd7-90a5-7d52aa9c9448 + + Oil quenched & tempered at 425°C + Carbon steel, AISI 1137, oil quenched & tempered at 425°C + 1953f7e4-c39f-492a-a1b5-b6ed45c83f9a + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + 91cc33c3-fc0c-480d-a407-b205ddbe1ea2 + Area + 16.66222341 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + a6a67b54-a11a-4abe-b5b1-ea66d74709ca + Mass + 100.0 + + + + + 4.27197552 + + MI_Restricted_Substances + 9cae15c6-b5b6-4ab9-9008-d962bee0e662 + + Glass/phenolic honeycomb, 0°/90° fabric (0.128) + Glass/phenolic honeycomb, 0°/90° fabric (0.128), L Direction + 9b7e2cfc-3307-431d-b34d-7003cac18824 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 73658f79-c750-4cd8-8eef-ee903cddc232 + Mass + 10.39079842 + + + + + 4.27197552 + + MI_Restricted_Substances + a22f3160-83fe-4a55-8459-26e3f8647523 + + 55% glass and mineral filled + PARA (55% glass and mineral filled) + 950e232a-586e-4d42-9a1f-7b9733ef890a + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 1575dd40-f600-4bc4-a88a-c598678257de + Area + 64.68128173 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 929cc29c-e0e8-4022-b2a6-01a952031a69 + Mass + 100.0 + + + + + + + 2.0 + 14.80806666 + b1cb8514 + part_b1cb8514-070c-4d62-9ef5-4c49c90bc898 + b1cb8514-070c-4d62-9ef5-4c49c90bc898 + + + 97.05102927 + + MI_Restricted_Substances + 8dbb57f2-b225-4f57-9a5a-c25a03292d6e + + Annealed + Low alloy steel, AISI 6150, annealed + 86c67d23-08be-4393-9d92-495098f61f07 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 80c605e4-edf1-4cd5-bf78-a206557fc22f + Mass + 100.0 + + + + + 0.73724268 + + MI_Restricted_Substances + a83cb894-badf-47de-8aff-fe75bbb39ecd + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 81B45, oil quenched & tempered at 540°C + 61cdd020-4268-4783-9885-d40cb0c8d22a + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + a83e56d7-ae09-4e6f-924d-f26157e38358 + Mass + 100.0 + + + + + 0.73724268 + + MI_Restricted_Substances + ecee7ab4-461f-42e0-9b52-d03ea031201c + + Normalized + Carbon steel, AISI 1144, normalized + 06df061e-da0a-4d4c-9d3d-f6e18221e033 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + eace4d01-c48e-4b1e-8e22-15225c63f9bf + Area + 55.08029659 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + 41aaa4b3-1aaa-4dc8-9fa7-f19ff45a83ae + Mass + 100.0 + + + + + 0.73724268 + + MI_Restricted_Substances + 66ed26ec-15e8-47d9-a7dc-140271411c07 + + Quenched & tempered + Low alloy steel, AISI 4130, air melted, quenched & tempered + 45b2ca44-3955-48b5-8eac-b98cec5366f3 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 4513f058-b7a2-4702-aa6e-decfec920a1a + Mass + 100.0 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + a960eb1f-91b4-4d76-af51-3b97a0c3bf8c + Mass + 39.23225702 + + + + + 0.73724268 + + MI_Restricted_Substances + af4f67b9-f5a7-4fc3-9f1d-da3309e4b19a + + Solution treated & aged + Iron-base-superalloy, Cr-Ni alloy, A-286, solution treated & aged + 1916a851-ca70-4761-a100-5a0fd2c7ee5d + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + b3ac55f8-96d0-436e-bd89-27d480e45e0a + Mass + 100.0 + + + + + + + 6.0 + 7.05108042 + b6c22120 + part_b6c22120-5e85-4ed0-92c7-590b9eb9ac7a + b6c22120-5e85-4ed0-92c7-590b9eb9ac7a + + + 92.89500778 + + MI_Restricted_Substances + 81ce98b3-d459-4695-9dd9-d53244be47ed + + Annealed + Carbon steel, SA216 (Type WCC), cast, annealed + 12376dff-8e97-4e2c-9f52-fcca2e966de3 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 5054c941-f1fc-4991-864b-06f9400d43ae + Area + 43.14095589 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + aeb8805c-e856-4dcb-bbab-e379818c0478 + Length + 35.58356805 + + + + + 2.36833073 + + MI_Restricted_Substances + 00fe5279-94a1-43fd-8b88-d83679a1bdce + + Normalized + Low alloy steel, AISI 8650, normalized + 94527534-0ff8-4ec1-aa02-5fd4dd86cbca + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 79ad3c95-21f4-429e-95e5-8dfa2f5be558 + Mass + 100.0 + + + + + 2.36833073 + + MI_Restricted_Substances + 2fca0cda-4548-4601-ade6-49478da1542f + + Potash soda lead glass - 0120 + Potash soda lead glass - 0120 + eef4536e-0d78-4abf-adbf-f27a06ee9cf7 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 0b44e966-c220-49a6-b05f-8644b6e5bdb5 + Mass + 100.0 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + fdeac97c-9a5b-41d0-baad-81336f423d96 + Area + 77.51804831 + + + + + 2.36833073 + + MI_Restricted_Substances + 4ad00a9e-92b5-4e28-92a0-409da4495c54 + + Oil quenched & tempered at 205°C + Carbon steel, AISI 1060, oil quenched & tempered at 205°C + fafbc500-8dbb-4e8f-af0c-bfc59a8b2bb3 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + 76bb9be2-bf69-4a02-8cb3-42b6d3246859 + Length + 71.41872307 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + f6122a10-907d-4619-a69b-847a1fa3368f + Mass + 100.0 + + + + + + + 3.0 + 13.14036199 + + MI_Restricted_Substances + 0dedeb55-6f6f-42f9-b703-5225f1cab2fb + + f0a7ab1b + part_f0a7ab1b-d6f5-4f47-ad8e-12d3e43d65a5 + f0a7ab1b-d6f5-4f47-ad8e-12d3e43d65a5 + + + 3.0 + 41.4643855 + 2c988253 + part_2c988253-cf8f-45cd-b7c4-cd4903dcd49c + 2c988253-cf8f-45cd-b7c4-cd4903dcd49c + + + 9.23008383 + + MI_Restricted_Substances + 4cea2241-b602-4843-a983-45b33e64af05 + + YS600, cold rolled + Dual phase steel, YS600, cold rolled + 524819a4-baa5-40eb-b5a5-2e131ebfeeee + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + e7708b91-0bf6-46c6-a0f5-a5915cce29ef + Mass + 100.0 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 3c055067-1d8e-4d09-9eba-aabe150346f3 + Mass + 100.0 + + + + + 30.25663872 + + MI_Restricted_Substances + a89802d6-13c5-496d-b139-57ae43e6591c + + As rolled + Carbon steel, AISI 1022, as rolled + 953dc823-906a-4e1b-af55-24208c11831c + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 40b06799-47a2-4ac4-a84d-f17e31b3b432 + Mass + 40.87403777 + + + + + 30.25663872 + + MI_Restricted_Substances + 59ed9004-2126-437f-aa61-b8a0189e69d3 + + Oil quenched & tempered at 650°C + Carbon steel, AISI 1095, oil quenched & tempered at 650°C + f496a5a7-129c-4e5d-9a3e-9be489e5d6b0 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + bc3e2ee0-f497-4f79-ac4f-f2f0366a4837 + Mass + 100.0 + + + + + 30.25663872 + + MI_Restricted_Substances + 9e4a9338-5342-488e-ba70-770407c295f3 + + Oil quenched & tempered at 315°C + Carbon steel, AISI 1040, oil quenched & tempered at 315°C + 4d0995c4-f147-4654-acba-39954f9a5d93 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 378919a5-f10e-482c-b0bf-3a0f529ee29e + Mass + 100.0 + + + + + + + 5.0 + 28.70503697 + 4bf6e986 + part_4bf6e986-258f-4be2-975a-b61b454fd036 + 4bf6e986-258f-4be2-975a-b61b454fd036 + + + 89.11117119 + + MI_Restricted_Substances + b22c05ba-b0f7-4e07-890d-c5066c0db098 + + 40% glass and mineral + PPA (40% glass and mineral) + d02fd096-bc39-4e63-8595-cabbda073d3f + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + a8915a7a-54fe-4180-9b14-2cd502ef844a + Mass + 100.0 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + 5e09828c-7dc7-4c3d-a3de-81c97726afa3 + Mass + 100.0 + + + + + 2.7222072 + + MI_Restricted_Substances + aa4ba2ad-ff11-448b-90e3-477f9a5f41fb + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 5150, oil quenched & tempered at 205°C + 8919da4a-bff7-471b-92d4-6e480aedd51b + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 22a1af61-950f-4631-8e36-09b8b226cfcd + MassRemoved + 76.786467 + + + + + 2.7222072 + + MI_Restricted_Substances + 5b4ea232-c032-4f8d-a633-3b059e93651a + + 36%Co steel + Hard magnetic alloy, 36%Co steel + 937c119a-d8ab-4f2a-bfe6-527ed53f36e4 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + b5585cab-ca53-42ae-893b-438529c3cc6b + Mass + 100.0 + + + + + 2.7222072 + + MI_Restricted_Substances + 508489f2-cc48-4f0a-a6ee-482bb89a0386 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 5160, oil quenched & tempered at 205°C + a772bd14-162d-4be6-8c68-3a6257195aa9 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 2d8ffac5-4ca4-43ff-b862-abe7c992dea2 + Mass + 100.0 + + + + + 2.7222072 + + MI_Restricted_Substances + 439e62b9-4268-44c6-a084-695412628448 + + water quenched & tempered at 425°C + Carbon steel, AISI 1095, water quenched & tempered at 425°C + 23ad95e3-9da9-4b3b-9a12-086d4e3782dc + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 79ab9f32-6fa4-4744-8404-a78e113343ca + Mass + 100.0 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 0fb5239f-3ffd-4eff-b115-ae18c7b5476a + Mass + 100.0 + + + + + + + 7.0 + 86.95584078 + 8850405f + part_8850405f-1bc8-4ee1-9e75-adcb828b2794 + 8850405f-1bc8-4ee1-9e75-adcb828b2794 + + + 59.76124473 + + MI_Restricted_Substances + b3c74dfc-9d72-4938-89cb-1a49ce0fdb80 + + Normalized + Carbon steel, AISI 1137, normalized + bef17b43-13e6-42d3-940e-9b453e4a92f6 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + b7684e39-7e3b-4dab-98cd-c9fd75c80e82 + Mass + 100.0 + + + + + 13.41291842 + + MI_Restricted_Substances + c80cfa14-8e35-42c8-a52d-d52864a3e2ea + + water quenched & tempered at 315°C + Carbon steel, AISI 1137, water quenched & tempered at 315°C + 11476ef8-d73f-4799-9563-3adac3b7fcf0 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 1a829ca7-bbba-41e3-9e71-73e060cff916 + Mass + 100.0 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 44697ca4-97e9-4840-9a94-831c57ced065 + Mass + 100.0 + + + + + 13.41291842 + + MI_Restricted_Substances + 9baf14a0-efff-4bce-9674-553db30bee1b + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 9255, oil quenched & tempered at 650°C + 070a8f49-a62c-48f5-8327-c2839138305a + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + f859aad7-e597-4c0f-8ee3-dbf8db722210 + Area + 56.93592557 + + + + + 13.41291842 + + MI_Restricted_Substances + d56a3593-45b4-418e-8f28-3fde55e8479f + + Homopolymer, 40% glass and mineral + PP (homopolymer, 40% glass and mineral) + a48ba86f-ca66-471e-99a7-11b96d16d089 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 928af391-7b14-4095-b310-7a0d4fb50d8b + Mass + 100.0 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 94837ed6-4763-4188-bcb2-f9d76fec1148 + Area + 93.14324431 + + + + + + + 5.0 + 58.99342226 + + MI_Restricted_Substances + a78dcd3a-f108-4fdb-857e-e2d00ed319d4 + + 09350fa0 + part_09350fa0-964d-456a-875c-2355638255a2 + 09350fa0-964d-456a-875c-2355638255a2 + + + 2.0 + 26.62218819 + + MI_Restricted_Substances + 3d4d35cd-1db3-477c-8f3f-b90800ea1c4d + + 0d5094b9 + part_0d5094b9-448f-4311-96e4-6355b5ea980e + 0d5094b9-448f-4311-96e4-6355b5ea980e + + + 1.0 + 42.12112396 + 1d364f95 + part_1d364f95-3b32-4f32-aed1-367c536a532f + 1d364f95-3b32-4f32-aed1-367c536a532f + + + 48.23920561 + + MI_Restricted_Substances + 7c0b2792-bc51-4837-a380-6cdb1c2fba31 + + water quenched & tempered at 205°C + Carbon steel, AISI 1030, water quenched & tempered at 205°C + f8179b44-4bf0-491c-876d-0a6302555b8e + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + ae31d735-5ef4-4561-bf00-7c41b089d9dd + Mass + 100.0 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + cc5b04e5-eddd-4572-abff-9cc328602f24 + MassRemoved + 56.82728684 + + + + + 6.47009929 + + MI_Restricted_Substances + 6ad963b9-76ae-4d8e-be3b-12ec82c47054 + + Normalized + Carbon steel, AISI 1060, normalized + 1b3b78c7-840c-4991-945a-88510fccafa2 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 1a66aa79-8651-4c8e-9c86-a52ef36c31d5 + Mass + 100.0 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + d4f821e2-4a23-4cf2-8926-65786d7012f9 + Length + 55.4947851 + + + + + 6.47009929 + + MI_Restricted_Substances + 3bed321b-712b-4769-ba8b-7297fb3569a7 + + Quenched & tempered + Low alloy steel, AISI 4340, quenched & tempered + 33a3eff2-e1e4-4c21-8ac7-9a905e1e862e + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 20fe4340-06c7-41b8-81d6-ca1340e1c90a + MassRemoved + 24.66429799 + + + + + 6.47009929 + + MI_Restricted_Substances + eb2b811b-1da6-465a-857f-6d14b372a38b + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 50B60, oil quenched & tempered at 650°C + 68c27c37-385d-499b-930c-b78158169706 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 3f7cff83-2617-42ca-8868-574296edf06c + MassRemoved + 95.20358554 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 0a3118ff-9aae-4571-8895-a58ba84e33c9 + Length + 23.36205803 + + + + + 6.47009929 + + MI_Restricted_Substances + bbe0765c-012b-434e-878b-b40ad692b373 + + YS550, hot rolled + High strength low alloy steel, YS550, hot rolled + c3492580-102d-4f91-8dfd-26db637181af + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 0c776f58-0051-4cb9-bb26-9be1e376bc3f + Area + 45.54190637 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 58f68306-3ccd-4ebf-b67f-0ae0f313ceec + Length + 40.21596756 + + + + + 6.47009929 + + MI_Restricted_Substances + ee08f647-79af-49f3-98c5-043480a0fed4 + + Quenched & tempered + Low alloy steel, 4330V, quenched & tempered + 99290faa-a92c-4583-9b0d-32539e92b2d6 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + d0100540-dda2-4a97-bd09-1427497475ed + Length + 9.72854658 + + + + + 6.47009929 + + MI_Restricted_Substances + 356303d7-c574-4db7-80f9-427e176a5308 + + 40CrMoV13-9, quenched & tempered + Low alloy steel, 40CrMoV13-9, quenched & tempered + 74840c65-ae0a-441a-b6d8-05e21554527f + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + 66e4f09a-f36b-4510-8f50-40a22c2eb3e7 + Length + 43.41760284 + + + + + 6.47009929 + + MI_Restricted_Substances + bbe3f98a-e574-482b-99cc-74e13b224dd3 + + Normalized + Low alloy steel, AISI 5160, normalized + 4e5bd8ab-b97d-437f-ab80-0c5670286203 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 51a5107c-bc3c-47c7-b6b2-23d2c8dcacec + Mass + 100.0 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 2c1e3bc7-75c6-4638-9130-f90efe2c2d5c + Mass + 100.0 + + + + + 6.47009929 + + MI_Restricted_Substances + 1b3f17f9-2754-4fc4-bfa2-75ff0df55185 + + Polytetrafluoroethylene (PTFE)/Glass fiber, PCB laminate + Polytetrafluoroethylene (PTFE)/Glass fiber, PCB laminate + 4bfe58f3-cbc1-453e-92e9-688613f20f8f + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + c037fd34-47c3-445e-87e8-1c86512d3786 + Mass + 100.0 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 3e213698-14d3-42a2-9989-af8aa3312172 + Mass + 100.0 + + + + + + + 5.0 + 85.95529663 + 7ec3a18c + part_7ec3a18c-ffff-439f-9305-d9748487b66a + 7ec3a18c-ffff-439f-9305-d9748487b66a + + + 33.46548845 + + MI_Restricted_Substances + 9a48479a-292f-4bdd-aab5-0ad0835d7480 + + Oil quenched & tempered at 205°C + Carbon steel, AISI 1095, oil quenched & tempered at 205°C + 643411c0-010a-4d78-907b-49a80a3e41e3 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 7e66d1e3-6dba-410f-aa77-dc1022601c9c + Area + 5.78555348 + + + + + 13.3069023 + + MI_Restricted_Substances + 5dbabc2e-4263-4458-abe1-31a2ece9e122 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 5160, oil quenched & tempered at 425°C + 4a10af13-f6ee-4995-8344-1ce2bad199ca + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 1a8fbc41-1827-4377-bb92-afb85abba9f9 + Length + 69.05896475 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 488d255d-4e2b-46af-9be2-a1ce70d1e17d + Mass + 100.0 + + + + + 13.3069023 + + MI_Restricted_Substances + ef0841e5-8fb9-46b4-aebb-deda5cb684ec + + SAE 8630, cast, quenched & tempered + Low alloy steel, SAE 8630, cast, quenched & tempered + 56a154cf-def2-47ce-ba1e-484564e1d13b + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 8935f69d-9e5d-4df9-8a90-62331e6f350c + MassRemoved + 54.87286586 + + + + + 13.3069023 + + MI_Restricted_Substances + 87e1a3cd-fd79-4013-b5f8-56d6f28bef34 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1144, oil quenched & tempered at 540°C + 426844c2-8310-476f-9003-ddaa939ef946 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 42356d23-a1bc-4085-918b-bcbb85dac7ce + Area + 52.54359811 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 0be48a8b-c143-4f2c-bc8a-1758c2e59f2e + Mass + 100.0 + + + + + 13.3069023 + + MI_Restricted_Substances + a22f3160-83fe-4a55-8459-26e3f8647523 + + 55% glass and mineral filled + PARA (55% glass and mineral filled) + c0f5f88d-93d8-43a3-a832-ac7880083a80 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + c53b58fa-c2ae-4d10-ab66-8ab56b237087 + Mass + 100.0 + + + + + 13.3069023 + + MI_Restricted_Substances + 90b2285b-4295-429d-beb8-90d9f5df0101 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 5046, oil quenched & tempered at 315°C + 0fa102a1-3015-4fd7-b13a-b44d6884f7b5 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 4d590157-848b-4d72-a031-b06cdb939687 + Mass + 100.0 + + + + + + + + + 4.0 + 3.07637099 + 70f8232a + part_70f8232a-26b1-483d-adaf-c07e456b7752 + 70f8232a-26b1-483d-adaf-c07e456b7752 + + + 55.76185623 + + MI_Restricted_Substances + e8c6d73a-bd7a-4ef3-ae11-48e45d4a5515 + + Glass, E grade (0.4-12 micron monofilament, f) + Glass, E grade (0.4-12 micron monofilament, f) + b9ee7aab-1861-48b9-a1a2-1e4bdefc22ec + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 8d8d943a-0d46-40ba-bb6a-93f0a1dd920c + Mass + 100.0 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + e149f253-572a-4bc6-83d2-bf194e5708e1 + Mass + 100.0 + + + + + 8.84762875 + + MI_Restricted_Substances + 5169a157-0d18-4d45-b197-799e06aa00bc + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 9255, oil quenched & tempered at 315°C + a3bb3af9-27e6-46ca-bb64-6a2a0623375e + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 3f5ff23d-4c89-4dab-8f73-bd7fd2175a77 + Mass + 100.0 + + + + + 8.84762875 + + MI_Restricted_Substances + 6fa5237c-2f5c-4220-941e-b19cd18ec544 + + Normalized + Low alloy steel, AISI 6150, normalized + 21276669-329f-4952-91ad-c2f79f3ce717 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 7c6466b4-6d98-4968-9b81-d26df9d89279 + Length + 0.81775076 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 373fe6b4-5498-48a5-8d41-e8b382c1feb0 + Mass + 100.0 + + + + + 8.84762875 + + MI_Restricted_Substances + b1fc58b3-1acb-4c8b-9974-7c4692ec32d0 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 8650, oil quenched & tempered at 650°C + 6c87c1c2-8743-45ad-9362-0f5eeac27b1b + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + fe5fb621-4a55-4fcc-80f4-aadc5cfcb7e4 + MassRemoved + 1.94878522 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + b6f0f8ac-a0d0-4381-88f3-1863b47446ca + Mass + 100.0 + + + + + 8.84762875 + + MI_Restricted_Substances + d50ee383-7a44-463f-b42b-c38a6c6bb6d3 + + Oil quenched & tempered at 425°C + Carbon steel, AISI 1040, oil quenched & tempered at 425°C + 1e5cd8b2-d920-4941-8f4e-7b859656f987 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + 9b183e4f-7788-4a74-a9e0-805a3aa2c821 + Mass + 100.0 + + + + + 8.84762875 + + MI_Restricted_Substances + 6ad310ec-db2b-43b1-afa1-9b6ddae5880c + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 94B30, oil quenched & tempered at 425°C + fcc06535-6584-46b3-85f4-06d2a1ca8b03 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + db527b24-9abe-4698-aae4-4a48e47960da + Mass + 100.0 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 7b80ef3d-93d3-4c79-a573-357a2a358a6b + Mass + 100.0 + + + + + + + 9.0 + 89.66935052 + 195a024b + part_195a024b-3e4f-4b19-bbad-f089cd62b2bf + 195a024b-3e4f-4b19-bbad-f089cd62b2bf + + + 76.57883007 + + MI_Restricted_Substances + 439e62b9-4268-44c6-a084-695412628448 + + water quenched & tempered at 425°C + Carbon steel, AISI 1095, water quenched & tempered at 425°C + 67b10f59-fbbc-4c3b-8944-0ef9570b59db + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 2d6d5a93-a89c-4d00-b5b8-db49fa9ebc05 + Mass + 100.0 + + + + + 4.68423398 + + MI_Restricted_Substances + ee5b018e-8d7f-4fb1-bad0-c73e871592bc + + 16Mo3, normalized + Low alloy steel, 16Mo3, normalized + 32a07b48-d0be-45e3-8e51-0f34a1c5907e + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 784bc120-d206-407b-b38f-31adfa10df74 + Length + 35.61911575 + + + + + 4.68423398 + + MI_Restricted_Substances + d50ee383-7a44-463f-b42b-c38a6c6bb6d3 + + Oil quenched & tempered at 425°C + Carbon steel, AISI 1040, oil quenched & tempered at 425°C + e39e44b3-6e2f-4be5-ae25-ad420f1a6299 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 3ce2aaba-d58e-48ba-8e89-c26b8897924a + Mass + 100.0 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 9f669457-a33c-4f78-8bb6-1841e5c149d6 + Mass + 57.05650199 + + + + + 4.68423398 + + MI_Restricted_Substances + fef7ffc8-9e47-4d80-abd6-138167e14e08 + + Oil quenched & tempered at 650°C + Carbon steel, AISI 1141, oil quenched & tempered at 650°C + e66aee7e-347b-4988-9e0b-bfcdc3a83dbe + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 27c37fbc-313f-483d-8e63-f496eb533762 + Mass + 100.0 + + + + + 4.68423398 + + MI_Restricted_Substances + ef0841e5-8fb9-46b4-aebb-deda5cb684ec + + SAE 8630, cast, quenched & tempered + Low alloy steel, SAE 8630, cast, quenched & tempered + 7b7fb783-ed2c-4847-b99e-daeb6d988eda + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + c031e592-e0e0-4af9-8fc3-9de1734131b7 + Mass + 18.83856315 + + + + + 4.68423398 + + MI_Restricted_Substances + 30d9edb0-09d2-4270-b4f5-8dceb44a6bd6 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1137, oil quenched & tempered at 540°C + 20ee1902-c282-4a50-92f6-2c9eacb73737 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 7e9cba50-9b50-439e-b58a-a458daa1e0d9 + MassRemoved + 97.32515867 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 5aa5f843-256e-4b4f-80aa-dd2b4e23e01a + MassRemoved + 3.2971255 + + + + + + + 6.0 + 23.2413665 + 14f0e1e4 + part_14f0e1e4-6765-4893-b03e-d2d1c17b8c71 + 14f0e1e4-6765-4893-b03e-d2d1c17b8c71 + + + 80.53063656 + + MI_Restricted_Substances + 90514ab4-75b3-48a9-9a07-98eb8f83ef81 + + As rolled + Carbon steel, AISI 1015, as rolled + 8e890dd5-0db6-4029-9435-1419f60aaa4f + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + f503fe00-672f-4ab5-82f5-a2aa8e08a5f9 + Mass + 100.0 + + + + + 2.78133763 + + MI_Restricted_Substances + d02817f7-7500-4fcb-8c34-40927da681a5 + + Quenched & tempered + Carbon steel, SA216 (Type WCC), cast, quenched & tempered + 514c71a8-0111-45cc-bdcc-522dee776a2d + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + f2e8ca05-a474-49f3-a82c-c093fe13ba1b + Mass + 100.0 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 3452d23d-9d95-4467-9863-c68df83acf57 + Mass + 100.0 + + + + + 2.78133763 + + MI_Restricted_Substances + 2a840794-eac4-4f77-90ba-f84bce518c0f + + Glass/phenolic honeycomb, 0°/90° fabric (0.055) + Glass/phenolic honeycomb, 0°/90° fabric (0.055), L Direction + bed81f2c-30e8-4eac-89b1-b4124a045c14 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + a8a45f5a-eead-4c40-b962-b6f711d06505 + Mass + 100.0 + + + + + 2.78133763 + + MI_Restricted_Substances + 853c3077-4ccc-4b2e-a5dd-86833072391f + + Borosilicate - 7040 + Borosilicate - 7040 + 225f24ae-df65-45e5-8d8a-1a0f2838f5e9 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 6ebce5ce-d522-424a-9f65-be0123e5b12c + Mass + 100.0 + + + + + 2.78133763 + + MI_Restricted_Substances + db238d75-fcb8-41f5-9289-83a352fa83a6 + + Annealed + Carbon steel, AISI 1015, annealed + b062ad8c-661d-447d-9ae2-5cc335062018 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 7160180b-1ce7-4223-b42c-2ba3efd257a9 + Mass + 100.0 + + + + + 2.78133763 + + MI_Restricted_Substances + fc29cc59-a670-4ad6-85a0-eb07bf011f1a + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 6150, oil quenched & tempered at 425°C + 79c6cff6-2005-4f5e-9970-4ecdabcdba03 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 7fa9eff0-d7d6-4027-8ae5-e9553d3961dc + Mass + 100.0 + + + + + 2.78133763 + + MI_Restricted_Substances + 9966da3f-c3f0-414e-9bce-4211a9eca2c3 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 8650, oil quenched & tempered at 425°C + 432ed0ab-8b6f-4207-855c-18fee527464a + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + c741e169-ad19-4998-9a3d-5b145647b204 + Mass + 100.0 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 47b4f5f2-84cd-4710-af7b-781e8cbb2468 + Mass + 100.0 + + + + + 2.78133763 + + MI_Restricted_Substances + 644fc87d-87f3-468c-9a88-b8e2db43ae6b + + water quenched & tempered at 650°C + Low alloy steel, AISI 4130, water quenched & tempered at 650°C + 183ed598-d9ff-459c-9384-b0d45dd21779 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + a030dd08-4257-44c8-b5bc-ae9bc3d431ca + Mass + 100.0 + + + + + + + 9.0 + 32.96755032 + + MI_Restricted_Substances + d89d67b6-c08f-47cb-b03a-4203cebfdf32 + + 00221385 + part_00221385-b3a7-46f9-aebd-3087369e83b7 + 00221385-b3a7-46f9-aebd-3087369e83b7 + + + 6.0 + 21.74270549 + 6c5f74ba + part_6c5f74ba-0b4a-4905-96ff-2ca89616bb58 + 6c5f74ba-0b4a-4905-96ff-2ca89616bb58 + + + 100.0 + + MI_Restricted_Substances + ddefbfb8-3b97-480b-887d-0ddadf161d95 + + YS350, cold rolled + High strength low alloy steel, YS350, cold rolled + d1fbfd45-2c54-40a3-bc7d-de35f6f526c6 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 49ae8788-cf29-4a3f-a545-16d8ae62529a + Area + 28.95021276 + + + + + + + 9.0 + 75.26814438 + e0926bb0 + part_e0926bb0-dc65-4c45-9456-7801829e6348 + e0926bb0-dc65-4c45-9456-7801829e6348 + + + 8.02956759 + + MI_Restricted_Substances + 29b76cdc-672e-4a1f-8f6e-a5644857c880 + + Normalized + Low alloy steel, AISI 4135, normalized + 0625ef7f-e6ef-4910-9974-14d8e7ffbf87 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + 567d9e98-4502-4648-b8b3-ef082fc0e233 + Length + 55.24514189 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 424ee1ae-6beb-4d22-b51e-e53b6159a395 + Length + 65.763432 + + + + + 91.9704324 + + MI_Restricted_Substances + 7b330562-a44d-4de7-8944-99c0b7b0d3e1 + + Quenched & tempered + Low alloy steel, AISI 8630, air melted, quenched & tempered + ee66e643-60b1-4a36-b83e-c56f8a3ac3b2 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 361bf8c7-4339-43e9-870e-3f0320c7f1ea + Mass + 100.0 + + + + + + + 4.0 + 25.96684085 + + MI_Restricted_Substances + a0987114-e9d2-4390-9d0f-e47283d2f4d0 + + f45dac5d + part_f45dac5d-02aa-4f5f-bfa7-35598d01e8f9 + f45dac5d-02aa-4f5f-bfa7-35598d01e8f9 + + + 1.0 + 65.16250863 + + MI_Restricted_Substances + 80083213-3621-42c0-9e23-cdaa30c759e6 + + 24a1ba54 + part_24a1ba54-01ac-4d58-936c-e842059a983c + 24a1ba54-01ac-4d58-936c-e842059a983c + + + 7.0 + 53.29895594 + b780524b + part_b780524b-e786-4e66-be8b-6fbbafc3f87a + b780524b-e786-4e66-be8b-6fbbafc3f87a + + + 92.57692377 + + MI_Restricted_Substances + 475d8bcb-500e-44b5-90be-8a095f5ab07a + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 4140, oil quenched & tempered at 425°C + 9d572329-af29-4a6d-ac29-60fa58766512 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 0a91caa4-8765-4ece-b073-d8f1f6ab1cb1 + Mass + 100.0 + + + + + 3.71153811 + + MI_Restricted_Substances + 1556b3f0-3dc4-44ab-83b2-87712f9bfa12 + + Oil quenched & tempered at 650°C + Carbon steel, AISI 1080, oil quenched & tempered at 650°C + cf52a155-53ef-451c-8360-0d869f854d6e + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + a6929cda-f7db-4523-ac1f-1ddbb79f43a2 + Mass + 100.0 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 05e0caa4-c084-44cd-be3b-4843a77b771e + Mass + 100.0 + + + + + 3.71153811 + + MI_Restricted_Substances + b10ab099-72fd-4e47-9274-015a08f619c2 + + Annealed + Low alloy steel, AISI 5160, annealed + de9272d8-4023-4cff-ade0-8b878a046467 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 8f56072b-43c9-400b-8c5b-e67d98543ea7 + Mass + 100.0 + + + + + + + 8.0 + 89.3239689 + e32026d2 + part_e32026d2-7426-453f-9f94-00e6a7129fb9 + e32026d2-7426-453f-9f94-00e6a7129fb9 + + + 63.92372318 + + MI_Restricted_Substances + a7ada434-62e4-411d-9c85-56dd9d44f094 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 4037, oil quenched & tempered at 425°C + 1591d1c1-f69a-4920-b545-e756b25efa02 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + b4d92019-dff1-4dd2-983f-4245e08b6729 + MassRemoved + 15.28163995 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 141a817e-ba3d-48a5-a2a1-6b2aeb1dd775 + MassRemoved + 97.20490993 + + + + + 18.0381384 + + MI_Restricted_Substances + 1a53b354-59b1-4129-a78d-0bfe95923541 + + Normalized + Carbon steel, AISI 1117, normalized + 54a22a08-9d3d-41be-a178-7bfea1c0def2 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + a580dffc-d62a-4f65-8eca-1a96dc2bab28 + Mass + 100.0 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 65585d20-e1c8-4fc2-adb5-23241e9f0c2c + MassRemoved + 75.32668168 + + + + + 18.0381384 + + MI_Restricted_Substances + af4f67b9-f5a7-4fc3-9f1d-da3309e4b19a + + Solution treated & aged + Iron-base-superalloy, Cr-Ni alloy, A-286, solution treated & aged + f7524499-f199-4c35-acee-8b946572cba5 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + 340f4f86-69e5-4f05-8788-2b0869a01cd2 + Area + 12.00686167 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + 6fef669b-ccb3-43cf-9954-02254a164867 + Mass + 100.0 + + + + + + + 3.0 + 38.09654965 + e9e99fb0 + part_e9e99fb0-50c3-47a8-adb5-23809d70c70d + e9e99fb0-50c3-47a8-adb5-23809d70c70d + + + 87.23260699 + + MI_Restricted_Substances + ca72e2f5-a1d0-4bb0-b612-ed5bc26a4f70 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 9255, oil quenched & tempered at 205°C + 47e5ed4b-71bd-44d3-b97d-2a1dbe69dfcc + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + e0ef29af-af9e-4bd7-944e-f5b0b133a5a0 + Mass + 100.0 + + + + + 1.82391328 + + MI_Restricted_Substances + ce68d49d-fe57-4723-8f98-557cd3558504 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 5130, oil quenched & tempered at 205°C + e618c697-f36c-4e11-84d4-e85497c3688c + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 7e30a310-fa69-4545-ab39-35fc44b41dcd + Mass + 100.0 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + 8797b082-90f7-4d9e-8019-de8abe847279 + Mass + 100.0 + + + + + 1.82391328 + + MI_Restricted_Substances + a8bcc71d-ff19-40c8-9520-f11553c604d2 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 5140, oil quenched & tempered at 650°C + c94214b9-09c7-4c4f-b9c4-afe7d09b77e1 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 874b120c-0b48-493a-b02d-e92c3b98d73b + Mass + 100.0 + + + + + 1.82391328 + + MI_Restricted_Substances + 63d5d6b5-3b52-4cd9-a56f-6e7c5c945139 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 81B45, oil quenched & tempered at 315°C + e2fe75b0-1acc-4f11-a21b-311175a51273 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + c568c62a-1fec-4afc-b7de-314cd0c0d04a + Area + 57.15980881 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 30220a65-a1b4-4785-b503-01ba788bc54c + Mass + 100.0 + + + + + 1.82391328 + + MI_Restricted_Substances + 00268f25-08c7-4add-91f3-3cc4ed1d7e34 + + Oil quenched & tempered at 425°C + Carbon steel, AISI 1141, oil quenched & tempered at 425°C + 7270e0db-6963-46f6-aa14-2d3bf76e8e14 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + f85671b9-370d-4034-bc4f-91e9b2645d55 + Mass + 100.0 + + + + + 1.82391328 + + MI_Restricted_Substances + 31098687-aa58-4d56-99a0-f005a0258573 + + Glass/phenolic honeycomb, 0°/90° fabric (0.192) + Glass/phenolic honeycomb, 0°/90° fabric (0.192), L Direction + 458fc706-f4c8-4840-bc3b-a6e5de550e85 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + c838b879-07b5-4680-9e88-603b597a4539 + Mass + 100.0 + + + + + 1.82391328 + + MI_Restricted_Substances + d7980de6-355d-48d2-93d7-471e3ef3b2cf + + Glass/phenolic honeycomb, ±45° fabric (0.032) + Glass/phenolic honeycomb, ±45° fabric (0.032), L Direction + 844def21-3a0f-425a-8e15-cf610855ec9e + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 62e6ab6e-6064-4c9c-ba09-ae7d2b2e3592 + Mass + 100.0 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 34028294-f961-400d-953c-7f2540574fe2 + Length + 76.69111619 + + + + + 1.82391328 + + MI_Restricted_Substances + b4c065d7-6405-44fb-82cf-24ca2072f5c9 + + 300M (high carbon), quenched & tempered + Low alloy steel, 300M (high carbon), quenched & tempered + f1e42820-36e3-45dc-8a88-377a62883605 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 574de17d-5db5-4608-a946-68638b80c028 + Mass + 100.0 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 0506eeaf-1da0-44f5-9afa-4c873de9c3e6 + Length + 27.84875115 + + + + + + + 5.0 + 11.74897929 + 3e10fad4 + part_3e10fad4-becd-452d-847f-d3d359bca87f + 3e10fad4-becd-452d-847f-d3d359bca87f + + + 90.28080966 + + MI_Restricted_Substances + 9d224642-fb07-41ce-8191-c9b152122364 + + Quenched & tempered + Intermediate alloy, Fe-9Ni-4Co-0.30C steel, quenched & tempered + f4e5f17e-5646-404e-8cad-9fb8b98b4b1f + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + b2f45626-87b6-4f1b-b78e-7fe6cd1b992b + Mass + 100.0 + + + + + 3.23973011 + + MI_Restricted_Substances + 8dc38bb5-eff9-4c60-9233-271a3c8f6270 + + Kovar, annealed + High alloy steel, Kovar, annealed + 19f5d901-382d-4eb3-a83e-a22dc1973b31 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + b80711d1-5204-4ad6-8a75-c7faf5917347 + Length + 31.37538751 + + + + + 3.23973011 + + MI_Restricted_Substances + 1d9c8629-4a1d-4aaf-bb7c-ba7a97eef5f5 + + Normalized + Carbon steel, AISI 1340, normalized + e1c1b24a-48a4-4be7-8924-fd96253f0c4f + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 897bd7db-049a-4516-8474-7114d5eb7c5b + Mass + 100.0 + + + + + 3.23973011 + + MI_Restricted_Substances + b35cf8d2-52a2-4761-b692-efabffabb0a6 + + As rolled + Carbon steel, AISI 12L14, as rolled + b4fc954b-520d-40b3-a2ef-6129530dc340 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 3e166ff8-b82b-45fc-bc26-05adf6858d0c + Mass + 100.0 + + + + + + + 4.0 + 18.43463262 + a493414a + part_a493414a-2c8e-457d-9c57-94cadceaacd5 + a493414a-2c8e-457d-9c57-94cadceaacd5 + + + 21.46049184 + + MI_Restricted_Substances + a01be0be-96e7-4123-b061-dfdbba1f1748 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 4037, oil quenched & tempered at 315°C + 6f490b8a-1bb1-4ed9-9273-2535d138e992 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + fb0c9722-d432-4d8e-8b46-eeb9a90400ae + Mass + 100.0 + + + + + 39.26975407 + + MI_Restricted_Substances + db7d255c-6269-4097-a5aa-e18a13019915 + + FR-4.0 (Df < 0.01 at 10GHz), Epoxy/Glass fiber, PCB laminate + FR-4.0 (Df < 0.01 at 10GHz), Epoxy/Glass fiber, PCB laminate + 6205bae6-cadd-45e7-aba1-c3f660389d5c + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 4c328ecd-d9fb-45aa-bff7-f8f8563c873c + Mass + 100.0 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 0da2f37f-a727-4c85-ac8e-52bde6211587 + Mass + 100.0 + + + + + 39.26975407 + + MI_Restricted_Substances + f65c5c4d-fbd1-4a54-8172-d3aba34c4c3a + + Annealed + Low alloy steel, AISI 4340, annealed + a1d20d36-f931-429d-a4f7-9a53c6acfd09 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 210b2098-6b44-467e-bb47-1f6d51c42e8b + Mass + 100.0 + + + + + + + 5.0 + 63.5194815 + b74fe856 + part_b74fe856-1cfa-4217-a3ac-a311a27d7aa9 + b74fe856-1cfa-4217-a3ac-a311a27d7aa9 + + + 94.4247669 + + MI_Restricted_Substances + 3e7feb56-09b4-498c-9966-c13b33dedccd + + water quenched & tempered at 205°C + Carbon steel, AISI 1137, water quenched & tempered at 205°C + fdc736a6-eeed-4531-b299-b3286941f188 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + 49206114-ba04-4d29-9247-c0a62fb3da8b + Mass + 100.0 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + be9698e6-9653-4c5d-a642-b120dd4d8fc2 + Mass + 100.0 + + + + + 1.85841103 + + MI_Restricted_Substances + f65c5c4d-fbd1-4a54-8172-d3aba34c4c3a + + Annealed + Low alloy steel, AISI 4340, annealed + afa33e0e-ea40-434d-9e1e-e027575a3962 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + e8633a1f-f4b1-4273-86a1-c1abfaa2169b + Mass + 100.0 + + + + + 1.85841103 + + MI_Restricted_Substances + 6d658600-d198-46ed-bcca-cd0e3e2f5f4d + + Oil quenched & tempered at 425°C + Carbon steel, AISI 1060, oil quenched & tempered at 425°C + fd950d24-e9d5-49ba-88b2-2eab4f6676fc + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 5200ca4d-b9a1-4b75-b110-d3e6bbcfc2e9 + Mass + 100.0 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 0c8c7d8c-abef-45ba-b45d-9d46600da479 + Area + 4.66323769 + + + + + 1.85841103 + + MI_Restricted_Substances + aec2777b-f126-4f12-b748-b94bf7393f2a + + Oil quenched & tempered at 650°C + Carbon steel, AISI 1060, oil quenched & tempered at 650°C + 79efa484-5232-4d43-89cc-4df07b2f7710 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + f2b9be9c-065a-4cb7-bb3a-91d15c0da6a2 + Mass + 100.0 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 59d4441e-0d49-454f-8792-5ed9e1077e55 + Mass + 100.0 + + + + + + + 4.0 + 77.08067888 + e4846aaa + part_e4846aaa-7030-44d8-86a2-6d16f9870dfe + e4846aaa-7030-44d8-86a2-6d16f9870dfe + + + 22.16250864 + + MI_Restricted_Substances + 5dbabc2e-4263-4458-abe1-31a2ece9e122 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 5160, oil quenched & tempered at 425°C + a85e8b0c-629b-492f-9e8f-b722a47356bb + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 468a3b3e-a3a3-4eb3-b340-f061f8c02506 + Area + 97.57666215 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 29b6840a-3421-4551-a038-0d4c71805cb8 + MassRemoved + 31.97802865 + + + + + 15.56749827 + + MI_Restricted_Substances + 9d224642-fb07-41ce-8191-c9b152122364 + + Quenched & tempered + Intermediate alloy, Fe-9Ni-4Co-0.30C steel, quenched & tempered + 4d3f486c-0f70-4522-9fbe-098b92bb9fbd + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + a54b7ead-0c88-4e24-9b62-d62c7fff051f + Mass + 100.0 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 5c11af00-f631-4998-ba25-9f61da956951 + Mass + 100.0 + + + + + 15.56749827 + + MI_Restricted_Substances + 3427457c-2b3d-4a7e-adbc-40fddd4c1f0e + + Normalized + Carbon steel, AISI 1020, normalized + d8bb7304-72ad-4659-a203-bb9538a5f4c2 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 4c4b4778-7bc0-4218-a370-1e68bd6124d9 + MassRemoved + 22.08269681 + + + + + 15.56749827 + + MI_Restricted_Substances + ddefbfb8-3b97-480b-887d-0ddadf161d95 + + YS350, cold rolled + High strength low alloy steel, YS350, cold rolled + d97b1f11-dbd3-4d5b-adc3-7a341c0102e2 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 47bbacde-0746-4420-bcb2-0868ce452618 + Mass + 100.0 + + + + + 15.56749827 + + MI_Restricted_Substances + b0c0246d-7238-46e4-9081-5bad34efbbdb + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 5140, oil quenched & tempered at 205°C + 6286beb2-d177-41cb-ba24-9907a04f02f7 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + eeae8e7f-b263-4993-bace-18b73e205c15 + Mass + 100.0 + + + + + 15.56749827 + + MI_Restricted_Substances + 0c172430-369d-48ad-910e-69fe1451a36e + + Normalized + Carbon steel, AISI 1095, normalized + a73f6675-eaa3-4004-9b77-6c49339c9ff3 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + e81a0263-0def-4aea-a0d6-e90ab2aa8b88 + Mass + 100.0 + + + + + + + 8.0 + 81.06857961 + + MI_Restricted_Substances + 2c677abc-5da2-4b21-9ce7-1d4e1cc0fb1c + + b5bf3503 + part_b5bf3503-c2cb-4a72-9c0f-7376cb2517d4 + b5bf3503-c2cb-4a72-9c0f-7376cb2517d4 + + + 3.0 + 15.70091318 + 8210398c + part_8210398c-aaf0-43f7-a5ff-df80e79cf3ee + 8210398c-aaf0-43f7-a5ff-df80e79cf3ee + + + 69.63297346 + + MI_Restricted_Substances + 546a4247-5e3b-4adb-bc7e-3fc87f992447 + + Glass/phenolic honeycomb, 0°/90° fabric (0.055) + Glass/phenolic honeycomb, 0°/90° fabric (0.055), W Direction + 44a3e2c7-4127-4455-8f81-cde7273288ee + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 77287849-ec77-4920-b347-7256e0fafd43 + Mass + 100.0 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 5595bcbe-fef5-422e-81b1-22d819f4917e + Mass + 100.0 + + + + + 3.79587831 + + MI_Restricted_Substances + 4b01d1e1-0f4c-4861-a797-7ea504ca38c4 + + Annealed + Low alloy steel, AISI 5150, annealed + 0cbaebc3-d894-4c2c-a8b7-fe3550381f20 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 08103bd5-a39d-4af5-9831-86999d865808 + Mass + 100.0 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + a8f6049b-2e2c-4238-b19a-d60b2fe5cbea + Mass + 100.0 + + + + + 3.79587831 + + MI_Restricted_Substances + 6f9ce415-05a1-4774-bf1d-8952ab0f7306 + + Annealed + Low alloy steel, AISI 3140, annealed + b0d2f6dc-8f7c-4edc-b53f-1b3e2483b7eb + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 1b54f288-298c-4025-834a-c8f51d922266 + Area + 48.80012136 + + + + + 3.79587831 + + MI_Restricted_Substances + 75a1c963-399c-444d-a38f-1929c00d15b7 + + Normalized + Low alloy steel, AISI 4150, normalized + 6de439af-fed7-4b77-973f-6ea42f142d38 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + a802bf5c-7424-4c38-82ee-265472c023c5 + Mass + 100.0 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + b84fda56-2306-4a38-96bd-24cce1cc5d42 + Mass + 100.0 + + + + + 3.79587831 + + MI_Restricted_Substances + c2db0402-57c5-422f-b8c1-470fc9c6a9c8 + + Glass/phenolic honeycomb, 0°/90° fabric (0.112) + Glass/phenolic honeycomb, 0°/90° fabric (0.112), W Direction + ecb55168-b41b-43ca-9618-4429d50c25eb + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 469406a2-91cb-4ab4-b28a-c67acccb0730 + Mass + 100.0 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 8a073186-2e0a-4fe8-9785-facda396fce6 + Area + 11.15003051 + + + + + 3.79587831 + + MI_Restricted_Substances + f931cdfe-568b-40b5-b238-ea22a815f312 + + ASTM A537 Class 1, normalized + Structural steel, ASTM A537 Class 1, normalized + 9adb933b-500f-4d0d-b6a8-36e2d08596a6 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + e4ec61b6-3156-44e2-b462-3b57835e8327 + MassRemoved + 7.83638977 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + bc141ac6-6115-40a5-a0a9-188282d60cd2 + Mass + 100.0 + + + + + 3.79587831 + + MI_Restricted_Substances + 04970b9b-7242-4f31-9a78-dee5e31ed341 + + As rolled + Carbon steel, AISI 1030, as rolled + 088be378-469c-495e-9909-523886534fef + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 21d7fd53-6d96-42d6-84e1-abb6c2c4e829 + Mass + 10.23056977 + + + + + 3.79587831 + + MI_Restricted_Substances + 1a90238a-48c1-429a-83fc-e88d2c04dd94 + + Normalized + Low alloy steel, AISI 4140, normalized + 5048e052-f782-4b3a-b448-7bd7f648ea89 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + e170480f-259c-4407-a309-b0ea170503e1 + Mass + 100.0 + + + + + 3.79587831 + + MI_Restricted_Substances + 79e715fe-fa1c-4bd9-9c99-83e41d74d87d + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 8630, oil quenched & tempered at 650°C + ed498724-7704-41fb-b943-86037c9ed2bb + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 02e846ea-584c-4a29-a82e-9067a7f01c9d + Area + 73.9686128 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + e46e3ef9-69c9-44a0-bce9-87b1a96ceb91 + Mass + 100.0 + + + + + + + 3.0 + 65.04590705 + a457a7d2 + part_a457a7d2-a39c-4699-b2c4-cbc0fbaef423 + a457a7d2-a39c-4699-b2c4-cbc0fbaef423 + + + 89.82276692 + + MI_Restricted_Substances + 9c05e644-9257-4778-9c68-be0cff6f58b5 + + Annealed + Low alloy steel, AISI 8620, annealed + 94841a1a-6b1f-4db6-89c7-16a566c68bb2 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 7b18f2a9-1949-42ad-9001-8f14be8f579b + Mass + 100.0 + + + + + 2.54430826 + + MI_Restricted_Substances + df40828d-d5c3-4a43-9f00-5de867f4f406 + + Normalized + Low alloy steel, AISI 4320, normalized + c5185d73-1569-4b14-a7f9-fdf4ff504f2b + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 8f29bf51-4fa8-4e4f-bb35-c49d08a40800 + Mass + 100.0 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + a15f246e-0d91-4685-9f92-365acfcd9c75 + Mass + 100.0 + + + + + 2.54430826 + + MI_Restricted_Substances + ef4e19ac-4c9c-4fc1-b971-3ce21de330a2 + + Glass/polyimide honeycomb, ±45° fabric (0.128) + Glass/polyimide honeycomb, ±45° fabric (0.128), W Direction + 1605cb26-7283-4069-a6ac-a5dade1e63ae + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + b5855ad8-769a-40f5-8bba-1ee6824f19a3 + Mass + 100.0 + + + + + 2.54430826 + + MI_Restricted_Substances + a6ee4feb-80c5-43a7-b3ee-a1423218f502 + + AF1410 + High alloy steel, AF1410, solution treated & overaged + 671a69d9-6c2b-409c-8196-30e3e97636d1 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 461f3020-5fe4-4eeb-a2ac-359a8eea06a1 + Mass + 100.0 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 75de2e44-2518-4212-b68b-cd5f68eb0842 + Mass + 100.0 + + + + + 2.54430826 + + MI_Restricted_Substances + 33160988-8422-40e2-93d1-e3e7467eafe9 + + Normalized + Carbon steel, AISI 1030, normalized + 65ec1327-8d01-4d68-a55c-a5f04b293114 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 4d03e670-e7b0-4ca6-8f6f-509eb916e02a + Mass + 100.0 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 5d9e5486-9b0c-460d-8224-e9c25d8a2b17 + Mass + 100.0 + + + + + + + 9.0 + 95.03258797 + c931aa13 + part_c931aa13-732d-4318-bed3-68ce005aee06 + c931aa13-732d-4318-bed3-68ce005aee06 + + + 16.33570683 + + MI_Restricted_Substances + b869cbb1-f68c-4d4a-ba09-c5ac060f1e31 + + Normalized + Low alloy steel, AISI 4620, normalized + ff67b556-303c-40af-a97f-17331d556521 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + ee824d43-d43c-4944-a23f-5a21aab9e2ca + MassRemoved + 19.78721274 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 07ea8c41-6dc7-427b-929a-e9c0956b9886 + Mass + 100.0 + + + + + 13.94404886 + + MI_Restricted_Substances + aa963e30-fca0-439d-bee2-ff48daa946f3 + + As rolled + Carbon steel, AISI 1095, as rolled + 8016f162-1c68-443a-b881-717f1e33eda2 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + 2d8fc038-9b33-406e-91f0-54703ecdfe0f + Mass + 100.0 + + + + + 13.94404886 + + MI_Restricted_Substances + 7a62318a-eff2-4f36-9925-ee919c5b4369 + + S235J + Structural steel, S235J + ccd91f23-7ae8-4927-be26-8bebe007d4e3 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + aa58fc1a-fd0d-402f-848b-01fe8c32e24f + Mass + 100.0 + + + + + 13.94404886 + + MI_Restricted_Substances + 3b818b25-e6de-4e5c-b546-e97c68e10225 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 5046, oil quenched & tempered at 650°C + 43af60f5-260b-44d2-92a1-87f7febe4590 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + e441cf67-84b9-4aa5-9ffa-b4bbd7081a53 + Mass + 100.0 + + + + + 13.94404886 + + MI_Restricted_Substances + c372db87-c3ae-4ef1-a9e5-defa1160f895 + + Glass/phenolic honeycomb, 0°/90° fabric (0.112) + Glass/phenolic honeycomb, 0°/90° fabric (0.112), L Direction + e95ea201-68e6-41af-80fd-7d9a92ae3f6d + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + c2368517-a0cf-417c-b548-107832a0178e + MassRemoved + 7.3714083 + + + + + 13.94404886 + + MI_Restricted_Substances + 3e7feb56-09b4-498c-9966-c13b33dedccd + + water quenched & tempered at 205°C + Carbon steel, AISI 1137, water quenched & tempered at 205°C + 87ec12a7-8cdd-4174-90ae-31a82bfce945 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + bb565928-1afb-49e8-8d4d-ee54fa3bd189 + Mass + 100.0 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + a889bc2d-0015-4165-a4fb-e5d1d837966f + Length + 15.51547218 + + + + + 13.94404886 + + MI_Restricted_Substances + 0840d007-df07-4e12-bda5-bfc060fb15e6 + + Annealed + Low alloy steel, AISI 4320, annealed + e94f9a80-5706-448a-846d-d6055c096ce5 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 5a324b5b-9b75-422b-badd-c6f6addc1fdd + Mass + 100.0 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 6456b4f8-63df-4346-b43a-d5904364e259 + Mass + 100.0 + + + + + + + 8.0 + 41.16695194 + + MI_Restricted_Substances + 3d4d35cd-1db3-477c-8f3f-b90800ea1c4d + + d98fa79d + part_d98fa79d-9a65-4010-8c95-627aef9463a7 + d98fa79d-9a65-4010-8c95-627aef9463a7 + + + 9.0 + 45.09621748 + 4c6fcfd8 + part_4c6fcfd8-27aa-418b-bc49-d1829aac31f2 + 4c6fcfd8-27aa-418b-bc49-d1829aac31f2 + + + 33.18648162 + + MI_Restricted_Substances + d7980de6-355d-48d2-93d7-471e3ef3b2cf + + Glass/phenolic honeycomb, ±45° fabric (0.032) + Glass/phenolic honeycomb, ±45° fabric (0.032), L Direction + b921b8b4-2c86-4bee-a0b7-c67d943ab3e9 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + baa7ae9f-bf5f-4b8d-b3da-a2eb6dabbffb + Mass + 77.40122795 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 8ccf56ed-6624-4eeb-a014-3496d03c4eea + Mass + 39.09439683 + + + + + 9.54478833 + + MI_Restricted_Substances + ab895171-8c16-4056-9062-78f7516be1b0 + + Borosilicate - 7050 + Borosilicate - 7050 + ca2ea373-9e27-4b69-aef4-519281dce6c9 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + f4f5493c-af77-431e-84b8-dc5839542adc + Area + 57.21336759 + + + + + 9.54478833 + + MI_Restricted_Substances + 53268754-75cd-4016-8ed0-2577d32f766e + + As rolled + Carbon steel, AISI 1060, as rolled + 100eb4bb-59fd-4daf-8719-c5616d4e2aa5 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 4687d55a-1e3d-4a18-b3d9-5aa80b0df836 + Mass + 100.0 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 780cc4b7-361a-46e6-8119-4a016124f789 + Area + 17.55030086 + + + + + 9.54478833 + + MI_Restricted_Substances + a22f3160-83fe-4a55-8459-26e3f8647523 + + 55% glass and mineral filled + PARA (55% glass and mineral filled) + 5f210b37-d70c-42ae-81ef-8eee2decaa73 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 5b2b9ce6-2c6a-4041-904f-9d8860044acd + Mass + 100.0 + + + + + 9.54478833 + + MI_Restricted_Substances + c372db87-c3ae-4ef1-a9e5-defa1160f895 + + Glass/phenolic honeycomb, 0°/90° fabric (0.112) + Glass/phenolic honeycomb, 0°/90° fabric (0.112), L Direction + e0ec696c-370a-4840-b698-797569a24214 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 12522387-7f5d-429f-b2e3-2800e05fe4f9 + Mass + 100.0 + + + + + 9.54478833 + + MI_Restricted_Substances + f508194e-6de7-4b6d-9f6f-7edb9addb85e + + Normalized + Carbon steel, AISI 1025, normalized + 7d6d4b93-fe09-48f6-90ca-06060782d354 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 7415b6b0-5d98-44a7-83f1-e6ac5e820c5c + Length + 25.46962444 + + + + + 9.54478833 + + MI_Restricted_Substances + bb5f06fe-89ba-4708-8639-2e15c5c1cc4c + + Glass ceramic - 0330 + Glass ceramic - 0330 + 61a17a52-00f5-49ea-a68c-201eee68b1e8 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 4dd9c8a6-a70c-4b6a-a543-ba7104ade0ff + Mass + 100.0 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 75680045-166d-4bf3-8184-e7f46c3f2eb5 + Mass + 100.0 + + + + + 9.54478833 + + MI_Restricted_Substances + f05d84ea-b8e2-46d1-83a4-577038c5ed32 + + As rolled + Carbon steel, AISI 1040, as rolled + c74fc6fa-d1f5-4e4c-9807-045bd5eb53ac + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 726ff067-da3a-4633-83eb-03a663c2431d + Length + 29.97018035 + + + + + + + 1.0 + 94.82192126 + 45c3c5aa + part_45c3c5aa-ca54-4e38-8b94-588d5d0dba7a + 45c3c5aa-ca54-4e38-8b94-588d5d0dba7a + + + 55.93831867 + + MI_Restricted_Substances + b1b14aff-8354-447c-9883-df4969a517a3 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 86B45, oil quenched & tempered at 315°C + d662fd50-7be2-4186-b04a-5c25a06b3e1f + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 6a575f86-25e6-4e12-ac46-c5e557ade046 + Mass + 11.8921008 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 06b27a1d-2427-43cd-a637-13aa583eb8f8 + Area + 94.38277752 + + + + + 11.01542033 + + MI_Restricted_Substances + b47d0104-e07a-4ebb-a481-18bc330d2ace + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 4340, oil quenched & tempered at 205°C + 9f48b8cd-31f7-4443-be9d-59b42767a0cf + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + b6d56b98-fc3d-4922-908c-8f0d147ce118 + Mass + 100.0 + + + + + 11.01542033 + + MI_Restricted_Substances + aa4540cb-3277-459f-a69a-ca324ddd0125 + + Glass ceramic (N0) + Glass ceramic (N0) + 700295de-ff35-4c30-8b51-085ebb8b4c7c + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 7febd832-fac7-41a3-9812-b041b38cdbad + Area + 39.83770801 + + + + + 11.01542033 + + MI_Restricted_Substances + a68201e5-218b-4387-9e30-d1332ccfa44f + + Oil quenched & tempered at 315°C + Carbon steel, AISI 1340, oil quenched & tempered at 315°C + baa90fa4-3ffb-45e4-b9f9-237e6a8d2c65 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + 21872dd4-8a64-40a3-931b-85ded9a7a9a7 + Length + 69.83159942 + + + + + 11.01542033 + + MI_Restricted_Substances + 9c05e644-9257-4778-9c68-be0cff6f58b5 + + Annealed + Low alloy steel, AISI 8620, annealed + 23bf3ceb-5f97-4862-bc95-47d220e98e6a + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + e6cce66e-28ef-43e1-88c4-c5573ee824d5 + Mass + 100.0 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + aca5a0a2-aea6-4028-b812-8e0953fad5f7 + MassRemoved + 42.47257478 + + + + + + + 4.0 + 22.14399903 + 36c649b1 + part_36c649b1-a957-4f0a-ba12-f99623733e3b + 36c649b1-a957-4f0a-ba12-f99623733e3b + + + 75.29265711 + + MI_Restricted_Substances + 9ecfadb9-f61f-48b3-81b1-bcac80eb164f + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 4150, oil quenched & tempered at 315°C + 6de93e26-7f8a-4644-9ff1-d3ba8341b247 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + d84d74df-f777-4b5b-834a-08953934bece + Area + 68.68452018 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 78c6e9f8-ae12-46bf-93bf-b26034c025d5 + MassRemoved + 39.2636717 + + + + + 4.94146857 + + MI_Restricted_Substances + 1851a6ff-c2e6-4bc6-ab7a-a0eae431e281 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 5140, oil quenched & tempered at 540°C + 9dd9ceb8-e619-481b-8f99-076e8df0fa8f + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 677be290-d4e2-4ccc-b422-8e3e88169e90 + Mass + 100.0 + + + + + 4.94146857 + + MI_Restricted_Substances + 192eb301-460f-4dc8-82ec-d451fef09827 + + Glass/polyimide honeycomb, ±45° fabric (0.064) + Glass/polyimide honeycomb, ±45° fabric (0.064), W Direction + ab9dfcac-de94-44b3-9b12-2a3ef82ccdef + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 6f8a024d-ef38-4303-b6f9-898348a5e05a + Mass + 100.0 + + + + + 4.94146857 + + MI_Restricted_Substances + 0afa77bf-df9b-456c-8c48-3c84b1ccd2e0 + + Low density glass-sphere filled + Bisphenol molding compound (low density glass-sphere filled) + 4287941f-36b4-4feb-a928-4d8803bacdc4 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + a16d8051-7432-4c1f-92db-6407d3666b77 + Mass + 100.0 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 00e31473-0e80-4da8-98cc-86c07e300c50 + Mass + 100.0 + + + + + 4.94146857 + + MI_Restricted_Substances + 8db72069-1e87-4b0f-84bc-cddf9ad19b4b + + water quenched & tempered at 540°C + Carbon steel, AISI 1050, water quenched & tempered at 540°C + 95c74639-f319-44b9-a88a-f3f6689e01d9 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + df367a5b-4d55-4e42-854c-1713dbee2576 + Area + 84.9771472 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + d459c727-3664-4f98-be9b-a715dba56277 + Mass + 100.0 + + + + + 4.94146857 + + MI_Restricted_Substances + 2ad846d3-e112-42bc-bee5-4ac11e7492ba + + 250, maraged + Maraging steel, 250, maraged at 482°C + ccb33e25-61bc-43fc-87e2-1f5b739229c5 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + ab68e333-a7ab-46fc-8e66-623bbce05a06 + Mass + 100.0 + + + + + + + 7.0 + 41.74873421 + + MI_Restricted_Substances + 3d4d35cd-1db3-477c-8f3f-b90800ea1c4d + + 412e9d69 + part_412e9d69-8ccd-4db8-8d6e-0a19595b0ff3 + 412e9d69-8ccd-4db8-8d6e-0a19595b0ff3 + + + 1.0 + 11.77719585 + 4e07a4e4 + part_4e07a4e4-4b6b-4ab0-8a9a-85018488472c + 4e07a4e4-4b6b-4ab0-8a9a-85018488472c + + + 12.89145383 + + MI_Restricted_Substances + a83cb894-badf-47de-8aff-fe75bbb39ecd + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 81B45, oil quenched & tempered at 540°C + eada61b3-01ac-4ca6-96e6-99432b545b10 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 6c78e14e-8ba5-42ff-9feb-31af60a6ea6b + Mass + 100.0 + + + + + 87.10854616 + + MI_Restricted_Substances + b10ab099-72fd-4e47-9274-015a08f619c2 + + Annealed + Low alloy steel, AISI 5160, annealed + 9b3c225b-6927-4dab-a909-c0e78ab38bc5 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 2aafe353-9cdf-4ae7-81e7-c845c22c7730 + Mass + 100.0 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 7d9c749c-032c-4014-aee3-a19dc9c8a2a1 + Length + 65.22252348 + + + + + + + 7.0 + 65.29806324 + 02b9158f + part_02b9158f-ac57-451b-9ddc-59cd2a3d09f2 + 02b9158f-ac57-451b-9ddc-59cd2a3d09f2 + + + 86.08320112 + + MI_Restricted_Substances + 1f39574e-b571-4f15-b7c2-4e54411e3fb3 + + water quenched & tempered at 650°C + Carbon steel, AISI 1137, water quenched & tempered at 650°C + b2f3992f-70f4-4393-9844-f9be4fcc6328 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + a84924f5-ad44-40e5-a1f3-40b87133ee26 + Mass + 100.0 + + + + + 1.98811412 + + MI_Restricted_Substances + bf6aa85b-3059-4b2c-86af-6bcb1996d5b9 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1340, oil quenched & tempered at 540°C + 4df2873d-97ea-482c-be3b-979c3995435f + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 3727beb1-0b8c-4891-af51-a924119ec964 + Mass + 100.0 + + + + + 1.98811412 + + MI_Restricted_Substances + e5cb0b28-b074-4eb6-95ab-12e8692a87ea + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 50B60, oil quenched & tempered at 540°C + d17ef8cd-535b-498b-b313-5cac5ec78787 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + 6c3f805b-239f-4836-a730-a6ce31a6bd49 + Mass + 100.0 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 1bfc3801-dd97-4bdb-bba3-5e0eef8601ab + Mass + 100.0 + + + + + 1.98811412 + + MI_Restricted_Substances + 72799627-a7c0-4df4-8250-e2be8538565f + + Glass ceramic (N11) + Glass ceramic (N11) + 5e286efa-b710-4d5b-b2c2-2f397ab0e46b + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 51f4a553-0c62-4c9f-9522-dd1f3853dbd4 + Mass + 100.0 + + + + + 1.98811412 + + MI_Restricted_Substances + 8cd50236-3f00-4460-9e77-bc85138f34c4 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 51B60, oil quenched & tempered at 425°C + 32c4e3ad-6c13-40b8-b0cd-bc939c807c5f + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + e4dab1ed-d5a8-43d4-b4a5-f1dbf2d7a376 + Mass + 100.0 + + + + + 1.98811412 + + MI_Restricted_Substances + 8be87fd7-f406-4a50-9150-2a29e4a26bfa + + Aluminoborosilicate - N51a + Aluminoborosilicate - N51a + bfa70fef-d853-42a4-b83d-73289e70c987 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + ce19d434-3eee-4e4b-9a47-ee280c1b7c83 + Mass + 100.0 + + + + + 1.98811412 + + MI_Restricted_Substances + 7c0b2792-bc51-4837-a380-6cdb1c2fba31 + + water quenched & tempered at 205°C + Carbon steel, AISI 1030, water quenched & tempered at 205°C + ad90b266-4478-48aa-88ef-c2693d8d4463 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + 9281d347-54f6-4ccc-8f00-8f66f263ec35 + Mass + 100.0 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + be1e5cc6-8037-4091-bd75-8fb87907f926 + Mass + 100.0 + + + + + 1.98811412 + + MI_Restricted_Substances + 48753642-e968-4a1f-92a1-c7b2e10c3fa0 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1060, oil quenched & tempered at 540°C + 8d4bbf76-e11e-42bb-abd5-c589e48cede2 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 67a63d46-dbdc-4e8a-b57d-9be080e27fca + Mass + 100.0 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 75e4a0db-0f3a-4dc7-b9f7-53c7cf5cf484 + Mass + 3.36374649 + + + + + + + 7.0 + 1.61804971 + 2ccb1d17 + part_2ccb1d17-f935-416e-afca-53702412172d + 2ccb1d17-f935-416e-afca-53702412172d + + + 14.56824173 + + MI_Restricted_Substances + be0bbb94-0c22-4276-9615-902f13ee0363 + + Oil quenched & tempered at 315°C + Carbon steel, AISI 1144, oil quenched & tempered at 315°C + 8ea4c0fd-a002-451c-a6e8-6924341889a3 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + bd3522ba-4106-4b60-8fc3-1abb38df1b09 + Mass + 100.0 + + + + + 85.43175826 + + MI_Restricted_Substances + db238d75-fcb8-41f5-9289-83a352fa83a6 + + Annealed + Carbon steel, AISI 1015, annealed + 6ea66f6d-ac3e-4179-ac62-13ff1764797d + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 33691a0b-11a2-43ee-850e-46683e369779 + Mass + 100.0 + + + + + + + 7.0 + 35.78651623 + adc60ac2 + part_adc60ac2-0b8f-41fa-a011-25ed79762bb7 + adc60ac2-0b8f-41fa-a011-25ed79762bb7 + + + 88.52402683 + + MI_Restricted_Substances + 06a05a3e-1419-430e-bd94-120296b4c49e + + Normalized + Low alloy steel, AISI 9255, normalized + 31740ff9-d5f1-40b6-bfa4-1cda064e0303 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + e89b9709-f53e-4b57-8f30-b76bbf4bb88b + Mass + 100.0 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + b6868b7b-8e92-487d-8852-cb0acb2c1eaa + Mass + 100.0 + + + + + 2.29519463 + + MI_Restricted_Substances + a84110a5-15ac-4560-8e1e-642b3441da3c + + water quenched & tempered at 540°C + Low alloy steel, AISI 4130, water quenched & tempered at 540°C + 8e599c94-c6f9-41bf-8f5f-9ce12eec2739 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + a14aadca-2540-42e7-a9c1-6b4591e730cc + Length + 50.14960735 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 50ad3d84-915f-40c0-9339-52ccd33ed213 + Mass + 100.0 + + + + + 2.29519463 + + MI_Restricted_Substances + b4c065d7-6405-44fb-82cf-24ca2072f5c9 + + 300M (high carbon), quenched & tempered + Low alloy steel, 300M (high carbon), quenched & tempered + d5fddba9-d61c-43d2-b3b9-0035f3b78fdd + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 66666fe5-dd7b-44ca-a1b0-4f912f48bc1f + Mass + 100.0 + + + + + 2.29519463 + + MI_Restricted_Substances + fbdbafa4-b1a5-410d-a3f0-0b7077b0d7be + + Glass/polyimide honeycomb, ±45° fabric (0.112) + Glass/polyimide honeycomb, ±45° fabric (0.112), L Direction + 46d7d2d9-5bf6-43e2-ab8f-dd4723f36336 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 8442fdab-d90d-4f7e-833a-62e518b5aff9 + Mass + 100.0 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + fc2508fb-3e4b-4314-92b2-06692e1d2bf2 + MassRemoved + 41.76232178 + + + + + 2.29519463 + + MI_Restricted_Substances + a1ecb25a-cbfa-484f-8221-3c08313c0d09 + + Glass/polyimide honeycomb, ±45° fabric (0.051) + Glass/polyimide honeycomb, ±45° fabric (0.051), L Direction + d3910f5c-5814-4376-90d5-1c3d8bac180e + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + e547c588-2953-4e9d-9329-8c14922fad6d + Mass + 100.0 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 8640ec1e-9f72-483a-85e4-efa340ebc4f3 + Mass + 100.0 + + + + + 2.29519463 + + MI_Restricted_Substances + f7a5d844-1935-486f-adbe-99917b26b44b + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 4340, oil quenched & tempered at 315°C + 48e66c16-d6ab-4b09-9d94-975d8f246d90 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + f5ee22f3-bf2a-4273-ba68-2792bcecd1cf + Mass + 100.0 + + + + + + + 4.0 + 25.26020259 + 26bd8e2c + part_26bd8e2c-1a75-41d0-ac98-46b9b5e34dd5 + 26bd8e2c-1a75-41d0-ac98-46b9b5e34dd5 + + + 94.47049055 + + MI_Restricted_Substances + 6134776a-9764-4c71-b7a7-d2f9b7549541 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 8650, oil quenched & tempered at 315°C + 26d8597c-d71b-4049-abac-0827d97f1099 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 8a84d84b-218a-424f-99de-bd6715fee8b7 + Mass + 100.0 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 8644ce93-7a6d-44b1-90ee-9f78e593fb64 + Mass + 100.0 + + + + + 2.76475472 + + MI_Restricted_Substances + 29b76cdc-672e-4a1f-8f6e-a5644857c880 + + Normalized + Low alloy steel, AISI 4135, normalized + 5c791230-b424-4b95-8e77-433b9965e61e + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 05d2de98-77cd-4e15-8cb2-648e45a14d4b + Mass + 100.0 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 2ff312c0-e0fd-4795-9f1b-6adb5f2745e8 + Mass + 100.0 + + + + + 2.76475472 + + MI_Restricted_Substances + 55eaa961-cbe2-4f0a-9531-ec40dc32555a + + YS260, cold rolled + Interstitial free steel, YS260, cold rolled + f5b9069a-21f2-4805-9fa6-10bbfe2d8798 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + e6c4dde9-c580-45a7-940d-64a332b46231 + MassRemoved + 54.09304548 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + f8de7007-93b1-4c16-a4df-9817e25e0d4a + Mass + 100.0 + + + + + + + 9.0 + 71.67762637 + ca19d9ea + part_ca19d9ea-8ca0-484c-81db-f0bd52142b9f + ca19d9ea-8ca0-484c-81db-f0bd52142b9f + + + 59.6904462 + + MI_Restricted_Substances + 1d0ad45b-4da7-4c47-9850-754d0f67c02a + + Glass/polyimide honeycomb, ±45° fabric (0.096) + Glass/polyimide honeycomb, ±45° fabric (0.096), W Direction + 6c8308a1-a083-4648-828d-85cc00bd926f + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 2805da0d-1cd9-4846-917f-0eeddb1f2eee + Mass + 100.0 + + + + + 5.03869422 + + MI_Restricted_Substances + 87e1a3cd-fd79-4013-b5f8-56d6f28bef34 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1144, oil quenched & tempered at 540°C + bd45b7c3-53dd-4545-a818-9e8a14433718 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 829287dd-168b-4894-b384-cf9c564e5eb5 + Mass + 100.0 + + + + + 5.03869422 + + MI_Restricted_Substances + c87d2bef-0549-4a3b-b699-3ad17b079fa1 + + YS355, hot rolled + High strength low alloy steel, YS355, hot rolled + 3f725bb6-02ef-4193-b8d3-3dbc9c54e9ff + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + 6c48f731-cf08-4179-a64a-6bebca0e91e0 + Area + 40.89789201 + + + + + 5.03869422 + + MI_Restricted_Substances + 50342378-5548-45ea-9a21-c0f16c6dcb1a + + Steel, terne coated + Coated steel, steel, terne coated + 0593fce9-6880-4931-804c-66c8741c542b + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + b3d8351c-fed0-4c9d-ae1b-748247fc6a80 + Mass + 100.0 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 411fd344-6411-4706-b6e6-2dcfd232887e + Mass + 100.0 + + + + + 5.03869422 + + MI_Restricted_Substances + f76f3301-2bc9-4ad6-b438-b97cf4ca70b5 + + Silica (96%) + Silica (96%) + 3005609b-3b36-4665-b4c0-91998ffc4396 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 2ee50bf8-af5f-465c-ae27-71d171943cb4 + Area + 25.51194239 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 3c3be329-3045-4c83-9708-467b04bf44ac + MassRemoved + 54.94078339 + + + + + 5.03869422 + + MI_Restricted_Substances + 1d24ecfa-ec45-4a74-9ad7-ceac6eef8ad3 + + Annealed + Low alloy steel, AISI 41L40, annealed + e41ace63-fc60-496d-8403-f0dc6caf2b90 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 112f8740-ae3f-42b5-b224-0cfb3785655d + Area + 52.69927776 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 23357b86-0f63-4693-9d68-ca2d8dbaeb0e + MassRemoved + 77.16847699 + + + + + 5.03869422 + + MI_Restricted_Substances + c07a0ada-0510-4f27-be52-15e07d6c70c5 + + Soda-zinc glass - 6720 + Soda-zinc glass - 6720 + 6d479a4a-03a5-4fb8-a01a-7de8b71d93ed + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 5706ab2a-ad0e-401f-962c-8401cf83b454 + Mass + 100.0 + + + + + 5.03869422 + + MI_Restricted_Substances + 91d7e1bd-d353-4eb1-9634-286e8e69d0d5 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1141, oil quenched & tempered at 540°C + ef0c00a2-9910-468c-abac-f671ea564dea + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + bc86342b-e9e2-4534-86c3-0356f4c8737e + Length + 64.86148255 + + + + + 5.03869422 + + MI_Restricted_Substances + 5d611e30-0b00-4036-a656-f5fdc5bd2a52 + + Glass ceramic - slipcast + Glass ceramic - slipcast + 65a55aa8-7075-4c37-86b9-ad3c62c09b71 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 08cee76c-595b-49ce-8374-ce3d50474ad9 + Mass + 100.0 + + + + + + + 8.0 + 1.59851354 + 1aa2360a + part_1aa2360a-be13-4479-acee-f78fd0ff0a78 + 1aa2360a-be13-4479-acee-f78fd0ff0a78 + + + 91.04807027 + + MI_Restricted_Substances + 0831e2e1-6d31-4532-8a04-eea412061805 + + Annealed + Low alloy steel, AISI 4140, annealed + 35bbc52d-b4ff-48e0-bf2d-8d97aeacfb51 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + ff0b079c-2c49-45c5-90ae-14ed0fd7236e + Mass + 100.0 + + + + + 8.95192972 + + MI_Restricted_Substances + f8d1136f-3c1a-41e2-8b78-cf5f3965cba2 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 6150, oil quenched & tempered at 205°C + b4b703fb-eb23-4611-a8c2-07bfcf6cad8f + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 338c5266-1ede-466b-914f-711cd2523894 + Mass + 100.0 + + + + + + + 8.0 + 22.37974131 + + MI_Restricted_Substances + a78dcd3a-f108-4fdb-857e-e2d00ed319d4 + + a6821688 + part_a6821688-dd2f-4560-a927-8ce07f150ed2 + a6821688-dd2f-4560-a927-8ce07f150ed2 + + + 9.0 + 76.27539093 + ea0dfdcd + part_ea0dfdcd-e44a-4374-bf87-bc831dc41a05 + ea0dfdcd-e44a-4374-bf87-bc831dc41a05 + + + 80.67020866 + + MI_Restricted_Substances + 9e4c9bc1-b3b6-42dd-a32f-7af4e3190d72 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 86B45, oil quenched & tempered at 205°C + e21a7caa-7b95-4fd1-9b5c-4ea5de8d25c0 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + 9d6358ac-f6b0-4663-b181-eb854ccee899 + Length + 69.38832084 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + bb16eb8f-75a7-4f24-b751-3fca8fd7b6ce + Mass + 100.0 + + + + + 4.83244783 + + MI_Restricted_Substances + ac1b4f23-a357-459b-bfeb-deabffbc7020 + + Oil quenched & tempered at 315°C + Carbon steel, AISI 1050, oil quenched & tempered at 315°C + b83b515c-473a-4076-96d9-38387cdc136a + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + f513bbeb-274d-4646-b8ed-2147c9592c95 + Area + 83.37214579 + + + + + 4.83244783 + + MI_Restricted_Substances + 8349c912-772a-4fd7-90a5-7d52aa9c9448 + + Oil quenched & tempered at 425°C + Carbon steel, AISI 1137, oil quenched & tempered at 425°C + c0a9996c-0626-44be-b07f-e87b4f93e421 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + d01b9c5e-b734-49c0-841e-3cbfa92433b1 + Length + 69.28241582 + + + + + 4.83244783 + + MI_Restricted_Substances + 2a840794-eac4-4f77-90ba-f84bce518c0f + + Glass/phenolic honeycomb, 0°/90° fabric (0.055) + Glass/phenolic honeycomb, 0°/90° fabric (0.055), L Direction + 110ae29e-9ac2-44f9-aba7-c1ccb4a27438 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + f3372e2c-73c8-42aa-bc02-6572ad5fbc51 + MassRemoved + 43.45452838 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + c561d0b5-9ee2-4284-bf6a-b46260454e8f + Mass + 100.0 + + + + + 4.83244783 + + MI_Restricted_Substances + b17713f9-59e9-48f4-8bb3-27c72b0884b2 + + water quenched & tempered at 540°C + Carbon steel, AISI 1137, water quenched & tempered at 540°C + a647882e-2b40-4400-943c-0da1d9be57ea + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 8bbe6b83-92cb-4b0e-b49a-0c797d713f5b + Mass + 100.0 + + + + + + + 9.0 + 82.0234252 + + MI_Restricted_Substances + aeabeea6-e528-4e56-8247-0aeb8841d9de + + 9438eb43 + part_9438eb43-1eee-4cff-9d70-62c5bb89c32a + 9438eb43-1eee-4cff-9d70-62c5bb89c32a + + + 4.0 + 72.35365182 + 184b1ab4 + part_184b1ab4-9f2b-4154-bc06-b8b474d19fd7 + 184b1ab4-9f2b-4154-bc06-b8b474d19fd7 + + + 60.84996595 + + MI_Restricted_Substances + 278c6b66-fb3e-4e2d-b915-df6a231b2342 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1080, oil quenched & tempered at 540°C + 4f8dabc3-4b4f-4511-a439-029bfedcc353 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + fee9befe-d44a-4412-bf3b-51a47282a443 + Mass + 100.0 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + ad08b701-b6a5-48cf-ae9b-b35f7bf697cd + Area + 98.92096472 + + + + + 4.89375425 + + MI_Restricted_Substances + aa963e30-fca0-439d-bee2-ff48daa946f3 + + As rolled + Carbon steel, AISI 1095, as rolled + 7dcd1b01-ad72-4233-bb61-b06115c241bd + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + ad815955-2ea1-4810-bd9f-e0807ef38e3a + Mass + 100.0 + + + + + 4.89375425 + + MI_Restricted_Substances + a403e867-5052-44f9-b24b-5b11a3860cf4 + + Glass/polyimide honeycomb, ±45° fabric (0.051) + Glass/polyimide honeycomb, ±45° fabric (0.051), W Direction + ab7e0983-57d9-4403-87c7-2bba8ff091d3 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + a8d4437c-ca53-49f3-89ab-6f97f764defd + Length + 4.34681913 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + d9034901-0090-4e0a-a31a-bed850729cd0 + Mass + 100.0 + + + + + 4.89375425 + + MI_Restricted_Substances + 109eaa8c-e01c-4663-8802-f7dd1f10d61b + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 8630, oil quenched & tempered at 205°C + 3758b153-7456-4598-b41b-c53921a08384 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 61055064-79d2-46eb-9266-65253cdb2511 + Length + 93.75255689 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + 772bd1ed-edad-4c73-9949-13006f3b1dcf + Mass + 100.0 + + + + + 4.89375425 + + MI_Restricted_Substances + ee3c0238-df7d-426d-90f6-c073cddea37b + + Oil quenched & tempered at 425°C + Carbon steel, AISI 1340, oil quenched & tempered at 425°C + 3efcc781-9e69-4f6f-82e3-fc6cc6a137d0 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + ebd5fdc0-5126-4b32-b4ee-23fd2c6147b4 + Area + 16.77749553 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 3a6dafa6-ec47-4b1c-a67b-2de364a10ca4 + Mass + 100.0 + + + + + 4.89375425 + + MI_Restricted_Substances + e62ec0fe-66ca-4b17-88d1-609c5568e318 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 4340, oil quenched & tempered at 650°C + a02fee99-5c91-4df9-a446-8a6da1b9d9db + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 5861f36e-aa3e-4358-b32d-8e558fb5586b + Mass + 100.0 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + f928ee5f-60be-4f4f-bb08-ad8423b00867 + Mass + 100.0 + + + + + 4.89375425 + + MI_Restricted_Substances + c62d668e-5411-4845-b19c-3a0c4eedf872 + + 10CrMo9-10, normalized & tempered + Low alloy steel, 10CrMo9-10, normalized & tempered + 81e18383-3a45-4ba3-9bfc-7c36e2f23521 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + ef654035-33a9-4daf-8115-2cada5ba7c41 + Length + 25.67262538 + + + + + 4.89375425 + + MI_Restricted_Substances + 8245dc6c-3d61-4f18-82c8-6fb946e1582c + + Glass foam (0.13) + Glass foam (0.13) + 85aa7086-4a24-4732-9d0c-288fae52b970 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + cdda3e82-ef97-4ea2-a6a4-b4e96d2ff278 + Mass + 100.0 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 4c8fbc06-e918-4dd4-b0f0-40a9f037aa05 + Mass + 100.0 + + + + + 4.89375425 + + MI_Restricted_Substances + 71a3cd24-5128-46e5-8ef8-9ca8b5ed9892 + + 50% glass and mineral filled + PA46 (50% glass and mineral filled) + 066fdc49-0e2a-450e-b40e-f4f71e33a67d + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 8f98f3c3-3955-4b09-832c-7c8c1eeeb9b3 + Mass + 100.0 + + + + + + + 5.0 + 8.88051279 + 4b2adbeb + part_4b2adbeb-72da-44b5-8bf9-697c3b7db31b + 4b2adbeb-72da-44b5-8bf9-697c3b7db31b + + + 65.33176333 + + MI_Restricted_Substances + 0f2ac0c2-16b0-422e-9f3c-48efb1a11594 + + Hardened and tempered + Low alloy steel, AISI 8620H, hardened and tempered + 966a2d0c-b2a1-4cff-b09e-70af1c7feafa + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + d3f2b6bf-5dc3-4af1-97e4-655b745bec8d + Area + 67.57293262 + + + + + 4.95260523 + + MI_Restricted_Substances + 28d51559-b49b-4a2b-9f09-9a198db03164 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 4340, oil quenched & tempered at 425°C + 0a0484e4-e4d6-46a3-8a89-980d72ee02e1 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + fd9523ae-9d66-44e6-88e5-e699e4bb6710 + Mass + 100.0 + + + + + 4.95260523 + + MI_Restricted_Substances + d53daeda-87b2-4ade-a7a2-1ebe84e7e3ef + + Annealed + Low alloy steel, AISI 5115, annealed + 65f38ac2-4598-4986-a161-fa9d2f9befa8 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 5ebf42e6-45c0-4782-bae6-f26fbb9c608f + Mass + 100.0 + + + + + 4.95260523 + + MI_Restricted_Substances + 50c388cf-bb91-442a-9b62-8d34f7822f13 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1040, oil quenched & tempered at 540°C + 208eed49-b80a-4f9c-8d52-57ea802dbcfe + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + a3504bc5-92e6-4d45-869d-c64cd77071af + Mass + 100.0 + + + + + 4.95260523 + + MI_Restricted_Substances + a84110a5-15ac-4560-8e1e-642b3441da3c + + water quenched & tempered at 540°C + Low alloy steel, AISI 4130, water quenched & tempered at 540°C + 954b9af8-ad49-400a-ba3d-c054db41c64c + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 46cd55fe-643e-4274-bc72-6eb959283ea8 + Mass + 100.0 + + + + + 4.95260523 + + MI_Restricted_Substances + 5303364c-b06b-40d9-bca9-e0e2cd1d682c + + Normalized + Low alloy steel, AISI 8740, normalized + 39b96e26-6d23-44f6-83b7-884409172eab + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 6d9de306-4aae-485e-8018-527f177f25c0 + Length + 6.19553518 + + + + + 4.95260523 + + MI_Restricted_Substances + a83cb894-badf-47de-8aff-fe75bbb39ecd + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 81B45, oil quenched & tempered at 540°C + cd5f8484-59ff-40c1-8867-292095d1b9c6 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 75aaabe7-2e82-4bec-b265-80f2beb2a4fe + Mass + 100.0 + + + + + 4.95260523 + + MI_Restricted_Substances + ac1b4f23-a357-459b-bfeb-deabffbc7020 + + Oil quenched & tempered at 315°C + Carbon steel, AISI 1050, oil quenched & tempered at 315°C + d23864dc-a8f2-4660-8e78-9ec574d6be3b + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 612bfbb6-4eb3-4282-8c9d-7332de9801b1 + Length + 92.55119668 + + + + + + + 1.0 + 26.15306024 + 45b2723f + part_45b2723f-b76c-4076-81bb-f3aecd32b356 + 45b2723f-b76c-4076-81bb-f3aecd32b356 + + + 100.0 + + MI_Restricted_Substances + 50ad77de-f231-48a8-a909-3dc689e19ac8 + + YS500, cold rolled + TWIP steel, YS500, cold rolled + cb2f5fa4-88c1-4234-9c99-c073df19e86a + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 45b62425-e6d6-4621-b79d-16266a05e004 + Mass + 100.0 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + c7722ec0-5403-4eab-9421-4aaf19d9aef2 + Mass + 100.0 + + + + + + + 4.0 + 40.5394382 + bab849e1 + part_bab849e1-aa58-4769-acc9-be284f83a250 + bab849e1-aa58-4769-acc9-be284f83a250 + + + 100.0 + + MI_Restricted_Substances + 48753642-e968-4a1f-92a1-c7b2e10c3fa0 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1060, oil quenched & tempered at 540°C + e9ca9bfc-2ac6-4e0a-b295-5ffa707baf1a + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 24532770-7d53-47c3-b1ed-27abd0be182b + Mass + 100.0 + + + + + + + 1.0 + 36.0715503 + 3a1c477f + part_3a1c477f-440a-4b0a-a064-a4487adefde0 + 3a1c477f-440a-4b0a-a064-a4487adefde0 + + + 94.92766801 + + MI_Restricted_Substances + cdb1bf9d-b906-4bef-afbf-7bb9f67e9562 + + Galvanized + Coated steel, steel, galvanized + c245e82a-cc15-44f5-a687-2be0187ef917 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + 47c269e2-54b2-4e47-a0b5-12bc0cf26ae0 + Area + 39.4279658 + + + + + 1.26808299 + + MI_Restricted_Substances + a89802d6-13c5-496d-b139-57ae43e6591c + + As rolled + Carbon steel, AISI 1022, as rolled + 45169ece-d893-442d-bc03-57139b6d4d7a + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 3cfa5e61-937e-456d-a331-3e0ced1fae00 + Mass + 100.0 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 87f279ae-53fb-4ded-9910-3634fe179af4 + MassRemoved + 97.75056256 + + + + + 1.26808299 + + MI_Restricted_Substances + 2ab1643a-3aff-46c7-a249-21c58b33f214 + + Annealed + Carbon steel, AISI 1144, annealed + 2edfdc17-8e02-4060-a0f4-e754d3c2d653 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 684f35b5-f8bb-4a0f-957d-4c58d08c32b2 + Mass + 60.2500608 + + + + + 1.26808299 + + MI_Restricted_Substances + 0e008ce6-63df-4b25-81d6-02398cb9cc62 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 8660, oil quenched & tempered at 540°C + 68cbe79e-e13e-44d6-9573-7f9e77f22cd1 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + 8bf277bf-f275-4e32-9bf4-1fe49fafb994 + Mass + 100.0 + + + + + 1.26808299 + + MI_Restricted_Substances + 6134776a-9764-4c71-b7a7-d2f9b7549541 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 8650, oil quenched & tempered at 315°C + e1b57077-4f40-4da6-977e-c67e9e778639 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 0e3a51c9-09b0-45a2-aedf-34ea1d17a8bd + Length + 40.74240733 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + b729456a-04c5-4c5a-a8d2-3196ce5464f9 + Length + 99.61028662 + + + + + + + 7.0 + 29.03811271 + ac3877a8 + part_ac3877a8-bab4-4a77-9d83-086ae6c8c1be + ac3877a8-bab4-4a77-9d83-086ae6c8c1be + + + 2.88981646 + + MI_Restricted_Substances + 8ef69f01-44dd-4b96-ac5c-731bff7ceb6c + + Glass ceramic - 9606 + Glass ceramic - 9606 + a6ef08ec-0069-4005-bbe1-b41dd44704c0 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 6af6b4b1-5bf5-471c-b6e1-a54b3d4d2085 + Area + 54.02260178 + + + + + 32.37006117 + + MI_Restricted_Substances + 2096ca77-9981-4fd5-9bc6-afe56b3bbbd4 + + Glass/phenolic honeycomb, 0°/90° fabric (0.096) + Glass/phenolic honeycomb, 0°/90° fabric (0.096), W Direction + 9d3b8e4d-c4de-4b15-98cc-e3c0dba146de + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + a680b387-9a93-4d57-bf18-ce9452a624cb + Mass + 100.0 + + + + + 32.37006117 + + MI_Restricted_Substances + 158e73a4-18c6-4e1a-b5d8-57669c377335 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 8740, oil quenched & tempered at 650°C + c58ebde6-692b-44ad-a160-2185520c1fb7 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + b6344a2b-56f2-4386-87df-767576302146 + Mass + 100.0 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 3a0745ff-06f7-4320-9acb-a29e3fe1d090 + Length + 8.73666955 + + + + + 32.37006117 + + MI_Restricted_Substances + fc7fda6b-9d56-4e1f-b472-a664568c1169 + + Annealed + Carbon steel, AISI 1095, annealed + 001626e3-6549-4ddc-8cce-b828f12624fd + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + ffbb984e-4730-4035-9061-803e32f97eb7 + Mass + 100.0 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 20b0fdd3-f25d-4e84-928a-caa2749e5be5 + Length + 11.59437359 + + + + + + + 8.0 + 92.4757142 + 4a5223eb + part_4a5223eb-b35f-4b2c-bf59-4f7b81e6e11f + 4a5223eb-b35f-4b2c-bf59-4f7b81e6e11f + + + 21.06025252 + + MI_Restricted_Substances + b879bb01-8648-4b5b-8159-d591cb251ca8 + + Normalized + Carbon steel, AISI 1080, normalized + 297897c7-4c4a-45cc-8d61-44600c915c0c + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 0c515822-13ff-4c07-9bb2-de14104f8980 + Mass + 100.0 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + 1d490bb8-6f77-4a2f-b71d-6f3b66e60dc8 + Length + 71.96799226 + + + + + 11.27710678 + + MI_Restricted_Substances + d7980de6-355d-48d2-93d7-471e3ef3b2cf + + Glass/phenolic honeycomb, ±45° fabric (0.032) + Glass/phenolic honeycomb, ±45° fabric (0.032), L Direction + fb82fa0f-c0f9-4569-90b6-a0592ffa029b + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + 54981275-6cda-4f6e-bd84-3d665c863111 + Area + 77.64744571 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + a9374b93-9dce-47dd-9652-158248388b3c + Mass + 100.0 + + + + + 11.27710678 + + MI_Restricted_Substances + a6ee4feb-80c5-43a7-b3ee-a1423218f502 + + AF1410 + High alloy steel, AF1410, solution treated & overaged + 2edf1e77-1033-4b37-a10a-dd1ca6f9a9c7 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 5f14dda3-a81a-4378-9843-67d10402440b + Length + 11.76017276 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 2d1547ac-de50-4aa9-a2b7-dbe536b42c1e + Mass + 100.0 + + + + + 11.27710678 + + MI_Restricted_Substances + 82880431-c70c-4df9-856a-d5e00671a184 + + Annealed + Carbon steel, AISI 1020, annealed + 126da0ae-9ad2-4d46-8712-87716360c682 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 4e259791-dfc8-44ff-be04-a437f2945a23 + Mass + 37.620758 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 946d277f-7c61-48a2-a0fa-e4b871588d2d + Mass + 100.0 + + + + + 11.27710678 + + MI_Restricted_Substances + 00cd78de-6c78-46f3-81b3-ec03803fa034 + + Glass/phenolic honeycomb, ±45° fabric (0.048) + Glass/phenolic honeycomb, ±45° fabric (0.048), W Direction + 56afd2d4-eed8-4d8e-ad4e-bd5029463b6a + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + e35e60e0-ca24-4c0a-86ab-29db1b5f185c + Area + 39.506165 + + + + + 11.27710678 + + MI_Restricted_Substances + ab732b70-3546-4a94-b914-643f38c2443f + + 24CrMo13-6, quenched & tempered + Low alloy steel, 24CrMo13-6, quenched & tempered + 40dd174d-6d19-4fd9-abe0-1055299bef5f + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 3f980ef4-aa91-4002-8694-15f8c4c9caf3 + Mass + 100.0 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 379bb0ec-69dc-4fec-82c8-a9ffaff56261 + MassRemoved + 27.65735784 + + + + + 11.27710678 + + MI_Restricted_Substances + 496cca2a-43ad-4943-9e9b-23076f2e3a5c + + Glass/polyimide honeycomb, ±45° fabric (0.128) + Glass/polyimide honeycomb, ±45° fabric (0.128), L Direction + 5bfc5037-9bf2-43ba-ab06-5bb5ad11de76 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 75945f4f-fdd8-47bb-969c-bc07e382e033 + Mass + 100.0 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 09d7e6b4-4b3c-4784-a62d-908036e510d0 + Mass + 100.0 + + + + + 11.27710678 + + MI_Restricted_Substances + 439e62b9-4268-44c6-a084-695412628448 + + water quenched & tempered at 425°C + Carbon steel, AISI 1095, water quenched & tempered at 425°C + b5a24b72-e09d-4fc4-8bdc-93b928e91fff + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + b173992a-931e-49bb-99cb-284c471d0437 + Mass + 100.0 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 91e8113c-bb59-487e-97ee-2142e2ec1a71 + MassRemoved + 72.03360654 + + + + + + + 7.0 + 37.36418603 + + MI_Restricted_Substances + 47392269-2164-43ef-9890-518e6ea446fc + + c4b720bf + part_c4b720bf-7152-4199-ba3a-0beb9c811ddc + c4b720bf-7152-4199-ba3a-0beb9c811ddc + + + 1.0 + 75.03948122 + 5d1b372e + part_5d1b372e-556f-4e07-9c99-4d1973e0956b + 5d1b372e-556f-4e07-9c99-4d1973e0956b + + + 38.58242651 + + MI_Restricted_Substances + 190cf17e-dbc1-40c7-a3d1-cc776977cb47 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 50B46, oil quenched & tempered at 650°C + 6d8ea439-0bcd-4357-bc2c-4f5f7b539cd1 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + b717c6e1-b356-4193-a09a-779833a5491d + Mass + 100.0 + + + + + 61.41757348 + + MI_Restricted_Substances + 0ff273b3-9539-465b-9d91-21fc52f8e16c + + Lithium aluminosilicate + Lithium aluminosilicate + 968b3dec-5e80-492f-a30d-ecdf1a74c80d + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + c7f0dc2f-fe5e-43de-b9ba-1f0ad322866e + Area + 64.57460185 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + 00a56e08-69f5-474a-867f-187d3480a611 + Mass + 100.0 + + + + + + + 4.0 + 79.43218409 + 84fa7b6b + part_84fa7b6b-dcb3-42a7-9a11-df90dc8813bd + 84fa7b6b-dcb3-42a7-9a11-df90dc8813bd + + + 100.0 + + MI_Restricted_Substances + 940150b6-2d2e-4762-b1a0-6f354a75d95b + + Potash lead glass + Potash lead glass + 45d577fa-9e98-4254-b369-b09d9ae34dea + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + ddf7abd7-804d-47cd-838b-5d6e5758f5bc + MassRemoved + 41.91323963 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 5c3ae651-26b4-4c94-a704-c181b75171df + Length + 4.94128288 + + + + + + + 9.0 + 93.35876684 + e72320dd + part_e72320dd-1afd-432f-bd03-eefddd678339 + e72320dd-1afd-432f-bd03-eefddd678339 + + + 80.4446916 + + MI_Restricted_Substances + 3fc5450b-689d-4ced-bf3d-c91f339a95da + + Normalized + Low alloy steel, AISI 5150, normalized + 46179b7b-bc34-4765-88c5-494383858dd6 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 62efad99-f536-4714-be22-b9a5e4462cff + Mass + 31.52474622 + + + + + 2.44441354 + + MI_Restricted_Substances + 408a337f-8eb7-4225-96bd-1225da437143 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 5140, oil quenched & tempered at 315°C + 1909b1f4-ede3-443c-a8e1-b7df1425057a + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + cc5799ab-1216-495a-964f-ed77c8c9ef20 + Mass + 100.0 + + + + + 2.44441354 + + MI_Restricted_Substances + 75a1c963-399c-444d-a38f-1929c00d15b7 + + Normalized + Low alloy steel, AISI 4150, normalized + e5f13a79-e874-4575-8e7b-0f680c91c464 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 4229b4ae-cfe2-42c1-8696-47fe938b7892 + MassRemoved + 46.88324795 + + + + + 2.44441354 + + MI_Restricted_Substances + 158e73a4-18c6-4e1a-b5d8-57669c377335 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 8740, oil quenched & tempered at 650°C + c8f26e0c-6f90-4518-9399-b2419ed7b03e + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 3bd0f0cb-124b-4c07-8983-fc20d22303a7 + Mass + 100.0 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 4ac89751-c8c9-44cd-a879-3bd567445c4d + Mass + 100.0 + + + + + 2.44441354 + + MI_Restricted_Substances + 181f9596-7516-43ca-b989-8284ee056051 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 8630, oil quenched & tempered at 315°C + 824e264c-aa4f-4814-9514-7dbc00187a63 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + c860ca6f-6794-4288-a09b-6d5b1706b068 + Mass + 100.0 + + + + + 2.44441354 + + MI_Restricted_Substances + 0ff273b3-9539-465b-9d91-21fc52f8e16c + + Lithium aluminosilicate + Lithium aluminosilicate + 4f8c8192-bfd6-420f-9006-52ae67d51144 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 3f54437c-f9be-482e-ac61-7f158845e71d + MassRemoved + 7.42072305 + + + + + 2.44441354 + + MI_Restricted_Substances + 3fc5450b-689d-4ced-bf3d-c91f339a95da + + Normalized + Low alloy steel, AISI 5150, normalized + e91f49be-553e-44e4-84d6-d794788dd34e + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + ca1138c5-5460-4fec-9558-cb346771a9a6 + Mass + 40.54896614 + + + + + 2.44441354 + + MI_Restricted_Substances + 7c0b2792-bc51-4837-a380-6cdb1c2fba31 + + water quenched & tempered at 205°C + Carbon steel, AISI 1030, water quenched & tempered at 205°C + 009eb512-a2c6-4f54-9d2f-ee7e522cc525 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 7d963a71-ad65-49d7-87cf-1d526d17ecf8 + Mass + 100.0 + + + + + 2.44441354 + + MI_Restricted_Substances + e9388a2e-df9f-4ef4-8f47-d4cc5a94b8e7 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 50B46, oil quenched & tempered at 425°C + ca917412-77c1-42a2-9559-f5ce8b14380e + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 9bf7f8ea-70f7-4df8-9d42-cfa787bb92ef + Mass + 58.37243989 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 11f586e0-0d5a-4108-a4e0-dec1a10ed8f1 + Mass + 100.0 + + + + + + + 6.0 + 98.91081773 + fc8daa76 + part_fc8daa76-313f-4416-91dc-f4184b57ac71 + fc8daa76-313f-4416-91dc-f4184b57ac71 + + + 11.36572142 + + MI_Restricted_Substances + 3fd6cebb-a683-45be-b014-7c3fb617c3e7 + + Glass/polyimide honeycomb, ±45° fabric (0.064) + Glass/polyimide honeycomb, ±45° fabric (0.064), L Direction + 43ac285d-b87c-4460-9c87-ad5dc4611237 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 42fca2f6-0417-49d7-a522-c7503940de71 + Mass + 19.47018151 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 1edd567a-b467-4c79-b267-2894398bee56 + Area + 74.24812609 + + + + + 22.15856964 + + MI_Restricted_Substances + 2839a622-af73-4a9f-90fa-0f3498243808 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 4042, oil quenched & tempered at 425°C + 6af79c06-d0e3-46ee-898b-80667674c307 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + e6f0e479-ca89-431c-b43e-234dc35f3768 + Mass + 100.0 + + + + + 22.15856964 + + MI_Restricted_Substances + 21dcdeeb-524a-488e-b332-fcd4e1caf6f7 + + water quenched & tempered at 650°C + Carbon steel, AISI 1095, water quenched & tempered at 650°C + a74f3555-bdd6-4433-a45b-5e86f7360f81 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 813642e4-8307-4b63-9092-bb0ab8d445e1 + Mass + 100.0 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 60b06372-c082-4197-b40e-a5e7a807c344 + Mass + 100.0 + + + + + 22.15856964 + + MI_Restricted_Substances + f6a8c45a-d545-43b7-acd0-7c51bd97ab52 + + Oil quenched & tempered at 425°C + Carbon steel, AISI 1095, oil quenched & tempered at 425°C + e4530039-6d97-4080-8cff-63281a88347b + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 9c980678-54cc-479f-b0bb-15463d9b0ad3 + Mass + 100.0 + + + + + 22.15856964 + + MI_Restricted_Substances + 2a821f5c-97b0-4a08-81b1-de3f1543fb44 + + Alkali strontium clear glass + Alkali strontium clear glass + b33a0c52-e5a3-43a3-b80a-eddad97ff6d3 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 1a071692-299c-4951-9e50-d95e02778526 + Length + 24.53227021 + + + + + + + + + 4.0 + 13.08437921 + eaab6ed5 + part_eaab6ed5-6189-4b0e-9a04-b351346795f9 + eaab6ed5-6189-4b0e-9a04-b351346795f9 + + + 34.27322042 + + MI_Restricted_Substances + 71841c03-2a43-418a-9a04-c18b2b603646 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 4150, oil quenched & tempered at 425°C + ebcdf539-f264-497e-b5eb-9065b8d16cdd + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + 030a4e68-4a19-4d96-bc52-facd972fd523 + Mass + 100.0 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 2138223c-491b-48d7-87f8-4ccd8a89dafa + Mass + 100.0 + + + + + 8.21584744 + + MI_Restricted_Substances + 9cae15c6-b5b6-4ab9-9008-d962bee0e662 + + Glass/phenolic honeycomb, 0°/90° fabric (0.128) + Glass/phenolic honeycomb, 0°/90° fabric (0.128), L Direction + fd0c866c-664b-4ff0-87da-7571eeba3863 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 65c3952e-9995-49f8-b50a-6a6dd8ec1908 + Mass + 37.03002065 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 290d62f5-bd97-4f1c-b997-bc0ec64fe69a + Mass + 100.0 + + + + + 8.21584744 + + MI_Restricted_Substances + bbe0765c-012b-434e-878b-b40ad692b373 + + YS550, hot rolled + High strength low alloy steel, YS550, hot rolled + 6272492b-6615-4e16-96f1-a7e9a715a3e0 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + c7a22d3d-5300-416d-be87-a3561d7a3b35 + Mass + 100.0 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 289630a9-9b30-4964-af5a-10155a53ad10 + Mass + 100.0 + + + + + 8.21584744 + + MI_Restricted_Substances + 190cf17e-dbc1-40c7-a3d1-cc776977cb47 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 50B46, oil quenched & tempered at 650°C + 7d1db0cf-3bf8-4194-80e8-b4f4a3816437 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 13cbdc73-00ac-4995-8aa3-50bee3d6e803 + Mass + 100.0 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + d4a408ae-de74-4866-99cb-31142105ade7 + Mass + 100.0 + + + + + 8.21584744 + + MI_Restricted_Substances + 92565d61-24fc-4880-9be5-0faeb9a8a3e8 + + Titanium silicate + Titanium silicate + 7db8274a-8d36-4fa7-8064-6b2d9f106c3c + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 986d99e8-9853-4ef3-9e51-88d18f934ec3 + Mass + 37.44622861 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + b3e68082-8c66-4835-8ed8-225e9e4ceab1 + Mass + 100.0 + + + + + 8.21584744 + + MI_Restricted_Substances + 87e1a3cd-fd79-4013-b5f8-56d6f28bef34 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1144, oil quenched & tempered at 540°C + fa1e5541-f878-4ae6-87ba-8bea39fb760f + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 6663a73a-ebb8-4ca5-91e0-49b6cb9fca98 + Mass + 100.0 + + + + + 8.21584744 + + MI_Restricted_Substances + 9df55457-5300-4ddb-b92e-122b5c121621 + + Glass and mineral filled, encapsulation, molding + Novolac (glass and mineral filled, encapsulation, molding) + a9652672-4387-4d33-90dc-797daf6a2247 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 867ce557-1eec-4ea4-ac1e-e6c063117dd5 + Area + 85.99811242 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + f5d984ea-e10a-41b8-b2fc-714f5497cfb8 + MassRemoved + 44.68569762 + + + + + 8.21584744 + + MI_Restricted_Substances + 80d691ec-471b-4ef6-9060-a0e5cc0c1a91 + + Annealed + Carbon steel, AISI 1340, annealed + 740938e5-cbf4-4329-a132-317986c42928 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + a051fd93-c079-4c56-814e-f1a1f06ae422 + Mass + 100.0 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 1302c3cc-958c-4115-8576-14da6ff3319b + Mass + 24.24772327 + + + + + 8.21584744 + + MI_Restricted_Substances + 1a7c6e51-066a-4f25-9c48-76ca6fbd8330 + + Glass ceramic - 9658 + Glass ceramic - 9658 + 3e32010b-4f5e-40c0-bd19-89a0a002d4ca + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 853274a8-e09a-46e7-9fa2-a83c8460da8d + MassRemoved + 64.19419896 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 6c6b7134-8bd3-46d4-bcb9-f1207971edd5 + Mass + 100.0 + + + + + + + 2.0 + 74.93542394 + 600de0c1 + part_600de0c1-269a-4cb5-a3dd-0f06a65e8a04 + 600de0c1-269a-4cb5-a3dd-0f06a65e8a04 + + + 14.67974424 + + MI_Restricted_Substances + b869cbb1-f68c-4d4a-ba09-c5ac060f1e31 + + Normalized + Low alloy steel, AISI 4620, normalized + f06a9b56-aca5-4ff8-abbe-575e72b1f4a6 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 61a4cbdc-a3f0-45bc-98b6-48e86dbf7d04 + Mass + 100.0 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + e138600b-057c-4217-9d69-d02397975bb1 + MassRemoved + 86.67375188 + + + + + 28.44008525 + + MI_Restricted_Substances + a371ea54-94e0-4a85-9b8a-856cf82f2e1d + + SAE 4130, cast, quenched & tempered + Low alloy steel, SAE 4130, cast, quenched & tempered + 8e5f94e3-ba10-4e42-93d8-bd5830929189 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 053df7ee-4b20-4403-a01a-1a974af58e88 + MassRemoved + 3.69976507 + + + + + 28.44008525 + + MI_Restricted_Substances + 7c0b2792-bc51-4837-a380-6cdb1c2fba31 + + water quenched & tempered at 205°C + Carbon steel, AISI 1030, water quenched & tempered at 205°C + 0ca4f619-8307-4733-9d1f-b25c1baa17b4 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 26b196c4-c9f8-4937-bf2e-cb1b4cf0a508 + Mass + 100.0 + + + + + 28.44008525 + + MI_Restricted_Substances + 8dd7188c-28e5-44bd-9d82-dc7a3890fe9b + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 8660, oil quenched & tempered at 425°C + f7318ab7-62ca-4424-8c50-9f0a0b9973ac + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 487d792d-3b4b-4d68-b262-e07419d26ee7 + Mass + 100.0 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + e3f0937a-c3ec-4bb5-a88a-cf06b71192c2 + Mass + 100.0 + + + + + + + 6.0 + 81.2493353 + 69cb5bfe + part_69cb5bfe-9b6e-4526-a72d-355b609a9766 + 69cb5bfe-9b6e-4526-a72d-355b609a9766 + + + 22.13806096 + + MI_Restricted_Substances + 0840d007-df07-4e12-bda5-bfc060fb15e6 + + Annealed + Low alloy steel, AISI 4320, annealed + 9ebb0694-21c8-43a3-9f5c-c85a7a30681f + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 133c245b-aaf6-4ac7-ae8d-cf874add17fe + Mass + 100.0 + + + + + 19.46548475 + + MI_Restricted_Substances + eb2b811b-1da6-465a-857f-6d14b372a38b + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 50B60, oil quenched & tempered at 650°C + 5f7e24e3-0b39-41bc-b5f8-389db535d06d + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 66988dcc-8901-4913-9730-c3a1271333f5 + Mass + 100.0 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + a2000eb3-8982-4192-9600-2daf6daed5f5 + Mass + 100.0 + + + + + 19.46548475 + + MI_Restricted_Substances + dbf855b9-a140-458a-af71-ee8bc216e050 + + YS140, cold rolled + Drawing quality, YS140, cold rolled + 8752cd77-a987-4ae3-98f4-685752472913 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 34a218b2-9122-4935-99c5-12ea2f110f66 + MassRemoved + 83.81719658 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + e901dc5d-4eae-4a52-ba77-589ac8e3a737 + Mass + 3.47345965 + + + + + 19.46548475 + + MI_Restricted_Substances + e9388a2e-df9f-4ef4-8f47-d4cc5a94b8e7 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 50B46, oil quenched & tempered at 425°C + 7c8c7a54-e6ed-4e22-8b59-8101d8103a7c + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + ce65f8df-0e6d-4139-b034-106e035ab92f + Mass + 100.0 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 057914de-e8e5-461c-aa09-5009156e79ad + MassRemoved + 92.89615153 + + + + + 19.46548475 + + MI_Restricted_Substances + 8dc38bb5-eff9-4c60-9233-271a3c8f6270 + + Kovar, annealed + High alloy steel, Kovar, annealed + 608d3663-2d8a-4746-8fdc-171aaef76480 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + de7681c8-627f-4d67-be73-f14fb9a5cb08 + Mass + 100.0 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + fd0a4cbb-ee32-4ad7-a7b7-dacdd530c9e5 + Mass + 100.0 + + + + + + + 2.0 + 69.54987578 + + MI_Restricted_Substances + 5fd070ef-bb1b-4857-abcf-7eda481ecfbe + + 585c4a04 + part_585c4a04-66ae-4320-ac0b-1862c814961b + 585c4a04-66ae-4320-ac0b-1862c814961b + + + 7.0 + 85.60016159 + 6c61c8d8 + part_6c61c8d8-c73d-4b8d-a826-102684aa9aeb + 6c61c8d8-c73d-4b8d-a826-102684aa9aeb + + + 50.49367232 + + MI_Restricted_Substances + 4ff376ea-25d8-4792-a34f-9bd7b33c210c + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 4150, oil quenched & tempered at 540°C + c8bb3e17-04cf-45a1-bcd7-99d3fb74a16f + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 34e02d17-c4e5-435b-8ed3-ffb1ef4c9d2a + Mass + 100.0 + + + + + 7.07233252 + + MI_Restricted_Substances + 181b484f-4ada-4e9e-8c47-103ae23d76c3 + + Quenched & tempered + Low alloy steel, AISI 8740, quenched & tempered + 3a92cc02-c44b-44e4-a148-15aea8a90035 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 4e022716-d5fe-4c11-91e5-a62b08090d7e + Length + 3.63263958 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + e8a2af71-51b8-4ef4-8387-739f2b5fe836 + Mass + 100.0 + + + + + 7.07233252 + + MI_Restricted_Substances + a8f02f5c-c80e-446f-92f4-0046f3d093fc + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 8630, oil quenched & tempered at 425°C + a9791003-2e6c-4557-8c19-e80bc23a8e15 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + cb06c772-3325-4721-809c-aa202f9520a5 + Mass + 100.0 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + c9e53a39-ce3f-4a5b-8a54-a92185f46219 + Mass + 100.0 + + + + + 7.07233252 + + MI_Restricted_Substances + 81ce98b3-d459-4695-9dd9-d53244be47ed + + Annealed + Carbon steel, SA216 (Type WCC), cast, annealed + 8a55ec37-ad56-4cec-87c9-365c731bfe1b + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + da1a7f41-d844-4f49-afa9-ca6d593638db + MassRemoved + 83.99590267 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 6d7c3052-e17d-473f-afd4-3d90020677be + Mass + 100.0 + + + + + 7.07233252 + + MI_Restricted_Substances + 181b484f-4ada-4e9e-8c47-103ae23d76c3 + + Quenched & tempered + Low alloy steel, AISI 8740, quenched & tempered + 9dad5bd2-58a6-431c-b5cc-59ce56b4bcb3 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 5a78a2fc-7fe3-419f-a323-3b74619f1bac + MassRemoved + 79.99000604 + + + + + 7.07233252 + + MI_Restricted_Substances + a583e694-02c0-408e-9af4-6fbee856b58f + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 9260, oil quenched & tempered at 650°C + f42679cc-9f4b-4473-95a1-5106c67077d8 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 7db14ace-659a-4a27-960b-2944742fd32a + Mass + 100.0 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 534e9bc3-533d-4407-b6e7-2bd6ab1e33a9 + Mass + 100.0 + + + + + 7.07233252 + + MI_Restricted_Substances + 66ed26ec-15e8-47d9-a7dc-140271411c07 + + Quenched & tempered + Low alloy steel, AISI 4130, air melted, quenched & tempered + 873fb86e-f515-4a35-a234-56f49c739b2c + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + dae4d4ee-2726-4d17-8bff-16ba89e95b77 + Mass + 100.0 + + + + + 7.07233252 + + MI_Restricted_Substances + 9ce914d8-75c1-4c5f-8c57-11c0e62b2cfa + + ASTM A299 Grade A + Structural steel, ASTM A299 Grade A + c8c694d5-afa2-4005-8c11-8825d43bfdb2 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + dd8d3ad7-3f40-4818-946d-86d68c06a83c + Mass + 100.0 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + baa2cf65-ab4e-459d-854a-cf25eaff975e + Mass + 100.0 + + + + + + + 8.0 + 75.95256863 + 76726401 + part_76726401-baa8-44b6-a4e0-e5302dec10f6 + 76726401-baa8-44b6-a4e0-e5302dec10f6 + + + 74.78016115 + + MI_Restricted_Substances + 535f6e21-a16f-4d54-8413-97634da82122 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 8650, oil quenched & tempered at 205°C + bae80313-e173-4052-b2fa-50a9e2e60960 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 492b6ff3-0321-4fcb-aa5e-3158f3e62904 + MassRemoved + 2.25272136 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + f4706c49-7f96-4bca-a23f-206a398e6230 + Mass + 100.0 + + + + + 25.21983884 + + MI_Restricted_Substances + aec2777b-f126-4f12-b748-b94bf7393f2a + + Oil quenched & tempered at 650°C + Carbon steel, AISI 1060, oil quenched & tempered at 650°C + def7eaff-9817-496c-af57-856706c1a06e + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + ace803c1-43fb-4f08-a0c3-cfefe45ce798 + MassRemoved + 87.76722619 + + + + + + + 8.0 + 86.78226018 + + MI_Restricted_Substances + 65d980fe-c0ba-4642-af12-1fcec979852d + + e14a88c7 + part_e14a88c7-45e1-423e-b27e-86babfd9dcf3 + e14a88c7-45e1-423e-b27e-86babfd9dcf3 + + + 1.0 + 38.06979527 + c414229d + part_c414229d-a82c-4aa3-8452-dcb41b67dea2 + c414229d-a82c-4aa3-8452-dcb41b67dea2 + + + 100.0 + + MI_Restricted_Substances + 9124b244-f2f8-44df-b2cf-b05d3406eb9e + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 4042, oil quenched & tempered at 315°C + 124ef859-be1e-4318-a6b3-42da196e9137 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 4d6c7aba-caad-4a94-b180-6d4379626e21 + Mass + 100.0 + + + + + + + 5.0 + 66.07652873 + c781e004 + part_c781e004-6dec-4760-8d43-243728f8e4d5 + c781e004-6dec-4760-8d43-243728f8e4d5 + + + 78.25948799 + + MI_Restricted_Substances + 75a1c963-399c-444d-a38f-1929c00d15b7 + + Normalized + Low alloy steel, AISI 4150, normalized + 8d70de8d-1d0e-4a4b-801f-f95215c3976a + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 5ebcadfc-4777-48c0-8c5a-d9cfbfa16325 + Mass + 100.0 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 52139b6c-770b-46c3-9071-80999f8382a7 + Mass + 100.0 + + + + + 3.10578742 + + MI_Restricted_Substances + 1851a6ff-c2e6-4bc6-ab7a-a0eae431e281 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 5140, oil quenched & tempered at 540°C + c729cdfe-6a51-4370-b488-c287406172e2 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 34620b10-bb57-496d-8575-9a758f6e5672 + Length + 73.59116839 + + + + + 3.10578742 + + MI_Restricted_Substances + 644fc87d-87f3-468c-9a88-b8e2db43ae6b + + water quenched & tempered at 650°C + Low alloy steel, AISI 4130, water quenched & tempered at 650°C + 658cb1e8-b222-4188-9e64-f4df80338b62 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + adf2d187-1992-4151-a37c-c2149382bb0b + Mass + 65.68598685 + + + + + 3.10578742 + + MI_Restricted_Substances + c15a44c3-d8be-4ae8-9a58-281f13b731cd + + YS420, cold rolled + High strength low alloy steel, YS420, cold rolled + 75c9a03c-429e-4914-a23d-a4b305f0cf9c + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 85c5e31f-cc31-485d-a4d5-4f439b884794 + MassRemoved + 23.23303805 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + d4b40bf2-bc76-4582-b25a-b90a0cadcfad + Mass + 100.0 + + + + + 3.10578742 + + MI_Restricted_Substances + 21dcdeeb-524a-488e-b332-fcd4e1caf6f7 + + water quenched & tempered at 650°C + Carbon steel, AISI 1095, water quenched & tempered at 650°C + ae27b040-e52b-4a16-8609-dbbc671c97f3 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + c5a8c571-1e07-406a-b2ef-9e6aa295ea19 + Length + 53.1344684 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 5b8d094f-3398-4ef9-a662-0f4c5ab3a86e + Area + 51.96598491 + + + + + 3.10578742 + + MI_Restricted_Substances + 1b3f17f9-2754-4fc4-bfa2-75ff0df55185 + + Polytetrafluoroethylene (PTFE)/Glass fiber, PCB laminate + Polytetrafluoroethylene (PTFE)/Glass fiber, PCB laminate + 7c1f398f-df49-45f6-b3b6-432c087f268d + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 537e1811-9212-4162-beab-93f0bf581d6f + Mass + 100.0 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 4ae4ce1a-50e8-4c13-9b14-b04cdb768561 + Length + 91.35944228 + + + + + 3.10578742 + + MI_Restricted_Substances + 4f35be96-97d7-4cea-bd9a-316ce3dbe46e + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 8740, oil quenched & tempered at 425°C + 711d23f1-e1d1-4071-acc0-a71da961a93e + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + bda1ae1e-2cee-4f9d-a249-608570a13981 + Mass + 100.0 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 592bba8e-fff8-473e-ae64-fa414716e95c + Area + 94.37330923 + + + + + 3.10578742 + + MI_Restricted_Substances + 2fca0cda-4548-4601-ade6-49478da1542f + + Potash soda lead glass - 0120 + Potash soda lead glass - 0120 + 144549de-c05a-4f1d-ab02-55b3b7864a35 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + cccde058-d3c4-47f6-b3ea-7cd7ecb9738d + Mass + 100.0 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 21969510-545d-40d2-9285-022e1e4c34b9 + Mass + 100.0 + + + + + + + 4.0 + 34.73992586 + 3faf1c02 + part_3faf1c02-59c7-4ecd-aeee-a7e858166b6e + 3faf1c02-59c7-4ecd-aeee-a7e858166b6e + + + 17.06108847 + + MI_Restricted_Substances + 5b117a10-9c48-4dd0-a869-6eb490031da5 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 8640, oil quenched & tempered at 315°C + f9f46acf-b949-4c88-a4fc-1fac6b060499 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 27bbf502-8873-4da2-a061-5fac31a30463 + Mass + 100.0 + + + + + 11.84841593 + + MI_Restricted_Substances + 0c03540d-4b15-4c02-ac02-22aeb9a026d1 + + As rolled + Carbon steel, AISI 1050, as rolled + 86de2392-1c0c-4669-84e6-e9706904b083 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + d12be22d-c654-43de-a124-dbeb82fe01af + Mass + 100.0 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 6262f7bd-bdcc-425a-b0ab-839797dfd342 + Mass + 100.0 + + + + + 11.84841593 + + MI_Restricted_Substances + b0c0246d-7238-46e4-9081-5bad34efbbdb + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 5140, oil quenched & tempered at 205°C + 3670ad3e-b86c-42d6-9369-98cbe97b1784 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + 5751da81-aab6-4ec8-bfa5-3b0fc3aa666f + Mass + 100.0 + + + + + 11.84841593 + + MI_Restricted_Substances + 31491cd8-6f82-4358-a2d6-ef62bfbbfadd + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 4150, oil quenched & tempered at 205°C + 5668f21e-c347-4e6e-8600-007a6685dcf3 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 4576df90-6acf-478e-aa20-3ff3daf41fac + Mass + 100.0 + + + + + 11.84841593 + + MI_Restricted_Substances + 2a821f5c-97b0-4a08-81b1-de3f1543fb44 + + Alkali strontium clear glass + Alkali strontium clear glass + 82762369-e6d6-4208-bc80-ebec9047c104 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 5ad105d9-bc68-4a9d-94b1-71fb52ae712b + Mass + 100.0 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + d3f08ad0-5a6b-4586-858b-f774abfb5e4d + Mass + 100.0 + + + + + 11.84841593 + + MI_Restricted_Substances + e86ced85-7d75-4b62-8f8e-90bd345ae003 + + Normalized + Low alloy steel, AISI 5140, normalized + c62f6af4-a772-4fae-a097-6102d8585d71 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 88628cc8-966c-43a4-bf3f-ae07beb03e30 + Mass + 100.0 + + + + + 11.84841593 + + MI_Restricted_Substances + 1c7183ad-1608-4e9b-8d01-76721872fbf0 + + Glass/polyimide honeycomb, ±45° fabric (0.088) + Glass/polyimide honeycomb, ±45° fabric (0.088), W Direction + 0184e1c1-d32a-4391-bea7-c89d45ca500c + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + a738a823-8f01-4c63-be05-36c7bf87e740 + Mass + 9.08533405 + + + + + 11.84841593 + + MI_Restricted_Substances + c15a44c3-d8be-4ae8-9a58-281f13b731cd + + YS420, cold rolled + High strength low alloy steel, YS420, cold rolled + 068e5759-afc8-4b4b-9ad6-dbe2c9bb6a9e + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + ec0efe92-6a72-4967-84d2-95261d4c6c08 + Length + 75.22197695 + + + + + + + 8.0 + 26.33637097 + 0dbc4bcb + part_0dbc4bcb-7860-4d68-9e1c-2262ae49c643 + 0dbc4bcb-7860-4d68-9e1c-2262ae49c643 + + + 31.87788717 + + MI_Restricted_Substances + 817b973c-3e12-4b5f-96b3-89b05d14d76c + + ASTM A500 Grade C + Structural steel, ASTM A500 Grade C + ebfeefe1-6b1e-4e0c-955f-0fab4f7c9923 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 6f0add2b-811a-4910-bc00-819613f56130 + Mass + 100.0 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 9a201574-74b0-4655-afee-b0cde6b6c0ad + Mass + 100.0 + + + + + 68.12211282 + + MI_Restricted_Substances + 9df55457-5300-4ddb-b92e-122b5c121621 + + Glass and mineral filled, encapsulation, molding + Novolac (glass and mineral filled, encapsulation, molding) + a510660d-8847-40e7-9013-1b3a2aa1e846 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 721bb10d-40b3-40f8-a442-31329929a99a + Mass + 100.0 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 0dbd4f92-52da-4612-8f9b-445d36bd2baf + Mass + 100.0 + + + + + + + 4.0 + 43.53972908 + 8719cee3 + part_8719cee3-7e5e-419e-82b4-a33ad703e445 + 8719cee3-7e5e-419e-82b4-a33ad703e445 + + + 6.81662909 + + MI_Restricted_Substances + 91d7e1bd-d353-4eb1-9634-286e8e69d0d5 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1141, oil quenched & tempered at 540°C + 09339501-b90d-4cc7-b6f3-ad949f588d4d + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 3e935dc2-739a-49b1-9698-176143391e94 + Mass + 44.90814821 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + c343fa32-2b7b-42c9-aee9-0c00bce27843 + Length + 72.75481646 + + + + + 15.53056181 + + MI_Restricted_Substances + 0c03540d-4b15-4c02-ac02-22aeb9a026d1 + + As rolled + Carbon steel, AISI 1050, as rolled + 04b0c57d-d8dd-4273-8532-8996b5b50db9 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 865313d8-57a7-40af-85b4-929a1aac2fcb + Mass + 100.0 + + + + + 15.53056181 + + MI_Restricted_Substances + bbe0765c-012b-434e-878b-b40ad692b373 + + YS550, hot rolled + High strength low alloy steel, YS550, hot rolled + da34dc54-db5a-40de-a63d-af3f077d3709 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + a3719d7a-5b96-47ca-97a0-bddd60ff8504 + Mass + 100.0 + + + + + 15.53056181 + + MI_Restricted_Substances + 28d51559-b49b-4a2b-9f09-9a198db03164 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 4340, oil quenched & tempered at 425°C + b6f03f03-413a-4337-ba39-05190a7b2dd7 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 594dabbe-39fd-4dd1-b88e-478b03efea2a + Mass + 100.0 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + 921a2ff2-aff7-4122-a3e3-1d9b999e2e22 + Mass + 100.0 + + + + + 15.53056181 + + MI_Restricted_Substances + ab895171-8c16-4056-9062-78f7516be1b0 + + Borosilicate - 7050 + Borosilicate - 7050 + 9c05940d-1c2a-4e3d-969c-d01087aaf891 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + bff839a3-d322-4f30-ab57-f2a490f66d3a + MassRemoved + 56.52059859 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + c29daa43-5f13-4db1-850f-84554bde107e + MassRemoved + 14.1547991 + + + + + 15.53056181 + + MI_Restricted_Substances + 9e11a8f7-0b35-4610-aee9-557a236bbe5c + + Soda borosilicate + Soda borosilicate + 5dc0bd97-c630-46fb-a89e-16a37070be8c + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 2ded6187-797e-46b0-bc88-cd21cb67e9dd + Mass + 100.0 + + + + + 15.53056181 + + MI_Restricted_Substances + 0a203f13-4112-4c7b-8d17-bd9ce600f647 + + YS350, cold rolled + Dual phase steel, YS350, cold rolled + f2dfa513-aae0-4797-beb9-1ed13e79d1d8 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + bf617362-33d0-4391-a330-bb1605b6106a + Mass + 100.0 + + + + + + + 6.0 + 81.78324204 + a0b611b5 + part_a0b611b5-342d-4b79-be32-7c9a076e0e8f + a0b611b5-342d-4b79-be32-7c9a076e0e8f + + + 18.18186031 + + MI_Restricted_Substances + 99d1c1c6-eca3-40ed-a479-6dec902f52da + + YS400, cold rolled + TRIP steel, YS400, cold rolled + f4beeddc-916c-4c6b-b4ef-579374ef198d + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 5046dd39-4752-4147-877b-f1661f6e3812 + Mass + 23.84798416 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + 636cacf1-3471-4160-b4da-89d7cb071e26 + Mass + 100.0 + + + + + 20.45453492 + + MI_Restricted_Substances + 59606aaf-e663-4044-b533-b4b8cb684253 + + YS500, cold rolled + Complex phase steel, YS500, cold rolled + e9403f7e-9696-4f1d-a154-714de79d9668 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 730d48fa-c6ef-4824-88ff-55453ba45851 + Mass + 100.0 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 028e4dc7-f215-4846-9938-98ef924d2a7e + MassRemoved + 83.67520085 + + + + + 20.45453492 + + MI_Restricted_Substances + b44fad5b-b59d-4153-addf-f70a7895947d + + Annealed + Low alloy steel, AISI 4130, annealed + 618cbf4c-398c-4566-ae46-3b02aeea4d07 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 5e318605-a8ed-40be-9d53-8871d8887891 + Mass + 100.0 + + + + + 20.45453492 + + MI_Restricted_Substances + dce2dc34-54db-4d0a-bab0-85d4e6e08d8e + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 6150, oil quenched & tempered at 650°C + 7a112c50-ea81-4f06-9f2b-e0bb931100f1 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + be96ad5c-ea44-4e45-a520-83bd94672ada + Area + 0.54022697 + + + + + 20.45453492 + + MI_Restricted_Substances + 0c172430-369d-48ad-910e-69fe1451a36e + + Normalized + Carbon steel, AISI 1095, normalized + e81306d4-b281-4497-ba8a-5b2a664492c7 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 9803fbe4-2ff3-4ba5-83cd-4ab5cb34d1b7 + Mass + 100.0 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + dab3d543-1214-4a62-b05e-3f3291a45893 + MassRemoved + 36.13248878 + + + + + + + 4.0 + 35.29463202 + 208ce13a + part_208ce13a-b5f1-4feb-a7bd-e85b0bb4a8ad + 208ce13a-b5f1-4feb-a7bd-e85b0bb4a8ad + + + 100.0 + + MI_Restricted_Substances + 046c72ad-662c-4ce8-8132-16d5254188ee + + Heat resistant, molding + PF (glass and/or mineral filled, heat resistant, molding) + 3e668c82-8399-4eb2-b017-b473ff533ac3 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + 650bd447-3070-4a45-bb76-27c65e9e4ca4 + Area + 96.301162 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 9d95b09b-f3c6-448d-95c8-f6231f465cd3 + Mass + 100.0 + + + + + + + 1.0 + 31.81571887 + + MI_Restricted_Substances + 19db41d7-f431-4cae-8977-8bdab8435374 + + a50db05b + part_a50db05b-55c0-48e8-b262-8bffcfa8738c + a50db05b-55c0-48e8-b262-8bffcfa8738c + + + 9.0 + 67.04694389 + 3a641f16 + part_3a641f16-839e-4d1f-aae2-ee4563f538c1 + 3a641f16-839e-4d1f-aae2-ee4563f538c1 + + + 100.0 + + MI_Restricted_Substances + 72799627-a7c0-4df4-8250-e2be8538565f + + Glass ceramic (N11) + Glass ceramic (N11) + 1f60f091-b4e3-4c58-b54d-61be8f2f0000 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + c3674baf-8976-4c3f-944b-0c659f07fd2f + Area + 77.09710266 + + + + + + + 2.0 + 39.97497518 + ba8288a7 + part_ba8288a7-5880-41d0-a8bc-4a42f0ee5be7 + ba8288a7-5880-41d0-a8bc-4a42f0ee5be7 + + + 79.03927889 + + MI_Restricted_Substances + fc29cc59-a670-4ad6-85a0-eb07bf011f1a + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 6150, oil quenched & tempered at 425°C + 4e1f456c-0ea0-40ac-bb59-3c78d035d548 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 27d27927-bd18-4356-bb79-401374ff5801 + MassRemoved + 8.4510101 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 8a6c5514-4b0d-4384-b2fd-1819bdf963aa + Length + 1.72346453 + + + + + 20.9607211 + + MI_Restricted_Substances + 874b8433-2e47-45c3-9c89-226428104214 + + Glass and mineral filled, heat resistant, molding + Novolac (glass and mineral filled, heat resistant, molding) + 7eda1423-f305-4bde-9d90-2e83666732fd + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + dfc3b8b7-afa2-41a4-8e7d-7d8682633f0d + Length + 17.66234227 + + + + + + + 2.0 + 38.25692699 + 19bd4234 + part_19bd4234-39b1-47f8-8eac-af3b32dbf354 + 19bd4234-39b1-47f8-8eac-af3b32dbf354 + + + 60.86265978 + + MI_Restricted_Substances + 67ea6f19-34d5-40af-9b8c-059058fd840a + + Oil quenched & tempered at 205°C + Carbon steel, AISI 1080, oil quenched & tempered at 205°C + cd2796d3-e2ad-4034-bb16-0ed081b6ba85 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 6d20e938-760d-4d91-80bb-7ef9c624bdd4 + Mass + 15.57574454 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + 2dd4aba0-cfb4-40e5-9e8a-6dc04a8ef5b7 + Mass + 100.0 + + + + + 19.5686701 + + MI_Restricted_Substances + ed1b937b-1738-408f-9591-bd3e40cc5e33 + + Quenched & tempered + Low alloy steel, D6AC, quenched & tempered + a2e8261e-5fd8-40b8-b1de-bf192c84f1a6 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 4f611131-8c4a-4d39-b8ee-dad994576bb7 + Mass + 100.0 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 3f84b836-0ee0-4a42-a86f-5367cdc47fb1 + Mass + 100.0 + + + + + 19.5686701 + + MI_Restricted_Substances + 3606ab13-13f3-49fb-bded-2e3470bcf7d9 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 81B45, oil quenched & tempered at 650°C + 438e3a3e-b57b-4f61-a754-c1a9f8f14655 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + ba4a6d40-3e32-41ca-8396-b53a02414c81 + Length + 53.87500401 + + + + + + + 5.0 + 3.56293544 + 9dd6db59 + part_9dd6db59-314a-44cb-a1f8-80d8fef48bf7 + 9dd6db59-314a-44cb-a1f8-80d8fef48bf7 + + + 20.78174591 + + MI_Restricted_Substances + 0a203f13-4112-4c7b-8d17-bd9ce600f647 + + YS350, cold rolled + Dual phase steel, YS350, cold rolled + 7e1abe58-dc2f-49e9-b7c0-dbc38cbc01d0 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 6728f46f-986a-4275-9387-1cc4faa4da0b + Mass + 85.85280691 + + + + + 39.60912704 + + MI_Restricted_Substances + 55c8dd10-b62f-4136-b1c8-6260fcec05cc + + Annealed + Carbon steel, AISI 1040, annealed + a63a43fb-bd3e-4713-9d59-14cd253dcfb8 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + e10732c7-d7d9-40f8-9ce9-834264f73e30 + Mass + 100.0 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 312ad884-6078-48de-ac21-4b1cb4df5195 + Mass + 100.0 + + + + + 39.60912704 + + MI_Restricted_Substances + 9052201a-a41d-4b86-8c7c-2e80163afd47 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 9255, oil quenched & tempered at 425°C + 3f0e83fa-2dc2-40fd-8673-7af055ac9ebb + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + fdd1873a-08e3-49d6-ac02-ac8740413d2f + Mass + 98.71991826 + + + + + + + 2.0 + 65.84238017 + 91357df5 + part_91357df5-a0a9-4613-9e4e-4db5c3dd290a + 91357df5-a0a9-4613-9e4e-4db5c3dd290a + + + 29.54798421 + + MI_Restricted_Substances + c62d668e-5411-4845-b19c-3a0c4eedf872 + + 10CrMo9-10, normalized & tempered + Low alloy steel, 10CrMo9-10, normalized & tempered + 3f3c809b-73b8-49b9-9c0b-bc086b8b39a9 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 3d8df13c-3e9f-4988-bede-97cdbdea9c70 + Mass + 100.0 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + d644e2f7-3fb6-4478-a0e6-492dc9095c10 + Mass + 100.0 + + + + + 10.06457368 + + MI_Restricted_Substances + bf6aa85b-3059-4b2c-86af-6bcb1996d5b9 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1340, oil quenched & tempered at 540°C + 992bae49-43ed-4d6f-9ab8-9a32662693fe + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + d9c54a78-22a2-4129-8026-e53bf8b5e318 + Area + 24.61552453 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 23cdc31f-0efe-4f13-9490-41453d6a83ed + Mass + 100.0 + + + + + 10.06457368 + + MI_Restricted_Substances + 26c4e2ce-ddb9-499d-bc00-aa0f3bdd9c24 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 8740, oil quenched & tempered at 540°C + 2ea7361e-06a4-4657-87e0-1c0de2008304 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 65a19922-4bb3-4ca4-a6a5-69dca645c5ff + Mass + 100.0 + + + + + 10.06457368 + + MI_Restricted_Substances + 7ab4723d-0e73-471b-9be3-18cf27157318 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 5130, oil quenched & tempered at 540°C + 99975f48-c24c-4386-ba08-6128ca010a84 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 622c3df4-5555-49e5-873b-382ad90ef3ba + Length + 68.23396196 + + + + + 10.06457368 + + MI_Restricted_Substances + 6ad310ec-db2b-43b1-afa1-9b6ddae5880c + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 94B30, oil quenched & tempered at 425°C + 0da179b9-8835-487a-9c7e-dc94a332499c + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 7567cd31-1442-4f82-b28a-fe35bc1588d2 + Mass + 100.0 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + e7d87153-23d8-4119-8d80-f876d25399c0 + Mass + 100.0 + + + + + 10.06457368 + + MI_Restricted_Substances + 8dbb57f2-b225-4f57-9a5a-c25a03292d6e + + Annealed + Low alloy steel, AISI 6150, annealed + b9be711b-55d6-4195-b9d0-e0a8d321904c + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 1834584f-afbf-4ab2-bc96-be73a97aa21e + Length + 65.84657596 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 00887d64-3f95-46fc-9953-4f368a07f0eb + Mass + 100.0 + + + + + 10.06457368 + + MI_Restricted_Substances + a43e27db-2962-4e19-aebb-f135744741e3 + + Annealed + Low alloy steel, AISI 5120, annealed + ddf239e2-6149-43a3-8000-236874b5839b + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 0ef4f2b1-4984-4c98-90bd-180542bd7dde + Mass + 100.0 + + + + + 10.06457368 + + MI_Restricted_Substances + 5169a157-0d18-4d45-b197-799e06aa00bc + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 9255, oil quenched & tempered at 315°C + b85fa4ef-7d24-45db-b8ab-89797f8458c2 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 727324d2-de0e-483e-869c-5ce872d30888 + Length + 39.33581776 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + eef71883-cb51-409a-b7ce-70882f5ef579 + Mass + 100.0 + + + + + + + 3.0 + 19.39443532 + 1ff628be + part_1ff628be-8e3f-4c38-879f-0b4048e9e811 + 1ff628be-8e3f-4c38-879f-0b4048e9e811 + + + 65.88009431 + + MI_Restricted_Substances + b00ee3d8-d653-4c76-8154-c2f07820ceda + + As rolled + Carbon steel, AISI 1080, as rolled + 34f2f2b5-283d-41db-9853-4563182a132c + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 666ac6f9-c3bc-48e2-bc93-7e95e405309a + Length + 13.83783016 + + + + + 5.68665094 + + MI_Restricted_Substances + dcce1340-a96d-465a-8878-4d8f44c2f7f7 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 5150, oil quenched & tempered at 540°C + 1f4c5613-0146-4a59-a030-e486677f0f9b + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 1963c1c5-b111-47ea-bb86-1bbde20ee277 + Mass + 100.0 + + + + + 5.68665094 + + MI_Restricted_Substances + b879bb01-8648-4b5b-8159-d591cb251ca8 + + Normalized + Carbon steel, AISI 1080, normalized + a01b000d-fda4-4c5d-8d5d-d69fd0bb5e70 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 56e8844a-a9f1-4e73-b34e-8dda8ee558ec + Mass + 100.0 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 578cc726-506b-4075-ad45-8cff91a53ada + Mass + 100.0 + + + + + 5.68665094 + + MI_Restricted_Substances + 2be5267e-fce0-4169-a0fe-d8de913e1d71 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 8640, oil quenched & tempered at 205°C + f68aa67a-f7f4-489e-9eaa-286340efe2d1 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + dc22fa7d-7549-4386-8c95-1837f5c128b2 + Mass + 100.0 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 530a525e-76b2-4f7f-9788-0e6d257c2238 + Mass + 100.0 + + + + + 5.68665094 + + MI_Restricted_Substances + f95fb065-be79-4298-84c9-9f276ea46e48 + + Glass/polyimide honeycomb, ±45° fabric (0.088) + Glass/polyimide honeycomb, ±45° fabric (0.088), L Direction + 03a3141d-7b1e-4fff-a8a6-37299f364430 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 56360d01-e86f-423e-b37b-9fa3ba08185e + Mass + 59.82428475 + + + + + 5.68665094 + + MI_Restricted_Substances + 2017a3b5-88e7-473f-b7c9-1ab8afe722fe + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 5160, oil quenched & tempered at 540°C + 9904d2c7-5bf9-4f27-8090-81297a499433 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 0b71141e-c7c1-41f5-87e5-badcfc0a5a0c + Length + 67.20160216 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + a22737bb-cc0a-4f41-9a11-64e3af9a7db4 + Area + 42.62708776 + + + + + 5.68665094 + + MI_Restricted_Substances + e678781a-1b38-4709-816b-9db609651db6 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 50B60, oil quenched & tempered at 425°C + e7349359-10ab-4551-be4e-c99c7405dde4 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 93c0653b-b85f-40c7-93ee-3a0d7f16d0a6 + Mass + 100.0 + + + + + + + 9.0 + 66.35584303 + 873e2b55 + part_873e2b55-ef6f-416b-9880-a137f2b762af + 873e2b55-ef6f-416b-9880-a137f2b762af + + + 54.27944718 + + MI_Restricted_Substances + 81ce98b3-d459-4695-9dd9-d53244be47ed + + Annealed + Carbon steel, SA216 (Type WCC), cast, annealed + 023a42db-39d1-420c-bd0c-c50e7ec5d6b3 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 219011eb-716b-4b65-9d55-75b1e95d8541 + Mass + 100.0 + + + + + 45.72055281 + + MI_Restricted_Substances + b872537b-c0a0-4c3e-8388-e5544183cdd3 + + water quenched & tempered at 425°C + Carbon steel, AISI 1030, water quenched & tempered at 425°C + 85907385-a5ab-40fb-a8a1-d2d28034c0eb + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + c35e2aff-f3f8-4e4e-9a92-f70a56d3e198 + Length + 72.00127987 + + + + + + + 8.0 + 25.11062357 + 260376b9 + part_260376b9-7f28-4b9d-ba85-c71529c2e558 + 260376b9-7f28-4b9d-ba85-c71529c2e558 + + + 100.0 + + MI_Restricted_Substances + 2096ca77-9981-4fd5-9bc6-afe56b3bbbd4 + + Glass/phenolic honeycomb, 0°/90° fabric (0.096) + Glass/phenolic honeycomb, 0°/90° fabric (0.096), W Direction + cd0e804b-5055-491c-91bb-f578cd24b402 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + ac430bac-6be6-4ca3-a355-eaf8a392dca2 + Mass + 100.0 + + + + + + + 4.0 + 81.72868759 + 650a75cd + part_650a75cd-cf12-4f02-894a-47b250a8a649 + 650a75cd-cf12-4f02-894a-47b250a8a649 + + + 35.70998717 + + MI_Restricted_Substances + 44a3cdc8-1092-45c0-be37-1802daa92d30 + + Borosilicate - 7052 + Borosilicate - 7052 + 5c6db892-edf7-4a01-891a-62b1a8c3c0b3 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + a27619f0-e851-4da1-a062-7e6c7629df5f + Mass + 100.0 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + 29cedba9-c8e5-484f-8b1e-1573897b939a + Area + 74.10303394 + + + + + 32.14500641 + + MI_Restricted_Substances + 874b8433-2e47-45c3-9c89-226428104214 + + Glass and mineral filled, heat resistant, molding + Novolac (glass and mineral filled, heat resistant, molding) + 3bd97cc5-55ff-4338-8f5b-868161733ffb + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + d09771bf-6836-4948-99e4-add1146832cc + Mass + 70.76565323 + + + + + 32.14500641 + + MI_Restricted_Substances + bafd43bc-822e-4a22-bbac-ea5d189fb539 + + Glass/phenolic honeycomb, 0°/90° fabric (0.096) + Glass/phenolic honeycomb, 0°/90° fabric (0.096), L Direction + 9adcfe4f-0bcb-4a67-b39a-cb7ce736e73b + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 3b5ffc91-f48d-403f-ae38-123563087d04 + MassRemoved + 57.18002736 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + a921ce26-772c-4779-8f41-ef92162af905 + Area + 19.03296742 + + + + + + + 1.0 + 41.88864475 + 9ebdc15a + part_9ebdc15a-d6ae-45be-99de-789d4100ca40 + 9ebdc15a-d6ae-45be-99de-789d4100ca40 + + + 100.0 + + MI_Restricted_Substances + a89802d6-13c5-496d-b139-57ae43e6591c + + As rolled + Carbon steel, AISI 1022, as rolled + 94c367bb-be30-41d7-b198-c89579e1eacd + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + cd0c3208-da44-4c68-bea8-bde114513392 + Mass + 100.0 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + b65d9c76-58c0-4361-9dc0-a64d214066cb + MassRemoved + 76.78188722 + + + + + + + 5.0 + 13.1076233 + b489c8c7 + part_b489c8c7-b4d5-4664-aa4b-bb5250ccf3b2 + b489c8c7-b4d5-4664-aa4b-bb5250ccf3b2 + + + 100.0 + + MI_Restricted_Substances + 23967b46-b6a1-4f82-9a4f-d0ea6e728ece + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 5160, oil quenched & tempered at 650°C + 73ef86b5-6d18-4588-a375-1e5a070886e8 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + fbf0e496-74ad-4a0d-9726-2358bc601732 + Length + 39.46813365 + + + + + + + 4.0 + 96.19634109 + 5b9257d1 + part_5b9257d1-f821-4fff-a137-7e3ee55bfa4e + 5b9257d1-f821-4fff-a137-7e3ee55bfa4e + + + 93.02073823 + + MI_Restricted_Substances + be8a7515-ee24-4272-814c-77d9175f6448 + + As rolled + Carbon steel, AISI 1137, as rolled + 6ea1fac4-fb32-4f3c-af4b-f096113a38dc + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + aa5fbc04-e9e0-454a-bc5d-97ee7d8abd00 + Mass + 100.0 + + + + + 0.99703739 + + MI_Restricted_Substances + 96ffbd8d-b296-4749-a0b0-fc5d243affda + + water quenched & tempered at 540°C + Carbon steel, AISI 1095, water quenched & tempered at 540°C + 156d7400-497b-46ae-b90a-01d15ae3584a + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 52debb42-5c4c-4d64-894a-f848f6076635 + Mass + 100.0 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 83a1e091-bf83-4510-906d-e127384dbaba + Length + 30.02789147 + + + + + 0.99703739 + + MI_Restricted_Substances + 9e6962c2-d850-4285-97e5-fbb27dbc0447 + + water quenched & tempered at 425°C + Carbon steel, AISI 1050, water quenched & tempered at 425°C + ed8f8b22-77d8-47c4-8445-35f902c2fd70 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 48d616ec-5d6c-43ef-8222-c9f556facab8 + Area + 36.97503425 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 2598e531-13cd-4f51-924c-73bd3f0cbc5d + Length + 22.49289458 + + + + + 0.99703739 + + MI_Restricted_Substances + 6c7c9029-b53e-45cd-9578-92083101604c + + Glass/phenolic honeycomb, ±45° fabric (0.032) + Glass/phenolic honeycomb, ±45° fabric (0.032), W Direction + fa45dc1e-1853-45e1-83a8-443a15d8245d + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + d9f0a1eb-bbaa-40ee-a757-f8cdedaa53e8 + Mass + 65.56594081 + + + + + 0.99703739 + + MI_Restricted_Substances + f92ff01e-ed35-4c66-96d1-607d9684b44b + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 94B30, oil quenched & tempered at 315°C + 3e210ce1-97e5-430d-803f-b12cade81d95 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 7a24a97b-8f05-466b-918b-4dc2f6c5ed90 + Mass + 100.0 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 60b3d98f-e477-465c-abc1-f70e10b5d9da + Mass + 1.460336 + + + + + 0.99703739 + + MI_Restricted_Substances + 8cd50236-3f00-4460-9e77-bc85138f34c4 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 51B60, oil quenched & tempered at 425°C + fdb12a23-07e4-41ed-a7db-1d63e9dba3dc + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 13e03c77-918f-49ce-823b-98f25145eb80 + Mass + 100.0 + + + + + 0.99703739 + + MI_Restricted_Substances + 6d6a3603-a2a8-4db9-9e7e-ad4fc4f9c724 + + Glass/phenolic honeycomb, ±45° fabric (0.064) + Glass/phenolic honeycomb, ±45° fabric (0.064), W Direction + 642bc4ec-7dc1-4e24-b9de-f50f4971c09c + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + dcf23f35-d5c6-4368-b02e-6c0aa653c3eb + Mass + 100.0 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 900cce51-db5c-4b9c-b9b4-9a315fb29b16 + MassRemoved + 52.89711791 + + + + + 0.99703739 + + MI_Restricted_Substances + 87e1a3cd-fd79-4013-b5f8-56d6f28bef34 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1144, oil quenched & tempered at 540°C + 15f2d5f4-0d3f-4dcb-ac36-3502ea6bc955 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 63823504-d8fb-4123-933c-f810c438558b + Mass + 18.23167261 + + + + + + + 3.0 + 22.85209881 + 7d1e9930 + part_7d1e9930-f664-42e2-9303-926b6b2461e0 + 7d1e9930-f664-42e2-9303-926b6b2461e0 + + + 70.84336279 + + MI_Restricted_Substances + a6ee4feb-80c5-43a7-b3ee-a1423218f502 + + AF1410 + High alloy steel, AF1410, solution treated & overaged + 2f3e003b-677d-4d37-8f9f-8d1464636002 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + fc55e36d-d625-4e4c-98a3-e04855bb014e + Mass + 100.0 + + + + + 29.1566372 + + MI_Restricted_Substances + d121aded-0a6a-41ae-be9f-f0532fab5cfd + + water quenched & tempered at 540°C + Carbon steel, AISI 1030, water quenched & tempered at 540°C + 8b20fef8-50e4-45ea-8bd2-cca011716365 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + f1eebee2-01d2-4e54-b6c3-d097f4ad32bf + Mass + 100.0 + + + + + + + 3.0 + 95.23446359 + 4023ab0f + part_4023ab0f-9880-418e-8820-5951c5d64aca + 4023ab0f-9880-418e-8820-5951c5d64aca + + + 19.39571714 + + MI_Restricted_Substances + ce76abdf-c476-4643-8436-8e49a2813e39 + + Oil quenched & tempered at 425°C + Carbon steel, AISI 1080, oil quenched & tempered at 425°C + 1bde5ecf-700e-4a11-97af-e0288a8e8c9b + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + d7eafcf8-27cc-4ebe-934c-6d935638c057 + Mass + 46.43484966 + + + + + 80.60428285 + + MI_Restricted_Substances + af4f67b9-f5a7-4fc3-9f1d-da3309e4b19a + + Solution treated & aged + Iron-base-superalloy, Cr-Ni alloy, A-286, solution treated & aged + 98d98926-df80-4f95-9608-402ddc11f352 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 11ab8d32-b3f3-49f9-9742-57531e3f2a0f + Mass + 100.0 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 9b3018cd-88ea-4707-885d-edf6ad1b12dc + Mass + 100.0 + + + + + + + 3.0 + 31.53040107 + b5828b97 + part_b5828b97-1075-4774-be6c-accf9015044f + b5828b97-1075-4774-be6c-accf9015044f + + + 46.0624912 + + MI_Restricted_Substances + 00fe0155-9aca-4c9d-b0a2-1289f92fa2a0 + + Alkaline earth lead glass + Alkaline earth lead glass + 217f3630-b6ca-496a-9cf2-f3de87d86d02 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + e032fb18-10f2-491f-b682-593060272c98 + Mass + 100.0 + + + + + 8.98958479 + + MI_Restricted_Substances + fab0ed5a-7494-4bcb-b57a-e0d565751dfe + + Potash soda lead glass - 1990 + Potash soda lead glass - 1990 + 689fa427-652b-49ea-af17-4831b88b7446 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 7e70493a-73d5-40e6-b18d-87553700cf8a + Mass + 100.0 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 7ca68a1c-ff4c-43e4-93f4-8bb83e0f0e75 + Length + 20.89018701 + + + + + 8.98958479 + + MI_Restricted_Substances + a68201e5-218b-4387-9e30-d1332ccfa44f + + Oil quenched & tempered at 315°C + Carbon steel, AISI 1340, oil quenched & tempered at 315°C + 57c62021-7086-4950-a92c-456b85b9e884 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 676d724a-c0d0-49ab-9f89-5b4d9254e89e + Mass + 100.0 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + d8787978-abf8-42e7-84b8-015687e6c2c7 + Mass + 100.0 + + + + + 8.98958479 + + MI_Restricted_Substances + 1d5dd59c-75a0-4bf2-8862-7d77996aa0be + + Annealed + Low alloy steel, AISI 8650, annealed + c0d00feb-229c-45d8-b780-8d491e068b28 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + a4a4e099-acc5-405a-8bda-09da836ffc14 + Mass + 100.0 + + + + + 8.98958479 + + MI_Restricted_Substances + ef4e19ac-4c9c-4fc1-b971-3ce21de330a2 + + Glass/polyimide honeycomb, ±45° fabric (0.128) + Glass/polyimide honeycomb, ±45° fabric (0.128), W Direction + d0328aa0-162b-40b6-852c-c3aa591010b9 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 08fbec63-9041-46ca-b103-6b5477c34130 + Mass + 100.0 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 70cf2e8c-ff1b-4eef-81ff-44b95dcc433f + Mass + 100.0 + + + + + 8.98958479 + + MI_Restricted_Substances + 2096ca77-9981-4fd5-9bc6-afe56b3bbbd4 + + Glass/phenolic honeycomb, 0°/90° fabric (0.096) + Glass/phenolic honeycomb, 0°/90° fabric (0.096), W Direction + 9f41888e-8aac-4160-b914-30890b83248c + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 49748196-7cb6-4172-b1da-1f5290340c74 + Length + 5.71025973 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + cc937aff-8c52-4315-b307-e41c7e4ef08c + Mass + 100.0 + + + + + 8.98958479 + + MI_Restricted_Substances + 67cc68ee-c8ab-40bd-bf62-4babd642a1fd + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 81B45, oil quenched & tempered at 425°C + 47a5075d-5e27-4e53-8b2a-eabaec901f1c + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 4a76f34b-6d55-432e-ad78-60128d843a4f + Mass + 100.0 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + abd73439-a4ae-4ba3-a258-fd5fc322115a + Mass + 100.0 + + + + + + + 4.0 + 23.83217835 + 06628875 + part_06628875-d9ee-4c09-89e7-0f454a13cd45 + 06628875-d9ee-4c09-89e7-0f454a13cd45 + + + 81.65922522 + + MI_Restricted_Substances + ee08f647-79af-49f3-98c5-043480a0fed4 + + Quenched & tempered + Low alloy steel, 4330V, quenched & tempered + 33f6730d-9f32-4321-8418-a3d9a8e4c514 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + d423ef7a-2f61-4992-9f5f-e4bacf13607b + Mass + 100.0 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + f4171533-291f-4ce9-9087-d31d486f10d0 + Mass + 100.0 + + + + + 18.34077477 + + MI_Restricted_Substances + d411a96b-aa1c-4651-a405-5a2bc5c32dff + + Modified, Grade 91 + Alloy steel, 9Cr-1Mo-V, modified, Grade 91 + a5fa4139-e40c-47fb-a213-a703316d9a57 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + f96af788-4771-487b-a457-aeafa787e071 + Mass + 100.0 + + + + + + + 8.0 + 88.41213844 + + MI_Restricted_Substances + fd7a9f3d-cb52-4422-8ede-c25a48f61056 + + 6795518b + part_6795518b-1296-4afe-b918-433b4c411abc + 6795518b-1296-4afe-b918-433b4c411abc + + + 8.0 + 1.59783889 + + MI_Restricted_Substances + fd7a9f3d-cb52-4422-8ede-c25a48f61056 + + 52486ce9 + part_52486ce9-d674-4917-bb14-f25a244a5a8e + 52486ce9-d674-4917-bb14-f25a244a5a8e + + + 7.0 + 43.84390643 + + MI_Restricted_Substances + 80083213-3621-42c0-9e23-cdaa30c759e6 + + 5392a22c + part_5392a22c-ee32-4fd6-8428-0968c023863e + 5392a22c-ee32-4fd6-8428-0968c023863e + + + 3.0 + 39.93307875 + fd45e442 + part_fd45e442-8f0c-4731-b486-355c460e573f + fd45e442-8f0c-4731-b486-355c460e573f + + + 100.0 + + MI_Restricted_Substances + 90b2285b-4295-429d-beb8-90d9f5df0101 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 5046, oil quenched & tempered at 315°C + cb7ea85e-72ec-4dee-bee5-f9a93f4ad9ad + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 5b3d7c37-3bb1-41e3-91f3-d37aefcdfd96 + Mass + 100.0 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + f1deacca-1590-431d-b8fc-fe4934ecb0e3 + Mass + 100.0 + + + + + + + 2.0 + 99.16980178 + 76104c26 + part_76104c26-866e-4db9-9d90-7097e3982b3d + 76104c26-866e-4db9-9d90-7097e3982b3d + + + 38.34366339 + + MI_Restricted_Substances + 3cad12a9-0765-402c-a6b1-0be665ecd2e6 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 4140, oil quenched & tempered at 540°C + fc0e832c-2179-4f80-850a-a311863ffadd + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 89e7a6a4-d35c-4b53-b22a-188467bcd226 + Mass + 100.0 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 1b37e761-da85-4f06-8215-34330d7f61cf + Mass + 100.0 + + + + + 7.70704207 + + MI_Restricted_Substances + 45a257d5-da48-4520-9174-ffe7bbadcd1c + + Glass/phenolic honeycomb, ±45° fabric (0.088) + Glass/phenolic honeycomb, ±45° fabric (0.088), L Direction + 83e993b0-6437-4eb5-a265-245d967243f1 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 176aea18-0ec1-4b4f-bceb-bddb9547aebe + Area + 88.5832304 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 93dea267-4bef-403b-a62d-1a8a007593c2 + Mass + 100.0 + + + + + 7.70704207 + + MI_Restricted_Substances + 211ae46e-0827-4d61-af66-5a72c42d0cd8 + + T-glass + T-glass + a9a90986-ee65-4929-a4b6-f935adf547e9 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 25b28a90-51c9-4416-9ad3-3fe04a1746e2 + Mass + 100.0 + + + + + 7.70704207 + + MI_Restricted_Substances + 4df9287d-c8fa-47a8-8f7b-218fdc14a141 + + Normalized + Low alloy steel, AISI 4340, normalized + edf4f538-5d79-419b-929f-aaa781ef585d + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 561f8a3b-3a9a-4141-aa92-ecca13669933 + Mass + 100.0 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 4d917439-f220-47bc-9ed2-cb39bb0b83cd + Mass + 100.0 + + + + + 7.70704207 + + MI_Restricted_Substances + 644fc87d-87f3-468c-9a88-b8e2db43ae6b + + water quenched & tempered at 650°C + Low alloy steel, AISI 4130, water quenched & tempered at 650°C + 3c3474e6-baf8-44fa-b65b-095b10e30b8d + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 2c8a6e29-c719-489c-b5cc-4068a6161ded + Mass + 100.0 + + + + + 7.70704207 + + MI_Restricted_Substances + 9ce914d8-75c1-4c5f-8c57-11c0e62b2cfa + + ASTM A299 Grade A + Structural steel, ASTM A299 Grade A + 48671cfe-bff1-4aef-a9ec-7ca411fb54f1 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 5010ab7a-ded4-4271-827c-cd2bfdbc5f4e + MassRemoved + 56.04752011 + + + + + 7.70704207 + + MI_Restricted_Substances + 90b2285b-4295-429d-beb8-90d9f5df0101 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 5046, oil quenched & tempered at 315°C + 15109e4a-788f-45d7-b307-7eae9067ed3b + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 482c2990-9110-46c6-b63b-1fd1332ec968 + Mass + 100.0 + + + + + 7.70704207 + + MI_Restricted_Substances + 966360b2-fda5-432b-9069-4a9814db3e6b + + YS1200, hot rolled + Martensitic steel, YS1200, hot rolled + 615c2e3c-f676-4a21-8bd3-aa289ab2f97f + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 1bc2734f-76ea-4eee-ac4e-3d305cac579e + Mass + 100.0 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + ee9438ae-3a81-4135-94df-b9c951d9e3b0 + Mass + 100.0 + + + + + 7.70704207 + + MI_Restricted_Substances + 924b3986-e315-4b28-9daa-56a075aa18e9 + + Annealed + Low alloy steel, AISI 52100, annealed + 70eb3599-7754-404f-bbf4-c843a0d22ab8 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + beff16be-fa66-4825-94ed-f0627705c853 + Mass + 73.71533441 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 95e5da93-2323-4390-9111-995c2f3b4a15 + Mass + 100.0 + + + + + + + 2.0 + 84.14036807 + fa4944fc + part_fa4944fc-c700-4f4f-8520-ba8f7173c98d + fa4944fc-c700-4f4f-8520-ba8f7173c98d + + + 83.08901138 + + MI_Restricted_Substances + 87b588e6-604a-4acb-a651-c882f6211f74 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 8660, oil quenched & tempered at 650°C + 700b12bc-62b3-4c8d-ae28-a486940d8001 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 223ffc08-825b-4d8d-9930-631abbb47b36 + MassRemoved + 77.06509645 + + + + + 2.8184981 + + MI_Restricted_Substances + 5169a157-0d18-4d45-b197-799e06aa00bc + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 9255, oil quenched & tempered at 315°C + 0b984f84-b973-4107-b1b6-b17ccefbd7f8 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 67d84b4a-6da7-4fc2-98cf-e5220310f972 + Mass + 100.0 + + + + + 2.8184981 + + MI_Restricted_Substances + 23967b46-b6a1-4f82-9a4f-d0ea6e728ece + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 5160, oil quenched & tempered at 650°C + 6db0fe77-beeb-4841-b6fb-1ca4e65c1d5d + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 6d9f7993-fd2d-4dae-949b-77639a6bc6c6 + MassRemoved + 49.375426 + + + + + 2.8184981 + + MI_Restricted_Substances + 619c1e62-d6e1-4a5d-9abc-99a0b6c0ed7e + + Oil quenched & tempered at 315°C + Carbon steel, AISI 1141, oil quenched & tempered at 315°C + bab1cdce-dc22-49ec-bae4-99408792ca79 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 290a4dc9-7b4c-49b0-97c7-e93b67c2b124 + Mass + 100.0 + + + + + 2.8184981 + + MI_Restricted_Substances + f92ff01e-ed35-4c66-96d1-607d9684b44b + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 94B30, oil quenched & tempered at 315°C + 84013519-f260-4996-8f52-eae2dd77a93d + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + 4c1c16e7-e2d4-4e31-91e1-c17abd37e0fc + Length + 1.58711099 + + + + + 2.8184981 + + MI_Restricted_Substances + fdf47c86-6c5b-4bba-b434-574871039636 + + Glass/phenolic honeycomb, 0°/90° fabric (0.035) + Glass/phenolic honeycomb, 0°/90° fabric (0.035), W Direction + 90bcb052-78bc-4251-85aa-0555a18e93ae + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 5f85a2cc-06aa-4971-95b2-20133fe72956 + MassRemoved + 75.49642975 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 13d90310-e45a-4c4d-a6db-66fbe8b84c3e + Mass + 100.0 + + + + + 2.8184981 + + MI_Restricted_Substances + 31491cd8-6f82-4358-a2d6-ef62bfbbfadd + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 4150, oil quenched & tempered at 205°C + b3b3edfa-7cb4-4d3c-8c11-9e0bf7ceb4da + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + aeaa7c7d-552a-45bc-8fee-9369f478869e + Mass + 100.0 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + a7bacc7a-94ee-411a-b005-0a903e9276c8 + Mass + 93.80614892 + + + + + + + 1.0 + 18.80020835 + 3890ee72 + part_3890ee72-ec9e-4a61-956a-2f3bf7cff8f1 + 3890ee72-ec9e-4a61-956a-2f3bf7cff8f1 + + + 35.71945784 + + MI_Restricted_Substances + 1851a6ff-c2e6-4bc6-ab7a-a0eae431e281 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 5140, oil quenched & tempered at 540°C + 55a1b794-3e9e-4975-a05a-14b7b6e0b6ad + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 967af45a-0b14-473a-8705-a9e81e9b7dac + Length + 50.22482683 + + + + + 16.07013553 + + MI_Restricted_Substances + 55c8dd10-b62f-4136-b1c8-6260fcec05cc + + Annealed + Carbon steel, AISI 1040, annealed + 1a7dccf4-7487-4ad5-b672-fe8762edc3b9 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 8960a5e0-b2ce-4d40-b5b4-acca4e81a78a + MassRemoved + 81.07648467 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 13897563-6b51-4c26-8e14-0ecbf4347286 + MassRemoved + 18.30567131 + + + + + 16.07013553 + + MI_Restricted_Substances + ddefbfb8-3b97-480b-887d-0ddadf161d95 + + YS350, cold rolled + High strength low alloy steel, YS350, cold rolled + 609457c6-aebc-4d31-9fa5-b007283c4915 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 74ae08d1-3c4f-4117-867f-fec0de55cb8e + Mass + 100.0 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + b4f9cb90-f827-4693-822e-ac9d8bb3f4d7 + Mass + 100.0 + + + + + 16.07013553 + + MI_Restricted_Substances + 3fd6cebb-a683-45be-b014-7c3fb617c3e7 + + Glass/polyimide honeycomb, ±45° fabric (0.064) + Glass/polyimide honeycomb, ±45° fabric (0.064), L Direction + f7bb6e24-035c-40c0-b457-64f08fb203a7 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + e79a3e3f-5602-47b6-9d53-51234b906e4c + MassRemoved + 87.74354019 + + + + + 16.07013553 + + MI_Restricted_Substances + aebf8cac-5529-4a72-9e09-71badd344c6a + + Oil quenched & tempered at 315°C + Carbon steel, AISI 1137, oil quenched & tempered at 315°C + 30ec6d3e-5040-4bba-b1a3-ef36ff8e9a06 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + bfdc7b6a-8c3a-4462-a1cf-355129719f80 + Mass + 100.0 + + + + + + + 5.0 + 19.40949811 + 2c40d687 + part_2c40d687-52db-4733-8bc8-39d3e975dedc + 2c40d687-52db-4733-8bc8-39d3e975dedc + + + 25.91772462 + + MI_Restricted_Substances + c19a6c59-b937-499d-ac22-fe742ae42287 + + As rolled + Carbon steel, AISI 1117, as rolled + 682616f3-5dd4-43a6-87bc-b12c7efbebbf + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 677e0150-2a59-4e0a-a20d-34eb9781a1a0 + Mass + 100.0 + + + + + 10.58318219 + + MI_Restricted_Substances + 6f7c4754-84f7-46f0-873a-ec2e9f29e345 + + Glass/phenolic honeycomb, ±45° fabric (0.088) + Glass/phenolic honeycomb, ±45° fabric (0.088), W Direction + fae5f8c6-be59-4dfc-a8d1-b04ffab08fd6 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + e3fe3509-873f-49ae-9de5-e767c41476db + MassRemoved + 89.70856405 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + fbbafbef-49e9-4808-8e0a-7e52fbbc08ea + Mass + 100.0 + + + + + 10.58318219 + + MI_Restricted_Substances + 82eabba3-2697-4f74-a530-ae27f5e33ffe + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 50B46, oil quenched & tempered at 540°C + 676c75ce-1bbe-49fc-8a31-8bfc0946e5a4 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + b1e59de2-5ebd-486d-964a-6e331ee54fde + Mass + 100.0 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + de5634e0-eadc-4dc3-bf5e-0c1425af3cef + Mass + 100.0 + + + + + 10.58318219 + + MI_Restricted_Substances + ff23c6a6-3046-4f35-b5d2-ca7f0956efc7 + + Oil quenched & tempered at 650°C + Carbon steel, AISI 1144, oil quenched & tempered at 650°C + 89b207c0-acfc-48ec-bca3-5ce2642f0854 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + be06024e-a2c8-4ab6-99cc-72927a9505a0 + Mass + 100.0 + + + + + 10.58318219 + + MI_Restricted_Substances + 874b8433-2e47-45c3-9c89-226428104214 + + Glass and mineral filled, heat resistant, molding + Novolac (glass and mineral filled, heat resistant, molding) + 00a0bfef-99f5-4c56-a026-47749011ab84 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 5bde1064-f66e-4f88-b834-31456faceb1a + Mass + 100.0 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + d199e4a4-561b-4906-a67a-ca0118ec38bf + Mass + 100.0 + + + + + 10.58318219 + + MI_Restricted_Substances + 644fc87d-87f3-468c-9a88-b8e2db43ae6b + + water quenched & tempered at 650°C + Low alloy steel, AISI 4130, water quenched & tempered at 650°C + 4393fcfb-263c-4a72-837a-a614a9313933 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + cf5779a2-b757-4d07-81c5-42c1bf46b82a + MassRemoved + 20.51839666 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 64a74480-f724-4d60-9eed-bac3907ff551 + Mass + 100.0 + + + + + 10.58318219 + + MI_Restricted_Substances + fa4e12fa-2919-41e2-b7ef-1c487def0cd7 + + High ductility + Press hardening steel, 22MnB5, high ductility + 02c244ad-b832-4db8-8ac1-f47b2c6015b3 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + ad72b93b-2b56-43fa-a98d-988c4912c594 + Mass + 100.0 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 2a5f5f25-0e8b-47b6-8c61-fb1eaafcb459 + Mass + 100.0 + + + + + 10.58318219 + + MI_Restricted_Substances + 7468aa92-eb02-4838-8030-fdd8673f2710 + + Oil quenched & tempered at 650°C + Carbon steel, AISI 1137, oil quenched & tempered at 650°C + e4e02809-be4b-4c18-9937-8f69a032d385 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + cbf6fe52-eb1a-4f99-9fe1-bbb285bc1054 + Mass + 100.0 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + eef076b3-fb93-47b5-b699-9dcc261d1cf7 + Mass + 100.0 + + + + + + + 9.0 + 19.08895583 + 5f1c46ee + part_5f1c46ee-9cad-4e9b-92b3-1713e5f2ff0d + 5f1c46ee-9cad-4e9b-92b3-1713e5f2ff0d + + + 60.5120464 + + MI_Restricted_Substances + cfb19c31-b156-4a8d-854c-f264975539e1 + + water quenched & tempered at 205°C + Carbon steel, AISI 1095, water quenched & tempered at 205°C + 54726a26-d5d1-4891-ac76-39e512bfc31a + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 93932fda-bdb4-4ba5-92fc-1cf9c0200668 + Mass + 100.0 + + + + + 9.87198839 + + MI_Restricted_Substances + 87e1a3cd-fd79-4013-b5f8-56d6f28bef34 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1144, oil quenched & tempered at 540°C + ff06982b-3b87-494e-8ea2-2289a468ac8d + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 20a674de-92bb-4885-9b60-ce739490865a + Mass + 38.95966086 + + + + + 9.87198839 + + MI_Restricted_Substances + fc29cc59-a670-4ad6-85a0-eb07bf011f1a + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 6150, oil quenched & tempered at 425°C + 4dfb5330-7d89-4875-9af5-4a1797930125 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 415b4cf6-8c18-4891-95cc-97c099853f98 + Area + 80.03729389 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 48f16f83-03c9-4fad-b00e-e3ad7885ec54 + Mass + 100.0 + + + + + 9.87198839 + + MI_Restricted_Substances + 44a3cdc8-1092-45c0-be37-1802daa92d30 + + Borosilicate - 7052 + Borosilicate - 7052 + f8dbfbcf-67ab-4546-a00f-734231e99272 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + d6a69287-e598-465d-8afc-8245664c5644 + Mass + 100.0 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + be1875f6-d842-414c-a8b6-517d43e196a0 + Area + 30.76541928 + + + + + 9.87198839 + + MI_Restricted_Substances + 5169a157-0d18-4d45-b197-799e06aa00bc + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 9255, oil quenched & tempered at 315°C + 02d18f6b-77f7-4931-8cfc-8c5052bfffa1 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + d70b65cd-5829-4430-acd0-8cf419f0ad4e + Mass + 100.0 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 769319c4-d5ef-4263-9501-606ae66528f3 + Mass + 100.0 + + + + + + + 9.0 + 74.42964873 + a85dd27e + part_a85dd27e-e8bc-4368-bc9c-215f8fae7541 + a85dd27e-e8bc-4368-bc9c-215f8fae7541 + + + 65.10661908 + + MI_Restricted_Substances + e678781a-1b38-4709-816b-9db609651db6 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 50B60, oil quenched & tempered at 425°C + def1fda8-f648-4965-96ec-26c053b4019b + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + 4b9c70b2-8f84-46ad-83be-e4e9517fc95a + Mass + 100.0 + + + + + 11.63112697 + + MI_Restricted_Substances + e06fc27c-5e39-4218-a5ca-6927af12a511 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 4140, oil quenched & tempered at 205°C + fb54bac5-2cb9-4c8b-8ab2-5658261a71ef + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + fa81b70f-3425-48de-864b-261523b1dad4 + Mass + 100.0 + + + + + 11.63112697 + + MI_Restricted_Substances + 856cb700-78b1-46a2-8832-739a0d2c9a91 + + SAE 8630, cast, normalized & tempered + Low alloy steel, SAE 8630, cast, normalized & tempered + acf5bbf5-c930-48a5-95ad-dabdfa8dd275 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + cc1543da-80bc-442a-ae0a-d7e2e49140ef + Length + 91.34035612 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 2af08795-9cb2-4853-93cc-1229612571b0 + Mass + 22.86784514 + + + + + 11.63112697 + + MI_Restricted_Substances + 644fc87d-87f3-468c-9a88-b8e2db43ae6b + + water quenched & tempered at 650°C + Low alloy steel, AISI 4130, water quenched & tempered at 650°C + cb8e1ef3-aef0-4756-8c53-1f3e7d54bbbe + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + a48d7d60-3698-445d-9103-c1acecde702d + Mass + 100.0 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + eed8bb55-7968-4bcf-b369-760c417fb0e4 + Mass + 37.4343108 + + + + + + + + + 8.0 + 70.77321525 + d52d6c76 + part_d52d6c76-2b2a-4f0b-972a-46d6f2ad13e3 + d52d6c76-2b2a-4f0b-972a-46d6f2ad13e3 + + + 36.78084655 + + MI_Restricted_Substances + 59ed9004-2126-437f-aa61-b8a0189e69d3 + + Oil quenched & tempered at 650°C + Carbon steel, AISI 1095, oil quenched & tempered at 650°C + 5a9e0bf6-34f8-4139-b5e3-b2f85a89888f + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + fa2f6a0c-db85-48ed-9e55-624d4ae06730 + Mass + 100.0 + + + + + 63.21915344 + + MI_Restricted_Substances + 01ec383d-8c37-48b7-80b4-e1f3106fae04 + + Alumino silicate - 1723 + Alumino silicate - 1723 + f77d4be2-a6df-4143-a55c-c765d5aa7d96 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + df74fc86-f286-4690-a6d3-ef81470e62b6 + Mass + 100.0 + + + + + + + 8.0 + 66.29342006 + c4c003a6 + part_c4c003a6-872c-405a-b62d-7c6e971b2bb4 + c4c003a6-872c-405a-b62d-7c6e971b2bb4 + + + 73.85304177 + + MI_Restricted_Substances + 9e11a8f7-0b35-4610-aee9-557a236bbe5c + + Soda borosilicate + Soda borosilicate + d4d7ef9d-6f6a-406e-8f9b-caee54055563 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + c35d914b-a45d-43bd-8841-5445cba2fe5a + Area + 35.21493521 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + f255a03e-041f-4c57-bd65-a4f7852439d0 + Area + 28.65521909 + + + + + 3.26836977 + + MI_Restricted_Substances + c87d2bef-0549-4a3b-b699-3ad17b079fa1 + + YS355, hot rolled + High strength low alloy steel, YS355, hot rolled + 6513bd3c-9be5-4b57-a0dc-278a1a6d1068 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + d4f57470-0eeb-4f6b-832b-a59d8c6a2c95 + Mass + 100.0 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 2b4f6f8f-6567-4c03-ad95-b732e5e75959 + Length + 39.42506315 + + + + + 3.26836977 + + MI_Restricted_Substances + 78055acc-4fc2-46ae-bba8-f28bda85357e + + Annealed + Carbon steel, AISI 1060, annealed + 0c2e5260-a7bf-4425-b318-aa0ec4f9fa31 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + b165e2f7-b227-4571-9267-40ad9db6956c + MassRemoved + 1.52987744 + + + + + 3.26836977 + + MI_Restricted_Substances + 19b67562-02fa-47ea-8fba-af5b14d1fafa + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 4042, oil quenched & tempered at 650°C + ff1f0f52-3799-424b-beb5-049b2cc99995 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 64cef77d-ae60-40d0-b1ac-b22fd6abea77 + MassRemoved + 2.81746448 + + + + + 3.26836977 + + MI_Restricted_Substances + d2c2408b-ddaa-4dc0-825b-b2d3ef39767b + + Oil quenched & tempered at 315°C + Carbon steel, AISI 1095, oil quenched & tempered at 315°C + a7f4e72d-87ef-48c6-a86e-712f3d4e2138 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 42f13e55-e7bd-4c7b-b051-d07aa3898add + Mass + 100.0 + + + + + 3.26836977 + + MI_Restricted_Substances + 99d1c1c6-eca3-40ed-a479-6dec902f52da + + YS400, cold rolled + TRIP steel, YS400, cold rolled + 118cc1b4-36aa-4b69-b9d3-32e9790caad1 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 8e06e192-0347-43a3-839a-5a71b6c9fcae + Mass + 100.0 + + + + + 3.26836977 + + MI_Restricted_Substances + 21dcdeeb-524a-488e-b332-fcd4e1caf6f7 + + water quenched & tempered at 650°C + Carbon steel, AISI 1095, water quenched & tempered at 650°C + 52ad598e-1416-4dec-b5bd-8aff8208b8db + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + b50aea2b-3688-4402-9914-dddbe738e838 + Mass + 100.0 + + + + + 3.26836977 + + MI_Restricted_Substances + f05d84ea-b8e2-46d1-83a4-577038c5ed32 + + As rolled + Carbon steel, AISI 1040, as rolled + f93339bb-c71d-4b31-a6a9-08cb87199b53 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + d52ddc93-319a-4966-8e46-25012692b1ef + Length + 10.12971983 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + a57649bf-cd41-44db-a5f7-351790d77ae2 + Mass + 100.0 + + + + + 3.26836977 + + MI_Restricted_Substances + 8d48bb04-5031-4d20-b935-741272060e1d + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 4150, oil quenched & tempered at 650°C + 1233f1ab-df39-45bc-be89-2e26a570ae60 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 4dc61dbb-37e5-4863-bb6c-5e1b2243217e + Mass + 100.0 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + c8a0c32f-758b-4155-9f4e-7641ee45d39e + Mass + 100.0 + + + + + + + 4.0 + 66.63638077 + 03edde95 + part_03edde95-b982-4543-a5df-195356497f8c + 03edde95-b982-4543-a5df-195356497f8c + + + 13.50558084 + + MI_Restricted_Substances + a01be0be-96e7-4123-b061-dfdbba1f1748 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 4037, oil quenched & tempered at 315°C + 478bbb14-123b-4410-b504-d39ac82c0490 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + ef85d650-06c1-4321-b76e-cd16a7220037 + Mass + 2.3459902 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + afbc9e21-777e-41a0-b763-9b6e2a5653dd + Mass + 100.0 + + + + + 12.35634559 + + MI_Restricted_Substances + e6b45bea-dec9-4b91-996a-885bb0c31f8d + + Glass, S grade (10 micron monofilament, f) + Glass, S grade (10 micron monofilament, f) + 1487a836-de1a-4be0-af28-3db5013290c9 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 5e81e7e7-8422-405a-bc3b-5bd5fe550de4 + Mass + 70.85818674 + + + + + 12.35634559 + + MI_Restricted_Substances + bafce5b8-9e49-4ba7-918f-1ddea11d2a80 + + Glass/phenolic honeycomb, ±45° fabric (0.048) + Glass/phenolic honeycomb, ±45° fabric (0.048), L Direction + 4923b9f5-46ef-4b25-8b0b-c8295e4a7ffa + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 42a4fe3a-2d8e-4d4d-89db-5392a0361584 + MassRemoved + 16.02738616 + + + + + 12.35634559 + + MI_Restricted_Substances + 7b330562-a44d-4de7-8944-99c0b7b0d3e1 + + Quenched & tempered + Low alloy steel, AISI 8630, air melted, quenched & tempered + d845a77e-1e71-447e-b0ca-a5cf02fd9304 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + 0757b759-02d5-48d8-b162-b4a4a475414c + Mass + 100.0 + + + + + 12.35634559 + + MI_Restricted_Substances + 302db922-ffc4-4955-9a98-ddaa64c43d26 + + Borosilicate - 7720 + Borosilicate - 7720 + e6cae0a2-d7c1-44f4-9491-ef2d12c258ea + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 50f44c04-64c2-497d-b596-07591a9ae790 + Mass + 100.0 + + + + + 12.35634559 + + MI_Restricted_Substances + 45a257d5-da48-4520-9174-ffe7bbadcd1c + + Glass/phenolic honeycomb, ±45° fabric (0.088) + Glass/phenolic honeycomb, ±45° fabric (0.088), L Direction + dd89e19a-16eb-4921-b5fa-75ded58ad9c7 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + ecbdce81-bcf2-456b-8658-3568e7d4d22c + Mass + 100.0 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + a547e090-52c3-489f-90a8-ae8cfc4e8c88 + MassRemoved + 91.81918184 + + + + + 12.35634559 + + MI_Restricted_Substances + 4b01d1e1-0f4c-4861-a797-7ea504ca38c4 + + Annealed + Low alloy steel, AISI 5150, annealed + b2289e42-0275-47f1-90dc-b31e07510f54 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 13116d75-e9d8-47c1-822c-bf54a65afa77 + Mass + 100.0 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 9657051c-e2a1-4316-bca7-d78bb12b9950 + Length + 92.93381711 + + + + + 12.35634559 + + MI_Restricted_Substances + 439e62b9-4268-44c6-a084-695412628448 + + water quenched & tempered at 425°C + Carbon steel, AISI 1095, water quenched & tempered at 425°C + 940ad85c-6e92-46b6-80ce-d10d866d406b + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + f08e98d5-2df7-4e66-aab2-77a852180cf3 + Mass + 100.0 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + c068ff86-6275-43bc-b654-be85b2356f53 + Mass + 100.0 + + + + + + + 3.0 + 44.30470096 + + MI_Restricted_Substances + 3d4d35cd-1db3-477c-8f3f-b90800ea1c4d + + 2383795b + part_2383795b-301d-446f-a7be-cfa59c010ba5 + 2383795b-301d-446f-a7be-cfa59c010ba5 + + + 8.0 + 93.19904194 + 9bf6b170 + part_9bf6b170-b0fa-45a3-b267-7678a39b64ca + 9bf6b170-b0fa-45a3-b267-7678a39b64ca + + + 15.18438603 + + MI_Restricted_Substances + bea16e1d-784b-41e4-b5f5-e21dd7b27217 + + S275J + Structural steel, S275J + 8fb52277-fcc3-4fd8-8040-c4f8e6ebc609 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + ec9717f3-4f66-4889-a85a-775536fae8d4 + Mass + 100.0 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + ed2e6f3e-6c30-413a-a7cc-dc0d3687f3da + MassRemoved + 55.602397 + + + + + 28.27187132 + + MI_Restricted_Substances + 72799627-a7c0-4df4-8250-e2be8538565f + + Glass ceramic (N11) + Glass ceramic (N11) + ecfa2d96-bb9a-4014-a89b-12157cec2108 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + e282f3d8-ee59-40d9-9d7f-f22de0874625 + Length + 60.69740539 + + + + + 28.27187132 + + MI_Restricted_Substances + dbdb9330-8683-439b-8246-f873ee3ba9ed + + Oil quenched & tempered at 205°C + Carbon steel, AISI 1040, oil quenched & tempered at 205°C + 9d832bea-99e2-4270-a051-3ed24a3eec51 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 0b3796ce-3c68-457b-9897-cab81563639f + Mass + 100.0 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + afd8a295-e9bd-4f8b-b36f-4767fd5fe198 + Mass + 100.0 + + + + + 28.27187132 + + MI_Restricted_Substances + 31098687-aa58-4d56-99a0-f005a0258573 + + Glass/phenolic honeycomb, 0°/90° fabric (0.192) + Glass/phenolic honeycomb, 0°/90° fabric (0.192), L Direction + a9eb6336-e275-4b28-817f-85ed12dc53b7 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + ff831347-4460-4dee-946d-093c1fc16ca4 + Mass + 100.0 + + + + + + + 5.0 + 69.12791899 + 3b713dbf + part_3b713dbf-a4cc-4a3c-b566-00173c57a996 + 3b713dbf-a4cc-4a3c-b566-00173c57a996 + + + 75.65854335 + + MI_Restricted_Substances + dbdb9330-8683-439b-8246-f873ee3ba9ed + + Oil quenched & tempered at 205°C + Carbon steel, AISI 1040, oil quenched & tempered at 205°C + 98c21e49-732c-4212-9e89-f5625f7c0964 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 659a0e9a-ff98-4967-b1ca-617faedb8f55 + Area + 21.06412123 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + e59562de-dfc5-4b15-a7f4-91a0a0d135cf + Mass + 100.0 + + + + + 4.86829132 + + MI_Restricted_Substances + aec3ed84-0fb0-4317-b8b1-9f6714a7a07f + + Normalized + Low alloy steel, AISI 4130, air melted, normalized + 6012ba6b-e23f-40dc-aa54-e131fcda591c + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 33fb5add-5127-42d3-9bdf-e6e4741cc5fe + Area + 48.93467591 + + + + + 4.86829132 + + MI_Restricted_Substances + c07a0ada-0510-4f27-be52-15e07d6c70c5 + + Soda-zinc glass - 6720 + Soda-zinc glass - 6720 + c7fa3134-6224-400b-9b23-198757dc3820 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + 429d60eb-d5b1-44e5-b153-1f8a74a80ce6 + Mass + 100.0 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 83fbc8e3-74c1-4021-8f20-0e847ae8f35f + Mass + 100.0 + + + + + 4.86829132 + + MI_Restricted_Substances + 78055acc-4fc2-46ae-bba8-f28bda85357e + + Annealed + Carbon steel, AISI 1060, annealed + 399f34bd-bcf3-4cd0-9a54-0bc17d32f3c4 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 7c597799-6150-4af3-ad3d-231f653568b1 + MassRemoved + 6.99221999 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + bb3a21eb-f858-45d6-be8e-87456d6b6082 + Mass + 100.0 + + + + + 4.86829132 + + MI_Restricted_Substances + aa963e30-fca0-439d-bee2-ff48daa946f3 + + As rolled + Carbon steel, AISI 1095, as rolled + 2ee2ea05-84bc-40c9-b373-30c6e7ae2bc3 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + d877e42f-ade4-4b77-aacb-465ae3cad5a9 + Mass + 100.0 + + + + + 4.86829132 + + MI_Restricted_Substances + 1992b264-49ea-405f-82f9-41dd972b9510 + + FR-4.1 (Df < 0.01 at 10GHz), Epoxy/Glass fiber, PCB laminate + FR-4.1 (Df < 0.01 at 10GHz), Epoxy/Glass fiber, PCB laminate + aa85effd-cd5a-4852-9412-ce1cc988d929 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + a47eb5f5-d295-4709-948e-ecf31a6ef286 + Mass + 100.0 + + + + + + + 1.0 + 89.09261202 + b5fb6cb3 + part_b5fb6cb3-980e-42f7-802c-7d606f5d8526 + b5fb6cb3-980e-42f7-802c-7d606f5d8526 + + + 61.03026613 + + MI_Restricted_Substances + df40828d-d5c3-4a43-9f00-5de867f4f406 + + Normalized + Low alloy steel, AISI 4320, normalized + 472fa5d7-1d4a-4992-a0f6-c72997cae49e + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + daa001ac-b1c2-4169-908b-79616b5cc18c + Area + 92.13713919 + + + + + 19.48486693 + + MI_Restricted_Substances + 278c6b66-fb3e-4e2d-b915-df6a231b2342 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1080, oil quenched & tempered at 540°C + d3060c58-6ab9-45a4-a1a3-cd528624447f + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + e2046142-3a32-4076-a3de-62d1f1c81fe8 + Mass + 100.0 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 5256e8bd-15f6-4a3e-b1d3-0a4023e12c36 + Mass + 100.0 + + + + + 19.48486693 + + MI_Restricted_Substances + 4a35d8d1-5fb1-47e9-a669-37204ae732dc + + ASTM A500 Grade A + Structural steel, ASTM A500 Grade A + 76378b6e-199e-40a8-8042-12fe586291fb + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 67a6a904-0a2f-4872-aea6-b42b049a76cb + Mass + 100.0 + + + + + + + 6.0 + 75.06970207 + 8f1805fd + part_8f1805fd-3fd6-446b-8c46-7cc566012579 + 8f1805fd-3fd6-446b-8c46-7cc566012579 + + + 27.98964028 + + MI_Restricted_Substances + b067ed19-a836-41f7-9267-d9b04647d09f + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 5150, oil quenched & tempered at 650°C + 09c973c8-c5de-4ff3-9839-56d08d67fe11 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 2a7dbbbc-7c8c-47b9-bcd7-769e57644485 + Mass + 100.0 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 60adf4f5-af28-4293-9f07-3c079c8c949d + Length + 37.3779989 + + + + + 14.40207194 + + MI_Restricted_Substances + b82c121d-fcc2-41fa-b7ac-6cddb03c3e4f + + Oil quenched & tempered at 650°C + Carbon steel, AISI 1040, oil quenched & tempered at 650°C + fa156b69-3f5e-48ca-871b-cd8924b9d3c3 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 1970e7cb-2498-4daa-8eee-92c76dbb076c + MassRemoved + 23.76383744 + + + + + 14.40207194 + + MI_Restricted_Substances + 1d0ad45b-4da7-4c47-9850-754d0f67c02a + + Glass/polyimide honeycomb, ±45° fabric (0.096) + Glass/polyimide honeycomb, ±45° fabric (0.096), W Direction + 7804a639-9401-412f-a1a6-1a80d1ad60aa + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + df4fecc3-1710-423a-9ae0-d3b35be07f09 + Length + 20.41770346 + + + + + 14.40207194 + + MI_Restricted_Substances + 2656c71b-a4ea-4fc6-9139-adc0deae35b1 + + 65wt% glass, biaxial lay-up + Polyester/E-glass fiber, woven fabric, 65wt% glass, biaxial lay-up + 3bd1703e-538f-42db-9a5b-37106e562ff0 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + bc321ce8-99ce-4611-a562-ffb1d707261a + Mass + 100.0 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + e2368259-146c-46ed-8ec4-30e67366455a + Mass + 100.0 + + + + + 14.40207194 + + MI_Restricted_Substances + 1d55049a-3c25-4c8c-9125-70fd014c2a1e + + Normalized + Low alloy steel, AISI 8735, normalized + 7766937f-e107-46aa-a175-3a959b856fc9 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + ae7d75b2-8a65-41ba-8937-dfe5fc9976d3 + Mass + 100.0 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 695d82cd-d142-44b8-9b44-5ec0e5b63ffa + Mass + 100.0 + + + + + 14.40207194 + + MI_Restricted_Substances + 4ad00a9e-92b5-4e28-92a0-409da4495c54 + + Oil quenched & tempered at 205°C + Carbon steel, AISI 1060, oil quenched & tempered at 205°C + ad706008-b329-4fcf-9abf-b2b6deb1535d + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 977d0b15-5816-4f50-ab12-00bd7e388304 + Mass + 100.0 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 7713104b-4aef-41fd-9f56-d732708449cc + Mass + 100.0 + + + + + + + 5.0 + 10.3096134 + 753acfd6 + part_753acfd6-dc51-4f91-bfa1-38b28336fee8 + 753acfd6-dc51-4f91-bfa1-38b28336fee8 + + + 0.67350398 + + MI_Restricted_Substances + 3cad12a9-0765-402c-a6b1-0be665ecd2e6 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 4140, oil quenched & tempered at 540°C + e2dfc2fe-532f-4a00-8ff4-6bda6706bfa6 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + af0ae7dd-aee5-4e61-a22f-88ebf0501060 + Mass + 100.0 + + + + + 24.831624 + + MI_Restricted_Substances + 22fec326-b233-4c44-9751-288ad3ccc86c + + Glass/phenolic honeycomb, 0°/90° fabric (0.088) + Glass/phenolic honeycomb, 0°/90° fabric (0.088), L Direction + a683a8ec-a087-4b43-ad85-858f23368bac + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + 9b3f5d71-e1e9-4043-b65b-27d43377df91 + Mass + 100.0 + + + + + 24.831624 + + MI_Restricted_Substances + f8d1136f-3c1a-41e2-8b78-cf5f3965cba2 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 6150, oil quenched & tempered at 205°C + ed6d5273-fd70-4a69-8437-df4b48b9acb9 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + d98068d6-2777-436f-a3c2-18a9b6232b62 + Mass + 100.0 + + + + + 24.831624 + + MI_Restricted_Substances + ce68d49d-fe57-4723-8f98-557cd3558504 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 5130, oil quenched & tempered at 205°C + 6a0e39ba-62bb-42b2-8e4d-91b78cb6f061 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 3dec1b14-9f9d-402f-aa14-373b6c555013 + MassRemoved + 50.49542489 + + + + + 24.831624 + + MI_Restricted_Substances + 5303364c-b06b-40d9-bca9-e0e2cd1d682c + + Normalized + Low alloy steel, AISI 8740, normalized + 336e441c-b20d-4baa-84ca-632e34116c09 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 1ca9c90f-01cb-4a4c-83c2-7fb303f09af7 + Mass + 12.18193625 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + ce16085e-fd9a-4f4d-9613-3250d6096d15 + Mass + 100.0 + + + + + + + 5.0 + 31.83386467 + + MI_Restricted_Substances + a0987114-e9d2-4390-9d0f-e47283d2f4d0 + + 65a6a323 + part_65a6a323-21c5-4cff-aa6d-87714e747f34 + 65a6a323-21c5-4cff-aa6d-87714e747f34 + + + 8.0 + 94.49364277 + 2760b4b9 + part_2760b4b9-8183-455c-9700-3367063c3001 + 2760b4b9-8183-455c-9700-3367063c3001 + + + 86.93995372 + + MI_Restricted_Substances + f7a5d844-1935-486f-adbe-99917b26b44b + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 4340, oil quenched & tempered at 315°C + 4b0c9723-8966-4e2d-b648-eece2a96b763 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + eb8f7ee6-58ee-4336-88f9-7e23d74d556a + Mass + 100.0 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + b563c586-2c48-49d3-8273-093d240d9c80 + Mass + 100.0 + + + + + 1.63250578 + + MI_Restricted_Substances + ee5b018e-8d7f-4fb1-bad0-c73e871592bc + + 16Mo3, normalized + Low alloy steel, 16Mo3, normalized + 44333aa5-f26c-4408-85a3-b6b4a34488de + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 3f8f3b8d-4b81-4a61-b7f4-cdc435f53801 + Mass + 100.0 + + + + + 1.63250578 + + MI_Restricted_Substances + 8f779b79-a040-48d7-ac26-b9a1edf50ad2 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 8640, oil quenched & tempered at 650°C + f2cb69f2-0efa-448f-b175-522f45304d2c + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 7d437191-a633-4670-820a-48bae896e2d7 + Mass + 100.0 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 1c8c6369-4064-47e4-8c90-783c0ba053f8 + Mass + 100.0 + + + + + 1.63250578 + + MI_Restricted_Substances + 753c75df-7593-4169-a2e8-9f4c173887ff + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 50B46, oil quenched & tempered at 315°C + 023d3736-3ffc-4020-bebc-dd40856a62d1 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 5f8f5467-95fc-45a1-8f51-8ae537a2c36d + Mass + 100.0 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + c59f2d8d-13ad-45b6-b3a6-02385880f46b + Mass + 100.0 + + + + + 1.63250578 + + MI_Restricted_Substances + 9c1918f9-aa9f-4078-93df-23539c8df8a8 + + Soda-lime - 0091 + Soda-lime - 0091 + 919838b1-8a20-4911-af04-c26dc5afa25d + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + 023b8dd5-5c8e-40bb-ad2d-e608e25ecf13 + Mass + 100.0 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 75ace459-2773-4a33-845c-ee99ce3895c8 + Length + 19.43183276 + + + + + 1.63250578 + + MI_Restricted_Substances + 5d611e30-0b00-4036-a656-f5fdc5bd2a52 + + Glass ceramic - slipcast + Glass ceramic - slipcast + d453edbd-aa0c-4920-a12f-95036ef7681e + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 5f088df8-c4ca-4fd0-88e8-a3cb1205c251 + Length + 30.62488754 + + + + + 1.63250578 + + MI_Restricted_Substances + 2b606408-37c3-4801-a307-dda7384ff7cc + + Glass/phenolic honeycomb, 0°/90° fabric (0.072) + Glass/phenolic honeycomb, 0°/90° fabric (0.072), W Direction + fc9ab45a-15b8-41e8-b533-f6e9218ee2d1 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 50b45eba-cc6e-41d7-ab9d-c1f47d6ec832 + Length + 69.83652392 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 2254e39a-2db3-40b2-920c-2fa067c7596b + Mass + 100.0 + + + + + 1.63250578 + + MI_Restricted_Substances + 1345051c-8b29-468f-a10d-37712b50f19a + + Borosilicate - 9741 + Borosilicate - 9741 + 9d243586-11e4-400e-8397-9dfe3923cf14 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 0c005414-105b-4564-91d9-f6c9f6ef1bee + Mass + 100.0 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 57ff55eb-62d2-4127-b306-401303abac76 + Mass + 100.0 + + + + + 1.63250578 + + MI_Restricted_Substances + 5d611e30-0b00-4036-a656-f5fdc5bd2a52 + + Glass ceramic - slipcast + Glass ceramic - slipcast + 04f7ece0-0796-4c04-85e9-c03cea57ab73 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 4303cb87-26e2-4493-8464-9b1fe77488c6 + Mass + 100.0 + + + + + + + 9.0 + 23.4167242 + 727a37db + part_727a37db-5802-42b7-aff1-af1338dc0857 + 727a37db-5802-42b7-aff1-af1338dc0857 + + + 100.0 + + MI_Restricted_Substances + 7468aa92-eb02-4838-8030-fdd8673f2710 + + Oil quenched & tempered at 650°C + Carbon steel, AISI 1137, oil quenched & tempered at 650°C + 07e14de9-dcb2-478c-afe9-7cb05feba43c + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 4fe0db44-8ceb-465e-86e2-e83403bcf8c3 + MassRemoved + 13.81023079 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + b3ed2f02-3c2e-4f0f-b2e6-8858eb8f4a71 + Mass + 100.0 + + + + + + + 6.0 + 56.33965244 + 02290f60 + part_02290f60-7fec-49de-a8db-3b8b9f5cf1ef + 02290f60-7fec-49de-a8db-3b8b9f5cf1ef + + + 45.48582068 + + MI_Restricted_Substances + c19a6c59-b937-499d-ac22-fe742ae42287 + + As rolled + Carbon steel, AISI 1117, as rolled + 82ea51af-a3c8-446e-89f0-c514db3c3f55 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + de6608fe-6ca8-49c1-b62f-17e8567b86c0 + Area + 65.49423838 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 01df642e-3603-4ee3-8bd1-db3793559d46 + Area + 86.31793022 + + + + + 9.08569655 + + MI_Restricted_Substances + 0c172430-369d-48ad-910e-69fe1451a36e + + Normalized + Carbon steel, AISI 1095, normalized + 21c73577-2514-48da-8442-c4256d44afbc + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 2a04e721-bba3-4dea-961c-c11a93d95acd + Mass + 100.0 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + 2728a71c-5a18-4c08-a639-4246e0a84aba + Area + 67.07665131 + + + + + 9.08569655 + + MI_Restricted_Substances + 2c2dc98a-ef9d-420d-aa00-25552c8f8bab + + S355J + Structural steel, S355J + 22c4c7c0-6f03-458c-81bd-2083c00a0610 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + 5e93ffd1-e73e-4fc9-bbd1-813b5f0fc345 + Area + 50.01027619 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 6253fbd0-d1ed-4054-91b2-a35ca93c5e1a + Mass + 79.46226302 + + + + + 9.08569655 + + MI_Restricted_Substances + e721d8b7-256a-4b7b-af09-6b40d8309979 + + water quenched & tempered at 425°C + Carbon steel, AISI 1040, water quenched & tempered at 425°C + 4a8a7f46-5f7d-4c70-b10b-7b4ecb313ec1 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 9595c1ba-d1bd-4ba0-8515-4aee43bcfb02 + Mass + 100.0 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + 19317cad-3c28-4ba7-9f2e-efd8088d560f + Length + 77.44591365 + + + + + 9.08569655 + + MI_Restricted_Substances + 2cfe1f1b-d831-4f62-acc6-672a44ba9bff + + Silica (fused) + Silica (fused) + 9e31ed64-a69b-4545-91ef-d8e243393777 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + a769d123-75f2-4ff7-bbe7-e386cc2a55f5 + Length + 32.9438076 + + + + + 9.08569655 + + MI_Restricted_Substances + ac443865-33d5-466d-89e2-c3f26e668369 + + Borosilicate - 3320 + Borosilicate - 3320 + 43a53775-5555-48fa-ba6c-e2cbcd629736 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 5fc73ba6-1428-4907-b22f-ea5c30f994bd + Mass + 100.0 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + b43eb407-aadd-4762-9fe7-8fdfd3a2505a + Mass + 1.75868868 + + + + + 9.08569655 + + MI_Restricted_Substances + d02817f7-7500-4fcb-8c34-40927da681a5 + + Quenched & tempered + Carbon steel, SA216 (Type WCC), cast, quenched & tempered + b9baa811-cc92-42ce-a230-da12ef580185 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 10d0cd5c-c61e-40a6-b7bc-d27ff514e973 + Mass + 100.0 + + + + + + + 9.0 + 30.28614843 + + MI_Restricted_Substances + 8d808e11-061a-47b9-9f0f-83290dd83a3f + + 9319811e + part_9319811e-87ba-4711-a931-61c2e90125f8 + 9319811e-87ba-4711-a931-61c2e90125f8 + + + 1.0 + 2.1470312 + ee0f57be + part_ee0f57be-f5a6-492d-a77a-53a9b3ef1876 + ee0f57be-f5a6-492d-a77a-53a9b3ef1876 + + + 25.57679616 + + MI_Restricted_Substances + b3c74dfc-9d72-4938-89cb-1a49ce0fdb80 + + Normalized + Carbon steel, AISI 1137, normalized + dde4e29f-f4be-42a5-b2c6-6f26e13a27b2 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 3b6a3762-0a63-4a5a-936f-d3a56d99b7ff + Mass + 100.0 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 59dd2f0e-c97e-4f91-86b0-c5c92c012a6a + Mass + 100.0 + + + + + 74.42320383 + + MI_Restricted_Substances + b17713f9-59e9-48f4-8bb3-27c72b0884b2 + + water quenched & tempered at 540°C + Carbon steel, AISI 1137, water quenched & tempered at 540°C + 6d25a69a-28c7-4838-83f7-695e221c91fd + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 56be02c9-8403-4ba1-aa7c-4485b3d84979 + Mass + 100.0 + + + + + + + 4.0 + 98.69655496 + 9554b085 + part_9554b085-4f0d-4fd8-8f0e-1d5909e3a9ee + 9554b085-4f0d-4fd8-8f0e-1d5909e3a9ee + + + 21.83166487 + + MI_Restricted_Substances + 04970b9b-7242-4f31-9a78-dee5e31ed341 + + As rolled + Carbon steel, AISI 1030, as rolled + 0f9c5716-bde8-4226-9278-7de69c6e3dab + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + b619b686-d734-4353-8871-2f4b05e99430 + Mass + 100.0 + + + + + 39.08416756 + + MI_Restricted_Substances + 5dbabc2e-4263-4458-abe1-31a2ece9e122 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 5160, oil quenched & tempered at 425°C + 065d0b45-fe12-459c-9970-5a4258e6ac61 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + 0a01f3f6-763c-47e8-8b72-b2cb8e7396e9 + Mass + 100.0 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 5676795c-d40c-4d41-98fe-9b61f18b91e8 + Mass + 80.44398076 + + + + + 39.08416756 + + MI_Restricted_Substances + 5169a157-0d18-4d45-b197-799e06aa00bc + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 9255, oil quenched & tempered at 315°C + a643f14c-e497-4667-912a-71cc5729d714 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 6510b67c-35e3-4355-9fa6-dcf9494bb9b1 + Mass + 100.0 + + + + + + + 8.0 + 53.01033489 + + MI_Restricted_Substances + 0dedeb55-6f6f-42f9-b703-5225f1cab2fb + + 3ed0a4d7 + part_3ed0a4d7-9196-4cf2-b960-6425844f853f + 3ed0a4d7-9196-4cf2-b960-6425844f853f + + + 1.0 + 73.75903715 + 301f7b0e + part_301f7b0e-dcc1-4414-a23c-42e6856223af + 301f7b0e-dcc1-4414-a23c-42e6856223af + + + 7.27845011 + + MI_Restricted_Substances + 546a4247-5e3b-4adb-bc7e-3fc87f992447 + + Glass/phenolic honeycomb, 0°/90° fabric (0.055) + Glass/phenolic honeycomb, 0°/90° fabric (0.055), W Direction + 3157cd4e-49f4-40af-a349-3a9bc64e52f0 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + f7b0c970-b280-4bf5-8913-c794c228b468 + Length + 4.87922271 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 194e2592-b023-4d9f-94f2-929f1a2fad18 + Mass + 100.0 + + + + + 46.36077494 + + MI_Restricted_Substances + 535f6e21-a16f-4d54-8413-97634da82122 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 8650, oil quenched & tempered at 205°C + df931ea7-79c2-4a95-80c2-5d594e6d441f + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 7da753ff-132b-4d27-b3c4-b619ac47c427 + Mass + 100.0 + + + + + 46.36077494 + + MI_Restricted_Substances + 6505c582-906c-4706-a572-efb422916885 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 4037, oil quenched & tempered at 650°C + 056cb572-28fa-43a9-898b-ff35e53d41c9 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 2088b41e-79c5-4d6b-988a-d8095482c4b1 + Mass + 100.0 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 29bb7831-5820-41e0-b925-cc6c9f6efbbe + Mass + 100.0 + + + + + + + 9.0 + 21.36766087 + + MI_Restricted_Substances + d89d67b6-c08f-47cb-b03a-4203cebfdf32 + + c489932b + part_c489932b-a409-4051-9252-48e4425937a6 + c489932b-a409-4051-9252-48e4425937a6 + + + 7.0 + 3.24522191 + 08c9570d + part_08c9570d-8c4e-4846-9efb-2182a4470c17 + 08c9570d-8c4e-4846-9efb-2182a4470c17 + + + 12.41899724 + + MI_Restricted_Substances + 75a1c963-399c-444d-a38f-1929c00d15b7 + + Normalized + Low alloy steel, AISI 4150, normalized + 3adc0016-9664-4e08-bdbf-ea8810efda3e + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 1764a56c-aae3-4f59-8157-2971fc63fbb5 + Length + 92.12271016 + + + + + 10.94762534 + + MI_Restricted_Substances + c2db0402-57c5-422f-b8c1-470fc9c6a9c8 + + Glass/phenolic honeycomb, 0°/90° fabric (0.112) + Glass/phenolic honeycomb, 0°/90° fabric (0.112), W Direction + 54560eb0-0565-4833-b83c-6d90c0411637 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 67454c48-015a-40b8-8bef-b833defc2871 + MassRemoved + 60.78682544 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + f23047ce-7be6-49b6-bf91-05b843e0bc48 + Length + 36.9572668 + + + + + 10.94762534 + + MI_Restricted_Substances + ed1b937b-1738-408f-9591-bd3e40cc5e33 + + Quenched & tempered + Low alloy steel, D6AC, quenched & tempered + 3b5a6b78-5fa2-42f4-97a0-0238b84dd118 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 62cebf70-e386-499a-88cf-2bad6945a0d5 + Mass + 100.0 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + b453695b-b216-4d5c-bfb3-52b1fda5077c + Mass + 100.0 + + + + + 10.94762534 + + MI_Restricted_Substances + 1d9c8629-4a1d-4aaf-bb7c-ba7a97eef5f5 + + Normalized + Carbon steel, AISI 1340, normalized + b237902f-f130-4d97-a358-5f75db3fd7bd + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + d7307d47-47d5-4e58-824b-fdd7aab0e26b + Mass + 100.0 + + + + + 10.94762534 + + MI_Restricted_Substances + 67cc68ee-c8ab-40bd-bf62-4babd642a1fd + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 81B45, oil quenched & tempered at 425°C + aa20df4a-a828-4f26-9da3-b048036c5caf + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 3b56c56e-2cab-4cb0-ac71-3128598ec5d6 + Mass + 88.48667651 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 7261bef5-9a8e-49cb-9b8e-30ab1515aab8 + Mass + 100.0 + + + + + 10.94762534 + + MI_Restricted_Substances + dfe65b4e-afb8-4397-a303-1266359ccfda + + Quenched & tempered + Low alloy steel, Hy-Tuf, quenched & tempered + b95a75bb-0c0a-43b0-9f59-8443690290f3 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + ee5a3fce-52cb-4165-9135-20bf1035748c + Area + 4.29945183 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + 34b36de7-62cf-4963-b711-e2a6eb04cd0e + Length + 50.60689833 + + + + + 10.94762534 + + MI_Restricted_Substances + 87e1a3cd-fd79-4013-b5f8-56d6f28bef34 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1144, oil quenched & tempered at 540°C + aa099eec-229f-4cf2-a849-3f01ada8241a + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 6b15a5cd-a1de-41bd-8fa3-e307e857c1c9 + Mass + 100.0 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + e047ad62-a283-49bd-b6ce-f4bff5177bc2 + Length + 12.75651255 + + + + + 10.94762534 + + MI_Restricted_Substances + 508489f2-cc48-4f0a-a6ee-482bb89a0386 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 5160, oil quenched & tempered at 205°C + 17511d11-f82e-4ad3-b3c4-99be4f16b7ee + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 5a39fdd0-7032-47f4-a96f-de0cc060177e + Mass + 100.0 + + + + + 10.94762534 + + MI_Restricted_Substances + 8db72069-1e87-4b0f-84bc-cddf9ad19b4b + + water quenched & tempered at 540°C + Carbon steel, AISI 1050, water quenched & tempered at 540°C + f8e918cc-1bab-4412-8b06-656d510582f3 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 9b3a3c87-2cd8-47d2-955a-6d4dcc4b5f2e + Mass + 100.0 + + + + + + + 4.0 + 23.41580783 + 19177595 + part_19177595-0720-4efe-a6b1-7a6c88a6cfd4 + 19177595-0720-4efe-a6b1-7a6c88a6cfd4 + + + 89.14250651 + + MI_Restricted_Substances + fc29cc59-a670-4ad6-85a0-eb07bf011f1a + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 6150, oil quenched & tempered at 425°C + d26c6998-802f-4b07-ba68-b3df6cd5c10c + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 59a6b857-29fa-45b8-832a-2a6b0c49369d + Area + 48.24637111 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 64e0b548-fd4d-4c60-960d-1bdccf33204d + Mass + 100.0 + + + + + 3.61916449 + + MI_Restricted_Substances + 99d1c1c6-eca3-40ed-a479-6dec902f52da + + YS400, cold rolled + TRIP steel, YS400, cold rolled + 0c276c46-13c1-4b9f-ba3c-28896fcdc00e + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 4b0bdd1c-8d70-4292-9c4c-c5b183fe65ac + Mass + 100.0 + + + + + 3.61916449 + + MI_Restricted_Substances + 2b606408-37c3-4801-a307-dda7384ff7cc + + Glass/phenolic honeycomb, 0°/90° fabric (0.072) + Glass/phenolic honeycomb, 0°/90° fabric (0.072), W Direction + 32217508-170e-4abd-82dc-8453a57ce9cc + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 309576da-8c52-4532-b892-294b9d96bbb1 + Mass + 100.0 + + + + + 3.61916449 + + MI_Restricted_Substances + 5b117a10-9c48-4dd0-a869-6eb490031da5 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 8640, oil quenched & tempered at 315°C + 211278c8-5738-4088-a2ab-3110ba29f0a1 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + bbf8f2a5-4707-434d-906c-2b96b155561c + Mass + 100.0 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + d92145c6-3b71-4f80-aaa0-2da5ea2c3529 + Mass + 100.0 + + + + + + + 8.0 + 70.69363895 + + MI_Restricted_Substances + 2c677abc-5da2-4b21-9ce7-1d4e1cc0fb1c + + 7be3482d + part_7be3482d-71f1-4c23-a257-b65c80c953b5 + 7be3482d-71f1-4c23-a257-b65c80c953b5 + + + 9.0 + 13.07026916 + + MI_Restricted_Substances + b49e47be-bf96-4bf1-9366-5c1b840267d4 + + 6126ed15 + part_6126ed15-1e6c-45e9-9de8-21bf8fa238f1 + 6126ed15-1e6c-45e9-9de8-21bf8fa238f1 + + + 1.0 + 38.22489 + 07cea42e + part_07cea42e-7a03-47e3-8a83-75d43afc0b1c + 07cea42e-7a03-47e3-8a83-75d43afc0b1c + + + 15.62160431 + + MI_Restricted_Substances + a6078356-e79c-4ddd-86ef-a3f01680dd35 + + As rolled + Carbon steel, AISI 1020, as rolled + 9c130994-2b19-4444-bb66-d6a078de87a6 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 945e032d-a8c5-4020-b29a-26f31023a3fd + Mass + 100.0 + + + + + 12.05405652 + + MI_Restricted_Substances + 9124b244-f2f8-44df-b2cf-b05d3406eb9e + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 4042, oil quenched & tempered at 315°C + 6f645f4e-aeb2-493b-a0bd-0f0193d02160 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 46cb2c29-e3be-4a31-babd-ab7d4c9b0730 + Length + 31.96361303 + + + + + 12.05405652 + + MI_Restricted_Substances + 9c05e644-9257-4778-9c68-be0cff6f58b5 + + Annealed + Low alloy steel, AISI 8620, annealed + 330d4475-b152-4293-9395-d6dc67b6a3db + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 3c21e613-08d7-4dec-84d7-51274ba6f236 + Area + 52.58193502 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + cb618223-8436-4637-8fe0-999bb920c62d + Length + 54.14458846 + + + + + 12.05405652 + + MI_Restricted_Substances + 78055acc-4fc2-46ae-bba8-f28bda85357e + + Annealed + Carbon steel, AISI 1060, annealed + 6aa1cddb-6418-4d38-be7a-61ebed04f993 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 90abe56e-8173-4ec6-9926-97b81934ed90 + Mass + 52.72710009 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + fd69c437-4c7a-4904-9c40-b37ad6996418 + Length + 0.84681157 + + + + + 12.05405652 + + MI_Restricted_Substances + cec978ca-2cf6-489b-a21f-c424c7d49a61 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 4042, oil quenched & tempered at 540°C + 2cdb3acd-5890-47f2-ac24-51f198b2a0c5 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 551b2060-7f85-47e2-82e4-99ddf3ebb25a + Mass + 100.0 + + + + + 12.05405652 + + MI_Restricted_Substances + 8643d806-94c5-42f9-9ffc-4c21a6e16bd0 + + Annealed + Carbon steel, AISI 1141, annealed + 93db24a2-5c53-4e87-b40b-a91744f8e56a + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + ee620648-3497-4047-9e95-5a53c37f0db8 + Mass + 100.0 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + ef500286-8392-48ec-9d44-f6e7a8cac39f + Mass + 100.0 + + + + + 12.05405652 + + MI_Restricted_Substances + b076430e-dc1c-4448-86c9-bb8d0b8da741 + + Annealed + Low alloy steel, AISI 4620, annealed + 31314268-e853-4e65-a945-c067ed09df61 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 3626f437-79b1-45f5-b330-2f4a8b9ac615 + Area + 35.59254558 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 41200b68-01de-450c-b044-0134f41415eb + Mass + 100.0 + + + + + 12.05405652 + + MI_Restricted_Substances + 18384726-ca55-4d5f-880a-5a2b8776be3a + + Normalized + Carbon steel, AISI 1022, normalized + d349f636-70d5-4184-a03e-13cad9e80de4 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + ce8185ba-fc9f-48ae-8663-c8202c8cc8ec + Length + 37.24466778 + + + + + + + 5.0 + 21.27724104 + 8c3f38f0 + part_8c3f38f0-6e0b-4aca-b254-4132233af614 + 8c3f38f0-6e0b-4aca-b254-4132233af614 + + + 32.91436877 + + MI_Restricted_Substances + 28d51559-b49b-4a2b-9f09-9a198db03164 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 4340, oil quenched & tempered at 425°C + 34176637-a7e1-440f-be4f-2972da9bb57a + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + c06ac6d4-00cf-4a25-a01b-730c32a82a55 + Mass + 100.0 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 59f03655-f8fa-427f-9454-81bd9c0e5420 + MassRemoved + 96.73664462 + + + + + 13.41712624 + + MI_Restricted_Substances + dcba95c6-8741-4b93-bb8b-f433a9c39a78 + + 45wt% glass, biaxial lay-up + Polyester/E-glass fiber, woven fabric, 45wt% glass, biaxial lay-up + eca1ba7c-8432-4282-adeb-82fa79e7fd4d + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + be94a6ab-6d58-484f-8898-e1acaf00e506 + Mass + 100.0 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + f34fa341-34b1-4877-b30e-48c14af24bf6 + Area + 61.96187011 + + + + + 13.41712624 + + MI_Restricted_Substances + 6d6a3603-a2a8-4db9-9e7e-ad4fc4f9c724 + + Glass/phenolic honeycomb, ±45° fabric (0.064) + Glass/phenolic honeycomb, ±45° fabric (0.064), W Direction + c9a0792f-5002-423d-a659-e9712ffd763d + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 364cf3fb-aeb3-49e5-a9c1-d805299db30c + Mass + 100.0 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + f19ea066-91cd-460d-842a-f32d39a67aea + Area + 21.55190269 + + + + + 13.41712624 + + MI_Restricted_Substances + 3fd6cebb-a683-45be-b014-7c3fb617c3e7 + + Glass/polyimide honeycomb, ±45° fabric (0.064) + Glass/polyimide honeycomb, ±45° fabric (0.064), L Direction + 7a2ba64c-04cc-49e9-bc59-7d536d6f9e28 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + bc944cda-7533-407b-b00d-569eb379a60a + Mass + 100.0 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 6b48f74b-ecf8-4d5f-8092-2d4349c269fd + Mass + 100.0 + + + + + 13.41712624 + + MI_Restricted_Substances + 829ba125-1962-4803-a2ea-acd4eb899642 + + Annealed + Carbon steel, AISI 1030, annealed + 3b8852b5-0a4b-4eb3-945c-02bd69abd718 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + a1f35a33-91aa-41ff-99a8-4b171149ddaf + Mass + 100.0 + + + + + 13.41712624 + + MI_Restricted_Substances + 3a464919-b1b2-4ce0-88b2-824bc9a81e6b + + Borosilicate - 2405 + Borosilicate - 2405 + c85dd726-02f4-445c-a87a-cbfa7dab58ea + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 91fa02b9-77b8-4cf5-84d5-8483e0ead798 + Mass + 100.0 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + f756b894-c24d-4f04-90c7-ed5031cfab0e + Mass + 100.0 + + + + + + + 2.0 + 49.79843937 + + MI_Restricted_Substances + f5833937-26a5-4d36-aaae-722b03f04a3b + + 0fd51798 + part_0fd51798-b2a2-4efb-a0bf-6fa79eea315b + 0fd51798-b2a2-4efb-a0bf-6fa79eea315b + + + 1.0 + 67.43221346 + + MI_Restricted_Substances + 63c278b1-c877-40c9-b18c-e03bc07a1dd1 + + 722e564a + part_722e564a-777e-4f9c-8811-193145d86934 + 722e564a-777e-4f9c-8811-193145d86934 + + + 8.0 + 9.2552918 + 49942221 + part_49942221-0621-4af1-a2fc-0a4093a6d639 + 49942221-0621-4af1-a2fc-0a4093a6d639 + + + 50.88350295 + + MI_Restricted_Substances + b44fad5b-b59d-4153-addf-f70a7895947d + + Annealed + Low alloy steel, AISI 4130, annealed + a4ec8808-b585-496d-a5cc-d59c512f313e + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 6c81acc0-5663-48a0-80fb-0c2d91b678ad + Length + 25.63330644 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 11cd72a3-ed84-4616-ac4c-ebaed41492c9 + Length + 21.16212259 + + + + + 7.01664243 + + MI_Restricted_Substances + 8f779b79-a040-48d7-ac26-b9a1edf50ad2 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 8640, oil quenched & tempered at 650°C + ff9a65cd-ebb1-451d-b40b-6b0647b7f578 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 6bbad37a-8852-47d4-abb8-cc6ffba27678 + Mass + 100.0 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 8018ee5d-e0de-46af-ae92-55ebdfa74e2b + Mass + 100.0 + + + + + 7.01664243 + + MI_Restricted_Substances + a831e691-2a34-4edf-807f-dfd38c316ef0 + + Borosilicate - 7740 + Borosilicate - 7740 + 2a1d6322-a0ea-436c-9538-cceb38c18a83 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 04a0a0dd-d457-4389-920e-b89aff73af52 + Mass + 100.0 + + + + + 7.01664243 + + MI_Restricted_Substances + 38da30dc-d742-49da-bc7e-998b66397040 + + Oil quenched & tempered at 425°C + Carbon steel, AISI 1144, oil quenched & tempered at 425°C + e5309be8-4142-4935-8a91-72fa921fdf2d + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + efbe77cf-4e96-4bb9-ac92-59e4e213384d + Length + 4.83907233 + + + + + 7.01664243 + + MI_Restricted_Substances + ee5b018e-8d7f-4fb1-bad0-c73e871592bc + + 16Mo3, normalized + Low alloy steel, 16Mo3, normalized + d4294b82-7ffe-47d3-b655-dc8b66bc7020 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + a1b45db5-85b0-4f26-9b01-2968d3776b26 + Length + 4.03067167 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 477ee7d7-60b9-4ac0-8262-9e93cd7c26d3 + Mass + 100.0 + + + + + 7.01664243 + + MI_Restricted_Substances + 9cae15c6-b5b6-4ab9-9008-d962bee0e662 + + Glass/phenolic honeycomb, 0°/90° fabric (0.128) + Glass/phenolic honeycomb, 0°/90° fabric (0.128), L Direction + 3d11b8af-1fd4-4675-8258-5b3b35f3c032 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 3bfd5fb1-23db-422d-90b3-f1e1a7c8a39a + Area + 5.03000654 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + cbc4230b-cee3-48f8-8712-f8df2c6ba37d + Mass + 100.0 + + + + + 7.01664243 + + MI_Restricted_Substances + 33160988-8422-40e2-93d1-e3e7467eafe9 + + Normalized + Carbon steel, AISI 1030, normalized + 6c76498c-79e8-4812-9fd1-af346f992f7e + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + 359a2740-1b43-4fd0-8d89-4cd4b18d63f0 + Mass + 100.0 + + + + + 7.01664243 + + MI_Restricted_Substances + 72799627-a7c0-4df4-8250-e2be8538565f + + Glass ceramic (N11) + Glass ceramic (N11) + 96182ae5-ac0c-49fa-91bf-c58715109f6f + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 096e3ee6-8be5-4a27-9e82-195bcd236082 + Mass + 100.0 + + + + + + + 7.0 + 57.22853055 + 0a2f97d7 + part_0a2f97d7-dc23-4588-90f2-3a7dad859ea6 + 0a2f97d7-dc23-4588-90f2-3a7dad859ea6 + + + 49.67143766 + + MI_Restricted_Substances + 75a1c963-399c-444d-a38f-1929c00d15b7 + + Normalized + Low alloy steel, AISI 4150, normalized + 9729d0c1-9bae-49be-b5d5-bad7b0e57c20 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 3b462f60-aa3a-44b3-91a0-b9584d987069 + Area + 15.34828395 + + + + + 25.16428116 + + MI_Restricted_Substances + d2b08d58-fc58-402d-98a4-6ee646a8fff5 + + Potash soda lead glass - 0010 + Potash soda lead glass - 0010 + 42fe1c07-bf61-43fe-b200-091c0a99d3eb + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 9a3fb36d-fb3b-4899-a6c6-a492e6344ada + Area + 53.44211498 + + + + + 25.16428116 + + MI_Restricted_Substances + 3fd6cebb-a683-45be-b014-7c3fb617c3e7 + + Glass/polyimide honeycomb, ±45° fabric (0.064) + Glass/polyimide honeycomb, ±45° fabric (0.064), L Direction + f31b86d3-3d73-45d7-b335-dc80c6fe3797 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 390fa0ad-01b8-4920-8c1b-cb3b44fc86e3 + Mass + 100.0 + + + + + + + 1.0 + 31.80084909 + 6982cff1 + part_6982cff1-1540-4179-9bfb-6085885c7e80 + 6982cff1-1540-4179-9bfb-6085885c7e80 + + + 42.98512658 + + MI_Restricted_Substances + 3fd6cebb-a683-45be-b014-7c3fb617c3e7 + + Glass/polyimide honeycomb, ±45° fabric (0.064) + Glass/polyimide honeycomb, ±45° fabric (0.064), L Direction + 2f198640-ec20-443e-bce0-aa2480ebc5fa + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + a95b81e7-3165-4c66-b27c-79f80b8a77c1 + Mass + 100.0 + + + + + 28.5074367 + + MI_Restricted_Substances + 405361fd-5b54-4a33-b835-7eb9eee13310 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 4042, oil quenched & tempered at 205°C + be2142f9-d6ab-490f-97dc-a6a35fae95f0 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + effd4e9c-9b82-4183-b83a-1c7b6373a274 + Mass + 100.0 + + + + + 28.5074367 + + MI_Restricted_Substances + e678781a-1b38-4709-816b-9db609651db6 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 50B60, oil quenched & tempered at 425°C + 9b463961-9e1d-49ac-a291-a22f41835348 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + f9a42968-f583-4ea2-8f08-7abb2b3d7c69 + Area + 15.60010007 + + + + + + + 5.0 + 5.37996604 + c59f3dd3 + part_c59f3dd3-5757-4896-be0f-fe4a52ac813f + c59f3dd3-5757-4896-be0f-fe4a52ac813f + + + 1.00718205 + + MI_Restricted_Substances + ed1b937b-1738-408f-9591-bd3e40cc5e33 + + Quenched & tempered + Low alloy steel, D6AC, quenched & tempered + 52cf4b83-73d4-4df3-8a79-30543a4005bd + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 85be6d38-4183-4573-a6fe-b2d0883d1e7e + MassRemoved + 42.00388516 + + + + + 49.49640897 + + MI_Restricted_Substances + 99d1c1c6-eca3-40ed-a479-6dec902f52da + + YS400, cold rolled + TRIP steel, YS400, cold rolled + 6795f40a-00cf-4910-81e0-e6bfd760da45 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 0c6e3617-bc3c-4f77-9b0b-ce00180df965 + Mass + 52.91374775 + + + + + 49.49640897 + + MI_Restricted_Substances + cc556116-e08b-4aa7-a2f1-af5315cb6a49 + + Annealed + Low alloy steel, AISI 8740, annealed + d2c298de-fc99-4858-a8d0-3ff585bfbee9 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + afb02586-6603-4e8b-9df6-62bdbcfc9562 + Area + 51.58789155 + + + + + + + 9.0 + 29.53131195 + fe91d311 + part_fe91d311-524b-4814-93bc-0e03eec4d4ea + fe91d311-524b-4814-93bc-0e03eec4d4ea + + + 100.0 + + MI_Restricted_Substances + ee08f647-79af-49f3-98c5-043480a0fed4 + + Quenched & tempered + Low alloy steel, 4330V, quenched & tempered + b1170aef-0d45-4706-bf6e-58a6290598f8 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + bc36cb23-5d3d-4152-91e8-94d719fef358 + Mass + 100.0 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 72eb8ad1-7f1d-4ec2-a7f8-c2f2fb390bb5 + Length + 32.9931696 + + + + + + + 4.0 + 81.23109661 + e0e5af0a + part_e0e5af0a-e0c5-4e59-af5b-fb8261eaf757 + e0e5af0a-e0c5-4e59-af5b-fb8261eaf757 + + + 99.8769877 + + MI_Restricted_Substances + 6ad310ec-db2b-43b1-afa1-9b6ddae5880c + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 94B30, oil quenched & tempered at 425°C + 5603f0cd-721c-4d66-97e3-0fae5da13c6e + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 53e81066-b63d-4911-8057-e3c49aaa7138 + Area + 20.67503361 + + + + + 0.01537653 + + MI_Restricted_Substances + b00ee3d8-d653-4c76-8154-c2f07820ceda + + As rolled + Carbon steel, AISI 1080, as rolled + 9cc836ff-8d2f-41dd-82b9-747946f2675f + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + e2ed0c08-5f2f-48f6-ab7e-e6e6b91f51f5 + Mass + 100.0 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 47ff2e6f-c4fc-481b-ac7a-88e391b3d956 + Length + 20.45801422 + + + + + 0.01537653 + + MI_Restricted_Substances + 00cd78de-6c78-46f3-81b3-ec03803fa034 + + Glass/phenolic honeycomb, ±45° fabric (0.048) + Glass/phenolic honeycomb, ±45° fabric (0.048), W Direction + a3e8d452-f55c-4b4f-afb4-78b5105fab0b + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 83448319-1f36-4f78-b6b2-ddccb968a8d6 + Mass + 100.0 + + + + + 0.01537653 + + MI_Restricted_Substances + 1345051c-8b29-468f-a10d-37712b50f19a + + Borosilicate - 9741 + Borosilicate - 9741 + 34ee0405-4c30-4272-aa74-8cd0006c7cdc + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + e1dad974-b607-47f0-897c-389bce8c3130 + Length + 32.53403102 + + + + + 0.01537653 + + MI_Restricted_Substances + f7146c54-87d0-4395-b57a-86bb0c43716a + + ASTM A106 Grade B + Structural steel, ASTM A106 Grade B + b1097059-ddc7-4042-9c37-ca46873934aa + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + a643177b-46b3-48e6-b617-520aa03a590a + Mass + 100.0 + + + + + 0.01537653 + + MI_Restricted_Substances + bac6ffd4-6d83-432c-90f4-de9606502589 + + Alkali barium glass + Alkali barium glass + 13adc0ad-d341-44b0-bd5a-0e4be59efd3c + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + f1502dd5-5b95-4b45-8d0b-deb5e9a4673d + Mass + 100.0 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 84af3f8c-8dba-49b4-9c0d-fd2aebc545b2 + Length + 15.25770035 + + + + + 0.01537653 + + MI_Restricted_Substances + 92565d61-24fc-4880-9be5-0faeb9a8a3e8 + + Titanium silicate + Titanium silicate + 969b4e8d-aa09-45d8-b760-9a6d5f39bd17 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + cf49c522-0eee-46ad-b8fb-0bb1617f3b1f + MassRemoved + 71.95374391 + + + + + 0.01537653 + + MI_Restricted_Substances + 90b2285b-4295-429d-beb8-90d9f5df0101 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 5046, oil quenched & tempered at 315°C + c55b3a48-af24-4adb-8756-73a57c037afd + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + 9de8fabe-f587-4fbf-af1a-0737dbf6e562 + Mass + 100.0 + + + + + 0.01537653 + + MI_Restricted_Substances + 50c388cf-bb91-442a-9b62-8d34f7822f13 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1040, oil quenched & tempered at 540°C + 85ea47d0-5bbe-4bfa-8dd5-351374048369 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 553326e4-d43e-4a2a-a8a7-e9a26f0a8dcf + Mass + 100.0 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + b5fbf9f0-b92e-477b-9ce7-aa33dddfaa3f + Mass + 28.59695885 + + + + + + + 1.0 + 97.07446372 + 437de059 + part_437de059-b008-4e7c-b520-10a8123000e1 + 437de059-b008-4e7c-b520-10a8123000e1 + + + 63.04823493 + + MI_Restricted_Substances + dce50f42-7360-4343-bf6c-8ed14aa0f092 + + 40% glass and mineral + PA66 (40% glass and mineral) + 701e5165-2c25-4cea-96ed-7750f5f41acc + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 6aa5c7f2-e8e6-41ab-9717-77236751e16f + Mass + 100.0 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + d509c5d2-e8e1-4640-9d90-8b15141ea57f + Mass + 100.0 + + + + + 18.47588253 + + MI_Restricted_Substances + 0c172430-369d-48ad-910e-69fe1451a36e + + Normalized + Carbon steel, AISI 1095, normalized + 1f7e073c-a7eb-49f3-adc0-0417aa2cfa5f + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + c33eccae-1ac4-4d8d-8b3d-a449ae0752dc + Mass + 100.0 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + d71fb4fe-b849-4560-a0e0-68b2e512cc69 + Mass + 100.0 + + + + + 18.47588253 + + MI_Restricted_Substances + 00cd78de-6c78-46f3-81b3-ec03803fa034 + + Glass/phenolic honeycomb, ±45° fabric (0.048) + Glass/phenolic honeycomb, ±45° fabric (0.048), W Direction + e56af113-d40b-42ac-a2df-f2472f70efee + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + ec8a21c1-8d76-4127-a2c3-83673ca72874 + Length + 19.65164175 + + + + + + + 7.0 + 27.13895478 + 04fa7bb4 + part_04fa7bb4-3a59-43c1-a203-6be1b2da9fcf + 04fa7bb4-3a59-43c1-a203-6be1b2da9fcf + + + 22.96900149 + + MI_Restricted_Substances + 7a62318a-eff2-4f36-9925-ee919c5b4369 + + S235J + Structural steel, S235J + b5b0bc54-ff16-4e30-aa8e-1174d01b0db9 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + f7e1d2c7-2fa3-4356-8737-63d41dea09cf + Mass + 100.0 + + + + + 25.6769995 + + MI_Restricted_Substances + 29b76cdc-672e-4a1f-8f6e-a5644857c880 + + Normalized + Low alloy steel, AISI 4135, normalized + 8b2a4aa2-e23e-4c9e-90b7-03a4272434ce + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + b7749878-bcea-4e27-92e1-43cbe27fa037 + Mass + 100.0 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 6006957c-f765-4ba5-bb70-31ffeab91dd8 + Mass + 100.0 + + + + + 25.6769995 + + MI_Restricted_Substances + 72799627-a7c0-4df4-8250-e2be8538565f + + Glass ceramic (N11) + Glass ceramic (N11) + cd3d696d-39e4-4ba2-beb9-220431560555 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + b84b3ae8-bb31-4e8a-8081-ecf61c235074 + Mass + 100.0 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 47bae213-7435-4793-96f0-733c137b25a9 + Mass + 100.0 + + + + + 25.6769995 + + MI_Restricted_Substances + aa85aa64-c83c-4dec-afe9-120ed38bfd6b + + Quenched & tempered + Intermediate alloy, Fe-5Cr-Mo-V aircraft steel, quenched & tempered + 82f871e0-b0dc-41a1-85fc-c757560e0d45 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + 443ee55b-1242-420a-b5ef-a1785070b80a + Mass + 100.0 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + df470091-0c62-4e4b-b5cc-ace6fc3bcedc + Mass + 100.0 + + + + + + + 1.0 + 37.72134577 + 5b8a41c6 + part_5b8a41c6-a8e6-44ab-bf66-c6f9793fa82e + 5b8a41c6-a8e6-44ab-bf66-c6f9793fa82e + + + 63.61318345 + + MI_Restricted_Substances + 829ba125-1962-4803-a2ea-acd4eb899642 + + Annealed + Carbon steel, AISI 1030, annealed + 16e80a3f-6e09-41a2-9cf5-4ba5eb4a7e14 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 55446e81-a459-4b89-84db-e9afdca8258d + Mass + 100.0 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + e13a47ea-20e1-427d-aa4d-c96d2f032ab5 + Length + 65.5405381 + + + + + 9.09670413 + + MI_Restricted_Substances + 3c7e2f5d-1c0d-4d81-8f90-3aa111fa97ee + + water quenched & tempered at 205°C + Carbon steel, AISI 1040, water quenched & tempered at 205°C + bf017666-33ee-4e9c-a7c7-c79809c76bd5 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + b7d09318-089b-4b93-acb0-da0f87626678 + Mass + 100.0 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 986f836b-cbcf-4eca-a03e-94505ea593da + Mass + 100.0 + + + + + 9.09670413 + + MI_Restricted_Substances + fbdbafa4-b1a5-410d-a3f0-0b7077b0d7be + + Glass/polyimide honeycomb, ±45° fabric (0.112) + Glass/polyimide honeycomb, ±45° fabric (0.112), L Direction + 930d52cf-2cee-4c4b-b1a9-b1d96d3044c9 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 6a48fca9-fbaf-4264-9482-96ab92322e57 + Mass + 100.0 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 72adcdd4-1469-4a17-84e7-9d58cf04a38e + Mass + 100.0 + + + + + 9.09670413 + + MI_Restricted_Substances + 6f9ce415-05a1-4774-bf1d-8952ab0f7306 + + Annealed + Low alloy steel, AISI 3140, annealed + 676c5e9b-ff60-4183-a7a9-9d7fcd32c4ed + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + a0295e52-f3ba-4990-a17d-a6d1be73ff17 + Mass + 100.0 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 6b7c542c-ddd3-4aa2-8c5d-24e74a10c92d + Area + 68.0809364 + + + + + 9.09670413 + + MI_Restricted_Substances + a8bcc71d-ff19-40c8-9520-f11553c604d2 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 5140, oil quenched & tempered at 650°C + a21a8da1-da97-4c1b-8fbe-4a5aa1a91a46 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 499b161c-fe41-45c5-a2ad-a21511698d33 + Mass + 100.0 + + + + + + + 5.0 + 45.26277163 + + MI_Restricted_Substances + 5fd070ef-bb1b-4857-abcf-7eda481ecfbe + + c8fe4f3d + part_c8fe4f3d-a700-4d0c-84e3-a14b889a4cc7 + c8fe4f3d-a700-4d0c-84e3-a14b889a4cc7 + + + 5.0 + 24.6692841 + eb2deb8b + part_eb2deb8b-b41d-4c74-8e4b-a7e85b8ec439 + eb2deb8b-b41d-4c74-8e4b-a7e85b8ec439 + + + 11.29350648 + + MI_Restricted_Substances + c95c73c3-4701-4efd-902e-cbf342cdcf96 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 6150, oil quenched & tempered at 540°C + 745d6d44-8f46-419e-9b32-25bc47eaa59e + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 89f9c223-e5c2-4ebd-9633-4d3e6f846f0a + Mass + 100.0 + + + + + 44.35324675 + + MI_Restricted_Substances + 36e1311d-2e77-4147-8cf3-c4cdce6f6c7f + + Grade F9 + Alloy steel, 9Cr-1Mo, Grade F9 + 9b22d40c-ac77-4697-9810-85b65fe477be + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 08d160c5-0163-43da-9917-db0b516d1d61 + Area + 23.87664328 + + + + + 44.35324675 + + MI_Restricted_Substances + b10ab099-72fd-4e47-9274-015a08f619c2 + + Annealed + Low alloy steel, AISI 5160, annealed + 31356a48-ade5-4b4d-a93b-9808b6383d9e + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + f7533552-c5cd-4a4e-ab60-a532681d340a + Mass + 100.0 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + e3b12039-e222-49f5-8803-779b9f7fd7af + Length + 66.37623024 + + + + + + + 4.0 + 15.26485025 + 7ec1f344 + part_7ec1f344-f8f3-4bb7-a8bb-91fc987da37d + 7ec1f344-f8f3-4bb7-a8bb-91fc987da37d + + + 48.34072363 + + MI_Restricted_Substances + ab895171-8c16-4056-9062-78f7516be1b0 + + Borosilicate - 7050 + Borosilicate - 7050 + 4a413853-4f19-4033-99e9-d2558285fd77 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + b141dd7a-08fe-49c9-9e5e-60c573dff406 + Mass + 100.0 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + ebc20434-b632-4a83-98ce-36397e7cc4b6 + Length + 84.00889559 + + + + + 10.33185527 + + MI_Restricted_Substances + 92565d61-24fc-4880-9be5-0faeb9a8a3e8 + + Titanium silicate + Titanium silicate + e2589441-809a-4632-b5f5-604e86d5df1d + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 49000dd4-39c6-4c0e-91a4-9733e7cdc4cc + Mass + 100.0 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 2a8c198d-6795-43a2-89b0-18d302c51e22 + Mass + 4.02927515 + + + + + 10.33185527 + + MI_Restricted_Substances + d424fe56-b6f6-42c2-99fb-3e92da8ce70b + + Molding, glass filled + DAP (molding, glass filled) + 9f8bae76-87c4-4a92-9d2e-7acd712324b4 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 5a4e401d-dfcd-43eb-a876-1e11b6606ba3 + Mass + 100.0 + + + + + 10.33185527 + + MI_Restricted_Substances + 0a203f13-4112-4c7b-8d17-bd9ce600f647 + + YS350, cold rolled + Dual phase steel, YS350, cold rolled + c0ce1d7a-cd01-4611-bf88-190e3d52c5c6 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + 4c5daa87-9d94-4e0c-b0ed-f6e29891ec70 + Length + 60.25046709 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + c33605f5-647b-4115-ba26-4220139253f8 + MassRemoved + 19.7739692 + + + + + 10.33185527 + + MI_Restricted_Substances + d56a3593-45b4-418e-8f28-3fde55e8479f + + Homopolymer, 40% glass and mineral + PP (homopolymer, 40% glass and mineral) + 18c72c1f-62dc-424a-b1e3-829ebae03638 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 39556d21-4b67-439a-ab9a-aa687ff13719 + Length + 88.79933994 + + + + + 10.33185527 + + MI_Restricted_Substances + c62d668e-5411-4845-b19c-3a0c4eedf872 + + 10CrMo9-10, normalized & tempered + Low alloy steel, 10CrMo9-10, normalized & tempered + eb75a1ff-cfed-4cff-9ee0-51b0ae2bff51 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 97aba755-6d6b-476a-9d91-b4ae031e069d + Mass + 100.0 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 8d6ff545-b87a-4f86-b87e-b0c67814fc8a + Length + 7.22270105 + + + + + + + 6.0 + 83.81149465 + 82a614ac + part_82a614ac-71f0-43c2-9f05-50d6d6bc5dd7 + 82a614ac-71f0-43c2-9f05-50d6d6bc5dd7 + + + 27.35189331 + + MI_Restricted_Substances + d2c2408b-ddaa-4dc0-825b-b2d3ef39767b + + Oil quenched & tempered at 315°C + Carbon steel, AISI 1095, oil quenched & tempered at 315°C + 6ca8c8cd-314f-49f3-98a2-fe7da413b8dd + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + a37f7e86-aa84-4a27-991a-117d1677ba50 + Length + 56.53616439 + + + + + 18.16202667 + + MI_Restricted_Substances + 8b442749-964a-49d6-be5c-9a55c81d85f8 + + Annealed + Carbon steel, AISI 1137, annealed + c476e626-5152-486e-86db-e1e4879b8322 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + ea5ab7ac-c8d8-4223-b0ed-27111a71e53f + MassRemoved + 32.52559622 + + + + + 18.16202667 + + MI_Restricted_Substances + 81ce98b3-d459-4695-9dd9-d53244be47ed + + Annealed + Carbon steel, SA216 (Type WCC), cast, annealed + 49e350c2-4a76-46dc-91c9-a053293f1246 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 44afe398-fa7e-4205-b019-ff981c913696 + Mass + 100.0 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + efd3f567-f565-4c76-bfdd-53016814b06f + Mass + 100.0 + + + + + 18.16202667 + + MI_Restricted_Substances + 158e73a4-18c6-4e1a-b5d8-57669c377335 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 8740, oil quenched & tempered at 650°C + f67e261d-6a6d-460c-b268-c2d94e6e6095 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + 95f56dd5-b66f-4a7a-bcf5-23248b4bf618 + Mass + 100.0 + + + + + 18.16202667 + + MI_Restricted_Substances + 4b01d1e1-0f4c-4861-a797-7ea504ca38c4 + + Annealed + Low alloy steel, AISI 5150, annealed + 2b4ff675-7d16-452a-aa95-6822f6f80a28 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 65d94de4-5ac4-4511-93bd-5c4493f91339 + Mass + 86.86862447 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 1927203e-d336-40f9-9ac8-002e3fb8404f + Mass + 100.0 + + + + + + + 2.0 + 26.22946106 + 8b6c545e + part_8b6c545e-01a8-4124-a864-f4715e58b341 + 8b6c545e-01a8-4124-a864-f4715e58b341 + + + 8.01495947 + + MI_Restricted_Substances + 7c667712-7c0d-46fe-bf29-e73482f1a937 + + Normalized + Carbon steel, AISI 1040, normalized + 436bf9aa-eeaa-43b2-b091-946739429e46 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + b04303aa-fa93-4a4b-b15a-1d399aa6ef2a + Mass + 100.0 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + cc3e31e1-5109-4d2c-89c5-e9afbe14ac07 + Mass + 100.0 + + + + + 91.98504052 + + MI_Restricted_Substances + 879f3268-e8b6-48c0-822a-40a010d12911 + + AISI 1010, annealed + Carbon steel, AISI 1010, annealed + 5b140538-a83a-4932-8530-b6b9b1354b33 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + bd4e9820-9ff3-4955-adf8-a54c1fb91c6f + Mass + 100.0 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 21454e66-9f53-46ce-bc28-9eae97e8e2aa + Mass + 100.0 + + + + + + + 5.0 + 68.12259986 + 32a97613 + part_32a97613-8749-4521-911a-dadce88e2fbc + 32a97613-8749-4521-911a-dadce88e2fbc + + + 87.24837297 + + MI_Restricted_Substances + 9124b244-f2f8-44df-b2cf-b05d3406eb9e + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 4042, oil quenched & tempered at 315°C + fb4f654c-e2e5-4e46-82a7-135d9d12e8b8 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 899c2231-7fab-4232-9b1b-90460bf58577 + Mass + 100.0 + + + + + 1.59395337 + + MI_Restricted_Substances + 29d2e9de-9de0-4ea9-9bff-3a1cee0c26e3 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 4037, oil quenched & tempered at 205°C + e3442955-c1af-4772-8b05-38a14c8b56d6 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 106b9d46-3e65-4149-82ad-e1be183c3aa0 + Mass + 100.0 + + + + + 1.59395337 + + MI_Restricted_Substances + 5dbabc2e-4263-4458-abe1-31a2ece9e122 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 5160, oil quenched & tempered at 425°C + bafe2017-cae7-4cb0-a9a9-a0a07178065f + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + 04dae83c-67b6-4578-88e8-186be8062412 + Mass + 100.0 + + + + + 1.59395337 + + MI_Restricted_Substances + e5cb0b28-b074-4eb6-95ab-12e8692a87ea + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 50B60, oil quenched & tempered at 540°C + ede158ad-d3b7-4822-9c1b-7baa9a4a09ec + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 3d7da978-b277-4a25-b720-5638eeb242a3 + Mass + 67.53981167 + + + + + 1.59395337 + + MI_Restricted_Substances + d6e501d1-0349-4e73-a9da-d539d7cd5486 + + Normalized & tempered + Carbon steel, SA216 (Type WCC), cast, normalized & tempered + 89b60b9d-50b9-458a-8a79-bc7fabf95943 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 22dc52e0-34ca-4412-952e-49bc1bf22f01 + Mass + 100.0 + + + + + 1.59395337 + + MI_Restricted_Substances + 9baf14a0-efff-4bce-9674-553db30bee1b + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 9255, oil quenched & tempered at 650°C + 669c5e9a-c19c-4473-a1d7-4ac59cedb10a + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + dfcbbda8-fb7c-4a18-b4b8-67ce4d0a060e + Length + 10.26537111 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 777fa19d-d738-4b3b-915d-6996371d9079 + Mass + 100.0 + + + + + 1.59395337 + + MI_Restricted_Substances + a1ecb25a-cbfa-484f-8221-3c08313c0d09 + + Glass/polyimide honeycomb, ±45° fabric (0.051) + Glass/polyimide honeycomb, ±45° fabric (0.051), L Direction + 2a239261-e9fa-4492-b6d9-487b94adce00 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 3231389f-f837-46b2-ab9f-65bd393369dc + Mass + 3.33598158 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 965ee3ad-4b83-4b1c-aeb6-280f7931ac17 + Mass + 100.0 + + + + + 1.59395337 + + MI_Restricted_Substances + cec978ca-2cf6-489b-a21f-c424c7d49a61 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 4042, oil quenched & tempered at 540°C + b9ea77fb-a00b-4873-9afe-bebec9745c86 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + a9fc01c6-b5f8-4d21-ab7e-6afa5fb68b26 + Mass + 100.0 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 6a975675-91de-4ed0-a7da-0a74e72c8af0 + Mass + 100.0 + + + + + 1.59395337 + + MI_Restricted_Substances + 940150b6-2d2e-4762-b1a0-6f354a75d95b + + Potash lead glass + Potash lead glass + 6f275f8d-94c9-458c-bf77-a73191c7d328 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 8662860d-124e-4acd-987c-ee1d0d4d7046 + MassRemoved + 4.07684855 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 1889b177-f9b6-4429-ad45-cd5dda537c09 + Mass + 100.0 + + + + + + + 8.0 + 52.66540364 + + MI_Restricted_Substances + 19db41d7-f431-4cae-8977-8bdab8435374 + + f45aed28 + part_f45aed28-e2ce-47d9-9f72-262b61b4cf4c + f45aed28-e2ce-47d9-9f72-262b61b4cf4c + + + 5.0 + 67.8095884 + 029eebe4 + part_029eebe4-61d9-4313-8b11-48a3b2ddaa26 + 029eebe4-61d9-4313-8b11-48a3b2ddaa26 + + + 100.0 + + MI_Restricted_Substances + e6ccd83b-bd9f-45c2-a45e-53933b3b3638 + + YS170, hot rolled + Drawing quality, YS170, hot rolled + a1084c64-0392-4ae2-8349-95b72dd23979 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 20e30242-be1b-4382-abb8-ae0a7c43b0b5 + Mass + 100.0 + + + + + + + 9.0 + 72.54869717 + 9d4a9735 + part_9d4a9735-5832-40b9-a0c7-374f7f8ef4eb + 9d4a9735-5832-40b9-a0c7-374f7f8ef4eb + + + 100.0 + + MI_Restricted_Substances + b0c0246d-7238-46e4-9081-5bad34efbbdb + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 5140, oil quenched & tempered at 205°C + 69802d0e-a351-4e61-822e-72bef720e710 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 60c7e574-7a63-4b65-aa28-e295f5d044fe + Mass + 100.0 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 48ff2572-798d-43a3-937f-b1e0d1412155 + Mass + 100.0 + + + + + + + 5.0 + 45.75240027 + 08e41ceb + part_08e41ceb-09ac-4b39-aec4-13ca0971e3f3 + 08e41ceb-09ac-4b39-aec4-13ca0971e3f3 + + + 19.09781993 + + MI_Restricted_Substances + be0bbb94-0c22-4276-9615-902f13ee0363 + + Oil quenched & tempered at 315°C + Carbon steel, AISI 1144, oil quenched & tempered at 315°C + 562fb1a0-2d01-4d8e-ab17-daed570352ce + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + c7299a56-0153-46d0-a959-7608c0a3e4b8 + Mass + 100.0 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 1cff8140-3e0c-417e-a513-0dfa93a2efdb + MassRemoved + 2.81782336 + + + + + 16.18043601 + + MI_Restricted_Substances + 00fe5279-94a1-43fd-8b88-d83679a1bdce + + Normalized + Low alloy steel, AISI 8650, normalized + 4d72c6e4-2025-4bcc-9f26-0bd1a1e025f0 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + b8497ea3-22dd-4402-9297-c567f477f441 + Mass + 100.0 + + + + + 16.18043601 + + MI_Restricted_Substances + 44170b93-ef3d-4d60-848c-1d454eadbd1f + + As rolled + Carbon steel, AISI 1118, as rolled + fab0c294-61a5-4f4e-ba4e-1e003c0add97 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 12c5941f-9f7d-4a7c-a233-d62edcba2b73 + Mass + 100.0 + + + + + 16.18043601 + + MI_Restricted_Substances + 8d11e762-0e0a-4010-873b-28aa9eda77f1 + + water quenched & tempered at 650°C + Carbon steel, AISI 1040, water quenched & tempered at 650°C + 91e457fb-587b-4340-9663-d6588e04a9ef + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + 6d8b3ee0-b47a-45a7-b221-d37c4af789df + Length + 87.83882837 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + c0019e0b-9940-4b0a-8012-bb274efe6a46 + Mass + 100.0 + + + + + 16.18043601 + + MI_Restricted_Substances + ff23c6a6-3046-4f35-b5d2-ca7f0956efc7 + + Oil quenched & tempered at 650°C + Carbon steel, AISI 1144, oil quenched & tempered at 650°C + c1f1d2ae-d067-4cb6-9b97-0cb20f40aebb + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 391d1f1f-4586-47a2-9597-7a988ac7fbab + Area + 9.24836546 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 07e2be6c-604c-4c09-b7a1-5f96e5172fbc + Mass + 100.0 + + + + + 16.18043601 + + MI_Restricted_Substances + 3cad12a9-0765-402c-a6b1-0be665ecd2e6 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 4140, oil quenched & tempered at 540°C + 73da6b78-b8b6-434a-b85c-9f69819556d8 + + + + MI_Restricted_Substances + 614a3c76-be00-4567-883f-a69d5560a85f + + Wire drawing, non-ferrous + Wire drawing, non-ferrous metals + 1fc8a46d-4615-47eb-8e25-3868bcde3026 + Mass + 100.0 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 173921f9-7fc6-4d2f-861f-477d238a8158 + Mass + 55.1803645 + + + + + + + 1.0 + 67.48451761 + + MI_Restricted_Substances + a78dcd3a-f108-4fdb-857e-e2d00ed319d4 + + 0aa5949f + part_0aa5949f-02ce-4d0d-8c81-2c420977ba2c + 0aa5949f-02ce-4d0d-8c81-2c420977ba2c + + + 7.0 + 72.33532828 + 14a60b45 + part_14a60b45-ed26-4545-91b1-579cf92fd920 + 14a60b45-ed26-4545-91b1-579cf92fd920 + + + 81.39042341 + + MI_Restricted_Substances + a831e691-2a34-4edf-807f-dfd38c316ef0 + + Borosilicate - 7740 + Borosilicate - 7740 + af47e5bf-dc1e-4631-8029-06abeb8d8aa9 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + b1dd64a2-c274-46bd-8687-3d33878586b1 + Mass + 100.0 + + + + + 2.32619707 + + MI_Restricted_Substances + ab732b70-3546-4a94-b914-643f38c2443f + + 24CrMo13-6, quenched & tempered + Low alloy steel, 24CrMo13-6, quenched & tempered + 107419cf-caf4-4a12-99ab-00b4a6924134 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 0c3c00cc-917f-4ec7-9aaf-7c89dbfd4515 + Mass + 100.0 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 64849db1-58f0-4cc6-a61e-19fc913cae47 + Length + 89.79021915 + + + + + 2.32619707 + + MI_Restricted_Substances + 33160988-8422-40e2-93d1-e3e7467eafe9 + + Normalized + Carbon steel, AISI 1030, normalized + 5acf8036-ea0f-4650-bf06-d513c66556d7 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 6960e6d3-8999-4b93-8a23-f1254b1b62b8 + Mass + 100.0 + + + + + 2.32619707 + + MI_Restricted_Substances + 52f4bd78-04b3-4f59-ad9d-f4d9e695cec1 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 8640, oil quenched & tempered at 540°C + 7b765542-1a51-4dd5-84c6-c364df62912c + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 52723d99-ec82-4965-82a5-fb22addcdd55 + Mass + 100.0 + + + + + 2.32619707 + + MI_Restricted_Substances + b6d7f7bf-6ae9-4782-adb0-3c8684b58ab7 + + water quenched & tempered at 205°C + Low alloy steel, AISI 4130, water quenched & tempered at 205°C + cf75a3bf-9adf-4a7d-8531-24962738c224 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + 4431c3ad-10d5-40ff-b98f-6b99b8d09273 + Mass + 100.0 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 9c3b4101-5c00-4270-be01-b034398c6850 + Mass + 100.0 + + + + + 2.32619707 + + MI_Restricted_Substances + 63d5d6b5-3b52-4cd9-a56f-6e7c5c945139 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 81B45, oil quenched & tempered at 315°C + 78d1af3d-f686-40b0-bb54-b1f232113dd9 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 8620f028-3d43-485e-95b8-c002cbbd1e66 + Mass + 100.0 + + + + + 2.32619707 + + MI_Restricted_Substances + b3d89bcf-5e9a-4fe8-a953-98ceb384b8a3 + + water quenched & tempered at 650°C + Carbon steel, AISI 1030, water quenched & tempered at 650°C + 37dddd7a-f7db-44aa-925f-ce0d3b6d2daf + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + b3a173fe-d3fa-4fd1-a112-3526a28e9216 + Mass + 100.0 + + + + + 2.32619707 + + MI_Restricted_Substances + 21dcdeeb-524a-488e-b332-fcd4e1caf6f7 + + water quenched & tempered at 650°C + Carbon steel, AISI 1095, water quenched & tempered at 650°C + 0a9b7806-e04f-42d4-a59e-34cdec3357a3 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 91eea166-f867-4a19-8026-f9c59a7efbb3 + Area + 51.02855272 + + + + + 2.32619707 + + MI_Restricted_Substances + b7281866-0d52-4e7c-b595-207e18a0a759 + + Glass ceramic (ZD) + Glass ceramic (ZD) + 8c8132bb-5369-4aee-a41b-e9fc45f6bbec + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 8b451d54-b071-44e9-960b-5a76f446e6ad + Mass + 100.0 + + + + + + + + + 4.0 + 94.96250469 + dbd26773 + part_dbd26773-8e8f-4777-ac11-5ae169b0adeb + dbd26773-8e8f-4777-ac11-5ae169b0adeb + + + 76.00599107 + + MI_Restricted_Substances + d42eaa02-9811-4935-b9cd-652adc845e8c + + Oil quenched & tempered at 650°C + Carbon steel, AISI 1050, oil quenched & tempered at 650°C + b664d6da-3d02-4c61-beca-ac15117002b4 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 0c30cc1c-7adb-42ff-9e3c-6df6902dd623 + Mass + 41.3254881 + + + + + 3.42771556 + + MI_Restricted_Substances + 9df55457-5300-4ddb-b92e-122b5c121621 + + Glass and mineral filled, encapsulation, molding + Novolac (glass and mineral filled, encapsulation, molding) + 129b2bc8-e985-4f46-a8e6-9df04926e059 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + 4b3e027e-808e-43e5-9b43-24670aa70a5a + Mass + 100.0 + + + + + 3.42771556 + + MI_Restricted_Substances + 1a9ca626-1709-4d7b-954c-65aa69bf6536 + + YS300, cold rolled + High strength low alloy steel, YS300, cold rolled + 6b2a51a6-4f05-4529-b956-d5f89154aea1 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + 4f7389b7-6ed6-4bde-9a00-47eba952c0cb + Mass + 100.0 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 663bef70-ccb1-4122-bf49-37c1ecdbc270 + Mass + 100.0 + + + + + 3.42771556 + + MI_Restricted_Substances + b067ed19-a836-41f7-9267-d9b04647d09f + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 5150, oil quenched & tempered at 650°C + a6928515-9d7b-425b-87d6-77dd32f92761 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 9b5e8df2-1fdf-456d-b942-69d71caa3bdb + Mass + 100.0 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + e47e033a-4cbb-4a05-b953-ddd17520582c + Length + 66.68110939 + + + + + 3.42771556 + + MI_Restricted_Substances + 1a9a8159-774b-4fc9-9c09-4bbc5474f364 + + Oil quenched & tempered at 315°C + Carbon steel, AISI 1060, oil quenched & tempered at 315°C + 8fe9ddc8-d93d-4141-b1e6-e6d7c7ca7714 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 14745818-f77a-49c3-8543-cec80704e400 + Length + 63.61059647 + + + + + 3.42771556 + + MI_Restricted_Substances + 8349c912-772a-4fd7-90a5-7d52aa9c9448 + + Oil quenched & tempered at 425°C + Carbon steel, AISI 1137, oil quenched & tempered at 425°C + 45eb05de-7dfa-4c59-8020-7a62fe7ffe9b + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + b92ed420-a919-4d7c-b717-467ed447e789 + Mass + 100.0 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 3e345310-3294-49ec-9563-4a560a1cbd77 + Mass + 100.0 + + + + + 3.42771556 + + MI_Restricted_Substances + 877882c6-9b86-4643-a4a0-363d7d8023fd + + P355N/NH, normalized + High strength low alloy steel, P355N/NH, normalized + f6f762d4-60e6-41df-bd5b-a3c9a913e2a5 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 801772a7-9f20-4d3a-be55-c1d56953929c + Mass + 100.0 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 9b415600-3892-4880-8548-5d2a1771f6df + Mass + 100.0 + + + + + 3.42771556 + + MI_Restricted_Substances + ae5812e1-18fd-4a4d-aaa2-a04ca5e84b7a + + YS400, hot rolled + Dual phase steel, YS400, hot rolled + 65c218e8-5bf8-4ffe-b06f-33330785a050 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + de4d8201-fd83-49b7-bdaa-17fe3fc25396 + Mass + 100.0 + + + + + + + 2.0 + 68.68658208 + 3c323160 + part_3c323160-5fd8-44e4-a13d-2b9f8d257e5c + 3c323160-5fd8-44e4-a13d-2b9f8d257e5c + + + 38.65691723 + + MI_Restricted_Substances + 15dcb0d7-3be1-4d92-952e-c80ccbdc6a58 + + Annealed + Carbon steel, AISI 1117, annealed + 495b33c6-6072-4b51-abeb-ea0631bda54a + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 804ba7d8-7241-430b-a8bd-ffbfd8e9e1e6 + Mass + 97.84621698 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 4032f224-a752-4e9b-9239-1216ab831a2a + Area + 23.40507229 + + + + + 20.44769425 + + MI_Restricted_Substances + ac443865-33d5-466d-89e2-c3f26e668369 + + Borosilicate - 3320 + Borosilicate - 3320 + 79b889c4-0a6a-43ee-a624-d1edde521eee + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + 2fdcde75-03c6-4ca8-95ee-94c569666985 + Area + 49.369266 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 32429d18-f93d-4f9a-8b3b-b2185d113077 + Mass + 100.0 + + + + + 20.44769425 + + MI_Restricted_Substances + 0d45da58-d026-4a44-b2b5-3109fe88f824 + + Annealed + Carbon steel, AISI 1022, annealed + b52b229c-244e-43e4-a7af-d62cf3dcbc7b + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + ead16e14-f3e0-4428-9590-75daef15c905 + MassRemoved + 1.85855818 + + + + + 20.44769425 + + MI_Restricted_Substances + c95c73c3-4701-4efd-902e-cbf342cdcf96 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 6150, oil quenched & tempered at 540°C + 6ee1f13a-259e-4c0d-808e-8ba5bfaee21a + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + f57655a3-883e-40dd-a093-9964a8356299 + Mass + 100.0 + + + + + + + 8.0 + 54.49852945 + 5dd3822f + part_5dd3822f-b24c-4067-b80a-a757c8cd42af + 5dd3822f-b24c-4067-b80a-a757c8cd42af + + + 9.03867003 + + MI_Restricted_Substances + 90514ab4-75b3-48a9-9a07-98eb8f83ef81 + + As rolled + Carbon steel, AISI 1015, as rolled + 5be59a06-d6b7-41ad-b182-8fde7d1e4ef0 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + a6ec4773-da93-4378-b1ab-ae3501c1c3a3 + Length + 56.50861335 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 359cb7f8-ca98-47e0-a518-e151f66bb612 + Mass + 100.0 + + + + + 12.9944757 + + MI_Restricted_Substances + b7281866-0d52-4e7c-b595-207e18a0a759 + + Glass ceramic (ZD) + Glass ceramic (ZD) + 08e59c8a-2717-49be-9877-99514a1d892c + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + fb977997-cc93-43b1-97a2-fce283ab53c3 + Mass + 100.0 + + + + + 12.9944757 + + MI_Restricted_Substances + 6d6a3603-a2a8-4db9-9e7e-ad4fc4f9c724 + + Glass/phenolic honeycomb, ±45° fabric (0.064) + Glass/phenolic honeycomb, ±45° fabric (0.064), W Direction + 4d7fbb98-5105-4379-91f3-c0e83a36490f + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + 4f99306f-f5d8-4a01-a9c2-4bec570e02c1 + Mass + 100.0 + + + + + 12.9944757 + + MI_Restricted_Substances + f92ff01e-ed35-4c66-96d1-607d9684b44b + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 94B30, oil quenched & tempered at 315°C + 94ee114f-4921-482e-b6f0-bcf062174668 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 86a3e3ac-e646-4dc8-bd37-31f184e119b8 + Mass + 100.0 + + + + + 12.9944757 + + MI_Restricted_Substances + db238d75-fcb8-41f5-9289-83a352fa83a6 + + Annealed + Carbon steel, AISI 1015, annealed + 4f63a2b4-ca62-458e-a376-2e8c16a35be6 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + bd30ba17-0112-479e-86a4-ed7cd8a7e16d + Length + 32.4986593 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + dd48f4ee-fed1-4743-a078-97593acdbb3d + MassRemoved + 1.45429368 + + + + + 12.9944757 + + MI_Restricted_Substances + a1ecb25a-cbfa-484f-8221-3c08313c0d09 + + Glass/polyimide honeycomb, ±45° fabric (0.051) + Glass/polyimide honeycomb, ±45° fabric (0.051), L Direction + cba81f0c-37ce-4fa0-98eb-cd0f1f202dbc + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + aadbc19e-955c-4d2d-b6d2-eb1c26ba3ac6 + MassRemoved + 22.66693041 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 76780348-4023-4a50-9c95-d2021dca2c25 + MassRemoved + 18.42039349 + + + + + 12.9944757 + + MI_Restricted_Substances + 87e1a3cd-fd79-4013-b5f8-56d6f28bef34 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1144, oil quenched & tempered at 540°C + da444f58-762b-4434-a8b4-68e908157cbc + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 4d5bf7d5-e56b-46dd-93d1-a791d41ebe7e + Mass + 100.0 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 2f5e2e30-90dc-422e-ad04-7e4a745524ee + Length + 40.70143962 + + + + + 12.9944757 + + MI_Restricted_Substances + ee08f647-79af-49f3-98c5-043480a0fed4 + + Quenched & tempered + Low alloy steel, 4330V, quenched & tempered + 743e0b8f-fc4b-4b51-b429-4add411a3d50 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 35b35d9a-b0e3-48ad-842c-7989acce53f7 + Mass + 41.91364391 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 6a9dcf43-279e-4b1a-b9e6-05b7f00e03df + Mass + 100.0 + + + + + + + 6.0 + 76.82335832 + + MI_Restricted_Substances + 022614af-ecf8-4797-af86-25b711d65e30 + + ede9c4dc + part_ede9c4dc-b959-4cd3-886d-d73c16ba410f + ede9c4dc-b959-4cd3-886d-d73c16ba410f + + + 5.0 + 65.15663776 + c6deee78 + part_c6deee78-ba90-46e1-bf50-943770fe74f5 + c6deee78-ba90-46e1-bf50-943770fe74f5 + + + 59.53503821 + + MI_Restricted_Substances + 5b4ea232-c032-4f8d-a633-3b059e93651a + + 36%Co steel + Hard magnetic alloy, 36%Co steel + a4a505df-4b60-4496-8bca-af20cff0717c + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + ad5e3fec-5699-4265-9bff-4a5337d214e0 + Length + 90.22238789 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 64596daa-99ae-48b6-a37d-f3fa3730f7e4 + Area + 44.09314633 + + + + + 6.74416029 + + MI_Restricted_Substances + e6461f0f-809d-4f17-8ea9-b85d7219639a + + Glass/phenolic honeycomb, ±45° fabric (0.128) + Glass/phenolic honeycomb, ±45° fabric (0.128), L Direction + aa3e1d42-4b4a-4b04-8309-006cc76ba803 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 5d230694-57bd-43d6-8494-9ab67a963c63 + Length + 58.90132652 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + bfed3d36-890a-457d-ad16-0e33003a5c8e + Length + 66.63448236 + + + + + 6.74416029 + + MI_Restricted_Substances + f17caf23-cca0-47c9-a216-c29c1533ed51 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 50B60, oil quenched & tempered at 315°C + 576ada76-20e0-4680-8d0d-354906e8d430 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + a086531c-9ed6-445c-8011-ad89a896fb3f + Length + 4.8088964 + + + + + 6.74416029 + + MI_Restricted_Substances + 2a840794-eac4-4f77-90ba-f84bce518c0f + + Glass/phenolic honeycomb, 0°/90° fabric (0.055) + Glass/phenolic honeycomb, 0°/90° fabric (0.055), L Direction + b0d69130-2193-4218-8e43-bdc5990b9811 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 6443405a-6eb7-4cdb-9e03-9151c4d973e5 + Area + 13.54248133 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 8ef1914b-82a3-4b4c-8136-82b22c52426d + Mass + 100.0 + + + + + 6.74416029 + + MI_Restricted_Substances + 1d9c8629-4a1d-4aaf-bb7c-ba7a97eef5f5 + + Normalized + Carbon steel, AISI 1340, normalized + 8ac39931-3435-41fe-9cd4-79a44528d043 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 3add1843-5548-42ea-8cd5-a6bc7ab62e06 + Mass + 100.0 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 4f7fb088-a550-4303-8c43-bb2c5f9d463f + Mass + 100.0 + + + + + 6.74416029 + + MI_Restricted_Substances + 2656c71b-a4ea-4fc6-9139-adc0deae35b1 + + 65wt% glass, biaxial lay-up + Polyester/E-glass fiber, woven fabric, 65wt% glass, biaxial lay-up + 205d1b5d-8be2-451c-abd9-7db894c4f25e + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + d8276af2-5e1b-425b-b32e-6a243751c623 + Mass + 100.0 + + + + + 6.74416029 + + MI_Restricted_Substances + d07fe7e1-e745-42a8-9761-6f68c2a7bd1b + + Annealed + Low alloy steel, AISI 4150, annealed + ff18eea8-708c-4a5e-b423-dfd95959a9ec + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 9ef576f6-f156-400a-b8aa-0036675290ba + Mass + 100.0 + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 392e0c5f-13c3-4c87-bc47-2eb2e6905400 + Mass + 100.0 + + + + + + + 7.0 + 33.03445299 + c4d2141a + part_c4d2141a-9ba8-46ec-9f1b-cd0d9b30cdcf + c4d2141a-9ba8-46ec-9f1b-cd0d9b30cdcf + + + 30.82577219 + + MI_Restricted_Substances + 0afa77bf-df9b-456c-8c48-3c84b1ccd2e0 + + Low density glass-sphere filled + Bisphenol molding compound (low density glass-sphere filled) + cb3eb454-1ec1-4bea-a815-1fb838a21831 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 31e23a0f-0a29-4e65-89b2-d93541db603e + Mass + 100.0 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + bc72ef57-53db-4fe6-aaaa-ad09ba171161 + Area + 92.21714972 + + + + + 23.05807593 + + MI_Restricted_Substances + 50342378-5548-45ea-9a21-c0f16c6dcb1a + + Steel, terne coated + Coated steel, steel, terne coated + 5776bdfe-4912-49c1-85d3-0713d6a6d0fe + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 8fbb6564-41cb-4784-afb4-598244cd31d6 + Mass + 100.0 + + + + + 23.05807593 + + MI_Restricted_Substances + 67ea6f19-34d5-40af-9b8c-059058fd840a + + Oil quenched & tempered at 205°C + Carbon steel, AISI 1080, oil quenched & tempered at 205°C + d8af9b19-e096-4e1d-a96e-77f0e70f87a9 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + ae9b8fa6-82e4-4518-a408-29804f7900ec + Mass + 100.0 + + + + + 23.05807593 + + MI_Restricted_Substances + e6b45bea-dec9-4b91-996a-885bb0c31f8d + + Glass, S grade (10 micron monofilament, f) + Glass, S grade (10 micron monofilament, f) + e4923503-0e75-4099-909f-cd195156daf8 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 225b44b1-2efa-48de-93d8-03f8ecd7ef75 + Mass + 100.0 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 163fc9e0-4602-455c-b0d0-7fa5bffbe4ef + Mass + 100.0 + + + + + + + 9.0 + 28.28983656 + 594a4dd2 + part_594a4dd2-ce0c-4965-9bb3-36af1a32b5a7 + 594a4dd2-ce0c-4965-9bb3-36af1a32b5a7 + + + 44.68628249 + + MI_Restricted_Substances + b1b14aff-8354-447c-9883-df4969a517a3 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 86B45, oil quenched & tempered at 315°C + 4f79bf51-0531-4f50-bb8a-df6902de48cd + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + bc48191a-0d55-4729-a6db-1bac764cd512 + Mass + 100.0 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + a44b17b1-ae57-4836-ad1a-9d8cb71ad42e + Length + 4.83526955 + + + + + 11.0627435 + + MI_Restricted_Substances + f7146c54-87d0-4395-b57a-86bb0c43716a + + ASTM A106 Grade B + Structural steel, ASTM A106 Grade B + ca1f9eb2-30f5-42c6-937a-3ea2ca2f4d2a + + + + MI_Restricted_Substances + fb6a206e-0007-4ada-82ef-66a3019dcef0 + + Pultrusion + Pultrusion + 0aded0e8-09f1-41e5-b847-8182cf58fed2 + Mass + 100.0 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 6ee5135e-0662-4010-a3a7-be01a3fd96f6 + Mass + 100.0 + + + + + 11.0627435 + + MI_Restricted_Substances + 81ce98b3-d459-4695-9dd9-d53244be47ed + + Annealed + Carbon steel, SA216 (Type WCC), cast, annealed + 3c64a19c-38df-4a75-8dea-04697e832cb8 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 29e1accd-4ed8-4250-8ee8-e3f9e5b155af + Mass + 100.0 + + + + + 11.0627435 + + MI_Restricted_Substances + d41a9d62-4a05-4cd7-98ac-f1acb5d39658 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 9255, oil quenched & tempered at 540°C + b02cf418-c984-4b2d-81f3-c2c6bdc78eb8 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 1ba1cac9-17cb-4ede-a6f6-18a75f2373ce + Length + 56.16205542 + + + + + 11.0627435 + + MI_Restricted_Substances + 7a62318a-eff2-4f36-9925-ee919c5b4369 + + S235J + Structural steel, S235J + 4afca0bd-8482-4501-b933-c2c4f00a1e43 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + f1346717-38e4-4925-a6b6-0645ca8949e5 + Length + 52.16239427 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 13e8ee9b-153a-4fd9-81dc-cc83a571e7ec + Area + 93.83367411 + + + + + 11.0627435 + + MI_Restricted_Substances + db7d255c-6269-4097-a5aa-e18a13019915 + + FR-4.0 (Df < 0.01 at 10GHz), Epoxy/Glass fiber, PCB laminate + FR-4.0 (Df < 0.01 at 10GHz), Epoxy/Glass fiber, PCB laminate + 00c7da4f-fc24-4233-a13b-93d9b85f404d + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 94055cf8-2c15-465d-96f8-ce0b25246c07 + Mass + 100.0 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 6138dc7b-3602-45ac-94bd-4847d94d1570 + Mass + 100.0 + + + + + + + 2.0 + 97.77199379 + ac138146 + part_ac138146-5194-40a7-afa3-349c4345f39a + ac138146-5194-40a7-afa3-349c4345f39a + + + 11.77725731 + + MI_Restricted_Substances + afc85ad6-9e99-44a7-a959-f75ddbacff15 + + FR-5, Epoxy/Glass fiber, PCB laminate + FR-5, Epoxy/Glass fiber, PCB laminate + 066fbaf0-5b98-435c-b493-64d5892cadde + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + ad47d1f6-bd11-488e-b825-3147dd8a0b0d + Mass + 100.0 + + + + + 44.11137134 + + MI_Restricted_Substances + 3b818b25-e6de-4e5c-b546-e97c68e10225 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 5046, oil quenched & tempered at 650°C + 3b208f3b-1113-4f4b-a983-943d22590029 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + ad68552e-cc31-494a-b899-0363e52ff508 + Mass + 100.0 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + ca93ef19-cf1a-4ea2-8aa5-c7e1207b8901 + MassRemoved + 79.36791855 + + + + + 44.11137134 + + MI_Restricted_Substances + c15a44c3-d8be-4ae8-9a58-281f13b731cd + + YS420, cold rolled + High strength low alloy steel, YS420, cold rolled + cbbd1922-4a1d-4ccd-bb7b-1f6200ea54d2 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 757d131d-bfd7-4b49-9b42-d0a25856f793 + Mass + 100.0 + + + + + + + 2.0 + 19.66361865 + ee26367d + part_ee26367d-0bcb-470b-a527-67a3b872892d + ee26367d-0bcb-470b-a527-67a3b872892d + + + 100.0 + + MI_Restricted_Substances + ed1b937b-1738-408f-9591-bd3e40cc5e33 + + Quenched & tempered + Low alloy steel, D6AC, quenched & tempered + 8cde10fa-e9a7-4913-b5cc-927b86a872e8 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 1947e9d9-a9d2-4f50-8e37-0e15f16f5504 + Mass + 100.0 + + + + + + + 1.0 + 85.83398716 + + MI_Restricted_Substances + 19db41d7-f431-4cae-8977-8bdab8435374 + + 4c8dc587 + part_4c8dc587-a97e-4506-8131-725ceaa59696 + 4c8dc587-a97e-4506-8131-725ceaa59696 + + + 5.0 + 1.96303762 + + MI_Restricted_Substances + 80083213-3621-42c0-9e23-cdaa30c759e6 + + 688d58f6 + part_688d58f6-c50e-49e8-9a82-b2d516050610 + 688d58f6-c50e-49e8-9a82-b2d516050610 + + + 6.0 + 55.04283078 + eeb0858c + part_eeb0858c-7c6f-4c91-b611-86f355ae9e89 + eeb0858c-7c6f-4c91-b611-86f355ae9e89 + + + 100.0 + + MI_Restricted_Substances + 3606ab13-13f3-49fb-bded-2e3470bcf7d9 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 81B45, oil quenched & tempered at 650°C + a28c71b6-8dc4-4c8d-8b5d-2fbc0092dab9 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 26d4f20b-6511-40ab-befd-fb38f522e745 + Mass + 100.0 + + + + + + + 8.0 + 57.84353444 + 2a3b25e9 + part_2a3b25e9-fca6-4e5f-9b98-fe2ce973810f + 2a3b25e9-fca6-4e5f-9b98-fe2ce973810f + + + 26.93413492 + + MI_Restricted_Substances + 2f1d8340-2d1b-4b7a-b236-f9924123bb33 + + ASTM A36 + Structural steel, ASTM A36 + 6f0f316e-86cd-411c-a55d-2df8bb735b25 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + bea52eff-5ecd-443b-beb2-7d6157ad5338 + Mass + 100.0 + + + + + 18.26646626 + + MI_Restricted_Substances + d02817f7-7500-4fcb-8c34-40927da681a5 + + Quenched & tempered + Carbon steel, SA216 (Type WCC), cast, quenched & tempered + 45174c87-f58a-4227-9e14-2b3b74d04890 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 33219f1e-6ff6-4254-a2d5-02fe3c0ad4c2 + Mass + 100.0 + + + + + 18.26646626 + + MI_Restricted_Substances + 8245dc6c-3d61-4f18-82c8-6fb946e1582c + + Glass foam (0.13) + Glass foam (0.13) + faf424bd-e724-47e9-ad77-070fc9b8c516 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + c79a3353-8f86-4943-bf90-27ce904735ac + Length + 79.64938347 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + e3c506d8-8c0f-4f71-b852-52a049df532c + Mass + 100.0 + + + + + 18.26646626 + + MI_Restricted_Substances + 4ad00a9e-92b5-4e28-92a0-409da4495c54 + + Oil quenched & tempered at 205°C + Carbon steel, AISI 1060, oil quenched & tempered at 205°C + e179e37a-2ffe-48ba-8fd5-38f96742c82c + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 6fe9513f-2ebb-4255-8b57-5175a2fb5301 + Mass + 100.0 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + c1365da9-9c8e-479a-844d-31329ca62c6f + Mass + 100.0 + + + + + 18.26646626 + + MI_Restricted_Substances + 74efd204-f3f9-4a40-b3a6-0b48295b815b + + Annealed + Low alloy steel, AISI 4820, annealed + 74fbb2dd-5b0b-45a7-8d1a-97f82013df63 + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 6115d183-bb4f-4295-b816-54a7a78a79b4 + Mass + 47.64945006 + + + + + + + 7.0 + 44.48135161 + 752b9eaf + part_752b9eaf-5396-46c5-bcbc-d117e67e2f96 + 752b9eaf-5396-46c5-bcbc-d117e67e2f96 + + + 22.26366071 + + MI_Restricted_Substances + a7ada434-62e4-411d-9c85-56dd9d44f094 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 4037, oil quenched & tempered at 425°C + 5208a1a6-321f-4a4f-bcbe-15661555a999 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 9a7ab126-e2ea-4b43-82a2-eca4d9ae391a + MassRemoved + 73.8041939 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + c5f7c1a0-78e3-4e38-9110-c5ffcc28052e + Length + 72.20411038 + + + + + 38.86816964 + + MI_Restricted_Substances + 7b1fcb28-a127-417b-978f-6a5c58305d24 + + Annealed + Carbon steel, AISI 1118, annealed + b0b5ed93-ca11-440d-a2a1-664c6bcac957 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + 5c79f499-9c93-41ec-bd6d-d37c328af4a8 + Mass + 100.0 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + ad5ae1ba-3a86-473d-9ba7-7c9f207b9d6e + Mass + 100.0 + + + + + 38.86816964 + + MI_Restricted_Substances + 82eabba3-2697-4f74-a530-ae27f5e33ffe + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 50B46, oil quenched & tempered at 540°C + 54555277-80b6-4c9a-8da3-b8e285ae98b2 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 9ea0a363-7c54-4a24-8b4a-8cbdbe6c35a4 + Length + 23.48583346 + + + + + + + 2.0 + 74.28608186 + 2e0b4bbe + part_2e0b4bbe-5824-4f04-9403-e4f67aec2048 + 2e0b4bbe-5824-4f04-9403-e4f67aec2048 + + + 83.89830113 + + MI_Restricted_Substances + aa4540cb-3277-459f-a69a-ca324ddd0125 + + Glass ceramic (N0) + Glass ceramic (N0) + 549b49a4-59fe-4e55-983e-59f6201188c0 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + b960c1ca-3311-4ced-ab97-6bfb02fd2191 + Mass + 100.0 + + + + + 8.05084943 + + MI_Restricted_Substances + 2c2dc98a-ef9d-420d-aa00-25552c8f8bab + + S355J + Structural steel, S355J + 2a660257-441e-4c57-8125-05d3218ad94e + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 72ef15df-ca91-48a0-bbd7-1ebdfb8bdcd3 + Mass + 100.0 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 9742cee8-239e-48ac-be60-9892713d4e00 + Mass + 100.0 + + + + + 8.05084943 + + MI_Restricted_Substances + 356303d7-c574-4db7-80f9-427e176a5308 + + 40CrMoV13-9, quenched & tempered + Low alloy steel, 40CrMoV13-9, quenched & tempered + a3459071-3026-41a8-a904-69f211082c8a + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + 7947cbf5-9a0f-4dfd-a747-1febff1d0340 + Mass + 100.0 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + d863c646-cf1e-4b41-82a6-a226ab0dec22 + Mass + 100.0 + + + + + + + 5.0 + 70.40568151 + 8d0be01b + part_8d0be01b-cd46-49cb-81ec-b2b4c50964cf + 8d0be01b-cd46-49cb-81ec-b2b4c50964cf + + + 7.14154662 + + MI_Restricted_Substances + 9ce914d8-75c1-4c5f-8c57-11c0e62b2cfa + + ASTM A299 Grade A + Structural steel, ASTM A299 Grade A + 780ef8f9-0a79-4f8b-94f4-f1d0c4dec462 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 08a232b4-2a98-4633-bbf3-baed71150706 + Mass + 100.0 + + + + + 11.60730667 + + MI_Restricted_Substances + b00ee3d8-d653-4c76-8154-c2f07820ceda + + As rolled + Carbon steel, AISI 1080, as rolled + 8ba7ceb6-645f-4fef-9c4a-c447e49d1da4 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 01d0d6b3-f68f-416e-b445-f48b3a3ce19e + Length + 72.12147823 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + e1cde062-59c4-42ad-a43b-9c66e8760037 + Mass + 100.0 + + + + + 11.60730667 + + MI_Restricted_Substances + a371ea54-94e0-4a85-9b8a-856cf82f2e1d + + SAE 4130, cast, quenched & tempered + Low alloy steel, SAE 4130, cast, quenched & tempered + ed9f8659-9b73-4ff7-a9ac-e4273cb6ab76 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 7092b96c-cefa-4e67-8da6-9c7779335375 + Mass + 100.0 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 8c7953d2-68b5-4d7e-9f01-0d34f54c3fc2 + Mass + 100.0 + + + + + 11.60730667 + + MI_Restricted_Substances + 546a4247-5e3b-4adb-bc7e-3fc87f992447 + + Glass/phenolic honeycomb, 0°/90° fabric (0.055) + Glass/phenolic honeycomb, 0°/90° fabric (0.055), W Direction + f65d11fe-0f04-4ba2-ac2d-5542ec8c2670 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 7580986d-3ee6-4c6a-9a94-6b99b6ed12f2 + Mass + 100.0 + + + + + 11.60730667 + + MI_Restricted_Substances + 1a53b354-59b1-4129-a78d-0bfe95923541 + + Normalized + Carbon steel, AISI 1117, normalized + 02a05e20-e8b9-4787-aeda-496e299a562e + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 3ec679b8-7a36-46ad-bdd5-4ba75842cb86 + Length + 81.29173921 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + e29497ec-64a7-44e2-b3a8-b3f770ba7c78 + Area + 57.87178182 + + + + + 11.60730667 + + MI_Restricted_Substances + 54bbb9b3-efe0-473b-ac70-caea9951e470 + + Normalized + Carbon steel, AISI 1015, normalized + 8ad15042-122a-4394-bcb0-2a56ed110de8 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + 2008b7c6-e12f-4136-9367-de9f2a6d072d + Mass + 100.0 + + + + + 11.60730667 + + MI_Restricted_Substances + 4b01d1e1-0f4c-4861-a797-7ea504ca38c4 + + Annealed + Low alloy steel, AISI 5150, annealed + c366e688-47cf-4eaf-acd3-370c008eea59 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + f616899b-8d17-422b-b9ba-090eb825b8f1 + Mass + 100.0 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 3e713ee4-69e8-40e1-9bd3-a2e20b2b66b0 + Area + 76.45302804 + + + + + 11.60730667 + + MI_Restricted_Substances + 181b484f-4ada-4e9e-8c47-103ae23d76c3 + + Quenched & tempered + Low alloy steel, AISI 8740, quenched & tempered + c5f7e172-3732-466c-8c3a-e6ecc194ca4f + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + fcb2b75a-217b-440e-a1cf-af410418a94e + Mass + 100.0 + + + + + 11.60730667 + + MI_Restricted_Substances + dfe65b4e-afb8-4397-a303-1266359ccfda + + Quenched & tempered + Low alloy steel, Hy-Tuf, quenched & tempered + 8c447b96-27ef-469f-bb52-4c30c221dc6c + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + b61e3ed4-60fa-43e8-8492-b21edf314aad + Mass + 100.0 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 45dd58ca-a1a6-4d56-a27e-39e6e13aab7c + Mass + 100.0 + + + + + + + 6.0 + 87.74853874 + fc816c81 + part_fc816c81-a4dd-4dbd-b057-77d33b2f6164 + fc816c81-a4dd-4dbd-b057-77d33b2f6164 + + + 81.51673291 + + MI_Restricted_Substances + 90514ab4-75b3-48a9-9a07-98eb8f83ef81 + + As rolled + Carbon steel, AISI 1015, as rolled + 19c6e2e4-b12f-4b6c-ab24-9d6ae0efe7a4 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 20d186fd-4564-4e69-be02-a1892a71baf7 + Mass + 100.0 + + + + + 3.69665341 + + MI_Restricted_Substances + 8643d806-94c5-42f9-9ffc-4c21a6e16bd0 + + Annealed + Carbon steel, AISI 1141, annealed + 99975f5e-3441-4c19-abe7-1213b862408f + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 9adb3451-4da0-4f78-82b2-c2a889364b23 + MassRemoved + 64.34047048 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 08361ab9-fa03-427d-9348-179d5086d15d + Mass + 100.0 + + + + + 3.69665341 + + MI_Restricted_Substances + b067ed19-a836-41f7-9267-d9b04647d09f + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 5150, oil quenched & tempered at 650°C + 9b87de39-67d3-4897-880a-12702f2e28b5 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 025f356b-b30a-47cf-b1f8-907108147f00 + Length + 59.37782254 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 8113c9c1-0bed-4c38-8ae7-0d1b761e7311 + Mass + 100.0 + + + + + 3.69665341 + + MI_Restricted_Substances + e8c6d73a-bd7a-4ef3-ae11-48e45d4a5515 + + Glass, E grade (0.4-12 micron monofilament, f) + Glass, E grade (0.4-12 micron monofilament, f) + cb5eb97c-7540-4e16-875d-0bb131bb3e50 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 8e626599-1413-442a-a50e-98fc9b5e5328 + Mass + 100.0 + + + + + 3.69665341 + + MI_Restricted_Substances + 53268754-75cd-4016-8ed0-2577d32f766e + + As rolled + Carbon steel, AISI 1060, as rolled + 04d19f03-af42-47d7-8f68-fe846602a7be + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + b2cfdd42-6c18-4810-b594-cf360f47cb55 + Mass + 93.58316324 + + + + + 3.69665341 + + MI_Restricted_Substances + 82eabba3-2697-4f74-a530-ae27f5e33ffe + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 50B46, oil quenched & tempered at 540°C + 10c7c9ea-394a-4280-8af9-bda6bfd5e307 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 84fa5022-2526-4aa2-9fd1-4b989f0d0b21 + Mass + 100.0 + + + + + + + 3.0 + 75.57531887 + 6f4ea3c5 + part_6f4ea3c5-a560-45f6-85b8-efcc4021f17d + 6f4ea3c5-a560-45f6-85b8-efcc4021f17d + + + 29.57739738 + + MI_Restricted_Substances + f82520a6-b061-4bc7-b873-40211a51aca5 + + Glass/phenolic honeycomb, 0°/90° fabric (0.035) + Glass/phenolic honeycomb, 0°/90° fabric (0.035), L Direction + c60b55d8-4b8d-4131-a9b6-c56872672986 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 947e4440-d7c0-46d4-aa13-288ef2c8111e + Length + 5.59534584 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 7afbe458-61cb-451c-8c13-39a13573658c + Mass + 100.0 + + + + + 70.42260261 + + MI_Restricted_Substances + ae5812e1-18fd-4a4d-aaa2-a04ca5e84b7a + + YS400, hot rolled + Dual phase steel, YS400, hot rolled + 795d3e5d-15f9-4a9f-bea5-e2c87939073d + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 2a150d7e-f85b-4124-a8f4-740f7c7d4a82 + Length + 35.41476942 + + + + + + + 6.0 + 43.720106 + + MI_Restricted_Substances + 544dcb08-b28a-4b6c-9af7-20182b64b0d5 + + 20e6b945 + part_20e6b945-da4f-4a53-8dff-867f7572e201 + 20e6b945-da4f-4a53-8dff-867f7572e201 + + + 1.0 + 47.33039566 + 70bb5351 + part_70bb5351-c3a4-4d02-8ddd-bab2abc64736 + 70bb5351-c3a4-4d02-8ddd-bab2abc64736 + + + 4.82301297 + + MI_Restricted_Substances + db7d255c-6269-4097-a5aa-e18a13019915 + + FR-4.0 (Df < 0.01 at 10GHz), Epoxy/Glass fiber, PCB laminate + FR-4.0 (Df < 0.01 at 10GHz), Epoxy/Glass fiber, PCB laminate + 8b451981-2b7a-4e40-9ac4-8c12fc1333fc + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + bd408aff-759c-48ed-9276-eadd50a0b216 + Mass + 69.31293316 + + + + + 23.79424675 + + MI_Restricted_Substances + dec2859d-9573-49bd-846a-5e2a288c063f + + Soda barium glass + Soda barium glass + 9f39f2a6-0599-4e0c-824c-79c6f486a44d + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 53eae939-c16c-4057-8c64-f9c12cb2f5ef + MassRemoved + 45.08855787 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + c27ee4cd-2b72-4c46-b68a-9c1026279818 + Mass + 100.0 + + + + + 23.79424675 + + MI_Restricted_Substances + 6ad310ec-db2b-43b1-afa1-9b6ddae5880c + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 94B30, oil quenched & tempered at 425°C + e82ad814-b0c3-4722-9b6f-71ac40e64ee6 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 6b869a1e-25a3-43f4-bac6-3cff261c374f + Mass + 100.0 + + + + + 23.79424675 + + MI_Restricted_Substances + b4c065d7-6405-44fb-82cf-24ca2072f5c9 + + 300M (high carbon), quenched & tempered + Low alloy steel, 300M (high carbon), quenched & tempered + 4e99b4bd-16c5-4612-91cb-3952e0dc3898 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + f4876557-b875-4b71-8d35-029df65ce865 + Area + 63.32292662 + + + + + 23.79424675 + + MI_Restricted_Substances + 9df55457-5300-4ddb-b92e-122b5c121621 + + Glass and mineral filled, encapsulation, molding + Novolac (glass and mineral filled, encapsulation, molding) + 3576fa9a-49e7-44f7-a99d-6775a875d4bd + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + d52732f0-161d-4e4c-8463-3a4e85c75d72 + Mass + 100.0 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + b2cb5a54-a8ee-4c3a-9a07-7e083363d2ee + Length + 34.49477727 + + + + + + + 7.0 + 57.09884486 + + MI_Restricted_Substances + 80083213-3621-42c0-9e23-cdaa30c759e6 + + 0fcb7c9e + part_0fcb7c9e-dbdd-4c19-ad50-ddf5a00e01c2 + 0fcb7c9e-dbdd-4c19-ad50-ddf5a00e01c2 + + + 6.0 + 45.43024434 + 0576d8c4 + part_0576d8c4-c39b-4493-b636-374dba713f25 + 0576d8c4-c39b-4493-b636-374dba713f25 + + + 83.05851755 + + MI_Restricted_Substances + 117e786a-5af5-40b0-9511-e7c38ca3cfc8 + + Glass/polyimide honeycomb, ±45° fabric (0.072) + Glass/polyimide honeycomb, ±45° fabric (0.072), W Direction + f8101f90-713a-4793-b01f-ad55639b49cb + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 1c3b25a1-0b5c-4e0e-890c-6563239f6ce2 + Mass + 100.0 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + 56b0591d-04d3-4e8b-b09e-4b9ccad5a5ad + Length + 28.86231715 + + + + + 16.94148244 + + MI_Restricted_Substances + 1d0ad45b-4da7-4c47-9850-754d0f67c02a + + Glass/polyimide honeycomb, ±45° fabric (0.096) + Glass/polyimide honeycomb, ±45° fabric (0.096), W Direction + 42bf9baa-39d4-483b-85de-46e4326430c5 + + + + MI_Restricted_Substances + afc9c377-790c-4e42-890a-aa942f1149fe + + Glass molding + Glass molding + 3faf0869-1db6-47e3-bc34-fc636587259d + Mass + 100.0 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + f16f3737-1e44-4ce0-a379-43b7f3ad7e4c + Mass + 100.0 + + + + + + + 9.0 + 46.75008759 + + MI_Restricted_Substances + a0987114-e9d2-4390-9d0f-e47283d2f4d0 + + c4325510 + part_c4325510-db9e-4f15-9ef8-66a97e028988 + c4325510-db9e-4f15-9ef8-66a97e028988 + + + 5.0 + 18.38959623 + + MI_Restricted_Substances + 544dcb08-b28a-4b6c-9af7-20182b64b0d5 + + 85107a1d + part_85107a1d-27db-4878-a5b4-fc404d4c5668 + 85107a1d-27db-4878-a5b4-fc404d4c5668 + + + 7.0 + 15.80560073 + c75365fa + part_c75365fa-98cf-40aa-9d90-68b2529b0508 + c75365fa-98cf-40aa-9d90-68b2529b0508 + + + 24.24988682 + + MI_Restricted_Substances + 01ec383d-8c37-48b7-80b4-e1f3106fae04 + + Alumino silicate - 1723 + Alumino silicate - 1723 + 0c05f18a-1f67-4ac8-b0da-7c71265eacd5 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 6798addc-42ba-4b2f-a691-c10c0bffb185 + Length + 76.79679294 + + + + + 18.93752829 + + MI_Restricted_Substances + a762be42-466e-4a8e-8819-d5270e44d056 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 5046, oil quenched & tempered at 425°C + ca4c6fb3-b09a-4c8d-9884-cf50c1071638 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + 71abf1c0-362e-4877-8785-be423591c697 + Mass + 100.0 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 9caa083b-cce8-40d0-ba47-b8bffba47504 + Area + 24.17301532 + + + + + 18.93752829 + + MI_Restricted_Substances + e721d8b7-256a-4b7b-af09-6b40d8309979 + + water quenched & tempered at 425°C + Carbon steel, AISI 1040, water quenched & tempered at 425°C + 1c24ebe1-b57e-4c56-92e1-6df2174a2e0b + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 1675e5e7-c66b-420c-9bf8-e2949d6a1a7f + Mass + 100.0 + + + + + 18.93752829 + + MI_Restricted_Substances + e721d8b7-256a-4b7b-af09-6b40d8309979 + + water quenched & tempered at 425°C + Carbon steel, AISI 1040, water quenched & tempered at 425°C + df500fac-ba7d-42f6-894b-69ff466b31c7 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 6a1a0d20-cecf-47af-92be-015ee0b17539 + Mass + 100.0 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + d8b5098d-8109-4eb3-9ca4-c62419c9ffd3 + Area + 25.70968541 + + + + + 18.93752829 + + MI_Restricted_Substances + 9e6962c2-d850-4285-97e5-fbb27dbc0447 + + water quenched & tempered at 425°C + Carbon steel, AISI 1050, water quenched & tempered at 425°C + 5c28dcb5-193b-4e9c-8623-70f937166824 + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + ce5e29df-02de-4836-a411-8d4e080128c2 + Mass + 100.0 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 5f382dc7-27c8-42c0-93e9-133ece0d9c5d + Mass + 100.0 + + + + + + + 9.0 + 49.85117011 + afe15050 + part_afe15050-4a7a-48cc-86c0-a34446c4d25e + afe15050-4a7a-48cc-86c0-a34446c4d25e + + + 100.0 + + MI_Restricted_Substances + 817b973c-3e12-4b5f-96b3-89b05d14d76c + + ASTM A500 Grade C + Structural steel, ASTM A500 Grade C + 471ba675-c826-419d-9111-c902a4a1d4cb + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + c3dd28cd-7242-433e-a8b9-f5ec656edb2f + MassRemoved + 74.79596351 + + + + + + + 9.0 + 79.07995198 + + MI_Restricted_Substances + 5fd070ef-bb1b-4857-abcf-7eda481ecfbe + + fd38543e + part_fd38543e-2ac8-46c6-9945-e879f1e6d043 + fd38543e-2ac8-46c6-9945-e879f1e6d043 + + + 4.0 + 91.7718531 + 2fc0eed1 + part_2fc0eed1-9aab-4b0e-8636-67dc838dec78 + 2fc0eed1-9aab-4b0e-8636-67dc838dec78 + + + 47.41551729 + + MI_Restricted_Substances + 06a05a3e-1419-430e-bd94-120296b4c49e + + Normalized + Low alloy steel, AISI 9255, normalized + a67754f0-ea35-42e0-9169-80df7eb59057 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 04f597ff-4d91-4149-8140-e709349f2e3f + Length + 68.8543889 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + e92babea-36ac-4c89-90e2-b88b7b14daee + Mass + 100.0 + + + + + 10.51689654 + + MI_Restricted_Substances + f931cdfe-568b-40b5-b238-ea22a815f312 + + ASTM A537 Class 1, normalized + Structural steel, ASTM A537 Class 1, normalized + 24ff9c57-a699-487d-b778-bc706c394c05 + + + + MI_Restricted_Substances + d47f86ae-f379-4017-8771-97b28590ffdc + + Painting, electrostatic + Painting, electrostatic + 9fed9a45-3a29-4476-805c-6edd642feb3e + Mass + 71.03776506 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 33605c7b-486e-47cd-81f3-681f399de83c + Mass + 100.0 + + + + + 10.51689654 + + MI_Restricted_Substances + 44a3cdc8-1092-45c0-be37-1802daa92d30 + + Borosilicate - 7052 + Borosilicate - 7052 + a8b12cda-618b-44bd-bc34-a9b0333ff458 + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + aa7cf824-fbef-48ca-84c5-ae19e80961ba + Mass + 100.0 + + + + + 10.51689654 + + MI_Restricted_Substances + 36e1311d-2e77-4147-8cf3-c4cdce6f6c7f + + Grade F9 + Alloy steel, 9Cr-1Mo, Grade F9 + 4c8622ed-a969-4911-b5bf-d1ff0098db47 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + c55b65b1-28c1-48ba-a11e-9cae31e736bb + MassRemoved + 9.68416845 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + 01fe6c09-b96c-48cc-9bbb-32ace592981c + Area + 56.775883 + + + + + 10.51689654 + + MI_Restricted_Substances + f0e0782d-fdaa-43d9-ab8f-24d22dc5b6dd + + Glass ceramic - 9608 + Glass ceramic - 9608 + 7bbdc680-6d10-4890-b5bf-03906ee4f30c + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 0002114a-bdce-4ef1-9acc-ec6dc50574a2 + Area + 51.10335394 + + + + + 10.51689654 + + MI_Restricted_Substances + aec2777b-f126-4f12-b748-b94bf7393f2a + + Oil quenched & tempered at 650°C + Carbon steel, AISI 1060, oil quenched & tempered at 650°C + f1a82f7f-8728-4954-b9fb-caf45531c9f5 + + + + MI_Restricted_Substances + 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 + + Autoclave molding + Autoclave molding + f5295f87-f76e-4f3a-922b-f14f6ec81595 + Mass + 100.0 + + + + + + + 2.0 + 85.74678403 + b1d8c895 + part_b1d8c895-0906-409d-99e6-4c5919fb9b6b + b1d8c895-0906-409d-99e6-4c5919fb9b6b + + + 3.2550883 + + MI_Restricted_Substances + e1d1747e-ff7a-4817-9dcc-e889d45170d7 + + ASTM A500 Grade B + Structural steel, ASTM A500 Grade B + 79f1b5c2-32ef-4860-90e7-30cbe94313be + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 30bb6304-7941-4b04-8e75-0618496f653b + Mass + 100.0 + + + + + 24.18622792 + + MI_Restricted_Substances + 91d7e1bd-d353-4eb1-9634-286e8e69d0d5 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1141, oil quenched & tempered at 540°C + 4fbd0d4b-53a4-4b73-91a8-783fd0110759 + + + + MI_Restricted_Substances + b2037938-23a3-42bc-a478-565dbd32a185 + + Deep drawing + Deep drawing + d376f895-8b83-43a1-82ff-1c938cb2c6a0 + Mass + 100.0 + + + + + 24.18622792 + + MI_Restricted_Substances + 1a7c6e51-066a-4f25-9c48-76ca6fbd8330 + + Glass ceramic - 9658 + Glass ceramic - 9658 + db2f5774-4815-4522-8fd0-cf95620dee65 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + 695799ab-341b-4eb6-a057-79255d347a9d + Mass + 100.0 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + ee9b5a3d-3387-4007-8c05-5b752e0712c4 + Mass + 100.0 + + + + + 24.18622792 + + MI_Restricted_Substances + 9b08ec7e-e481-47fa-a36b-849db7ef2432 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 8640, oil quenched & tempered at 425°C + 219af804-fba3-4969-95d9-15acd6d89103 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + c8e629d8-7f63-4bf7-a48d-1965f7221999 + Length + 96.11201239 + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 8857c24c-af73-48d3-81f8-550c4aa46582 + Mass + 100.0 + + + + + 24.18622792 + + MI_Restricted_Substances + 385dc8fe-7c8c-4fe3-9382-2a7182e05f0d + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 5130, oil quenched & tempered at 425°C + 7b333b0a-326f-4a21-afec-f792c08d4d8d + + + + MI_Restricted_Substances + 69a383ad-28fa-45ab-a76d-1316e4c1e6ce + + Wire drawing, ferrous + Wire drawing, ferrous metals + 9ffa563d-2079-4734-86f2-dba1ca12318c + Mass + 100.0 + + + + + + + 7.0 + 62.5718958 + + MI_Restricted_Substances + b49e47be-bf96-4bf1-9366-5c1b840267d4 + + 60239b93 + part_60239b93-5be2-4036-967e-2afeb7065fd6 + 60239b93-5be2-4036-967e-2afeb7065fd6 + + + 1.0 + 34.50788 + 5a030026 + part_5a030026-d9e8-4a55-9529-1de2a3eb8198 + 5a030026-d9e8-4a55-9529-1de2a3eb8198 + + + 42.03997028 + + MI_Restricted_Substances + 302db922-ffc4-4955-9a98-ddaa64c43d26 + + Borosilicate - 7720 + Borosilicate - 7720 + 56c9f4c4-33d4-4405-8dfe-36340475ce5f + + + + MI_Restricted_Substances + 41a35958-33c1-47d6-be77-02204fe25f91 + + Filament winding + Filament winding + d96f47c4-59ef-4dad-89d2-c976ed12a1d5 + Mass + 100.0 + + + + + 9.66000495 + + MI_Restricted_Substances + e62ec0fe-66ca-4b17-88d1-609c5568e318 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 4340, oil quenched & tempered at 650°C + 369ebc5c-f45b-4a95-8dd5-80a361a5c326 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + 40b73cfe-a6a1-424a-9960-11449ecd040f + MassRemoved + 66.54452121 + + + + + 9.66000495 + + MI_Restricted_Substances + 2a821f5c-97b0-4a08-81b1-de3f1543fb44 + + Alkali strontium clear glass + Alkali strontium clear glass + bd589432-665c-4ef9-9d92-66b17a82eab6 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + b9fba68d-8a09-41e0-baab-68cc96db7559 + Mass + 100.0 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 9817b026-cd99-4ac4-91aa-7caa79f0c4c6 + MassRemoved + 21.93260529 + + + + + 9.66000495 + + MI_Restricted_Substances + 9e4c9bc1-b3b6-42dd-a32f-7af4e3190d72 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 86B45, oil quenched & tempered at 205°C + 27d7103f-bcb4-4f37-820f-4a834cab7231 + + + + MI_Restricted_Substances + 407e4a5a-2729-42ed-a4a6-b520aeaa515a + + Prepreg production + Prepreg production + 5d53a7ab-207c-4801-bd76-31d384a9faae + Mass + 100.0 + + + + + 9.66000495 + + MI_Restricted_Substances + 874b8433-2e47-45c3-9c89-226428104214 + + Glass and mineral filled, heat resistant, molding + Novolac (glass and mineral filled, heat resistant, molding) + 6779227e-472b-405d-8086-e00c7a69ad00 + + + + MI_Restricted_Substances + 93b0b05f-5c7a-4d9a-8014-be68df0f3652 + + Machining, laser, YAG + Machining, laser, YAG + 3eca388a-b85a-4678-a38f-2f25f7b98507 + Length + 44.56747772 + + + + + 9.66000495 + + MI_Restricted_Substances + fce75b98-deb8-41ba-b343-cc7385cdac54 + + Normalized + Carbon steel, AISI 1050, normalized + e306def9-6d76-4a97-888f-d39b9974c797 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + 1d8cba15-9394-42a6-a029-556bcffab1f8 + Mass + 100.0 + + + + + 9.66000495 + + MI_Restricted_Substances + 2096ca77-9981-4fd5-9bc6-afe56b3bbbd4 + + Glass/phenolic honeycomb, 0°/90° fabric (0.096) + Glass/phenolic honeycomb, 0°/90° fabric (0.096), W Direction + 5795e66e-2a08-4228-bdb4-92539278f4f7 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + ea5d9b88-8e43-40da-a972-18d6fc15ed98 + Mass + 100.0 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + bbbc7617-982c-43f5-a5db-702f38e7ef69 + Mass + 100.0 + + + + + + + 5.0 + 85.55292356 + bc8e6ffa + part_bc8e6ffa-8b27-4321-8456-10bc4f3e7d19 + bc8e6ffa-8b27-4321-8456-10bc4f3e7d19 + + + 100.0 + + MI_Restricted_Substances + ccc92e6a-14f4-4ec6-9c3a-35ef3d6c9d8e + + Annealed + Carbon steel, AISI 1025, annealed + b64ecb2d-305d-4678-ad0f-08783eb2f374 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 5df561aa-20c7-4c4d-88c3-c0dc93b04997 + MassRemoved + 85.51604407 + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + 3f99c16f-500d-4cb8-969f-92035a8e9aae + Mass + 100.0 + + + + + + + 8.0 + 83.62618558 + 6a607cfd + part_6a607cfd-65b1-4917-8374-36d286e28ee4 + 6a607cfd-65b1-4917-8374-36d286e28ee4 + + + 68.80013997 + + MI_Restricted_Substances + bfd46ac9-4021-49b6-9656-d1e426bd1c79 + + Oil quenched & tempered at 205°C + Carbon steel, AISI 1340, oil quenched & tempered at 205°C + a7d39015-8698-4a5b-b3e0-e5b265a71b0e + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + f1f551c9-a71e-442a-b237-1b73837c0ad5 + Mass + 100.0 + + + + + 15.59993001 + + MI_Restricted_Substances + 0ff3d25e-2024-43a5-9654-bb095ad302ce + + YS260, cold rolled + Bake hardening steel, YS260, cold rolled + 08b7b0d1-0161-4afa-818d-142d5257881e + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + f4e8b684-fdbc-440b-bb16-bdd6e5dc66b1 + Mass + 100.0 + + + + MI_Restricted_Substances + 372bd8ce-5a17-4546-ab93-1c2926648012 + + Molding, injection and blow + Polymer molding, injection and blow + a92f3b13-cc3b-4fdd-ac36-a2e4cd214b22 + Mass + 100.0 + + + + + 15.59993001 + + MI_Restricted_Substances + 190cf17e-dbc1-40c7-a3d1-cc776977cb47 + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 50B46, oil quenched & tempered at 650°C + b353e0da-bc65-4e67-8422-3bce015ee9fd + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 995c18cc-f708-4937-b3bc-c4462d7a0f7f + Mass + 100.0 + + + + + + + 7.0 + 87.42586825 + + MI_Restricted_Substances + 2fcb534e-37c5-4b25-add8-ff02d2541953 + + c997a949 + part_c997a949-3734-4f78-9866-a447dfa7aa44 + c997a949-3734-4f78-9866-a447dfa7aa44 + + + 7.0 + 13.38140881 + 8e95a169 + part_8e95a169-d4b7-4e5d-bed6-a39cc76be1a5 + 8e95a169-d4b7-4e5d-bed6-a39cc76be1a5 + + + 32.83274454 + + MI_Restricted_Substances + 5dbabc2e-4263-4458-abe1-31a2ece9e122 + + Oil quenched & tempered at 425°C + Low alloy steel, AISI 5160, oil quenched & tempered at 425°C + 07e936d2-1016-4eb6-871b-573615c7c7c8 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + fd989855-85eb-43ef-93d9-84bc7a9a80dd + MassRemoved + 97.49687067 + + + + + 22.38908515 + + MI_Restricted_Substances + 0e008ce6-63df-4b25-81d6-02398cb9cc62 + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 8660, oil quenched & tempered at 540°C + 3a848f66-c7d2-4da9-80f8-1ed69363c023 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 31563959-eb4b-46f7-a3d6-8b438a498e2b + Mass + 100.0 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 1ba4994a-d2f9-4463-a80f-696a35e15e73 + Mass + 100.0 + + + + + 22.38908515 + + MI_Restricted_Substances + 00cd78de-6c78-46f3-81b3-ec03803fa034 + + Glass/phenolic honeycomb, ±45° fabric (0.048) + Glass/phenolic honeycomb, ±45° fabric (0.048), W Direction + 44fa0e99-bc9e-4595-a489-d2e166778188 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + 4337ff91-2af3-40da-a7fa-a67a94a428e9 + Area + 18.06445006 + + + + MI_Restricted_Substances + 8771a19f-4f18-42b8-9f50-db0acdfbc24a + + Powder coating + Powder coating + aff00a81-6a29-423f-95f3-99f6c4b2be77 + Area + 69.01545476 + + + + + 22.38908515 + + MI_Restricted_Substances + 53268754-75cd-4016-8ed0-2577d32f766e + + As rolled + Carbon steel, AISI 1060, as rolled + 6cb131f2-70f7-4b9c-b0b9-d120775abcb9 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 443eccb7-655d-431a-b524-43bed794f997 + Length + 68.81505705 + + + + + + + 6.0 + 76.04350451 + cae856bf + part_cae856bf-64b8-4a2c-b9ce-63fcd115b52e + cae856bf-64b8-4a2c-b9ce-63fcd115b52e + + + 25.04865025 + + MI_Restricted_Substances + d424fe56-b6f6-42c2-99fb-3e92da8ce70b + + Molding, glass filled + DAP (molding, glass filled) + 223cf977-1df7-49b8-82f4-67945bd2c3d3 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 668935b6-9930-4325-ad98-0c8a54f077d5 + Mass + 100.0 + + + + + 74.95134974 + + MI_Restricted_Substances + dec7564b-7c27-43fc-9f05-8965e384367a + + Oil quenched & tempered at 540°C + Low alloy steel, AISI 51B60, oil quenched & tempered at 540°C + a6f0b2b1-608e-409c-96fc-733c8873de63 + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Casting + Metal casting + 3707a636-2e10-452a-89ec-51b15cb875bc + Mass + 100.0 + + + + + + + 8.0 + 66.34370254 + 56b4f594 + part_56b4f594-a9e8-4e3b-a813-588e42dafa72 + 56b4f594-a9e8-4e3b-a813-588e42dafa72 + + + 0.61400756 + + MI_Restricted_Substances + 211ae46e-0827-4d61-af66-5a72c42d0cd8 + + T-glass + T-glass + 2c65e5f7-741d-487a-869b-1726fa6a37bd + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + d53e38b8-5876-49b8-a484-90c4c6a2a731 + Mass + 100.0 + + + + + 14.19799891 + + MI_Restricted_Substances + 408a337f-8eb7-4225-96bd-1225da437143 + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 5140, oil quenched & tempered at 315°C + be0900d2-62f9-4365-85e4-463b8bd776dd + + + + MI_Restricted_Substances + 409a6c9f-0562-4a32-9b1f-98e1121d670f + + Powder forming + Metal powder forming + 721a16f9-1256-4322-99e8-1774a6202966 + Mass + 100.0 + + + + + 14.19799891 + + MI_Restricted_Substances + 0f82772a-b4f0-4ed3-a8cc-6c721ad4b9ac + + Potash soda zinc + Potash soda zinc + 34bdc8cb-ae4d-4f37-bbf5-dd6894e95004 + + + + MI_Restricted_Substances + 02457dd3-a814-4ea4-93f3-42d66da5182d + + Resin transfer molding (RTM) + Resin transfer molding (RTM) + 644495c6-0047-4cd5-b2a2-748aa6ecdb0d + Mass + 100.0 + + + + + 14.19799891 + + MI_Restricted_Substances + 2096ca77-9981-4fd5-9bc6-afe56b3bbbd4 + + Glass/phenolic honeycomb, 0°/90° fabric (0.096) + Glass/phenolic honeycomb, 0°/90° fabric (0.096), W Direction + cbd9105b-8a92-41b8-8c1e-00601241859a + + + + MI_Restricted_Substances + 6c3d9c10-23c6-411a-9533-f0e06c41875c + + Adhesive + Adhesive + 38a3b737-2b6e-401e-8465-5e1ed7619f2b + Mass + 59.02108599 + + + + MI_Restricted_Substances + b3c0204b-ef92-4262-b5a2-e1e00a7aba9f + + Electroplating + Electroplating + a711d2a6-d325-40d0-8164-b4eeaa30d36b + Area + 55.37040985 + + + + + 14.19799891 + + MI_Restricted_Substances + 1d5dd59c-75a0-4bf2-8862-7d77996aa0be + + Annealed + Low alloy steel, AISI 8650, annealed + 5bb492cb-1d62-4f49-bcdc-a43831448785 + + + + MI_Restricted_Substances + 996579d2-d2b6-420b-bf86-8c6389105dce + + Machining, laser, CO2 + Machining, laser, CO2 + 3b618581-8302-4403-967c-a81638512e9f + Length + 31.76988099 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + cffc250d-acec-41ed-b562-6c6dddf00ed4 + MassRemoved + 11.27117574 + + + + + 14.19799891 + + MI_Restricted_Substances + 91d7e1bd-d353-4eb1-9634-286e8e69d0d5 + + Oil quenched & tempered at 540°C + Carbon steel, AISI 1141, oil quenched & tempered at 540°C + 019601ba-d111-4682-88b5-004b2a41848e + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + Machining, coarse + 2f0ea54d-7e78-4a80-8655-3b9e1bd1d721 + MassRemoved + 50.96258011 + + + + + 14.19799891 + + MI_Restricted_Substances + d411a96b-aa1c-4651-a405-5a2bc5c32dff + + Modified, Grade 91 + Alloy steel, 9Cr-1Mo-V, modified, Grade 91 + a86b311d-7528-4d4c-b2a3-da67f2e81884 + + + + MI_Restricted_Substances + 712f59e1-e74d-4258-8793-d15305a8ca5f + + Cutting and trimming + Cutting and trimming + 1f845714-341b-442d-aa4a-d1ba844719b5 + Area + 55.85276333 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 1c595b1c-d4de-4e19-90bd-b8323a12e1e6 + Length + 74.53206976 + + + + + 14.19799891 + + MI_Restricted_Substances + 5169a157-0d18-4d45-b197-799e06aa00bc + + Oil quenched & tempered at 315°C + Low alloy steel, AISI 9255, oil quenched & tempered at 315°C + 3c82221e-f220-447b-8353-fbc156f544ed + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 0e962534-eaab-491a-b461-aff65ecbe25e + Mass + 100.0 + + + + + + + 3.0 + 43.26838475 + 034ae570 + part_034ae570-6b72-4588-8858-d05fe8ec4265 + 034ae570-6b72-4588-8858-d05fe8ec4265 + + + 64.11856034 + + MI_Restricted_Substances + a89802d6-13c5-496d-b139-57ae43e6591c + + As rolled + Carbon steel, AISI 1022, as rolled + 2430abfe-a4d5-450e-b249-b1ff3006f50d + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Machining, grinding + Machining, grinding + ab0dc822-7a2f-4f1d-8319-46a360810b4e + MassRemoved + 97.34478066 + + + + + 7.17628793 + + MI_Restricted_Substances + e86ced85-7d75-4b62-8f8e-90bd345ae003 + + Normalized + Low alloy steel, AISI 5140, normalized + 2aacd7fb-6f52-4112-9e9f-2718f5f9ac37 + + + + MI_Restricted_Substances + 05d6df4a-8519-42ee-91fe-a0d37cba623e + + Resin spray-up + Resin spray-up + 49bc9837-9417-4b98-aec6-9353098a48a1 + Mass + 100.0 + + + + + 7.17628793 + + MI_Restricted_Substances + 021e3fde-941b-4d44-bc55-a1c5a346d6d9 + + Quenched & tempered + Intermediate alloy, Fe-9Ni-4Co-0.20C steel, quenched & tempered + e3d1ac3a-608f-4766-b1ae-c521602c3f52 + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Welding, electric + Welding, electric + 6f34c420-447e-43ac-87f4-ebbd6fd1e91d + Length + 18.83378346 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 1945f590-e5fa-461a-884e-e9bf4ca3d301 + Mass + 100.0 + + + + + 7.17628793 + + MI_Restricted_Substances + 19b67562-02fa-47ea-8fba-af5b14d1fafa + + Oil quenched & tempered at 650°C + Low alloy steel, AISI 4042, oil quenched & tempered at 650°C + 584c4675-c341-4e74-a273-9fbaa509f17b + + + + MI_Restricted_Substances + 463cb9d8-1381-4e6e-a2a7-08868e6ff949 + + Chemical vapor deposition (CVD) + Chemical vapor deposition (CVD) + d4c6f167-a12a-4b18-af27-9bb9c9ac9770 + Mass + 100.0 + + + + + 7.17628793 + + MI_Restricted_Substances + 410f0fc7-aeda-4f4e-bb83-0595b7ba09d0 + + Solution treated + Iron-base-superalloy, N-155, solution treated + 85173ead-dc76-4602-9409-e0d379bc5f67 + + + + MI_Restricted_Substances + 2f8fe979-663f-4941-b30f-a7be0d3dd782 + + Welding, gas + Welding, gas + f3ed9441-ef86-45c4-85da-a71c014cdb35 + Length + 0.33939192 + + + + + 7.17628793 + + MI_Restricted_Substances + 7b1fcb28-a127-417b-978f-6a5c58305d24 + + Annealed + Carbon steel, AISI 1118, annealed + 396fd799-d5c0-44ef-85fb-309959f4e4b9 + + + + MI_Restricted_Substances + 021eec1f-0ac8-433b-8cf3-34ecc421624c + + Extrusion + Polymer extrusion + 06fab3de-256c-48f9-93a7-1b2849ca4b4f + Mass + 100.0 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + b85a77bf-b67d-4805-bef6-1176e4ab66c5 + Mass + 100.0 + + + + + + + 9.0 + 9.62305595 + 892d8144 + part_892d8144-5af7-4433-a93d-2c0fd1355046 + 892d8144-5af7-4433-a93d-2c0fd1355046 + + + 9.13059465 + + MI_Restricted_Substances + c19a6c59-b937-499d-ac22-fe742ae42287 + + As rolled + Carbon steel, AISI 1117, as rolled + 5edc8f84-3ef2-456f-8007-b3db426f53c6 + + + + MI_Restricted_Substances + 50da053b-a0d5-4461-af9a-cd0c6670c720 + + Compression molding + Compression molding + 68a418f0-f161-4882-9578-a7e1abef180a + Mass + 100.0 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + 38b2029f-3112-4b68-a716-d1fe6554d580 + MassRemoved + 0.80578122 + + + + + 45.43470267 + + MI_Restricted_Substances + 6e5c3f76-3954-45fb-bd02-a4b4203f29ee + + Normalized + Low alloy steel, AISI 3140, normalized + a59c9c63-bbc8-4b08-874c-432f04b3f67a + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 27435063-ed4f-4b17-9d26-35642427bfdb + Mass + 100.0 + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Extrusion, hot + Metal extrusion, hot + 96848ba2-a5ef-4328-afe2-6f8989a9c358 + Mass + 100.0 + + + + + 45.43470267 + + MI_Restricted_Substances + 5e96987a-3cc6-4330-bccc-e8d163c47831 + + Normalized + Low alloy steel, AISI 9310, normalized + 18fd487b-24b7-40be-bb09-bf7e916c2729 + + + + MI_Restricted_Substances + ef4fee98-657d-4be0-bb83-1daaeb844034 + + Vacuum assisted resin infusion (VARI) + Vacuum assisted resin infusion (VARI) + 18cb0958-5b95-4080-992c-80f3553253d3 + Mass + 100.0 + + + + MI_Restricted_Substances + 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a + + Rolling and forging + Metal rolling and forging + 774c39fc-977e-4097-81a8-c5c5cc995da4 + Mass + 100.0 + + + + + + + 6.0 + 9.89473164 + fef19823 + part_fef19823-f258-40d3-b7d7-7d59f9d377cf + fef19823-f258-40d3-b7d7-7d59f9d377cf + + + 100.0 + + MI_Restricted_Substances + 74df2f0b-340a-4267-a759-197069aea298 + + Oil quenched & tempered at 205°C + Low alloy steel, AISI 8740, oil quenched & tempered at 205°C + 044eedee-721e-4717-9291-b816ab286628 + + + + MI_Restricted_Substances + 0a4d9a81-f162-4dce-922d-f93fa16be965 + + Matched die (preform) molding + Matched die (preform) molding + 1751808a-1424-41e4-b362-35afdc7c2003 + Mass + 100.0 + + + + + + + + + + + Factory to port + + MI_Restricted_Substances + c29ab353-2bd5-4964-b577-a0e4cfb4d284 + + 7777000000.0 + + + Port to center + + MI_Restricted_Substances + c29ab353-2bd5-4964-b577-a0e4cfb4d284 + + 9999.0 + + \ No newline at end of file diff --git a/tests/inputs/bom-2301.xml b/tests/inputs/bom-2301.xml index 9f374578..a1431ba0 100644 --- a/tests/inputs/bom-2301.xml +++ b/tests/inputs/bom-2301.xml @@ -1,48 +1,47 @@ - - - - - 1 - PartOne - PartOne - 1686152405220|5 - - - 1 - 2 - PartTwo - PartTwo - 1686152405220|16 - - - 2 - - MI_Restricted_Substances - 8dc38bb5-eff9-4c60-9233-271a3c8f6270 - - steel-kovar-annealed - High alloy steel, Kovar, annealed - 1686152405220|14 - - - - MI_Restricted_Substances - d986c90a-2835-45f3-8b69-d6d662dcf53a - - Coarse Machining - Coarse Machining - 1977190729730|4 - MassRemoved - 0.05 - - - - - - - - - - Example - + + + + 1.0 + PartOne + PartOne + 1686152405220|5 + + + 1.0 + 2.0 + PartTwo + PartTwo + 1686152405220|16 + + + 2.0 + + MI_Restricted_Substances + 8dc38bb5-eff9-4c60-9233-271a3c8f6270 + + steel-kovar-annealed + High alloy steel, Kovar, annealed + 1686152405220|14 + + + + MI_Restricted_Substances + d986c90a-2835-45f3-8b69-d6d662dcf53a + + Coarse Machining + Coarse Machining + 1977190729730|4 + MassRemoved + 0.05 + + + + + + + + + + Example + \ No newline at end of file diff --git a/tests/test_bom_handler.py b/tests/test_bom_handler.py index 241f0e10..876dc7bc 100644 --- a/tests/test_bom_handler.py +++ b/tests/test_bom_handler.py @@ -39,6 +39,7 @@ def dump_bom(self, bom: BillOfMaterials) -> str: raw = raw.replace(f":{prefix}", f":{new_prefix}") return raw + class TestRoundTripBoM: _bom_location = Path(__file__).parent / "inputs" _namespace_map = {"gbt": "http://www.grantadesign.com/12/05/GrantaBaseTypes"} @@ -57,13 +58,18 @@ def _compare_boms(*, source_bom: str, result_bom: str): output_lines.append(diff_item) return output_lines - @pytest.mark.parametrize("bom_filename", ["bom.xml", "bom-complex.xml", "drill.xml", "medium-test-bom.xml"]) + @pytest.mark.parametrize( + "bom_filename", + ["bom.xml", "bom-complex.xml", "drill.xml", "medium-test-bom.xml", "bom-2301.xml", "bom-2301-complex.xml"], + ) def test_roundtrip(self, bom_filename: str): bom_path = self._bom_location / bom_filename with open(bom_path, "r", encoding="utf8") as fp: input_bom = fp.read() - bom_handler = TestableBoMHandler(default_namespace=self._default_namespace, namespace_mapping=self._namespace_map) + bom_handler = TestableBoMHandler( + default_namespace=self._default_namespace, namespace_mapping=self._namespace_map + ) deserialized_bom = bom_handler.load_bom_from_text(input_bom) output_bom = bom_handler.dump_bom(deserialized_bom) @@ -71,6 +77,7 @@ def test_roundtrip(self, bom_filename: str): assert len(diff) == 0, "\n".join(diff) + class TestBoMDeserialization: _bom_location = Path(__file__).parent / "inputs" @@ -105,38 +112,43 @@ def get_field(self, obj: BaseType, p_path: str) -> Any: except IndexError: return obj - @pytest.mark.parametrize(("query", "value"), [ - ("internal_id", "B0"), - ("notes/notes", "Part with substance"), - ("notes/product_name", "Part with substance"), - ("components[0]/quantity/unit", "Each"), - ("components[0]/quantity/value", pytest.approx(2.0)), - ("components[0]/part_number", "123456789"), - ("components[0]/part_name", "Part One"), - ("components[0]/components[0]/quantity/unit", "Each"), - ("components[0]/components[0]/quantity/value", pytest.approx(1.0)), - ("components[0]/components[0]/mass_per_unit_of_measure/unit", "kg/Part"), - ("components[0]/components[0]/mass_per_unit_of_measure/value", pytest.approx(2.0)), - ("components[0]/components[0]/part_number", "987654321"), - ("components[0]/components[0]/part_name", "New Part One"), - ("components[0]/components[0]/substances[0]/percentage", pytest.approx(66.0)), - ("components[0]/components[0]/substances[0]/mi_substance_reference/db_key", "MI_Restricted_Substances"), - ("components[0]/components[0]/substances[0]/mi_substance_reference/record_history_guid", "af1cb650-6db5-49d6-b4a2-0eee9a090207"), - ("components[0]/components[0]/substances[0]/name", "Lead oxide"), - ("components[0]/components[1]/quantity/unit", "Each"), - ("components[0]/components[1]/quantity/value", pytest.approx(1.0)), - ("components[0]/components[1]/mass_per_unit_of_measure/unit", "kg/Part"), - ("components[0]/components[1]/mass_per_unit_of_measure/value", pytest.approx(2.0)), - ("components[0]/components[1]/part_number", "3333"), - ("components[0]/components[1]/part_name", "Part Two"), - ("components[0]/components[1]/materials[0]/percentage", pytest.approx(80.0)), - ("components[0]/components[1]/materials[0]/mi_material_reference/db_key", "MI_Restricted_Substances"), - ("components[0]/components[1]/materials[0]/mi_material_reference/record_history_guid", "ab4147f6-0e97-47f0-be53-cb5d17dfa82b"), - - ]) + @pytest.mark.parametrize( + ("query", "value"), + [ + ("internal_id", "B0"), + ("notes/notes", "Part with substance"), + ("notes/product_name", "Part with substance"), + ("components[0]/quantity/unit", "Each"), + ("components[0]/quantity/value", pytest.approx(2.0)), + ("components[0]/part_number", "123456789"), + ("components[0]/part_name", "Part One"), + ("components[0]/components[0]/quantity/unit", "Each"), + ("components[0]/components[0]/quantity/value", pytest.approx(1.0)), + ("components[0]/components[0]/mass_per_unit_of_measure/unit", "kg/Part"), + ("components[0]/components[0]/mass_per_unit_of_measure/value", pytest.approx(2.0)), + ("components[0]/components[0]/part_number", "987654321"), + ("components[0]/components[0]/part_name", "New Part One"), + ("components[0]/components[0]/substances[0]/percentage", pytest.approx(66.0)), + ("components[0]/components[0]/substances[0]/mi_substance_reference/db_key", "MI_Restricted_Substances"), + ( + "components[0]/components[0]/substances[0]/mi_substance_reference/record_history_guid", + "af1cb650-6db5-49d6-b4a2-0eee9a090207", + ), + ("components[0]/components[0]/substances[0]/name", "Lead oxide"), + ("components[0]/components[1]/quantity/unit", "Each"), + ("components[0]/components[1]/quantity/value", pytest.approx(1.0)), + ("components[0]/components[1]/mass_per_unit_of_measure/unit", "kg/Part"), + ("components[0]/components[1]/mass_per_unit_of_measure/value", pytest.approx(2.0)), + ("components[0]/components[1]/part_number", "3333"), + ("components[0]/components[1]/part_name", "Part Two"), + ("components[0]/components[1]/materials[0]/percentage", pytest.approx(80.0)), + ("components[0]/components[1]/materials[0]/mi_material_reference/db_key", "MI_Restricted_Substances"), + ( + "components[0]/components[1]/materials[0]/mi_material_reference/record_history_guid", + "ab4147f6-0e97-47f0-be53-cb5d17dfa82b", + ), + ], + ) def test_simple_bom(self, simple_bom: BillOfMaterials, query: str, value: Any) -> None: deserialized_field = self.get_field(simple_bom, query) assert deserialized_field == value - - - From 92277d1a447d994fb2017b5a736db17ea8cf1816 Mon Sep 17 00:00:00 2001 From: Doug Addy Date: Wed, 20 Sep 2023 11:40:35 +0100 Subject: [PATCH 053/275] Typo in documentation --- .../grantami/bomanalytics/schemas/BillOfMaterialsEco2301.xsd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ansys/grantami/bomanalytics/schemas/BillOfMaterialsEco2301.xsd b/src/ansys/grantami/bomanalytics/schemas/BillOfMaterialsEco2301.xsd index f3a678fb..98e68def 100644 --- a/src/ansys/grantami/bomanalytics/schemas/BillOfMaterialsEco2301.xsd +++ b/src/ansys/grantami/bomanalytics/schemas/BillOfMaterialsEco2301.xsd @@ -256,7 +256,7 @@ - If the process affects the bulk of the material or part (e.g. it is a shaping process) then the amount of material affected by the process should be specifed. The amount may be specified as a percentage by weight or an absolute value. + If the process affects the bulk of the material or part (e.g. it is a shaping process) then the amount of material affected by the process should be specified. The amount may be specified as a percentage by weight or an absolute value. From 745380ff9cd3bf39e019555ee5144929b783b31a Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 21 Sep 2023 18:38:46 +0200 Subject: [PATCH 054/275] Use pre-commit on CI (#37) * Use pre-commit on CI * Undo remove tox-gh-actions * Enable isort * Run isort * Rename step --- .github/workflows/local_checks.yml | 25 ++-------- .pre-commit-config.yaml | 46 ++++++++--------- doc/class_documenter.py | 8 +-- .../xml_schemas/BillOfMaterialsEco2301.xsd | 2 +- doc/source/conf.py | 10 ++-- pyproject.toml | 24 ++++----- src/ansys/grantami/bomanalytics/__init__.py | 4 +- .../grantami/bomanalytics/_allowed_types.py | 2 +- .../grantami/bomanalytics/_connection.py | 49 ++++++++++--------- .../bomanalytics/_item_definitions.py | 2 +- .../grantami/bomanalytics/_item_results.py | 34 +++++++------ .../grantami/bomanalytics/_query_results.py | 22 ++++----- src/ansys/grantami/bomanalytics/indicators.py | 4 +- src/ansys/grantami/bomanalytics/queries.py | 28 +++++------ tests/conftest.py | 7 ++- tests/inputs/__init__.py | 3 +- tests/inputs/examples.py | 2 +- tests/test_allowed_types.py | 6 ++- tests/test_argument_managers.py | 5 +- tests/test_bom_indicators.py | 6 ++- tests/test_bom_item_definitions.py | 24 ++++----- tests/test_connection.py | 7 ++- tests/test_examples.py | 5 +- tests/test_integration_tests.py | 8 +-- tests/test_item_results.py | 5 +- tests/test_mocked_responses/common.py | 2 + tests/test_mocked_responses/test_bom.py | 13 ++--- tests/test_mocked_responses/test_materials.py | 12 ++--- tests/test_mocked_responses/test_messages.py | 8 +-- tests/test_mocked_responses/test_parts.py | 8 +-- .../test_specifications.py | 8 +-- .../test_mocked_responses/test_substances.py | 4 +- .../test_sustainability.py | 14 +++--- tests/test_query_builders/common.py | 2 +- tests/test_query_builders/test_bom.py | 1 + .../test_common_queries.py | 4 +- tests/test_query_builders/test_materials.py | 2 + tests/test_query_builders/test_parts.py | 2 + .../test_specifications.py | 2 + tests/test_query_builders/test_substances.py | 2 + .../test_sustainability.py | 1 + 41 files changed, 222 insertions(+), 201 deletions(-) diff --git a/.github/workflows/local_checks.yml b/.github/workflows/local_checks.yml index db8abd4d..c6f8c6c0 100644 --- a/.github/workflows/local_checks.yml +++ b/.github/workflows/local_checks.yml @@ -10,33 +10,14 @@ env: MAIN_PYTHON_VERSION: '3.9' jobs: - style: - name: Code Style Check + code-style: + name: "Code Style Check" runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - name: Set up Python ${{ env.MAIN_PYTHON_VERSION }} - uses: actions/setup-python@v4 + - uses: ansys/actions/code-style@v4 with: python-version: ${{ env.MAIN_PYTHON_VERSION }} - - name: Install style requirements - run: pip install 'tox<4' poetry --disable-pip-version-check - - - name: Configure git - run: | - echo "https://${{ secrets.BOM_OPENAPI_TOKEN }}:@github.com" > $HOME/.git-credentials - git config --global credential.helper store - - - name: Spell, Lint and Type Check - run: tox -e style - - - name: Clean-up - if: always() - run: rm -f $HOME/.git-credentials - docs-style: name: Documentation Style Check runs-on: ubuntu-latest diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 1aa0c1e1..57b7c7f6 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -4,13 +4,13 @@ repos: rev: 23.7.0 hooks: - id: black + exclude: ^examples/|doc/|.ipython/ -# ISORT should be activated at some point -# -# - repo: https://github.com/pycqa/isort -# rev: 5.10.1 -# hooks: -# - id: isort + +- repo: https://github.com/pycqa/isort + rev: 5.12.0 + hooks: + - id: isort - repo: https://github.com/PyCQA/flake8 rev: 6.1.0 @@ -21,23 +21,25 @@ repos: rev: v2.2.5 hooks: - id: codespell + args: ["--ignore-words", "doc/styles/Vocab/ANSYS/accept.txt", "--skip", "poetry.lock"] -# MYPY also not really working... -# -# - repo: https://github.com/pre-commit/mirrors-mypy -# rev: v0.991 # Use the sha / tag you want to point at -# hooks: -# - id: mypy -# args: ["--config-file", "pyproject.toml", ./src/ ] - -# To be activated after quick dev cycles -# -# - repo: https://github.com/pycqa/pydocstyle -# rev: 6.1.1 -# hooks: -# - id: pydocstyle -# additional_dependencies: [toml] -# exclude: "tests/" +- repo: local + hooks: + - id: mypy-code + name: "mypy: checks on code" + entry: mypy + language: python + types: [python] + require_serial: true + files: "^(src/)" + additional_dependencies: ["mypy==0.910"] + +#- repo: https://github.com/pycqa/pydocstyle +# rev: 6.3.0 +# hooks: +# - id: pydocstyle +# additional_dependencies: [tomli] +# files: "^(src/)" - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.4.0 diff --git a/doc/class_documenter.py b/doc/class_documenter.py index 0b77dcc0..321624b6 100644 --- a/doc/class_documenter.py +++ b/doc/class_documenter.py @@ -1,12 +1,14 @@ from inspect import getmodule from typing import Any, Optional + from sphinx.ext.autodoc import ( - ClassDocumenter as DefaultClassDocumenter, - PropertyDocumenter, MethodDocumenter, Documenter, - member_order_option, + MethodDocumenter, ModuleAnalyzer, + PropertyDocumenter, + member_order_option, ) +from sphinx.ext.autodoc import ClassDocumenter as DefaultClassDocumenter class CustomOrderException(Exception): diff --git a/doc/source/_static/xml_schemas/BillOfMaterialsEco2301.xsd b/doc/source/_static/xml_schemas/BillOfMaterialsEco2301.xsd index 4c72bde2..f16c75d9 100644 --- a/doc/source/_static/xml_schemas/BillOfMaterialsEco2301.xsd +++ b/doc/source/_static/xml_schemas/BillOfMaterialsEco2301.xsd @@ -256,7 +256,7 @@ - If the process affects the bulk of the material or part (e.g. it is a shaping process) then the amount of material affected by the process should be specifed. The amount may be specified as a percentage by weight or an absolute value. + If the process affects the bulk of the material or part (e.g. it is a shaping process) then the amount of material affected by the process should be specified. The amount may be specified as a percentage by weight or an absolute value. diff --git a/doc/source/conf.py b/doc/source/conf.py index 6ee90f9c..22154182 100755 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -1,18 +1,18 @@ +from datetime import datetime import os +from pathlib import Path import shutil import sys -from datetime import datetime -from pathlib import Path -import jupytext -from ansys.grantami.bomanalytics import __version__ from ansys_sphinx_theme import ansys_favicon, get_version_match, pyansys_logo_black +import jupytext from sphinx.application import Sphinx +from ansys.grantami.bomanalytics import __version__ + sys.path.insert(0, os.path.abspath("../")) from class_documenter import ClassDocumenter - sys.path.insert(0, os.path.abspath("../../src")) diff --git a/pyproject.toml b/pyproject.toml index e37c427d..7f2e99d4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -109,18 +109,6 @@ passenv = TEST_PASS TEST_WRITE_USER TEST_WRITE_PASS - -[testenv:style] -deps = - codespell==2.1.0 - flake8==3.9.2 - black - mypy==0.910 -commands = - codespell ./src ./tests ./examples ./doc/source --skip="./doc/source/_static/xml_schemas" - flake8 ./src ./tests ./examples - black ./src ./tests --check - mypy ./src """ [tool.mypy] @@ -141,3 +129,15 @@ markers = [ [tool.black] line-length = 120 + +[tool.pydocstyle] +convention = "numpy" + +[tool.isort] +profile = "black" +force_sort_within_sections = true +line_length = 100 +default_section = "THIRDPARTY" +skip_gitignore = true +skip = [".ipython", "cicd", "examples", "examples-dummy"] +src_paths = ["src", "tests"] diff --git a/src/ansys/grantami/bomanalytics/__init__.py b/src/ansys/grantami/bomanalytics/__init__.py index 66f4deaf..db9e4924 100644 --- a/src/ansys/grantami/bomanalytics/__init__.py +++ b/src/ansys/grantami/bomanalytics/__init__.py @@ -1,6 +1,6 @@ +from importlib import metadata as metadata + from ._connection import Connection from ._exceptions import GrantaMIException -from importlib import metadata as metadata - __version__ = metadata.version("ansys-grantami-bomanalytics") diff --git a/src/ansys/grantami/bomanalytics/_allowed_types.py b/src/ansys/grantami/bomanalytics/_allowed_types.py index 13b5aa0a..78ed0ba0 100644 --- a/src/ansys/grantami/bomanalytics/_allowed_types.py +++ b/src/ansys/grantami/bomanalytics/_allowed_types.py @@ -8,8 +8,8 @@ Generic type to ensure static-type checking works as expected. """ -from typing import TypeVar, Type, Any, Callable import functools +from typing import Any, Callable, Type, TypeVar T = TypeVar("T") diff --git a/src/ansys/grantami/bomanalytics/_connection.py b/src/ansys/grantami/bomanalytics/_connection.py index fd4c17c5..9f2a6629 100644 --- a/src/ansys/grantami/bomanalytics/_connection.py +++ b/src/ansys/grantami/bomanalytics/_connection.py @@ -26,16 +26,17 @@ Identifier used internally by the Granta MI Server. """ -from typing import overload, TYPE_CHECKING, Union, Dict, Optional, Type, Any, Tuple, List +from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple, Type, Union, overload +from ansys.grantami.bomanalytics_openapi import models # type: ignore[import] from ansys.openapi.common import ( # type: ignore[import] - ApiClientFactory, ApiClient, + ApiClientFactory, ApiException, - generate_user_agent, SessionConfiguration, + generate_user_agent, ) -from ansys.grantami.bomanalytics_openapi import models # type: ignore[import] + from ._logger import logger from .queries import Yaml @@ -46,31 +47,31 @@ if TYPE_CHECKING: - from .queries import ( - MaterialImpactedSubstancesQuery, - MaterialComplianceQuery, - PartImpactedSubstancesQuery, - PartComplianceQuery, - SpecificationImpactedSubstancesQuery, - SpecificationComplianceQuery, - SubstanceComplianceQuery, - BomImpactedSubstancesQuery, - BomComplianceQuery, - BomSustainabilityQuery, - BomSustainabilitySummaryQuery, - ) from ._query_results import ( - MaterialImpactedSubstancesQueryResult, + BomComplianceQueryResult, + BomImpactedSubstancesQueryResult, + BomSustainabilityQueryResult, + BomSustainabilitySummaryQueryResult, MaterialComplianceQueryResult, - PartImpactedSubstancesQueryResult, + MaterialImpactedSubstancesQueryResult, PartComplianceQueryResult, - SpecificationImpactedSubstancesQueryResult, + PartImpactedSubstancesQueryResult, SpecificationComplianceQueryResult, + SpecificationImpactedSubstancesQueryResult, SubstanceComplianceQueryResult, - BomImpactedSubstancesQueryResult, - BomComplianceQueryResult, - BomSustainabilityQueryResult, - BomSustainabilitySummaryQueryResult, + ) + from .queries import ( + BomComplianceQuery, + BomImpactedSubstancesQuery, + BomSustainabilityQuery, + BomSustainabilitySummaryQuery, + MaterialComplianceQuery, + MaterialImpactedSubstancesQuery, + PartComplianceQuery, + PartImpactedSubstancesQuery, + SpecificationComplianceQuery, + SpecificationImpactedSubstancesQuery, + SubstanceComplianceQuery, ) diff --git a/src/ansys/grantami/bomanalytics/_item_definitions.py b/src/ansys/grantami/bomanalytics/_item_definitions.py index eb59f566..365846ee 100644 --- a/src/ansys/grantami/bomanalytics/_item_definitions.py +++ b/src/ansys/grantami/bomanalytics/_item_definitions.py @@ -5,9 +5,9 @@ """ from abc import ABC, abstractmethod -from typing import Callable, Type, Union, List, Dict, Optional, cast from enum import Enum, auto import numbers +from typing import Callable, Dict, List, Optional, Type, Union, cast from ansys.grantami.bomanalytics_openapi import models # type: ignore[import] diff --git a/src/ansys/grantami/bomanalytics/_item_results.py b/src/ansys/grantami/bomanalytics/_item_results.py index 3e2aba9a..7d6abb6e 100644 --- a/src/ansys/grantami/bomanalytics/_item_results.py +++ b/src/ansys/grantami/bomanalytics/_item_results.py @@ -3,34 +3,36 @@ Defines the representations of the items (materials, parts, specifications, and substances) that are returned from queries. These are mostly extensions of the classes in the ``_item_definitions.py`` file. """ +from copy import deepcopy from typing import ( - List, - Dict, - Union, - Callable, TYPE_CHECKING, + Any, + Callable, + Dict, + List, Optional, - overload, - TypeVar, Type, - Any, + TypeVar, + Union, + overload, ) -from copy import deepcopy + from ansys.grantami.bomanalytics_openapi import models # type: ignore[import] + from ._item_definitions import ( - MaterialDefinition, - PartDefinition, - SpecificationDefinition, BaseSubstanceReference, - ReferenceType, CoatingReference, - ProcessReference, - TransportReference, - PartReference, + MaterialDefinition, MaterialReference, + PartDefinition, + PartReference, + ProcessReference, + ReferenceType, + SpecificationDefinition, SpecificationReference, + TransportReference, ) -from .indicators import WatchListIndicator, RoHSIndicator +from .indicators import RoHSIndicator, WatchListIndicator if TYPE_CHECKING: from ._query_results import MaterialImpactedSubstancesQueryResult # noqa: F401 diff --git a/src/ansys/grantami/bomanalytics/_query_results.py b/src/ansys/grantami/bomanalytics/_query_results.py index 567931b5..01f220ab 100644 --- a/src/ansys/grantami/bomanalytics/_query_results.py +++ b/src/ansys/grantami/bomanalytics/_query_results.py @@ -3,30 +3,30 @@ Defines the representations of the query results themselves, which allows them to implement pivots and summaries over the entire query result instead of being constrained to individual parts and materials. """ -from typing import List, Dict, Type, Callable, Any, Union, TYPE_CHECKING -from collections import defaultdict, namedtuple from abc import ABC +from collections import defaultdict, namedtuple +from typing import TYPE_CHECKING, Any, Callable, Dict, List, Type, Union from ansys.grantami.bomanalytics_openapi import models # type: ignore[import] from ._item_results import ( + ImpactedSubstance, ItemResultFactory, - MaterialWithImpactedSubstancesResult, + MaterialSummaryResult, MaterialWithComplianceResult, - PartWithImpactedSubstancesResult, + MaterialWithImpactedSubstancesResult, PartWithComplianceResult, - SpecificationWithImpactedSubstancesResult, + PartWithImpactedSubstancesResult, + PartWithSustainabilityResult, + ProcessSummaryResult, SpecificationWithComplianceResult, + SpecificationWithImpactedSubstancesResult, SubstanceWithComplianceResult, - ImpactedSubstance, - PartWithSustainabilityResult, - TransportWithSustainabilityResult, SustainabilityPhaseSummaryResult, TransportSummaryResult, - MaterialSummaryResult, - ProcessSummaryResult, + TransportWithSustainabilityResult, ) -from .indicators import WatchListIndicator, RoHSIndicator +from .indicators import RoHSIndicator, WatchListIndicator if TYPE_CHECKING: from .queries import Query_Result diff --git a/src/ansys/grantami/bomanalytics/indicators.py b/src/ansys/grantami/bomanalytics/indicators.py index f73db88d..4e39635f 100644 --- a/src/ansys/grantami/bomanalytics/indicators.py +++ b/src/ansys/grantami/bomanalytics/indicators.py @@ -10,9 +10,9 @@ or part. """ -from enum import Enum from abc import ABC, abstractmethod -from typing import List, Union, Optional, TYPE_CHECKING, Type +from enum import Enum +from typing import TYPE_CHECKING, List, Optional, Type, Union from ansys.grantami.bomanalytics_openapi import models # type: ignore[import] diff --git a/src/ansys/grantami/bomanalytics/queries.py b/src/ansys/grantami/bomanalytics/queries.py index 2260d102..1843466c 100644 --- a/src/ansys/grantami/bomanalytics/queries.py +++ b/src/ansys/grantami/bomanalytics/queries.py @@ -17,35 +17,31 @@ """ from abc import ABC, abstractmethod +from numbers import Number from typing import ( + TYPE_CHECKING, Any, - Union, - List, - Literal, - Dict, - Tuple, - TypeVar, Callable, + Dict, Generator, + List, + Literal, Optional, + Tuple, Type, - TYPE_CHECKING, + TypeVar, + Union, ) import warnings -from numbers import Number -from ansys.grantami.bomanalytics_openapi import models, api # type: ignore[import] +from ansys.grantami.bomanalytics_openapi import api, models # type: ignore[import] -from ._item_definitions import AbstractBomFactory, RecordDefinition, PartDefinition # noqa: F401 from ._allowed_types import validate_argument_type -from ._query_results import ( - QueryResultFactory, - ComplianceBaseClass, - ImpactedSubstancesBaseClass, -) -from .indicators import _Indicator, WatchListIndicator, RoHSIndicator from ._exceptions import GrantaMIException +from ._item_definitions import AbstractBomFactory, PartDefinition, RecordDefinition # noqa: F401 from ._logger import logger +from ._query_results import ComplianceBaseClass, ImpactedSubstancesBaseClass, QueryResultFactory +from .indicators import RoHSIndicator, WatchListIndicator, _Indicator if TYPE_CHECKING: from ._connection import Connection # noqa: F401 diff --git a/tests/conftest.py b/tests/conftest.py index 68e1566a..3eb20c28 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,9 +1,12 @@ -import pytest import os -import requests_mock import pathlib from typing import List + +import pytest +import requests_mock + from ansys.grantami.bomanalytics import Connection + from .common import CUSTOM_TABLES sl_url = os.getenv("TEST_SL_URL", "http://localhost/mi_servicelayer") diff --git a/tests/inputs/__init__.py b/tests/inputs/__init__.py index 77514300..ed214115 100644 --- a/tests/inputs/__init__.py +++ b/tests/inputs/__init__.py @@ -1,5 +1,6 @@ import pathlib -from .examples import examples_as_strings, examples_as_dicts + +from .examples import examples_as_dicts, examples_as_strings _bom_path = pathlib.Path(__file__).parent / "bom.xml" with open(_bom_path, "r") as f: diff --git a/tests/inputs/examples.py b/tests/inputs/examples.py index de9a5670..4cc5b058 100644 --- a/tests/inputs/examples.py +++ b/tests/inputs/examples.py @@ -1,5 +1,5 @@ -import json import html +import json # TODO: Modify the codegen script to generate this as a package diff --git a/tests/test_allowed_types.py b/tests/test_allowed_types.py index 44e0a468..40a6c979 100644 --- a/tests/test_allowed_types.py +++ b/tests/test_allowed_types.py @@ -1,6 +1,8 @@ -import pytest from numbers import Number -from ansys.grantami.bomanalytics._allowed_types import validate_argument_type, _check_type + +import pytest + +from ansys.grantami.bomanalytics._allowed_types import _check_type, validate_argument_type def test_allowed_types_args(): diff --git a/tests/test_argument_managers.py b/tests/test_argument_managers.py index 23ae5a00..206b2130 100644 --- a/tests/test_argument_managers.py +++ b/tests/test_argument_managers.py @@ -1,6 +1,9 @@ -import pytest from dataclasses import dataclass + +import pytest + from ansys.grantami.bomanalytics import queries + from .inputs import sample_bom, sample_bom_2301 diff --git a/tests/test_bom_indicators.py b/tests/test_bom_indicators.py index bb0081ce..45798004 100644 --- a/tests/test_bom_indicators.py +++ b/tests/test_bom_indicators.py @@ -1,7 +1,9 @@ -import pytest import random -from ansys.grantami.bomanalytics import indicators + from ansys.grantami.bomanalytics_openapi import CommonIndicatorDefinition +import pytest + +from ansys.grantami.bomanalytics import indicators def create_rohs_indicator(ignore_exemptions) -> indicators.RoHSIndicator: diff --git a/tests/test_bom_item_definitions.py b/tests/test_bom_item_definitions.py index 306f7447..eae3052f 100644 --- a/tests/test_bom_item_definitions.py +++ b/tests/test_bom_item_definitions.py @@ -1,22 +1,22 @@ +from ansys.grantami.bomanalytics_openapi import ( + GetComplianceForSubstancesSubstanceWithAmount as SubsRef, +) +from ansys.grantami.bomanalytics_openapi import CommonMaterialReference as MatRef +from ansys.grantami.bomanalytics_openapi import CommonPartReference as PartRef +from ansys.grantami.bomanalytics_openapi import CommonSpecificationReference as SpecRef import pytest + from ansys.grantami.bomanalytics._item_definitions import ( + CoatingReference, MaterialDefinition, - SpecificationDefinition, PartDefinition, - SubstanceDefinition, - ReferenceType, - CoatingReference, ProcessReference, - TransportReference, RecordReference, + ReferenceType, + SpecificationDefinition, + SubstanceDefinition, + TransportReference, ) -from ansys.grantami.bomanalytics_openapi import ( - CommonMaterialReference as MatRef, - CommonPartReference as PartRef, - CommonSpecificationReference as SpecRef, - GetComplianceForSubstancesSubstanceWithAmount as SubsRef, -) - common_test_cases = [ ({"reference_type": ReferenceType.MiRecordGuid, "reference_value": "TEST_GUID"}, "record_guid"), diff --git a/tests/test_connection.py b/tests/test_connection.py index 1b93e351..f0545c96 100644 --- a/tests/test_connection.py +++ b/tests/test_connection.py @@ -1,8 +1,11 @@ +import os import re + import pytest import requests_mock -import os -from ansys.grantami.bomanalytics import _connection, Connection + +from ansys.grantami.bomanalytics import Connection, _connection + from .common import CUSTOM_TABLES SL_URL = os.getenv("TEST_SL_URL", "http://localhost/mi_servicelayer") diff --git a/tests/test_examples.py b/tests/test_examples.py index 02e394db..f7818c59 100644 --- a/tests/test_examples.py +++ b/tests/test_examples.py @@ -1,7 +1,8 @@ +from pathlib import Path +import subprocess import sys + import pytest -import subprocess -from pathlib import Path pytestmark = pytest.mark.integration IPYTHONDIR = str(Path(__file__).parent.parent) + "/.ipython" diff --git a/tests/test_integration_tests.py b/tests/test_integration_tests.py index 10769149..58f28853 100644 --- a/tests/test_integration_tests.py +++ b/tests/test_integration_tests.py @@ -1,7 +1,9 @@ import pytest -from .inputs import sample_bom_complex, sample_bom_custom_db, sample_bom_2301_complex -from ansys.grantami.bomanalytics import queries, GrantaMIException -from .common import LEGISLATIONS, INDICATORS, CUSTOM_TABLES + +from ansys.grantami.bomanalytics import GrantaMIException, queries + +from .common import CUSTOM_TABLES, INDICATORS, LEGISLATIONS +from .inputs import sample_bom_2301_complex, sample_bom_complex, sample_bom_custom_db pytestmark = pytest.mark.integration diff --git a/tests/test_item_results.py b/tests/test_item_results.py index 7dc77202..02cb57a6 100644 --- a/tests/test_item_results.py +++ b/tests/test_item_results.py @@ -1,8 +1,11 @@ -import pytest from dataclasses import dataclass + from ansys.grantami.bomanalytics_openapi import models +import pytest + from ansys.grantami.bomanalytics._item_definitions import ReferenceType from ansys.grantami.bomanalytics._item_results import ImpactedSubstance, ItemResultFactory + from .common import INDICATORS diff --git a/tests/test_mocked_responses/common.py b/tests/test_mocked_responses/common.py index 1314d267..ed02d70c 100644 --- a/tests/test_mocked_responses/common.py +++ b/tests/test_mocked_responses/common.py @@ -1,5 +1,7 @@ import requests_mock + from ansys.grantami.bomanalytics import indicators, queries + from ..inputs import examples_as_strings diff --git a/tests/test_mocked_responses/test_bom.py b/tests/test_mocked_responses/test_bom.py index 741314bb..4be83d80 100644 --- a/tests/test_mocked_responses/test_bom.py +++ b/tests/test_mocked_responses/test_bom.py @@ -1,14 +1,11 @@ -from ansys.grantami.bomanalytics import queries, indicators from ansys.grantami.bomanalytics_openapi.models import ( - GetImpactedSubstancesForBom1711Response, GetComplianceForBom1711Response, + GetImpactedSubstancesForBom1711Response, ) -from .common import ( - BaseMockTester, - PartValidator, - SubstanceValidator, - MaterialValidator, -) + +from ansys.grantami.bomanalytics import indicators, queries + +from .common import BaseMockTester, MaterialValidator, PartValidator, SubstanceValidator class TestImpactedSubstances(BaseMockTester): diff --git a/tests/test_mocked_responses/test_materials.py b/tests/test_mocked_responses/test_materials.py index 70943966..c5c0ec23 100644 --- a/tests/test_mocked_responses/test_materials.py +++ b/tests/test_mocked_responses/test_materials.py @@ -1,13 +1,11 @@ -from ansys.grantami.bomanalytics import queries, indicators from ansys.grantami.bomanalytics_openapi.models import ( - GetImpactedSubstancesForMaterialsResponse, GetComplianceForMaterialsResponse, + GetImpactedSubstancesForMaterialsResponse, ) -from .common import ( - BaseMockTester, - SubstanceValidator, - MaterialValidator, -) + +from ansys.grantami.bomanalytics import indicators, queries + +from .common import BaseMockTester, MaterialValidator, SubstanceValidator class TestImpactedSubstances(BaseMockTester): diff --git a/tests/test_mocked_responses/test_messages.py b/tests/test_mocked_responses/test_messages.py index 13ca8bbb..479fd27b 100644 --- a/tests/test_mocked_responses/test_messages.py +++ b/tests/test_mocked_responses/test_messages.py @@ -1,12 +1,14 @@ import json import logging +from ansys.grantami.bomanalytics_openapi.models import GetImpactedSubstancesForMaterialsResponse import pytest -from ansys.grantami.bomanalytics import queries, GrantaMIException + +from ansys.grantami.bomanalytics import GrantaMIException, queries from ansys.grantami.bomanalytics._query_results import LogMessage -from .common import BaseMockTester + from ..inputs import examples_as_dicts -from ansys.grantami.bomanalytics_openapi.models import GetImpactedSubstancesForMaterialsResponse +from .common import BaseMockTester class TestMessages(BaseMockTester): diff --git a/tests/test_mocked_responses/test_parts.py b/tests/test_mocked_responses/test_parts.py index 6416548b..c66be849 100644 --- a/tests/test_mocked_responses/test_parts.py +++ b/tests/test_mocked_responses/test_parts.py @@ -1,13 +1,15 @@ -from ansys.grantami.bomanalytics import queries, indicators from ansys.grantami.bomanalytics_openapi.models import ( - GetImpactedSubstancesForPartsResponse, GetComplianceForPartsResponse, + GetImpactedSubstancesForPartsResponse, ) + +from ansys.grantami.bomanalytics import indicators, queries + from .common import ( BaseMockTester, + MaterialValidator, PartValidator, SpecificationValidator, - MaterialValidator, SubstanceValidator, ) diff --git a/tests/test_mocked_responses/test_specifications.py b/tests/test_mocked_responses/test_specifications.py index 1f8d6697..b28e5491 100644 --- a/tests/test_mocked_responses/test_specifications.py +++ b/tests/test_mocked_responses/test_specifications.py @@ -1,13 +1,15 @@ -from ansys.grantami.bomanalytics import queries, indicators from ansys.grantami.bomanalytics_openapi.models import ( - GetImpactedSubstancesForSpecificationsResponse, GetComplianceForSpecificationsResponse, + GetImpactedSubstancesForSpecificationsResponse, ) + +from ansys.grantami.bomanalytics import indicators, queries + from .common import ( BaseMockTester, - SpecificationValidator, CoatingValidator, MaterialValidator, + SpecificationValidator, SubstanceValidator, ) diff --git a/tests/test_mocked_responses/test_substances.py b/tests/test_mocked_responses/test_substances.py index 1417ec42..152ee8fa 100644 --- a/tests/test_mocked_responses/test_substances.py +++ b/tests/test_mocked_responses/test_substances.py @@ -1,5 +1,7 @@ -from ansys.grantami.bomanalytics import queries, indicators from ansys.grantami.bomanalytics_openapi.models import GetComplianceForSubstancesResponse + +from ansys.grantami.bomanalytics import indicators, queries + from .common import BaseMockTester, SubstanceValidator diff --git a/tests/test_mocked_responses/test_sustainability.py b/tests/test_mocked_responses/test_sustainability.py index f0544b77..5f8246c8 100644 --- a/tests/test_mocked_responses/test_sustainability.py +++ b/tests/test_mocked_responses/test_sustainability.py @@ -1,16 +1,16 @@ -from ansys.grantami.bomanalytics import queries -from ansys.grantami.bomanalytics._query_results import ( - BomSustainabilityQueryResult, - BomSustainabilitySummaryQueryResult, -) from ansys.grantami.bomanalytics_openapi.models import ( GetSustainabilityForBom2301Response, GetSustainabilitySummaryForBom2301Response, ) -from .common import ( - BaseMockTester, + +from ansys.grantami.bomanalytics import queries +from ansys.grantami.bomanalytics._query_results import ( + BomSustainabilityQueryResult, + BomSustainabilitySummaryQueryResult, ) +from .common import BaseMockTester + class TestBomSustainability(BaseMockTester): query = queries.BomSustainabilityQuery() diff --git a/tests/test_query_builders/common.py b/tests/test_query_builders/common.py index afc10bf7..ea5eefeb 100644 --- a/tests/test_query_builders/common.py +++ b/tests/test_query_builders/common.py @@ -1,6 +1,6 @@ from typing import List -from ansys.grantami.bomanalytics import queries +from ansys.grantami.bomanalytics import queries RECORD_QUERY_TYPES: List = [ queries.MaterialImpactedSubstancesQuery, diff --git a/tests/test_query_builders/test_bom.py b/tests/test_query_builders/test_bom.py index 4520edb5..3449e38a 100644 --- a/tests/test_query_builders/test_bom.py +++ b/tests/test_query_builders/test_bom.py @@ -1,4 +1,5 @@ import pytest + from ansys.grantami.bomanalytics import queries all_bom_queries = pytest.mark.parametrize( diff --git a/tests/test_query_builders/test_common_queries.py b/tests/test_query_builders/test_common_queries.py index d3227d94..0545d60a 100644 --- a/tests/test_query_builders/test_common_queries.py +++ b/tests/test_query_builders/test_common_queries.py @@ -1,6 +1,8 @@ import pytest + from ansys.grantami.bomanalytics import queries -from ..common import LEGISLATIONS, INDICATORS + +from ..common import INDICATORS, LEGISLATIONS TEST_GUIDS = [ [], diff --git a/tests/test_query_builders/test_materials.py b/tests/test_query_builders/test_materials.py index 46b61f2f..43202935 100644 --- a/tests/test_query_builders/test_materials.py +++ b/tests/test_query_builders/test_materials.py @@ -1,5 +1,7 @@ import pytest + from ansys.grantami.bomanalytics import queries + from .common import check_query_manager_attributes diff --git a/tests/test_query_builders/test_parts.py b/tests/test_query_builders/test_parts.py index 88c1a4ac..37285113 100644 --- a/tests/test_query_builders/test_parts.py +++ b/tests/test_query_builders/test_parts.py @@ -1,5 +1,7 @@ import pytest + from ansys.grantami.bomanalytics import queries + from .common import check_query_manager_attributes diff --git a/tests/test_query_builders/test_specifications.py b/tests/test_query_builders/test_specifications.py index 05c4497f..593b6900 100644 --- a/tests/test_query_builders/test_specifications.py +++ b/tests/test_query_builders/test_specifications.py @@ -1,5 +1,7 @@ import pytest + from ansys.grantami.bomanalytics import queries + from .common import check_query_manager_attributes diff --git a/tests/test_query_builders/test_substances.py b/tests/test_query_builders/test_substances.py index eab2274e..dea5c282 100644 --- a/tests/test_query_builders/test_substances.py +++ b/tests/test_query_builders/test_substances.py @@ -1,5 +1,7 @@ import pytest + from ansys.grantami.bomanalytics import queries + from .common import check_query_manager_attributes SubstanceCompliance = queries.SubstanceComplianceQuery diff --git a/tests/test_query_builders/test_sustainability.py b/tests/test_query_builders/test_sustainability.py index c953590f..e98999cd 100644 --- a/tests/test_query_builders/test_sustainability.py +++ b/tests/test_query_builders/test_sustainability.py @@ -1,4 +1,5 @@ import pytest + from ansys.grantami.bomanalytics import queries DISTANCE = "a" From 3df125555c73231846969cb962d59a0e908fccf2 Mon Sep 17 00:00:00 2001 From: Doug Addy Date: Thu, 21 Sep 2023 20:18:22 +0100 Subject: [PATCH 055/275] Review comments --- .../grantami/bomanalytics/_bom_helper.py | 11 +- .../bomanalytics/bom_types/_bom_reader.py | 11 +- .../bomanalytics/bom_types/_bom_types.py | 198 +++++++++--------- .../bomanalytics/bom_types/_bom_writer.py | 13 +- .../bomanalytics/bom_types/_builders.py | 196 +++++++++++++++-- 5 files changed, 296 insertions(+), 133 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/_bom_helper.py b/src/ansys/grantami/bomanalytics/_bom_helper.py index 3ffb7b38..84002f87 100644 --- a/src/ansys/grantami/bomanalytics/_bom_helper.py +++ b/src/ansys/grantami/bomanalytics/_bom_helper.py @@ -12,7 +12,7 @@ class BoMHandler: _schema_path: Path = Path(__file__).parent / "schemas" / "BillOfMaterialsEco2301.xsd" _schema: XMLSchema - def __init__(self): + def __init__(self) -> None: """ Handler for XML formatted BoMs, supports reading from files and strings, and serializing to string format. """ @@ -40,7 +40,8 @@ def load_bom_from_file(self, file_path: Path) -> "BillOfMaterials": if len(errors) > 0: newline = "\n" raise ValueError(f"Invalid BoM:\n{newline.join([error.msg for error in errors])}") - print(obj) + + assert isinstance(obj, dict) return self._reader.read_bom(obj) @@ -63,6 +64,8 @@ def load_bom_from_text(self, bom_text: str) -> "BillOfMaterials": newline = "\n" raise ValueError(f"Invalid BoM:\n{newline.join([error.msg for error in errors])}") + assert isinstance(obj, dict) + return self._reader.read_bom(obj) def dump_bom(self, bom: "BillOfMaterials") -> str: @@ -85,4 +88,6 @@ def dump_bom(self, bom: "BillOfMaterials") -> str: newline = "\n" raise ValueError(f"Invalid BoM object:\n{newline.join([error.msg for error in errors])}") - return xmlschema.etree_tostring(obj) + output = xmlschema.etree_tostring(obj) + assert isinstance(output, str) + return output diff --git a/src/ansys/grantami/bomanalytics/bom_types/_bom_reader.py b/src/ansys/grantami/bomanalytics/bom_types/_bom_reader.py index 39228131..d8b3c4b6 100644 --- a/src/ansys/grantami/bomanalytics/bom_types/_bom_reader.py +++ b/src/ansys/grantami/bomanalytics/bom_types/_bom_reader.py @@ -1,5 +1,5 @@ import inspect -from typing import Dict, Optional, Any, TYPE_CHECKING, cast, Iterable +from typing import Dict, Optional, Any, TYPE_CHECKING, cast, Iterable, Type from xmlschema import XMLSchema @@ -12,9 +12,9 @@ class BoMReader: _schema: XMLSchema - _namespaces = {} - _class_members = {} - _field_reader = None + _namespaces: Dict[str, str] = {} + _class_members: Dict[str, Type] = {} + _field_reader: "Optional[NamespaceFieldReader]" = None def __init__(self, schema: XMLSchema): """ @@ -26,6 +26,7 @@ def __init__(self, schema: XMLSchema): Parsed XMLSchema representing the 2301 Eco BoM format """ self._schema = schema + self._class_members = {k: v for k, v in inspect.getmembers(bom_types, inspect.isclass)} def read_bom(self, obj: Dict) -> "BillOfMaterials": """ @@ -48,9 +49,7 @@ def read_bom(self, obj: Dict) -> "BillOfMaterials": _, prefix = k.split(":") namespaces[prefix] = v - class_members = {k: v for k, v in inspect.getmembers(bom_types, inspect.isclass)} self._namespaces = namespaces - self._class_members = class_members self._field_reader = NamespaceFieldReader(self._namespaces) return cast("BillOfMaterials", self._create_type("BillOfMaterials", obj)) diff --git a/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py b/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py index 901ce3f9..07b05013 100644 --- a/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py +++ b/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py @@ -21,17 +21,21 @@ class BaseType: _simple_values : List[Tuple[str, str]] Properties that map to simple types in XML. The entries are the python property name and the item XML element name. + _namespaces : Dict[str, str] + Mapping from XML namespace prefix to namespace URI. + _namespace : str + XML Namespace URI for the object, should exist as a value in the ``_namespaces`` map. """ - _props: "List[Tuple[str, str, str]]" = [] - _list_props: "List[Tuple[str, str, str, str, str]]" = [] - _simple_values: "List[Tuple[str, str]]" = [] + _props: List[Tuple[str, str, str]] = [] + _list_props: List[Tuple[str, str, str, str, str]] = [] + _simple_values: List[Tuple[str, str]] = [] - _namespaces = {} + _namespaces: Dict[str, str] = {} _namespace = "http://www.grantadesign.com/23/01/BillOfMaterialsEco" - def __init__(self, *args, **kwargs) -> None: + def __init__(self, *args: str, **kwargs: str) -> None: pass @classmethod @@ -128,7 +132,7 @@ class PseudoAttribute(Enum): TableFilters = 15 @classmethod - def from_string(cls, value: str): + def from_string(cls, value: str) -> "PseudoAttribute": """ Convert string representation of this object into an instance of this object. @@ -139,7 +143,7 @@ def from_string(cls, value: str): """ return PseudoAttribute[f"{value[0].upper()}{value[1:]}"] - def to_string(self): + def to_string(self) -> str: """ Convert this Enum object to its string representation. @@ -200,7 +204,7 @@ def table_identity(self) -> Optional[int]: return self._table_identity @table_identity.setter - def table_identity(self, value): + def table_identity(self, value: Optional[int]) -> None: self._table_identity = value @property @@ -215,7 +219,7 @@ def table_guid(self) -> Optional[str]: return self._table_guid @table_guid.setter - def table_guid(self, value): + def table_guid(self, value: Optional[str]) -> None: self._table_guid = value @property @@ -231,7 +235,7 @@ def table_name(self) -> Optional[str]: return self._table_name @table_name.setter - def table_name(self, value): + def table_name(self, value: Optional[str]) -> None: self._table_name = value @@ -321,7 +325,7 @@ def db_key(self) -> str: return self._db_key @db_key.setter - def db_key(self, value): + def db_key(self, value: str) -> None: self._db_key = value @property @@ -336,7 +340,7 @@ def attribute_identity(self) -> Optional[int]: return self._attribute_identity @attribute_identity.setter - def attribute_identity(self, value): + def attribute_identity(self, value: Optional[int]) -> None: self._attribute_identity = value @property @@ -352,7 +356,7 @@ def table_reference(self) -> Optional[PartialTableReference]: return self._table_reference @table_reference.setter - def table_reference(self, value): + def table_reference(self, value: Optional[PartialTableReference]) -> None: self._table_reference = value @property @@ -367,7 +371,7 @@ def attribute_name(self) -> Optional[str]: return self._attribute_name @attribute_name.setter - def attribute_name(self, value): + def attribute_name(self, value: Optional[str]) -> None: self._attribute_name = value @property @@ -382,7 +386,7 @@ def pseudo(self) -> Optional[PseudoAttribute]: return self._pseudo @pseudo.setter - def pseudo(self, value): + def pseudo(self, value: Optional[PseudoAttribute]) -> None: self._pseudo = value @property @@ -397,7 +401,7 @@ def is_standard(self) -> Optional[bool]: return self._is_standard @is_standard.setter - def is_standard(self, value): + def is_standard(self, value: Optional[bool]) -> None: self._is_standard = value @@ -509,7 +513,7 @@ def db_key(self) -> str: return self._db_key @db_key.setter - def db_key(self, value): + def db_key(self, value: str) -> None: self._db_key = value @property @@ -524,7 +528,7 @@ def record_history_identity(self) -> Optional[int]: return self._record_history_identity @record_history_identity.setter - def record_history_identity(self, value): + def record_history_identity(self, value: Optional[int]) -> None: self._record_history_identity = value @property @@ -539,7 +543,7 @@ def record_version_number(self) -> Optional[int]: return self._record_version_number @record_version_number.setter - def record_version_number(self, value): + def record_version_number(self, value: Optional[int]) -> None: self._record_version_number = value @property @@ -554,7 +558,7 @@ def record_guid(self) -> Optional[str]: return self._record_guid @record_guid.setter - def record_guid(self, value): + def record_guid(self, value: Optional[str]) -> None: self._record_guid = value @property @@ -569,7 +573,7 @@ def record_history_guid(self) -> Optional[str]: return self._record_history_guid @record_history_guid.setter - def record_history_guid(self, value): + def record_history_guid(self, value: Optional[str]) -> None: self._record_history_guid = value @property @@ -585,7 +589,7 @@ def lookup_attribute_reference(self) -> "Optional[MIAttributeReference]": return self._lookup_attribute_reference @lookup_attribute_reference.setter - def lookup_attribute_reference(self, value): + def lookup_attribute_reference(self, value: Optional[MIAttributeReference]) -> None: self._lookup_attribute_reference = value @property @@ -601,7 +605,7 @@ def lookup_value(self) -> Optional[str]: return self._lookup_value @lookup_value.setter - def lookup_value(self, value): + def lookup_value(self, value: Optional[str]) -> None: self._lookup_value = value @property @@ -617,7 +621,7 @@ def record_uid(self) -> Optional[str]: return self._record_uid @record_uid.setter - def record_uid(self, value): + def record_uid(self, value: Optional[str]) -> None: self._record_uid = value @@ -889,7 +893,7 @@ def mi_location_reference(self) -> "Optional[MIRecordReference]": return self._mi_location_reference @mi_location_reference.setter - def mi_location_reference(self, value): + def mi_location_reference(self, value: Optional[MIRecordReference]) -> None: self._mi_location_reference = value @@ -936,7 +940,7 @@ def mi_region_reference(self) -> "Optional[MIRecordReference]": return self._mi_region_reference @mi_region_reference.setter - def mi_region_reference(self, value): + def mi_region_reference(self, value: Optional[MIRecordReference]) -> None: self._mi_region_reference = value @property @@ -951,7 +955,7 @@ def percentage_fossil_fuels(self) -> Optional[float]: return self._percentage_fossil_fuels @percentage_fossil_fuels.setter - def percentage_fossil_fuels(self, value): + def percentage_fossil_fuels(self, value: Optional[float]) -> None: self._percentage_fossil_fuels = value @@ -1004,7 +1008,7 @@ def mi_transport_reference(self) -> MIRecordReference: return self._mi_transport_reference @mi_transport_reference.setter - def mi_transport_reference(self, value): + def mi_transport_reference(self, value: MIRecordReference) -> None: self._mi_transport_reference = value @property @@ -1019,7 +1023,7 @@ def days_used_per_year(self) -> float: return self._days_used_per_year @days_used_per_year.setter - def days_used_per_year(self, value): + def days_used_per_year(self, value: float) -> None: self._days_used_per_year = value @property @@ -1034,7 +1038,7 @@ def distance_travelled_per_day(self) -> "UnittedValue": return self._distance_travelled_per_day @distance_travelled_per_day.setter - def distance_travelled_per_day(self, value): + def distance_travelled_per_day(self, value: UnittedValue) -> None: self._distance_travelled_per_day = value @@ -1093,7 +1097,7 @@ def mi_energy_conversion_reference(self) -> "MIRecordReference": return self._mi_energy_conversion_reference @mi_energy_conversion_reference.setter - def mi_energy_conversion_reference(self, value): + def mi_energy_conversion_reference(self, value: MIRecordReference) -> None: self._mi_energy_conversion_reference = value @property @@ -1108,7 +1112,7 @@ def power_rating(self) -> "UnittedValue": return self._power_rating @power_rating.setter - def power_rating(self, value): + def power_rating(self, value: UnittedValue) -> None: self._power_rating = value @property @@ -1123,7 +1127,7 @@ def days_used_per_year(self) -> float: return self._days_used_per_year @days_used_per_year.setter - def days_used_per_year(self, value): + def days_used_per_year(self, value: float) -> None: self._days_used_per_year = value @property @@ -1138,7 +1142,7 @@ def hours_used_per_day(self) -> float: return self._hours_used_per_day @hours_used_per_day.setter - def hours_used_per_day(self, value): + def hours_used_per_day(self, value: float) -> None: self._hours_used_per_day = value @@ -1192,7 +1196,7 @@ def industry_average_duration_years(self) -> Optional[float]: return self._industry_average_duration_years @industry_average_duration_years.setter - def industry_average_duration_years(self, value): + def industry_average_duration_years(self, value: Optional[float]) -> None: self._industry_average_duration_years = value @property @@ -1208,7 +1212,7 @@ def industry_average_number_of_functional_units(self) -> Optional[float]: return self._industry_average_number_of_functional_units @industry_average_number_of_functional_units.setter - def industry_average_number_of_functional_units(self, value): + def industry_average_number_of_functional_units(self, value: Optional[float]) -> None: self._industry_average_number_of_functional_units = value @property @@ -1223,7 +1227,7 @@ def utility(self) -> Optional[float]: return self._utility @utility.setter - def utility(self, value): + def utility(self, value: Optional[float]) -> None: self._utility = value @@ -1282,7 +1286,7 @@ def duration_years(self) -> float: return self._duration_years @duration_years.setter - def duration_years(self, value): + def duration_years(self, value: float) -> None: self._duration_years = value @property @@ -1297,7 +1301,7 @@ def number_of_functional_units(self) -> Optional[float]: return self._number_of_functional_units @number_of_functional_units.setter - def number_of_functional_units(self, value): + def number_of_functional_units(self, value: Optional[float]) -> None: self._number_of_functional_units = value @property @@ -1312,7 +1316,7 @@ def functional_unit_description(self) -> Optional[str]: return self._functional_unit_description @functional_unit_description.setter - def functional_unit_description(self, value): + def functional_unit_description(self, value: Optional[str]) -> None: self._functional_unit_description = value @property @@ -1328,7 +1332,7 @@ def utility(self) -> "Optional[UtilitySpecification]": return self._utility @utility.setter - def utility(self, value): + def utility(self, value: Optional[UtilitySpecification]) -> None: self._utility = value @@ -1387,7 +1391,7 @@ def product_life_span(self) -> "ProductLifeSpan": return self._product_life_span @product_life_span.setter - def product_life_span(self, value): + def product_life_span(self, value: ProductLifeSpan) -> None: self._product_life_span = value @property @@ -1402,7 +1406,7 @@ def electricity_mix(self) -> "Optional[ElectricityMix]": return self._electricity_mix @electricity_mix.setter - def electricity_mix(self, value): + def electricity_mix(self, value: Optional[ElectricityMix]) -> None: self._electricity_mix = value @property @@ -1417,7 +1421,7 @@ def static_mode(self) -> "Optional[StaticMode]": return self._static_mode @static_mode.setter - def static_mode(self, value): + def static_mode(self, value: Optional[StaticMode]) -> None: self._static_mode = value @property @@ -1432,7 +1436,7 @@ def mobile_mode(self) -> "Optional[MobileMode]": return self._mobile_mode @mobile_mode.setter - def mobile_mode(self, value): + def mobile_mode(self, value: Optional[MobileMode]) -> None: self._mobile_mode = value @@ -1481,7 +1485,7 @@ def notes(self) -> Optional[str]: return self._notes @notes.setter - def notes(self, value): + def notes(self, value: Optional[str]) -> None: self._notes = value @property @@ -1497,7 +1501,7 @@ def picture_url(self) -> Optional[str]: return self._picture_url @picture_url.setter - def picture_url(self, value): + def picture_url(self, value: Optional[str]) -> None: self._picture_url = value @property @@ -1512,7 +1516,7 @@ def product_name(self) -> Optional[str]: return self._product_name @product_name.setter - def product_name(self, value): + def product_name(self, value: Optional[str]) -> None: self._product_name = value @@ -1561,7 +1565,7 @@ def name(self) -> str: return self._name @name.setter - def name(self, value): + def name(self, value: str) -> None: self._name = value @property @@ -1576,7 +1580,7 @@ def mi_transport_reference(self) -> "MIRecordReference": return self._mi_transport_reference @mi_transport_reference.setter - def mi_transport_reference(self, value): + def mi_transport_reference(self, value: MIRecordReference) -> None: self._mi_transport_reference = value @property @@ -1591,7 +1595,7 @@ def distance(self) -> "UnittedValue": return self._distance @distance.setter - def distance(self, value): + def distance(self, value: UnittedValue) -> None: self._distance = value @@ -1634,7 +1638,7 @@ def mi_specification_reference(self) -> "MIRecordReference": return self._mi_specification_reference @mi_specification_reference.setter - def mi_specification_reference(self, value): + def mi_specification_reference(self, value: MIRecordReference) -> None: self._mi_specification_reference = value @property @@ -1649,7 +1653,7 @@ def quantity(self) -> "Optional[UnittedValue]": return self._quantity @quantity.setter - def quantity(self, value): + def quantity(self, value: Optional[UnittedValue]) -> None: self._quantity = value @@ -1701,7 +1705,7 @@ def mi_substance_reference(self) -> "MIRecordReference": return self._mi_substance_reference @mi_substance_reference.setter - def mi_substance_reference(self, value: "MIRecordReference"): + def mi_substance_reference(self, value: "MIRecordReference") -> None: self._mi_substance_reference = value @property @@ -1716,7 +1720,7 @@ def percentage(self) -> Optional[float]: return self._percentage @percentage.setter - def percentage(self, value: Optional[float]): + def percentage(self, value: Optional[float]) -> None: self._percentage = value @property @@ -1731,7 +1735,7 @@ def category(self) -> Optional[str]: return self._category @category.setter - def category(self, value: Optional[str]): + def category(self, value: Optional[str]) -> None: self._category = value @@ -1806,7 +1810,7 @@ def mi_process_reference(self) -> "MIRecordReference": return self._mi_process_reference @mi_process_reference.setter - def mi_process_reference(self, value): + def mi_process_reference(self, value: MIRecordReference) -> None: self._mi_process_reference = value @property @@ -1822,7 +1826,7 @@ def dimension_type(self) -> DimensionType: return self._dimension_type @dimension_type.setter - def dimension_type(self, value): + def dimension_type(self, value: DimensionType) -> None: self._dimension_type = value @property @@ -1837,7 +1841,7 @@ def percentage_of_part_affected(self) -> Optional[float]: return self._percentage_of_part_affected @percentage_of_part_affected.setter - def percentage_of_part_affected(self, value): + def percentage_of_part_affected(self, value: Optional[float]) -> None: self._percentage_of_part_affected = value @property @@ -1852,7 +1856,7 @@ def quantity_affected(self) -> "Optional[UnittedValue]": return self._quantity_affected @quantity_affected.setter - def quantity_affected(self, value): + def quantity_affected(self, value: "Optional[UnittedValue]") -> None: self._quantity_affected = value @@ -1972,7 +1976,7 @@ def mi_material_reference(self) -> MIRecordReference: return self._mi_material_reference @mi_material_reference.setter - def mi_material_reference(self, value): + def mi_material_reference(self, value: MIRecordReference) -> None: self._mi_material_reference = value @property @@ -1987,7 +1991,7 @@ def percentage(self) -> Optional[float]: return self._percentage @percentage.setter - def percentage(self, value): + def percentage(self, value: Optional[float]) -> None: self._percentage = value @property @@ -2002,7 +2006,7 @@ def mass(self) -> "Optional[UnittedValue]": return self._mass @mass.setter - def mass(self, value): + def mass(self, value: "Optional[UnittedValue]") -> None: self._mass = value @property @@ -2019,7 +2023,7 @@ def recycle_content_is_typical(self) -> Optional[bool]: return self._recycle_content_is_typical @recycle_content_is_typical.setter - def recycle_content_is_typical(self, value): + def recycle_content_is_typical(self, value: Optional[bool]) -> None: self._recycle_content_is_typical = value @property @@ -2035,7 +2039,7 @@ def recycle_content_percentage(self) -> Optional[float]: return self._recycle_content_percentage @recycle_content_percentage.setter - def recycle_content_percentage(self, value): + def recycle_content_percentage(self, value: Optional[float]) -> None: self._recycle_content_percentage = value @property @@ -2050,11 +2054,11 @@ def processes(self) -> List[Process]: return self._processes @processes.setter - def processes(self, value): + def processes(self, value: "List[Process]") -> None: self._processes = value @property - def end_of_life_fates(self) -> List[EndOfLifeFate]: + def end_of_life_fates(self) -> "List[EndOfLifeFate]": """ The fates of this material once the product is disposed of. @@ -2065,7 +2069,7 @@ def end_of_life_fates(self) -> List[EndOfLifeFate]: return self._end_of_life_fates @end_of_life_fates.setter - def end_of_life_fates(self, value): + def end_of_life_fates(self, value: "List[EndOfLifeFate]") -> None: self._end_of_life_fates = value @@ -2259,7 +2263,7 @@ def quantity(self) -> "Optional[UnittedValue]": return self._quantity @quantity.setter - def quantity(self, value): + def quantity(self, value: "Optional[UnittedValue]") -> None: self._quantity = value @property @@ -2276,7 +2280,7 @@ def mass_per_unit_of_measure(self) -> "Optional[UnittedValue]": return self._mass_per_unit_of_measure @mass_per_unit_of_measure.setter - def mass_per_unit_of_measure(self, value): + def mass_per_unit_of_measure(self, value: "Optional[UnittedValue]") -> None: self._mass_per_unit_of_measure = value @property @@ -2293,7 +2297,7 @@ def volume_per_unit_of_measure(self) -> "Optional[UnittedValue]": return self._volume_per_unit_of_measure @volume_per_unit_of_measure.setter - def volume_per_unit_of_measure(self, value): + def volume_per_unit_of_measure(self, value: "Optional[UnittedValue]") -> None: self._volume_per_unit_of_measure = value @property @@ -2308,7 +2312,7 @@ def mi_part_reference(self) -> "Optional[MIRecordReference]": return self._mi_part_reference @mi_part_reference.setter - def mi_part_reference(self, value): + def mi_part_reference(self, value: "Optional[MIRecordReference]") -> None: self._mi_part_reference = value @property @@ -2323,7 +2327,7 @@ def non_mi_part_reference(self) -> Optional[Union[str, int]]: return self._non_mi_part_reference @non_mi_part_reference.setter - def non_mi_part_reference(self, value): + def non_mi_part_reference(self, value: Optional[Union[str, int]]) -> None: self._non_mi_part_reference = value @property @@ -2338,7 +2342,7 @@ def part_number(self) -> str: return self._part_number @part_number.setter - def part_number(self, value): + def part_number(self, value: str) -> None: self._part_number = value @property @@ -2353,7 +2357,7 @@ def part_name(self) -> Optional[str]: return self._name @part_name.setter - def part_name(self, value): + def part_name(self, value: Optional[str]) -> None: self._name = value @property @@ -2368,7 +2372,7 @@ def external_id(self) -> Optional[str]: return self._external_id @external_id.setter - def external_id(self, value): + def external_id(self, value: Optional[str]) -> None: self._external_id = value @property @@ -2383,7 +2387,7 @@ def components(self) -> "List[Part]": return self._components @components.setter - def components(self, value): + def components(self, value: "List[Part]") -> None: self._components = value @property @@ -2399,7 +2403,7 @@ def specifications(self) -> "List[Specification]": return self._specifications @specifications.setter - def specifications(self, value): + def specifications(self, value: "List[Specification]") -> None: self._specifications = value @property @@ -2414,7 +2418,7 @@ def materials(self) -> "List[Material]": return self._materials @materials.setter - def materials(self, value): + def materials(self, value: "List[Material]") -> None: self._materials = value @property @@ -2429,7 +2433,7 @@ def substances(self) -> "List[Substance]": return self._substances @substances.setter - def substances(self, value): + def substances(self, value: "List[Substance]") -> None: self._substances = value @property @@ -2444,7 +2448,7 @@ def processes(self) -> "List[Process]": return self._processes @processes.setter - def processes(self, value): + def processes(self, value: "List[Process]") -> None: self._processes = value @property @@ -2460,7 +2464,7 @@ def rohs_exemptions(self) -> List[str]: return self._rohs_exemptions @rohs_exemptions.setter - def rohs_exemptions(self, value): + def rohs_exemptions(self, value: List[str]) -> None: self._rohs_exemptions = value @property @@ -2475,7 +2479,7 @@ def end_of_life_fates(self) -> "List[EndOfLifeFate]": return self._end_of_life_fates @end_of_life_fates.setter - def end_of_life_fates(self, value): + def end_of_life_fates(self, value: "List[EndOfLifeFate]") -> None: self._end_of_life_fates = value @@ -2538,7 +2542,7 @@ def name(self) -> str: return self._name @name.setter - def name(self, value): + def name(self, value: str) -> None: self._name = value @property @@ -2553,7 +2557,7 @@ def method(self) -> Optional[str]: return self._method @method.setter - def method(self, value): + def method(self, value: Optional[str]) -> None: self._method = value @property @@ -2568,7 +2572,7 @@ def data(self) -> List[Any]: return self._data @data.setter - def data(self, value): + def data(self, value: List[Any]) -> None: self._data = value @@ -2633,7 +2637,7 @@ def target_id(self) -> str: return self._target_id @target_id.setter - def target_id(self, value): + def target_id(self, value: str) -> None: self._target_id = value @property @@ -2649,7 +2653,7 @@ def source_id(self) -> str: return self.source_id @source_id.setter - def source_id(self, value): + def source_id(self, value: str) -> None: self._source_id = value @property @@ -2665,7 +2669,7 @@ def type_(self) -> str: return self._type @type_.setter - def type_(self, value): + def type_(self, value: str) -> None: self._type_ = value @property @@ -2680,7 +2684,7 @@ def value(self) -> "Union[str, UnittedValue]": return self._value @value.setter - def value(self, value): + def value(self, value: "Union[str, UnittedValue]") -> None: self._value = value @@ -2773,7 +2777,7 @@ def components(self) -> "List[Part]": return self._components @components.setter - def components(self, value): + def components(self, value: "List[Part]") -> None: self._components = value @property @@ -2788,7 +2792,7 @@ def transport_phase(self) -> "List[TransportStage]": return self._transport_phase @transport_phase.setter - def transport_phase(self, value): + def transport_phase(self, value: "List[TransportStage]") -> None: self._transport_phase = value @property @@ -2803,7 +2807,7 @@ def use_phase(self) -> "Optional[UsePhase]": return self._use_phase @use_phase.setter - def use_phase(self, value): + def use_phase(self, value: "Optional[UsePhase]") -> None: self._use_phase = value @property @@ -2818,7 +2822,7 @@ def location(self) -> "Optional[Location]": return self._location @location.setter - def location(self, value): + def location(self, value: "Optional[Location]") -> None: self._location = value @property @@ -2833,7 +2837,7 @@ def notes(self) -> "Optional[BoMDetails]": return self._notes @notes.setter - def notes(self, value): + def notes(self, value: "Optional[BoMDetails]") -> None: self._notes = value @property @@ -2848,7 +2852,7 @@ def annotations(self) -> "List[Annotation]": return self._annotations @annotations.setter - def annotations(self, value): + def annotations(self, value: "List[Annotation]") -> None: self._annotations = value @property @@ -2863,5 +2867,5 @@ def annotation_sources(self) -> "List[AnnotationSource]": return self._annotation_sources @annotation_sources.setter - def annotation_sources(self, value): + def annotation_sources(self, value: "List[AnnotationSource]") -> None: self._annotation_sources = value diff --git a/src/ansys/grantami/bomanalytics/bom_types/_bom_writer.py b/src/ansys/grantami/bomanalytics/bom_types/_bom_writer.py index ca86ca5c..623d5e2f 100644 --- a/src/ansys/grantami/bomanalytics/bom_types/_bom_writer.py +++ b/src/ansys/grantami/bomanalytics/bom_types/_bom_writer.py @@ -8,7 +8,6 @@ class BoMWriter: _schema: XMLSchema - _class_members = {} def __init__(self, schema: XMLSchema): """ @@ -22,15 +21,15 @@ def __init__(self, schema: XMLSchema): self._schema = schema def _get_qualified_name(self, obj: "BaseType", field_name: str) -> str: - namespace_prefix = [k for k, v in self._schema.namespaces.items() if v == obj._namespace] - if len(namespace_prefix) == 1: - namespace_prefix = namespace_prefix[0] - elif len(namespace_prefix) == 0: + namespace_prefixes = [k for k, v in self._schema.namespaces.items() if v == obj._namespace] + if len(namespace_prefixes) == 1: + namespace_prefix = namespace_prefixes[0] + elif len(namespace_prefixes) == 0: raise KeyError(f"Namespace {obj._namespace} does not exist in schema for object {type(obj)}") - elif "" in namespace_prefix: + elif "" in namespace_prefixes: return field_name else: - namespace_prefix = namespace_prefix[0] + namespace_prefix = namespace_prefixes[0] if field_name[0] == "@": return f"@{namespace_prefix}:{field_name[1:]}" return f"{namespace_prefix}:{field_name}" diff --git a/src/ansys/grantami/bomanalytics/bom_types/_builders.py b/src/ansys/grantami/bomanalytics/bom_types/_builders.py index a154aa98..e3339dcc 100644 --- a/src/ansys/grantami/bomanalytics/bom_types/_builders.py +++ b/src/ansys/grantami/bomanalytics/bom_types/_builders.py @@ -14,27 +14,62 @@ class _AttributeReferenceByNameBuilder: def __init__(self, root_builder: "AttributeReferenceBuilder") -> None: self._parent = root_builder - def with_table_name(self, table_name: str) -> "AttributeReferenceBuilder": + def with_table_name(self, table_name: str) -> "_FinalAttributeReferenceBuilder": + """ + Specify the table by name + + Parameters + ---------- + table_name : str + The name of the table (TODO - Display names?) + + Returns + ------- + _FinalAttributeReferenceBuilder + """ table_reference = PartialTableReference() table_reference.table_name = table_name self._set_table_reference(table_reference) - return self._parent + return _FinalAttributeReferenceBuilder(self._parent) + + def with_table_identity(self, table_identity: int) -> "_FinalAttributeReferenceBuilder": + """ + Specify the table by its identity - def with_table_identity(self, table_identity: int) -> "AttributeReferenceBuilder": + Parameters + ---------- + table_identity : int + The integer table identity + + Returns + ------- + _FinalAttributeReferenceBuilder + """ table_reference = PartialTableReference() table_reference.table_identity = table_identity self._set_table_reference(table_reference) - return self._parent + return _FinalAttributeReferenceBuilder(self._parent) + + def with_table_guid(self, table_guid: str) -> "_FinalAttributeReferenceBuilder": + """ + Specify the table by its GUID + + Parameters + ---------- + table_guid : str + The table GUID - def with_table_guid(self, table_guid: str) -> "AttributeReferenceBuilder": + Returns + ------- + _FinalAttributeReferenceBuilder + """ table_reference = PartialTableReference() table_reference.table_guid = table_guid self._set_table_reference(table_reference) - return self._parent + return _FinalAttributeReferenceBuilder(self._parent) def _set_table_reference(self, table_reference: "PartialTableReference") -> None: self._parent._build.table_reference = table_reference - self._parent._is_complete = True class _FinalAttributeReferenceBuilder: @@ -44,6 +79,13 @@ def __init__(self, source: "AttributeReferenceBuilder") -> None: self._source = source def build(self) -> "MIAttributeReference": + """ + Build the finished MI Attribute Reference + + Returns + ------- + MIAttributeReference + """ return self._source._build @@ -52,21 +94,64 @@ class AttributeReferenceBuilder: _is_complete: bool def __init__(self, *, db_key: str) -> None: - self._build = MIAttributeReference() - self._build.db_key = db_key - self._is_complete = False + """ + Create a MI Attribute Reference with a valid combination of properties. + + Parameters + ---------- + db_key : str + Database Key specifying the database the Attribute is in. + """ + self._build = MIAttributeReference(db_key=db_key) + + def with_attribute_identity(self, attribute_identity: int) -> "_FinalAttributeReferenceBuilder": + """ + Specify the attribute by its identity - def with_attribute_identity(self, attribute_identity: int) -> "AttributeReferenceBuilder": + Parameters + ---------- + attribute_identity : int + The attribute's identity. + + Returns + ------- + _FinalAttributeReferenceBuilder + """ self._build.attribute_identity = attribute_identity - self._is_complete = True - return self + return _FinalAttributeReferenceBuilder(self) + + def as_pseudo_attribute(self, pseudo_attribute: PseudoAttribute) -> "_FinalAttributeReferenceBuilder": + """ + Specify that the attribute is a Pseudoattribute + + Parameters + ---------- + pseudo_attribute : PseudoAttribute - def as_pseudo_attribute(self, pseudo_attribute: PseudoAttribute) -> "AttributeReferenceBuilder": + Returns + ------- + _FinalAttributeReferenceBuilder + """ self._build.pseudo = pseudo_attribute - self._is_complete = True - return self + return _FinalAttributeReferenceBuilder(self) - def with_attribute_name(self, attribute_name: str, is_standard_name: bool = False): + def with_attribute_name( + self, attribute_name: str, is_standard_name: bool = False + ) -> "_AttributeReferenceByNameBuilder": + """ + Specify the attribute by name, which may be a standard name. + + Parameters + ---------- + attribute_name : str + The attribute's name + is_standard_name : bool + If True, the attribute is defined by a standard name (default false) + + Returns + ------- + _AttributeReferenceByNameBuilder + """ self._build.attribute_name = attribute_name self._build.is_standard = is_standard_name return _AttributeReferenceByNameBuilder(self) @@ -76,28 +161,92 @@ class RecordReferenceBuilder: _build: "MIRecordReference" def __init__(self, *, db_key: str, record_uid: Optional[str] = None) -> None: - self._build = MIRecordReference() - self._build.db_key = db_key - self._build.record_uid = record_uid + """ + Create a MIRecordReference with a valid combination of properties + + Parameters + ---------- + db_key : str + Database key specifying the database to which the Record belongs. + record_uid : Optional[str] + Optional identifier to annotate this record reference, will be returned with the response unchanged. + """ + self._build = MIRecordReference(db_key=db_key, record_uid=record_uid) def with_record_history_id( self, record_history_id: int, *, record_version_number: Optional[int] = None ) -> "_FinalRecordReferenceBuilder": + """ + Specify the record by its history identity, and optionally the version number if the record is in a + Version-Controlled table. + + Parameters + ---------- + record_history_id : int + The record history identity + record_version_number : Optional[int] + If the record is in a Version-Controlled table, return a specific version of the record, otherwise + the latest released version will be returned. + + Returns + ------- + _FinalRecordReferenceBuilder + """ self._build.record_history_identity = record_history_id self._build.record_version_number = record_version_number return _FinalRecordReferenceBuilder(self) def with_record_guid(self, record_guid: str) -> "_FinalRecordReferenceBuilder": + """ + Specify the record by its GUID, this will specify an exact version if the table is Version-Controlled. + + Parameters + ---------- + record_guid : str + The record version GUID + + Returns + ------- + _FinalRecordReferenceBuilder + """ self._build.record_guid = record_guid return _FinalRecordReferenceBuilder(self) def with_record_history_guid(self, record_history_guid: str) -> "_FinalRecordReferenceBuilder": + """ + Specify the record by its History GUID. This will return the latest released version of the record. If a + specific version is required then use the ``with_record_guid`` method instead. + + Parameters + ---------- + record_history_guid : str + The record history GUID + + Returns + ------- + _FinalRecordReferenceBuilder + """ self._build.record_history_guid = record_history_guid return _FinalRecordReferenceBuilder(self) def with_lookup_value( self, *, lookup_value: str, lookup_attribute_reference: MIAttributeReference ) -> "_FinalRecordReferenceBuilder": + """ + Specify the record by a unique value on a short-text attribute. You must specify both the attribute and the + lookup value. If the value is not unique then an exception will be raised. + + Parameters + ---------- + lookup_value : str + The value identifying the record + lookup_attribute_reference : MIAttributeReference + The short-text attribute or compatible pseudoattribute to use for the lookup + + Returns + ------- + _FinalRecordReferenceBuilder + """ self._build.lookup_value = lookup_value self._build.lookup_attribute_reference = lookup_attribute_reference return _FinalRecordReferenceBuilder(self) @@ -110,4 +259,11 @@ def __init__(self, source: "RecordReferenceBuilder") -> None: self._source = source def build(self) -> "MIRecordReference": + """ + Build the finished MI Record Reference + + Returns + ------- + MIRecordReference + """ return self._source._build From 4406160a608a569ca4fb1faffb9544196ce8b153 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Fri, 22 Sep 2023 14:02:44 +0200 Subject: [PATCH 056/275] Maint: upgrade mypy (#38) * Remove definition factory and type * Define base query * Remove unnecessary typing * Annotate generic methods * Add missing annotations * Item results annotations * Remove commented out code --- .pre-commit-config.yaml | 2 +- .../grantami/bomanalytics/_allowed_types.py | 2 +- .../grantami/bomanalytics/_connection.py | 10 +- .../bomanalytics/_item_definitions.py | 79 +------ .../grantami/bomanalytics/_item_results.py | 66 +++--- .../grantami/bomanalytics/_query_results.py | 10 +- src/ansys/grantami/bomanalytics/queries.py | 205 ++++++++++-------- 7 files changed, 161 insertions(+), 213 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 57b7c7f6..68a34ece 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -32,7 +32,7 @@ repos: types: [python] require_serial: true files: "^(src/)" - additional_dependencies: ["mypy==0.910"] + additional_dependencies: ["mypy==1.5.1"] #- repo: https://github.com/pycqa/pydocstyle # rev: 6.3.0 diff --git a/src/ansys/grantami/bomanalytics/_allowed_types.py b/src/ansys/grantami/bomanalytics/_allowed_types.py index 78ed0ba0..c7793f10 100644 --- a/src/ansys/grantami/bomanalytics/_allowed_types.py +++ b/src/ansys/grantami/bomanalytics/_allowed_types.py @@ -67,7 +67,7 @@ def check_types(*args: Any, **kwargs: Any) -> T: result = any([_check_type_wrapper(value, allowed_type) for allowed_type in allowed_types]) if not result: raise TypeError(f'Incorrect type for value "{value}". Expected "{allowed_types}"') - return method(*args, **kwargs) # type: ignore[call-arg] + return method(*args, **kwargs) return check_types diff --git a/src/ansys/grantami/bomanalytics/_connection.py b/src/ansys/grantami/bomanalytics/_connection.py index 9f2a6629..82063017 100644 --- a/src/ansys/grantami/bomanalytics/_connection.py +++ b/src/ansys/grantami/bomanalytics/_connection.py @@ -56,6 +56,7 @@ MaterialImpactedSubstancesQueryResult, PartComplianceQueryResult, PartImpactedSubstancesQueryResult, + ResultBaseClass, SpecificationComplianceQueryResult, SpecificationImpactedSubstancesQueryResult, SubstanceComplianceQueryResult, @@ -72,6 +73,7 @@ SpecificationComplianceQuery, SpecificationImpactedSubstancesQuery, SubstanceComplianceQuery, + _BaseQuery, ) @@ -389,19 +391,19 @@ def run(self, query: "BomSustainabilityQuery") -> "BomSustainabilityQueryResult" def run(self, query: "BomSustainabilitySummaryQuery") -> "BomSustainabilitySummaryQueryResult": ... - def run(self, query): # type: ignore[no-untyped-def] + def run(self, query: Union["_BaseQuery", Type["Yaml"]]) -> Union["ResultBaseClass", str]: """Run a query against the Granta MI database. Parameters ---------- query - A compliance, impacted substance, or YAML query object. + A compliance, impacted substance, sustainability, or YAML query object. Returns ------- Query Result - Specific result object based on the provided query, which contains either the compliance or - impacted substances results. In the case of a YAML query, a string is returned. + Specific result object based on the provided query, which contains either the compliance, + impacted substances, or sustainability results. In the case of a YAML query, a string is returned. Raises ------ diff --git a/src/ansys/grantami/bomanalytics/_item_definitions.py b/src/ansys/grantami/bomanalytics/_item_definitions.py index 365846ee..51714171 100644 --- a/src/ansys/grantami/bomanalytics/_item_definitions.py +++ b/src/ansys/grantami/bomanalytics/_item_definitions.py @@ -7,7 +7,7 @@ from abc import ABC, abstractmethod from enum import Enum, auto import numbers -from typing import Callable, Dict, List, Optional, Type, Union, cast +from typing import Dict, Optional, Union, cast from ansys.grantami.bomanalytics_openapi import models # type: ignore[import] @@ -316,64 +316,6 @@ class TransportReference(RecordReference, ABC): """Extends RecordReference without changes, to re-define the class name, because it appears in the repr.""" -class AbstractBomFactory: - """Creates factories for a given type of API query. The request object in the low-level - API is the key to controlling which definition is created. - . - """ - - registry: Dict[Type[models.ModelBase], Type["BomItemDefinitionFactory"]] = {} - """Mapping between a factory class and the definition object it can create.""" - - @classmethod - def register(cls, request_types: List[Type[models.ModelBase]]) -> Callable: - """Registers a specific factory class with a low-level API request type. - - Parameters - ---------- - request_types - - Returns - ------- - Callable - The function that's being decorated. - """ - - def inner(item_factory: Type[BomItemDefinitionFactory]) -> Type[BomItemDefinitionFactory]: - for request_type in request_types: - cls.registry[request_type] = item_factory - return item_factory - - return inner - - @classmethod - def create_factory_for_request_type(cls, request_type: Type[models.ModelBase]) -> "BomItemDefinitionFactory": - """Instantiate and return a specific item definition factory. - - Parameters - ---------- - request_type - Request type for which a definition is needed. - - Returns - ------- - Factory - Instance of a factory to create the appropriate definitions. - - Raises - ------ - RuntimeError - Error raised if a request type is not registered to any factory. - """ - - try: - item_factory_class = cls.registry[request_type] - except KeyError as e: - raise RuntimeError(f'Unregistered request type "{request_type}"').with_traceback(e.__traceback__) - item_factory = item_factory_class() - return item_factory - - class BomItemDefinitionFactory(ABC): """Creates a specific definition object. This base factory class applies to definitions based on records only. @@ -400,12 +342,6 @@ def create_definition_by_record_history_guid(record_history_guid: str) -> "Recor pass -@AbstractBomFactory.register( - [ - models.GetComplianceForMaterialsRequest, - models.GetImpactedSubstancesForMaterialsRequest, - ] -) class MaterialDefinitionFactory(BomItemDefinitionFactory): """Creates material definition objects.""" @@ -479,12 +415,6 @@ def create_definition_by_material_id(material_id: str) -> MaterialDefinition: return MaterialDefinition(reference_type=ReferenceType.MaterialId, reference_value=material_id) -@AbstractBomFactory.register( - [ - models.GetComplianceForPartsRequest, - models.GetImpactedSubstancesForPartsRequest, - ] -) class PartDefinitionFactory(BomItemDefinitionFactory): """Creates part definition objects.""" @@ -558,12 +488,6 @@ def create_definition_by_part_number(part_number: str) -> PartDefinition: return PartDefinition(reference_type=ReferenceType.PartNumber, reference_value=part_number) -@AbstractBomFactory.register( - [ - models.GetComplianceForSpecificationsRequest, - models.GetImpactedSubstancesForSpecificationsRequest, - ] -) class SpecificationDefinitionFactory(BomItemDefinitionFactory): """Creates specification definition objects.""" @@ -641,7 +565,6 @@ def create_definition_by_specification_id(specification_id: str) -> Specificatio return SpecificationDefinition(reference_type=ReferenceType.SpecificationId, reference_value=specification_id) -@AbstractBomFactory.register([models.GetComplianceForSubstancesRequest]) class SubstanceComplianceDefinitionFactory(BomItemDefinitionFactory): """Creates substance compliance definition objects.""" diff --git a/src/ansys/grantami/bomanalytics/_item_results.py b/src/ansys/grantami/bomanalytics/_item_results.py index 7d6abb6e..9b126604 100644 --- a/src/ansys/grantami/bomanalytics/_item_results.py +++ b/src/ansys/grantami/bomanalytics/_item_results.py @@ -3,6 +3,7 @@ Defines the representations of the items (materials, parts, specifications, and substances) that are returned from queries. These are mostly extensions of the classes in the ``_item_definitions.py`` file. """ +from abc import ABC from copy import deepcopy from typing import ( TYPE_CHECKING, @@ -27,6 +28,7 @@ PartDefinition, PartReference, ProcessReference, + RecordReference, ReferenceType, SpecificationDefinition, SpecificationReference, @@ -705,13 +707,7 @@ def __repr__(self) -> str: ) -if TYPE_CHECKING: - mixin_base_class = PartDefinition -else: - mixin_base_class = object - - -class ImpactedSubstancesResultMixin(mixin_base_class): +class ImpactedSubstancesResultMixin: """Adds results from an impacted substances query to an ``ItemDefinition`` class, turning it into an ``ItemWithImpactedSubstancesResult`` class. @@ -799,6 +795,8 @@ def substances(self) -> List[ImpactedSubstance]: results.extend(legislation_result) return results + +class RecordWithImpactedSubstancesResultMixin(ImpactedSubstancesResultMixin, RecordReference): def __repr__(self) -> str: return ( f"<{self.__class__.__name__}({self._record_reference}), {len(self.substances_by_legislation)} legislations>" @@ -806,7 +804,7 @@ def __repr__(self) -> str: @ItemResultFactory.register("MaterialWithImpactedSubstances") -class MaterialWithImpactedSubstancesResult(ImpactedSubstancesResultMixin, MaterialDefinition): +class MaterialWithImpactedSubstancesResult(RecordWithImpactedSubstancesResultMixin, MaterialDefinition): """Retrieves an individual material that is included as part of an impacted substances query result. This object includes two categories of attributes: @@ -837,7 +835,7 @@ class MaterialWithImpactedSubstancesResult(ImpactedSubstancesResultMixin, Materi @ItemResultFactory.register("PartWithImpactedSubstances") -class PartWithImpactedSubstancesResult(ImpactedSubstancesResultMixin, PartDefinition): +class PartWithImpactedSubstancesResult(RecordWithImpactedSubstancesResultMixin, PartDefinition): """Retrieves an individual part included as part of an impacted substances query result. This object includes two categories of attributes: @@ -868,7 +866,7 @@ class PartWithImpactedSubstancesResult(ImpactedSubstancesResultMixin, PartDefini @ItemResultFactory.register("SpecificationWithImpactedSubstances") -class SpecificationWithImpactedSubstancesResult(ImpactedSubstancesResultMixin, SpecificationDefinition): +class SpecificationWithImpactedSubstancesResult(RecordWithImpactedSubstancesResultMixin, SpecificationDefinition): """Retrieves an individual specification included as part of an impacted substances query result. This object includes two categories of attributes: @@ -926,7 +924,13 @@ def __repr__(self) -> str: return f"<{self.__class__.__name__}(), {len(self.substances_by_legislation)} legislations>" -class ComplianceResultMixin(mixin_base_class): +class HasIndicators(ABC): + """Abstract base class to define the existence of indicator definitions.""" + + _indicator_definitions: Dict[str, Union["WatchListIndicator", "RoHSIndicator"]] + + +class ComplianceResultMixin(HasIndicators, RecordReference): """Adds results from a compliance query to a class deriving from ``ItemDefinition`` item, turning it into an ``[ItemType]WithComplianceResult`` class. @@ -972,8 +976,6 @@ class ComplianceResultMixin(mixin_base_class): 'item' is a 'Part', 'Specification', 'Material', 'Coating', or 'Substance'. """ - _definition = None # Required for linter, is supplied by the main RecordDefinition-derived class - def __init__( self, indicator_results: List[models.CommonIndicatorResult], @@ -996,13 +998,7 @@ def __repr__(self) -> str: return f"<{self.__class__.__name__}({self._record_reference}), {len(self.indicators)} indicators>" -if TYPE_CHECKING: - child_base_class = ComplianceResultMixin -else: - child_base_class = object - - -class ChildSubstanceWithComplianceMixin(child_base_class): +class ChildSubstanceWithComplianceMixin(HasIndicators, ABC): """Adds a ``substance`` attribute to an ``ItemWithComplianceResult`` class and populates it with child substances. See the ``ComplianceResultMixin`` notes for more background on compliance query results and BoM structures. @@ -1045,7 +1041,7 @@ def _add_child_substances(self, child_substances: List[models.CommonSubstanceWit self._substances.append(child_substance_with_compliance) -class ChildMaterialWithComplianceMixin(child_base_class): +class ChildMaterialWithComplianceMixin(HasIndicators, ABC): """Adds a ``materials`` attribute to an ``ItemWithComplianceResult`` class and populates it with child materials. See the ``ComplianceResultMixin`` notes for more background on compliance query results and BoM structures. @@ -1094,7 +1090,7 @@ def _add_child_materials( self._materials.append(child_material_with_compliance) -class ChildSpecificationWithComplianceMixin(child_base_class): +class ChildSpecificationWithComplianceMixin(HasIndicators, ABC): """Adds a '`specification`' attribute to an ``ItemWithComplianceResult`` class and populates it with child specifications. @@ -1148,7 +1144,7 @@ def _add_child_specifications( self._specifications.append(child_specification_with_compliance) -class ChildPartWithComplianceMixin(child_base_class): +class ChildPartWithComplianceMixin(HasIndicators, ABC): """Adds a ``part`` attribute to an ``ItemWithComplianceResult`` class and populates it with child parts. See the ``ComplianceResultMixin`` notes for more background on compliance query results and BoM structures. @@ -1201,7 +1197,7 @@ def _add_child_parts( self._parts.append(child_part_with_compliance) -class ChildCoatingWithComplianceMixin(child_base_class): +class ChildCoatingWithComplianceMixin(HasIndicators, ABC): """Adds a ``coating`` attribute to an ``ItemWithComplianceResult`` class and populates it with child coatings. See the ``ComplianceResultMixin`` notes for more background on compliance query results and BoM structures. @@ -1387,7 +1383,7 @@ def unit(self) -> str: return self._unit -class SustainabilityResultMixin(mixin_base_class): +class SustainabilityResultMixin: """Adds results from a sustainability query to a class. A Bom-sustainability query returns a BoM-like results object, with additional sustainability information attached @@ -1429,7 +1425,7 @@ def climate_change(self) -> ValueWithUnit: return self._climate_change -class MassResultMixin(mixin_base_class): +class MassResultMixin: """Adds results from a sustainability query to a class. A Bom-sustainability query returns a BoM-like results object, with additional sustainability information attached @@ -1467,7 +1463,7 @@ def reported_mass(self) -> ValueWithUnit: return self._reported_mass -class ReusabilityResultMixin(mixin_base_class): +class ReusabilityResultMixin: """Adds results from a sustainability query to a class. A Bom-sustainability query returns a BoM-like results object, with additional sustainability information attached @@ -1525,7 +1521,7 @@ def downcycle(self) -> bool: return self._downcycle -class ChildMaterialWithSustainabilityMixin(mixin_base_class): +class ChildMaterialWithSustainabilityMixin: """Provides the implementation for managing children materials, by adding a ``materials`` property to the class. Parameters @@ -1566,7 +1562,7 @@ def _add_child_materials( self._materials.append(child_material_with_sustainability) -class ChildPartWithSustainabilityMixin(mixin_base_class): +class ChildPartWithSustainabilityMixin: """Provides the implementation for managing children parts, by adding a ``parts`` property to the class. Parameters @@ -1607,7 +1603,7 @@ def _add_child_parts( self._parts.append(child_part_with_sustainability) -class ChildSpecificationWithSustainabilityMixin(mixin_base_class): +class ChildSpecificationWithSustainabilityMixin: """Provides the implementation for managing children specifications, by adding a ``specifications`` property to the class. @@ -1649,7 +1645,7 @@ def _add_child_specifications( self._specifications.append(child_specification_with_sustainability) -class ChildSubstanceMixin(mixin_base_class): +class ChildSubstanceMixin: """Provides the implementation for managing children substances, by adding a ``substances`` property to the class. @@ -1687,7 +1683,7 @@ def _add_child_substances(self, child_substances: List[models.CommonSubstanceRef self._substances.append(child_substance_result) -class ChildCoatingMixin(mixin_base_class): +class ChildCoatingMixin: """Provides the implementation for managing children coatings, by adding a ``coatings`` property to the class. Parameters @@ -1724,7 +1720,7 @@ def _add_child_coatings(self, child_coatings: List[models.CommonCoatingReference self._coatings.append(child_coating_result) -class ChildProcessWithSustainabilityMixin(mixin_base_class): +class ChildProcessWithSustainabilityMixin: """Provides the implementation for managing children processes, by adding a ``processes`` property to the class. Parameters @@ -1911,7 +1907,7 @@ class TransportWithSustainabilityResult( # TODO is the record reference note relevant? -class SustainabilitySummaryMixin(mixin_base_class): +class SustainabilitySummaryMixin: # TODO reuse existing SusResultMixin? """Adds sustainability summary results to a class. @@ -1975,7 +1971,7 @@ def climate_change_percentage(self) -> float: return self._climate_change_percentage -class NamedItemMixin(mixin_base_class): +class NamedItemMixin: """Adds a name to a class. Parameters diff --git a/src/ansys/grantami/bomanalytics/_query_results.py b/src/ansys/grantami/bomanalytics/_query_results.py index 01f220ab..0e0020fb 100644 --- a/src/ansys/grantami/bomanalytics/_query_results.py +++ b/src/ansys/grantami/bomanalytics/_query_results.py @@ -5,7 +5,7 @@ """ from abc import ABC from collections import defaultdict, namedtuple -from typing import TYPE_CHECKING, Any, Callable, Dict, List, Type, Union +from typing import Any, Callable, Dict, List, Type, Union from ansys.grantami.bomanalytics_openapi import models # type: ignore[import] @@ -28,10 +28,6 @@ ) from .indicators import RoHSIndicator, WatchListIndicator -if TYPE_CHECKING: - from .queries import Query_Result - - LogMessage = namedtuple("LogMessage", ["severity", "message"]) """ Message returned by Granta MI when running the query. @@ -83,7 +79,7 @@ def create_result( results: Union[List[models.ModelBase], models.ModelBase], messages: List[models.CommonLogEntry], **kwargs: Dict, - ) -> "Query_Result": + ) -> "ResultBaseClass": """Returns a specific query result. Uses the type of the ``results`` parameter to determine which specific ``Query_Result`` object to return. @@ -119,7 +115,7 @@ def create_result( except KeyError as e: raise RuntimeError(f"Unregistered response type" f' "{response_type}"').with_traceback(e.__traceback__) - item_result: Query_Result = item_factory_class(results=results, messages=messages, **kwargs) + item_result: ResultBaseClass = item_factory_class(results=results, messages=messages, **kwargs) return item_result diff --git a/src/ansys/grantami/bomanalytics/queries.py b/src/ansys/grantami/bomanalytics/queries.py index 1843466c..3444ce4e 100644 --- a/src/ansys/grantami/bomanalytics/queries.py +++ b/src/ansys/grantami/bomanalytics/queries.py @@ -3,17 +3,6 @@ Describes and implements the main interface for the Bom Analytics API. The builder objects define the creation, validation, and execution of queries for impacted substances and compliance. One separate static class outside the main hierarchy implements the YAML API endpoint. - -Attributes ----------- -Query_Builder - Generic type for builder configuration methods. Ensures that the specific subclass of the - object to which the method is bound is hinted as the return type. For example, if ``.with_record_guid()`` - is called on a ``SpecificationCompliance`` object, the return type is correctly identified as - ``SpecificationCompliance``. -Query_Result - Type of the result object, which can be any type that inherits from either the ``ComplianceBaseClass`` or - ``ImpactedSubstancesBaseClass`` class. """ from abc import ABC, abstractmethod @@ -38,16 +27,36 @@ from ._allowed_types import validate_argument_type from ._exceptions import GrantaMIException -from ._item_definitions import AbstractBomFactory, PartDefinition, RecordDefinition # noqa: F401 +from ._item_definitions import ( + BomItemDefinitionFactory, + MaterialDefinitionFactory, + PartDefinitionFactory, + RecordDefinition, + SpecificationDefinitionFactory, + SubstanceComplianceDefinitionFactory, +) from ._logger import logger -from ._query_results import ComplianceBaseClass, ImpactedSubstancesBaseClass, QueryResultFactory +from ._query_results import QueryResultFactory, ResultBaseClass from .indicators import RoHSIndicator, WatchListIndicator, _Indicator if TYPE_CHECKING: from ._connection import Connection # noqa: F401 -Query_Builder = TypeVar("Query_Builder", covariant=True, bound=Union["_BaseQueryBuilder", "_ApiMixin"]) -Query_Result = TypeVar("Query_Result", covariant=True, bound=Union[ComplianceBaseClass, ImpactedSubstancesBaseClass]) + +_ImpactedSubstanceQuery = TypeVar("_ImpactedSubstanceQuery", bound="_ImpactedSubstanceMixin") +_ComplianceQuery = TypeVar("_ComplianceQuery", bound="_ComplianceMixin") +_SustainabilityQuery = TypeVar("_SustainabilityQuery", bound="_SustainabilityMixin") + +_RecordQuery = TypeVar("_RecordQuery", bound="_RecordBasedQueryBuilder") +_MaterialQuery = TypeVar("_MaterialQuery", bound="_MaterialQueryBuilder") +_PartQuery = TypeVar("_PartQuery", bound="_PartQueryBuilder") +_SpecificationQuery = TypeVar("_SpecificationQuery", bound="_SpecificationQueryBuilder") +_SubstanceQuery = TypeVar("_SubstanceQuery", bound="_SubstanceQueryBuilder") + +_BomQuery = TypeVar("_BomQuery", bound="_BomQueryBuilder") +_Bom1711Query = TypeVar("_Bom1711Query", bound="_Bom1711QueryBuilder") +_Bom2301Query = TypeVar("_Bom2301Query", bound="_Bom2301QueryBuilder") + EXCEPTION_MAP = { "critical-error": logger.critical, @@ -58,6 +67,16 @@ """Map between log severity strings returned by the Granta MI server and Python logger methods.""" +class _BaseQuery(ABC): + """Interface expected by the client.""" + + api_class: Type[api.ApiBase] + + @abstractmethod + def _run_query(self, api_instance: api.ApiBase, static_arguments: Dict) -> Union[ResultBaseClass, str]: + raise NotImplementedError + + class _BaseQueryDataManager(ABC): """Outlines an interface for managing *items* to provide to the query. @@ -156,6 +175,11 @@ def messages(self) -> List[models.CommonLogEntry]: """Messages returned by the server when processing all items in ``_item_definitions``""" return self._messages + @property + @abstractmethod + def batched_arguments(self) -> Any: + raise NotImplementedError + class _RecordQueryDataManager(_BaseQueryDataManager): """Stores records for use in queries and generates the list of models to send to the server. @@ -173,7 +197,7 @@ def __init__(self, item_type_name: str = "", batch_size: Optional[int] = None) - self._item_definitions = [] self._item_results = [] - self.item_type_name = item_type_name + self.item_type_name: str = item_type_name """ Name of the item collection as defined by the low-level API. For example, ``materials`` or ``parts``. """ self.batch_size: Optional[int] = batch_size @@ -268,6 +292,8 @@ def _extract_results_from_response(self, response: models.ModelBase) -> List[mod class _BaseQueryBuilder(ABC): """Provides the base class for all queries.""" + _data: "_BaseQueryDataManager" + def _validate_items(self) -> None: """Perform pre-flight checks on the items that have been added to the query. @@ -277,7 +303,7 @@ def _validate_items(self) -> None: Error to raise if no items have been added to the query, warning that the response will be empty. """ - if not self._data.populated_inputs: # type: ignore[attr-defined] + if not self._data.populated_inputs: warnings.warn( f"No {self._data.item_type_name} have been added to the " # type: ignore[attr-defined] "query. Server response will be empty.", @@ -293,14 +319,16 @@ class _RecordBasedQueryBuilder(_BaseQueryBuilder, ABC): operate on multiple items. """ + _definition_factory: BomItemDefinitionFactory + def __init__(self) -> None: - self._data = _RecordQueryDataManager() + self._data: "_RecordQueryDataManager" = _RecordQueryDataManager() def __repr__(self) -> str: return f"<{self.__class__.__name__}: {self._data}>" @validate_argument_type(int) - def with_batch_size(self: Query_Builder, batch_size: int) -> Query_Builder: + def with_batch_size(self: _RecordQuery, batch_size: int) -> _RecordQuery: """Set the number of records to include in a single request for this query. Default values are set based on typical usage of the Restricted Substances database. This value can be changed @@ -348,7 +376,7 @@ def with_batch_size(self: Query_Builder, batch_size: int) -> Query_Builder: return self @validate_argument_type([int], {int}) - def with_record_history_ids(self: Query_Builder, record_history_identities: List[int]) -> Query_Builder: + def with_record_history_ids(self: _RecordQuery, record_history_identities: List[int]) -> _RecordQuery: """Add a list or set of record history identities to a query. Parameters @@ -381,7 +409,7 @@ def with_record_history_ids(self: Query_Builder, record_history_identities: List return self @validate_argument_type([str], {str}) - def with_record_history_guids(self: Query_Builder, record_history_guids: List[str]) -> Query_Builder: + def with_record_history_guids(self: _RecordQuery, record_history_guids: List[str]) -> _RecordQuery: """Add a list or set of record history GUIDs to a query. Parameters @@ -415,7 +443,7 @@ def with_record_history_guids(self: Query_Builder, record_history_guids: List[st return self @validate_argument_type([str], {str}) - def with_record_guids(self: Query_Builder, record_guids: List[str]) -> Query_Builder: + def with_record_guids(self: _RecordQuery, record_guids: List[str]) -> _RecordQuery: """Add a list or set of record GUIDs to a query. Parameters @@ -447,7 +475,7 @@ def with_record_guids(self: Query_Builder, record_guids: List[str]) -> Query_Bui return self @validate_argument_type([{str: str}]) - def with_stk_records(self: Query_Builder, stk_records: List[Dict[str, str]]) -> Query_Builder: + def with_stk_records(self: _RecordQuery, stk_records: List[Dict[str, str]]) -> _RecordQuery: """Add a list of records generated by the Granta MI Scripting Toolkit for Python. This method should only be used with the corresponding method in the MI Scripting Toolkit that generates a @@ -490,17 +518,19 @@ def with_stk_records(self: Query_Builder, stk_records: List[Dict[str, str]]) -> """ record_guids: List[str] = [r["record_guid"] for r in stk_records] - query_builder: Query_Builder = self.with_record_guids(record_guids) + query_builder: _RecordQuery = self.with_record_guids(record_guids) return query_builder -class _ApiMixin: +class _ApiMixin(_BaseQueryBuilder, _BaseQuery, ABC): """Provides API-specific mixins. This base class describes generic properties of a call to an API, such as calling the API and processing results. It also defines abstract concepts related to the parameter dimension of a query, including validation. """ + _request_type: Type[models.ModelBase] + def __init__(self) -> None: super().__init__() self._request_type: Type[models.ModelBase] @@ -523,20 +553,20 @@ def _call_api(self, api_method: Callable[..., models.ModelBase], arguments: Dict """ self._validate_parameters() - self._validate_items() # type: ignore[attr-defined] - self._data.initialize_results() # type: ignore[attr-defined] - for batch in self._data.batched_arguments: # type: ignore[attr-defined] + self._validate_items() + self._data.initialize_results() + for batch in self._data.batched_arguments: args = {**arguments, **batch} request = self._request_type(**args) response = api_method(body=request) - self._data.append_response(response) # type: ignore[attr-defined] + self._data.append_response(response) @abstractmethod def _run_query( self, api_instance: Union[api.ComplianceApi, api.ImpactedSubstancesApi, api.SustainabilityApi], static_arguments: Dict, - ) -> Query_Result: + ) -> ResultBaseClass: """ Abstract method. Inherited classes must pass the current state of the query as arguments to _call_api and handle the response. @@ -589,16 +619,13 @@ def __init__(self) -> None: and so only the reference to the class is stored here, not the instance itself.""" def __repr__(self) -> str: - result = ( - f"<{self.__class__.__name__}: {self._data}," # type: ignore[attr-defined] - f" {len(self._indicators)} indicators>" - ) + result = f"<{self.__class__.__name__}: {self._data}," f" {len(self._indicators)} indicators>" return result @validate_argument_type([_Indicator], {_Indicator}) def with_indicators( - self: Query_Builder, indicators: List[Union[WatchListIndicator, RoHSIndicator]] - ) -> Query_Builder: + self: _ComplianceQuery, indicators: List[Union[WatchListIndicator, RoHSIndicator]] + ) -> _ComplianceQuery: """Add a list or set of :class:`~ansys.grantami.bomanalytics.indicators.WatchListIndicator` or :class:`~ansys.grantami.bomanalytics.indicators.RoHSIndicator` objects to evaluate compliance against. @@ -631,7 +658,7 @@ def with_indicators( self._indicators[value.name] = value return self - def _run_query(self, api_instance: api.ComplianceApi, static_arguments: Dict) -> Query_Result: + def _run_query(self, api_instance: api.ComplianceApi, static_arguments: Dict) -> ResultBaseClass: """Passes the current state of the query as arguments to Granta MI and returns the results. This method should not be used by an end user. The ``BomAnalyticsClient.run()`` method should @@ -668,9 +695,9 @@ def _run_query(self, api_instance: api.ComplianceApi, static_arguments: Dict) -> logger.debug(f"Indicators: {indicators_text}") self._call_api(api_method, arguments) - result: Query_Result = QueryResultFactory.create_result( - results=self._data.item_results, # type: ignore[attr-defined] - messages=self._data.messages, # type: ignore[attr-defined] + result: ResultBaseClass = QueryResultFactory.create_result( + results=self._data.item_results, + messages=self._data.messages, indicator_definitions=self._indicators, ) return result @@ -713,14 +740,11 @@ def __init__(self) -> None: and so only the reference to the class is stored here, not the instance itself.""" def __repr__(self) -> str: - result = ( - f"<{self.__class__.__name__}: {self._data}, " # type: ignore[attr-defined] - f"{len(self._legislations)} legislations>" - ) + result = f"<{self.__class__.__name__}: {self._data}, " f"{len(self._legislations)} legislations>" return result @validate_argument_type([str], {str}) - def with_legislations(self: Query_Builder, legislation_names: List[str]) -> Query_Builder: + def with_legislations(self: _ImpactedSubstanceQuery, legislation_names: List[str]) -> _ImpactedSubstanceQuery: """Add a list or set of legislations to retrieve the impacted substances for. Legislations are identified based on their ``Short title`` attribute value. @@ -744,7 +768,7 @@ def with_legislations(self: Query_Builder, legislation_names: List[str]) -> Quer self._legislations.extend(legislation_names) return self - def _run_query(self, api_instance: api.ImpactedSubstancesApi, static_arguments: Dict) -> Query_Result: + def _run_query(self, api_instance: api.ImpactedSubstancesApi, static_arguments: Dict) -> ResultBaseClass: """Passes the current state of the query as arguments to Granta MI and returns the results. Gets the bound method for this particular query from the ``api_instance`` parameter and passes it to the @@ -770,9 +794,9 @@ def _run_query(self, api_instance: api.ImpactedSubstancesApi, static_arguments: logger.debug(f"Legislation names: {legislations_text}") self._call_api(api_method, arguments) - result: Query_Result = QueryResultFactory.create_result( - results=self._data.item_results, # type: ignore[attr-defined] - messages=self._data.messages, # type: ignore[attr-defined] + result: ResultBaseClass = QueryResultFactory.create_result( + results=self._data.item_results, + messages=self._data.messages, ) return result @@ -797,13 +821,15 @@ class _MaterialQueryBuilder(_RecordBasedQueryBuilder, ABC): """Provides the subclass for all queries where the items added to the query are direct references to material records.""" + _definition_factory = MaterialDefinitionFactory() + def __init__(self) -> None: super().__init__() self._data.item_type_name = "materials" self._data.batch_size = 100 @validate_argument_type([str], {str}) - def with_material_ids(self: Query_Builder, material_ids: List[str]) -> Query_Builder: + def with_material_ids(self: _MaterialQuery, material_ids: List[str]) -> _MaterialQuery: """Add a list or set of materials to a material query, referenced by the material ID attribute value. Material IDs are valid for both ``MaterialUniverse`` and ``Materials - in house`` records. @@ -867,7 +893,6 @@ class MaterialComplianceQuery(_ComplianceMixin, _MaterialQueryBuilder): def __init__(self) -> None: super().__init__() self._request_type = models.GetComplianceForMaterialsRequest - self._definition_factory = AbstractBomFactory.create_factory_for_request_type(self._request_type) self._api_method = "post_compliance_materials" @@ -896,7 +921,6 @@ class MaterialImpactedSubstancesQuery(_ImpactedSubstanceMixin, _MaterialQueryBui def __init__(self) -> None: super().__init__() self._request_type = models.GetImpactedSubstancesForMaterialsRequest - self._definition_factory = AbstractBomFactory.create_factory_for_request_type(self._request_type) self._api_method = "post_impactedsubstances_materials" @@ -904,13 +928,15 @@ class _PartQueryBuilder(_RecordBasedQueryBuilder, ABC): """Provides the subclass for all queries where the items added to the query are direct references to part records.""" + _definition_factory = PartDefinitionFactory() + def __init__(self) -> None: super().__init__() self._data.item_type_name = "parts" self._data.batch_size = 10 @validate_argument_type([str], {str}) - def with_part_numbers(self: Query_Builder, part_numbers: List[str]) -> Query_Builder: + def with_part_numbers(self: _PartQuery, part_numbers: List[str]) -> _PartQuery: """Add a list or set of parts to a part query, referenced by part number. Parameters @@ -973,7 +999,6 @@ class PartComplianceQuery(_ComplianceMixin, _PartQueryBuilder): def __init__(self) -> None: super().__init__() self._request_type = models.GetComplianceForPartsRequest - self._definition_factory = AbstractBomFactory.create_factory_for_request_type(self._request_type) self._api_method = "post_compliance_parts" @@ -1002,7 +1027,6 @@ class PartImpactedSubstancesQuery(_ImpactedSubstanceMixin, _PartQueryBuilder): def __init__(self) -> None: super().__init__() self._request_type = models.GetImpactedSubstancesForPartsRequest - self._definition_factory = AbstractBomFactory.create_factory_for_request_type(self._request_type) self._api_method = "post_impactedsubstances_parts" @@ -1010,13 +1034,15 @@ class _SpecificationQueryBuilder(_RecordBasedQueryBuilder, ABC): """Provides the subclass for all queries where the items added to the query are direct references to specification records.""" + _definition_factory = SpecificationDefinitionFactory() + def __init__(self) -> None: super().__init__() self._data.item_type_name = "specifications" self._data.batch_size = 10 @validate_argument_type([str], {str}) - def with_specification_ids(self: Query_Builder, specification_ids: List[str]) -> Query_Builder: + def with_specification_ids(self: _SpecificationQuery, specification_ids: List[str]) -> _SpecificationQuery: """Add a list or set of specifications to a specification query, referenced by specification ID. Parameters @@ -1082,7 +1108,6 @@ class SpecificationComplianceQuery(_ComplianceMixin, _SpecificationQueryBuilder) def __init__(self) -> None: super().__init__() self._request_type = models.GetComplianceForSpecificationsRequest - self._definition_factory = AbstractBomFactory.create_factory_for_request_type(self._request_type) self._api_method = "post_compliance_specifications" @@ -1112,7 +1137,6 @@ class SpecificationImpactedSubstancesQuery(_ImpactedSubstanceMixin, _Specificati def __init__(self) -> None: super().__init__() self._request_type = models.GetImpactedSubstancesForSpecificationsRequest - self._definition_factory = AbstractBomFactory.create_factory_for_request_type(self._request_type) self._api_method = "post_impactedsubstances_specifications" @@ -1120,13 +1144,15 @@ class _SubstanceQueryBuilder(_RecordBasedQueryBuilder, ABC): """Provides the subclass for all queries where the items added to the query are direct references to substance records.""" + _definition_factory = SubstanceComplianceDefinitionFactory() + def __init__(self) -> None: super().__init__() self._data.item_type_name = "substances" self._data.batch_size = 500 @validate_argument_type([str], {str}) - def with_cas_numbers(self: Query_Builder, cas_numbers: List[str]) -> Query_Builder: + def with_cas_numbers(self: _SubstanceQuery, cas_numbers: List[str]) -> _SubstanceQuery: """Add a list or set of CAS numbers to a substance query. The amount of substance in the material is set to 100%. @@ -1158,7 +1184,7 @@ def with_cas_numbers(self: Query_Builder, cas_numbers: List[str]) -> Query_Build return self @validate_argument_type([str], {str}) - def with_ec_numbers(self: Query_Builder, ec_numbers: List[str]) -> Query_Builder: + def with_ec_numbers(self: "_SubstanceQueryBuilder", ec_numbers: List[str]) -> "_SubstanceQueryBuilder": """Add a list or set of EC numbers to a substance query. The amount of substance in the material is set to 100%. @@ -1190,7 +1216,7 @@ def with_ec_numbers(self: Query_Builder, ec_numbers: List[str]) -> Query_Builder return self @validate_argument_type([str], {str}) - def with_chemical_names(self: Query_Builder, chemical_names: List[str]) -> Query_Builder: + def with_chemical_names(self: "_SubstanceQueryBuilder", chemical_names: List[str]) -> "_SubstanceQueryBuilder": """Add a list or set of chemical names to a substance query. The amount of substance in the material is set to 100%. @@ -1223,8 +1249,8 @@ def with_chemical_names(self: Query_Builder, chemical_names: List[str]) -> Query @validate_argument_type([(int, Number)], {(int, Number)}) def with_record_history_ids_and_amounts( - self: Query_Builder, record_history_identities_and_amounts: List[Tuple[int, float]] - ) -> Query_Builder: + self: "_SubstanceQueryBuilder", record_history_identities_and_amounts: List[Tuple[int, float]] + ) -> "_SubstanceQueryBuilder": """Add a list or set of record history identities and amounts to a substance query. The identity and quantity pairs are expressed as a tuple, with the quantity in units of wt. %. @@ -1261,8 +1287,8 @@ def with_record_history_ids_and_amounts( @validate_argument_type([(str, Number)], {(str, Number)}) def with_record_history_guids_and_amounts( - self: Query_Builder, record_history_guids_and_amounts: List[Tuple[str, float]] - ) -> Query_Builder: + self: "_SubstanceQueryBuilder", record_history_guids_and_amounts: List[Tuple[str, float]] + ) -> "_SubstanceQueryBuilder": """Add a list or set of record history GUID and amounts to a substance query. The GUID and quantity pairs are expressed as a tuple, with the quantity in units of wt. %. @@ -1302,8 +1328,8 @@ def with_record_history_guids_and_amounts( @validate_argument_type([(str, Number)], {(str, Number)}) def with_record_guids_and_amounts( - self: Query_Builder, record_guids_and_amounts: List[Tuple[str, float]] - ) -> Query_Builder: + self: "_SubstanceQueryBuilder", record_guids_and_amounts: List[Tuple[str, float]] + ) -> "_SubstanceQueryBuilder": """Add a list or set of record GUIDs and amounts to a substance query. The GUID and quantity pairs are expressed as a tuple, with the quantity in units of wt. %. @@ -1341,8 +1367,8 @@ def with_record_guids_and_amounts( @validate_argument_type([(str, Number)], {(str, Number)}) def with_cas_numbers_and_amounts( - self: Query_Builder, cas_numbers_and_amounts: List[Tuple[str, float]] - ) -> Query_Builder: + self: "_SubstanceQueryBuilder", cas_numbers_and_amounts: List[Tuple[str, float]] + ) -> "_SubstanceQueryBuilder": """Add a list or set of CAS numbers and amounts to a substance query. The CAS numbers and quantity pairs are expressed as a tuple, with the quantity in units of wt. %. @@ -1377,8 +1403,8 @@ def with_cas_numbers_and_amounts( @validate_argument_type([(str, Number)], {(str, Number)}) def with_ec_numbers_and_amounts( - self: Query_Builder, ec_numbers_and_amounts: List[Tuple[str, float]] - ) -> Query_Builder: + self: "_SubstanceQueryBuilder", ec_numbers_and_amounts: List[Tuple[str, float]] + ) -> "_SubstanceQueryBuilder": """Add a list or set of EC numbers and amounts to a substance query. The EC numbers and quantity pairs are expressed as a tuple, with the quantity in units of wt. %. @@ -1414,8 +1440,8 @@ def with_ec_numbers_and_amounts( @validate_argument_type([(str, Number)], {(str, Number)}) def with_chemical_names_and_amounts( - self: Query_Builder, chemical_names_and_amounts: List[Tuple[str, float]] - ) -> Query_Builder: + self: "_SubstanceQueryBuilder", chemical_names_and_amounts: List[Tuple[str, float]] + ) -> "_SubstanceQueryBuilder": """Add a list or set of chemical names and amounts to a substance query. The chemical names and quantity pairs are expressed as a tuple, with the quantity in units of wt. %. @@ -1490,7 +1516,6 @@ class SubstanceComplianceQuery(_ComplianceMixin, _SubstanceQueryBuilder): def __init__(self) -> None: super().__init__() self._request_type = models.GetComplianceForSubstancesRequest - self._definition_factory = AbstractBomFactory.create_factory_for_request_type(self._request_type) self._api_method = "post_compliance_substances" @@ -1564,10 +1589,10 @@ class _BomQueryBuilder(_BaseQueryBuilder, ABC): bom_version: Union[Literal["bom_xml1711"], Literal["bom_xml2301"]] def __init__(self) -> None: - self._data = _BomQueryDataManager(self.bom_version) + self._data: _BomQueryDataManager = _BomQueryDataManager(self.bom_version) @abstractmethod - def with_bom(self: Query_Builder, bom: str) -> Query_Builder: + def with_bom(self: _BomQuery, bom: str) -> _BomQuery: """Set the BoM to use for the query. Abstract method must be implemented in sub-classes. @@ -1589,8 +1614,9 @@ def with_bom(self: Query_Builder, bom: str) -> Query_Builder: class _Bom1711QueryBuilder(_BomQueryBuilder): bom_version: Literal["bom_xml1711"] = "bom_xml1711" + # Method is redefined to override the docstring. @validate_argument_type(str) - def with_bom(self: Query_Builder, bom: str) -> Query_Builder: + def with_bom(self: _Bom1711Query, bom: str) -> _Bom1711Query: """Set the BoM to use for the query. The BoM must be in the Ansys Granta 1711 XML BoM format. @@ -1626,8 +1652,9 @@ def with_bom(self: Query_Builder, bom: str) -> Query_Builder: class _Bom2301QueryBuilder(_BomQueryBuilder): bom_version: Literal["bom_xml2301"] = "bom_xml2301" + # Method is redefined to override the docstring. @validate_argument_type(str) - def with_bom(self: Query_Builder, bom: str) -> Query_Builder: + def with_bom(self: _Bom2301Query, bom: str) -> _Bom2301Query: """Set the BoM to use for the query. The BoM must be in the Ansys Granta 2301 XML BoM format. @@ -1727,7 +1754,7 @@ def __init__(self) -> None: self._api_method = "post_impactedsubstances_bom1711" -class Yaml: +class Yaml(_BaseQuery): """Gets the YAML description of the underlying REST API. Because the API is fully implemented in this package, the description is unlikely to be @@ -1748,7 +1775,7 @@ class Yaml: api_class = api.DocumentationApi @staticmethod - def _run_query(api_instance: api.DocumentationApi, **kwargs: Dict) -> str: + def _run_query(api_instance: api.DocumentationApi, static_arguments: Dict) -> str: """Get the YAML representation of the API from Granta MI. Parameters @@ -1769,9 +1796,10 @@ def _run_query(api_instance: api.DocumentationApi, **kwargs: Dict) -> str: class _SustainabilityMixin(_ApiMixin): _api_method: str api_class = api.SustainabilityApi # TODO consider making private. Manually excluded from docs for now. + _data: _BomQueryDataManager def __init_subclass__(cls, api_method: str, request_type: Type, **kwargs: Any): - super().__init_subclass__(**kwargs) # type: ignore + super().__init_subclass__(**kwargs) cls._api_method = api_method cls._request_type = request_type @@ -1780,8 +1808,11 @@ def __init__(self) -> None: self._preferred_units = models.CommonPreferredUnits() def with_units( - self: Query_Builder, distance: Optional[str] = None, energy: Optional[str] = None, mass: Optional[str] = None - ) -> Query_Builder: + self: _SustainabilityQuery, + distance: Optional[str] = None, + energy: Optional[str] = None, + mass: Optional[str] = None, + ) -> _SustainabilityQuery: """ Specifies units to use in the response. @@ -1803,7 +1834,7 @@ def with_units( self._preferred_units.mass_unit = mass return self - def _run_query(self, api_instance: api.SustainabilityApi, static_arguments: Dict) -> Query_Result: + def _run_query(self, api_instance: api.SustainabilityApi, static_arguments: Dict) -> ResultBaseClass: """Implementation of abstract method _run_query for sustainability endpoints. Sets the arguments ``preferred_units`` from user inputs. @@ -1815,9 +1846,9 @@ def _run_query(self, api_instance: api.SustainabilityApi, static_arguments: Dict } self._call_api(api_method, arguments) - result: Query_Result = QueryResultFactory.create_result( - results=self._data.item_results, # type: ignore[attr-defined] - messages=self._data.messages, # type: ignore[attr-defined] + result: ResultBaseClass = QueryResultFactory.create_result( + results=self._data.item_results, + messages=self._data.messages, ) return result From 0ed0fb09987767e246fe0ba3e0eec6d69f74ed8c Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Fri, 22 Sep 2023 15:39:58 +0200 Subject: [PATCH 057/275] Docs: sustainability summary example (#34) * Add unitted value repr * Add plotly and ipywidgets * Add sustainability summary example * Add example to docs * Fix bullet list * Code styling * Code styling * Apply suggestions from code review Co-authored-by: Andy Grigg * Apply suggestions from review * Add unit on bar chart & add icicle * Address review comments * Add default units to docstring --------- Co-authored-by: Andy Grigg --- .../4-1_BoM_Sustainability_summary.py | 333 ++++++++++++++++++ examples/4_Sustainability/index.rst | 12 + .../supporting-files/bom-2301-jack-stand.xml | 180 ++++++++++ examples/index.rst | 1 + poetry.lock | 74 +++- pyproject.toml | 4 + .../grantami/bomanalytics/_item_results.py | 3 + src/ansys/grantami/bomanalytics/queries.py | 8 +- tests/test_item_results.py | 7 + 9 files changed, 619 insertions(+), 3 deletions(-) create mode 100644 examples/4_Sustainability/4-1_BoM_Sustainability_summary.py create mode 100644 examples/4_Sustainability/index.rst create mode 100644 examples/4_Sustainability/supporting-files/bom-2301-jack-stand.xml diff --git a/examples/4_Sustainability/4-1_BoM_Sustainability_summary.py b/examples/4_Sustainability/4-1_BoM_Sustainability_summary.py new file mode 100644 index 00000000..ea4fdf31 --- /dev/null +++ b/examples/4_Sustainability/4-1_BoM_Sustainability_summary.py @@ -0,0 +1,333 @@ +# --- +# jupyter: +# jupytext: +# text_representation: +# extension: .py +# format_name: light +# format_version: '1.5' +# jupytext_version: 1.15.1 +# kernelspec: +# display_name: Python 3 (ipykernel) +# language: python +# name: python3 +# --- + +# # Perform a BoM sustainability summary query +# +# The following supporting files are required for this example: +# +# * [bom-2301-jack-stand.xml](supporting-files/bom-2301-jack-stand.xml) + +# ## Run a BoM sustainability summary query +# +# First, connect to Granta MI. +# + +from ansys.grantami.bomanalytics import Connection + +server_url = "http://my_grantami_server/mi_servicelayer" +cxn = Connection(server_url).with_credentials("user_name", "password").connect() + +# Next, create a sustainability summary query. The query accepts a single BoM as argument, as well as optional +# configuration for units. If a unit is not specified, the default unit is used. Default units for the analysis are: +# `MJ` for energy, `kg` for mass, and `km` for distance. + +# + +xml_file_path = "supporting-files/bom-2301-jack-stand.xml" +with open(xml_file_path) as f: + bom = f.read() + +from ansys.grantami.bomanalytics import queries + +MASS_UNIT = "kg" +ENERGY_UNIT = "MJ" +DISTANCE_UNIT = "km" + +sustainability_summary_query = ( + queries.BomSustainabilitySummaryQuery() + .with_bom(bom) + .with_units(mass=MASS_UNIT, energy=ENERGY_UNIT, distance=DISTANCE_UNIT) +) +# - + +sustainability_summary = cxn.run(sustainability_summary_query) +sustainability_summary + +# The ``BomSustainabilitySummaryQueryResult`` object returned implements a ``messages`` property, and properties +# showing the environmental footprint of the items included in the BoM. +# Log messages are sorted by decreasing severity. The same messages are available on in the MI Service Layer log file, +# and are logged via the standard ``logging`` module. +# The next sections show examples of visualizations for the results of the sustainability summary query. +# +# ## Summary per phase +# The sustainability summary result object contains a `phases_summary` property. This property divides environmental +# footprint contributions into three categories: materials, processes, and transport phases. Each include their absolute +# and relative contributions to the product as a whole. + +sustainability_summary.phases_summary + +# Use the [pandas](https://pandas.pydata.org/) and [plotly](https://plotly.com/python/) libraries to visualize the +# results. The data will first be translated from the BoM Analytics ``BomSustainabilitySummaryQueryResult`` to a pandas +# ``Dataframe`` + +# + +import pandas as pd + +EE_HEADER = f"EE [{ENERGY_UNIT}]" +CC_HEADER = f"CC [{MASS_UNIT}]" + +phases_df = pd.DataFrame.from_records( + [ + { + "Name": item.name, + "EE%": item.embodied_energy_percentage, + EE_HEADER: item.embodied_energy.value, + "CC%": item.climate_change_percentage, + CC_HEADER: item.climate_change.value, + } + for item in sustainability_summary.phases_summary + ] +) +phases_df + +# + +import plotly.graph_objects as go +from plotly.subplots import make_subplots + + +def plot_footprint(df, title, textinfo="percent+label", hoverinfo="value+name"): + fig = make_subplots( + rows=1, + cols=2, + specs=[[{"type": "domain"}, {"type": "domain"}]], + subplot_titles=["Embodied Energy", "Climate Change"], + ) + fig.add_trace(go.Pie(labels=df["Name"], values=df[EE_HEADER], name=ENERGY_UNIT), 1, 1) + fig.add_trace(go.Pie(labels=df["Name"], values=df[CC_HEADER], name=MASS_UNIT), 1, 2) + fig.update_layout(title_text=title) + fig.update_traces(textposition="inside", textinfo=textinfo, hoverinfo=hoverinfo) + fig.show() + + +plot_footprint(phases_df, "BoM sustainability summary - By phase") +# - + +# ## The transport phase +# +# The environmental contribution from the transport phase is summarized in the `transport_details` property. Results +# include the individual environmental footprint for each transport stage included in the input BoM. + +sustainability_summary.transport_details + +# + +DISTANCE_HEADER = f"Distance [{DISTANCE_UNIT}]" + +transport_df = pd.DataFrame.from_records( + [ + { + "Name": item.name, + DISTANCE_HEADER: item.distance.value, + "EE%": item.embodied_energy_percentage, + EE_HEADER: item.embodied_energy.value, + "CC%": item.climate_change_percentage, + CC_HEADER: item.climate_change.value, + } + for item in sustainability_summary.transport_details + ] +) +transport_df +# - + +plot_footprint(transport_df, "Transport stages - environmental footprint") + +# In some situations, it may be useful to calculate the environmental footprint per distance travelled and add the +# results as new columns in the `DataFrame`. + +EE_PER_DISTANCE = f"EE [{ENERGY_UNIT}/{DISTANCE_UNIT}]" +CC_PER_DISTANCE = f"CC [{MASS_UNIT}/{DISTANCE_UNIT}]" +transport_df[EE_PER_DISTANCE] = transport_df.apply(lambda row: row[EE_HEADER] / row[DISTANCE_HEADER], axis=1) +transport_df[CC_PER_DISTANCE] = transport_df.apply(lambda row: row[CC_HEADER] / row[DISTANCE_HEADER], axis=1) +transport_df + +fig = make_subplots( + rows=1, cols=2, specs=[[{"type": "domain"}, {"type": "domain"}]], subplot_titles=[EE_PER_DISTANCE, CC_PER_DISTANCE] +) +fig.add_trace( + go.Pie(labels=transport_df["Name"], values=transport_df[EE_PER_DISTANCE], name=f"{ENERGY_UNIT}/{DISTANCE_UNIT}"), + 1, + 1, +) +fig.add_trace( + go.Pie(labels=transport_df["Name"], values=transport_df[CC_PER_DISTANCE], name=f"{MASS_UNIT}/{DISTANCE_UNIT}"), 1, 2 +) +fig.update_layout(title_text="Transport stages footprint - Relative to distance travelled") +fig.update_traces(textposition="inside", textinfo="percent+label", hoverinfo="value+name") +fig.show() + +# ## The materials phase +# +# The environmental contribution from the material phase is summarized in the `material_details` property. The results +# are aggregated: each item in ``material_details`` represents the total environmental footprint of a material summed +# from all its occurrences in the BoM. Listed materials contribute more than 2% of the total footprint for the material +# phase. Materials that do not contribute at least 2% of the total are aggregated under the ``Other`` item. + +sustainability_summary.material_details + +materials_df = pd.DataFrame.from_records( + [ + { + "Name": item.name, + "EE%": item.embodied_energy_percentage, + EE_HEADER: item.embodied_energy.value, + "CC%": item.climate_change_percentage, + CC_HEADER: item.climate_change.value, + f"Mass before processing [{MASS_UNIT}]": item.mass_before_processing.value, + f"Mass after processing [{MASS_UNIT}]": item.mass_after_processing.value, + } + for item in sustainability_summary.material_details + ] +) +materials_df + +plot_footprint(materials_df, "Aggregated materials footprint") + +# Mass before and mass after secondary processing can help determine if the material mass removed during processing +# contributes a significant fraction of the footprint of the overall material phase. + +fig = go.Figure( + data=[ + go.Bar( + name="Mass before secondary processing", + x=materials_df["Name"], + y=materials_df[f"Mass before processing [{MASS_UNIT}]"], + ), + go.Bar( + name="Mass after secondary processing", + x=materials_df["Name"], + y=materials_df[f"Mass after processing [{MASS_UNIT}]"], + ), + ], + layout=go.Layout( + xaxis=go.layout.XAxis(title="Materials"), + yaxis=go.layout.YAxis(title=f"Mass [{MASS_UNIT}]"), + ), +) +fig.show() + +# ## The material processing phase +# +# The environmental contribution specifically from processing applied to raw materials is summarized in the +# `primary_processes_details`, `secondary_processes_details`, and `joining_and_finishing_processes_details` properties +# for primary, secondary, and joining and finishing process categories respectively. Each category lists unique +# process-material pairs, which contribute at least 5% of the total for the process category. The relative contributions +# describe the contribution of a process-material pair, relative to the total contributions of all processes from the +# same category. Processes that do meet the contribution threshold are aggregated under the ``Other`` item, with the +# material set to `None`. + +# ### Primary processing + +sustainability_summary.primary_processes_details + +primary_process_df = pd.DataFrame.from_records( + [ + { + "Process name": item.process_name, + "Material name": item.material_name, + "EE%": item.embodied_energy_percentage, + EE_HEADER: item.embodied_energy.value, + "CC%": item.climate_change_percentage, + CC_HEADER: item.climate_change.value, + } + for item in sustainability_summary.primary_processes_details + ] +) +primary_process_df + +# Add a `Name` to each item that represents the process-material pair name. + +primary_process_df["Name"] = primary_process_df.apply( + lambda row: f"{row['Process name']} - {row['Material name']}", axis=1 +) +plot_footprint( + primary_process_df, "Aggregated primary processes footprint", textinfo="percent", hoverinfo="value+name+label" +) + +# ### Secondary processing + +sustainability_summary.secondary_processes_details + +secondary_process_df = pd.DataFrame.from_records( + [ + { + "Process name": item.process_name, + "Material name": item.material_name, + "EE%": item.embodied_energy_percentage, + EE_HEADER: item.embodied_energy.value, + "CC%": item.climate_change_percentage, + CC_HEADER: item.climate_change.value, + } + for item in sustainability_summary.secondary_processes_details + ] +) +secondary_process_df + +# Add a `Name` to each item that represents the process-material pair name. + +secondary_process_df["Name"] = secondary_process_df.apply( + lambda row: f"{row['Process name']} - {row['Material name']}", axis=1 +) +plot_footprint( + secondary_process_df, "Aggregated secondary processes footprint", textinfo="percent", hoverinfo="value+name+label" +) + +# ### Joining and finishing +# If there are no processes in the BoM for a certain process category, the list is empty. + +sustainability_summary.joining_and_finishing_processes_details + +# ## Hierarchical view +# +# Finally, aggregate the sustainability summary results into a single `DataFrame` and present it in a hierarchical +# chart. This highlights the largest contributors at each level. In this example, two levels are defined: +# first the phase and then the contributors in the phase. + +# Use `assign` to add a `parent` column to each `DataFrame` being concatenated +# The `join` argument value `inner` specifies that only columns common to all dataframes are kept in the result + +summary_df = pd.concat( + [ + phases_df.assign(Parent=""), + transport_df.assign(Parent="Transport"), + materials_df.assign(Parent="Material"), + primary_process_df.assign(Parent="Processes"), + secondary_process_df.assign(Parent="Processes"), + ], + join="inner", +) +summary_df + +# A sunburst chart presents hierarchical data radially. + +fig = go.Figure( + go.Sunburst( + labels=summary_df["Name"], + parents=summary_df["Parent"], + values=summary_df[EE_HEADER], + branchvalues="total", + ), + layout_title_text=f"Embodied Energy [{ENERGY_UNIT}]", +) +fig.show() + +# An icicle chart presents hierarchical data as rectangular sectors. + +fig = go.Figure( + go.Icicle( + labels=summary_df["Name"], + parents=summary_df["Parent"], + values=summary_df[EE_HEADER], + branchvalues="total", + ), + layout_title_text=f"Embodied Energy [{ENERGY_UNIT}]", +) +fig.show() diff --git a/examples/4_Sustainability/index.rst b/examples/4_Sustainability/index.rst new file mode 100644 index 00000000..14d68e6d --- /dev/null +++ b/examples/4_Sustainability/index.rst @@ -0,0 +1,12 @@ +.. _ref_grantami_bomanalytics_sustainability: + +Sustainability +============== + +These examples demonstrate how to determinate the environmental footprint for a BoM using the +:ref:`ref_grantami_bomanalytics_api_sustainability_index`. + +.. toctree:: + :maxdepth: 1 + + 4-1_BoM_Sustainability_summary.ipynb diff --git a/examples/4_Sustainability/supporting-files/bom-2301-jack-stand.xml b/examples/4_Sustainability/supporting-files/bom-2301-jack-stand.xml new file mode 100644 index 00000000..ea0c09ab --- /dev/null +++ b/examples/4_Sustainability/supporting-files/bom-2301-jack-stand.xml @@ -0,0 +1,180 @@ + + + + + 1 + Jack Stand_mda320_assy + + + + 1 + 0.548 + Jack Stand_Base + + + 100 + + MI_Restricted_Substances + 879f3268-e8b6-48c0-822a-40a010d12911 + + steel-1010-annealed + + + + + 1 + 0.398 + Jack Stand_Center Pin + + + 100 + + MI_Restricted_Substances + 879f3268-e8b6-48c0-822a-40a010d12911 + + steel-1010-annealed + + + + + 1 + 0.281 + Jack Stand_Top Bracket + + + 100 + + MI_Restricted_Substances + 879f3268-e8b6-48c0-822a-40a010d12911 + + steel-1010-annealed + + + + + 2 + 0.460 + Jack Stand_Lower Hinge + + + 100 + + MI_Restricted_Substances + 879f3268-e8b6-48c0-822a-40a010d12911 + + steel-1010-annealed + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Metal casting + Metal casting + Mass + 100 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + MassRemoved + 36.4 + + + + + + + 2 + 0.451 + Jack Stand_Upper Hinge + + + 100 + + MI_Restricted_Substances + 879f3268-e8b6-48c0-822a-40a010d12911 + + steel-1010-annealed + + + + + 2 + 0.014 + Jack Stand_Slider + + + 100 + + MI_Restricted_Substances + a0adc9d7-69a2-494e-b6da-d588f86cc5ab + + beryllium-beralcast191-cast + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Metal extrusion, hot + Metal extrusion, hot + Mass + 100 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + MassRemoved + 11.2 + + + + + + + + + + + + Port to airport + + MI_Restricted_Substances + c29ab353-2bd5-4964-b577-a0e4cfb4d284 + + 350 + + + Country 1 to country 2 by air + + MI_Restricted_Substances + 546b90cb-1f8e-423c-a284-a25f731a13e5 + + 2000 + + + Airport to distributor + + MI_Restricted_Substances + c29ab353-2bd5-4964-b577-a0e4cfb4d284 + + 125 + + + + + MI_Restricted_Substances + 345a50ab-3e15-41e7-8653-703f7337e779 + + WholeWorld + + \ No newline at end of file diff --git a/examples/index.rst b/examples/index.rst index 749248f6..4e781e23 100644 --- a/examples/index.rst +++ b/examples/index.rst @@ -22,4 +22,5 @@ To run these examples, install dependencies with this code: 1_Impacted_Substances_Queries/index 2_Compliance_Queries/index 3_Advanced_Topics/index + 4_Sustainability/index diff --git a/poetry.lock b/poetry.lock index 47809b2c..5c6eb730 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1057,6 +1057,27 @@ qtconsole = ["qtconsole"] test = ["pytest (<7.1)", "pytest-asyncio", "testpath"] test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.21)", "pandas", "pytest (<7.1)", "pytest-asyncio", "testpath", "trio"] +[[package]] +name = "ipywidgets" +version = "8.1.1" +description = "Jupyter interactive widgets" +optional = false +python-versions = ">=3.7" +files = [ + {file = "ipywidgets-8.1.1-py3-none-any.whl", hash = "sha256:2b88d728656aea3bbfd05d32c747cfd0078f9d7e159cf982433b58ad717eed7f"}, + {file = "ipywidgets-8.1.1.tar.gz", hash = "sha256:40211efb556adec6fa450ccc2a77d59ca44a060f4f9f136833df59c9f538e6e8"}, +] + +[package.dependencies] +comm = ">=0.1.3" +ipython = ">=6.1.0" +jupyterlab-widgets = ">=3.0.9,<3.1.0" +traitlets = ">=4.3.1" +widgetsnbextension = ">=4.0.9,<4.1.0" + +[package.extras] +test = ["ipykernel", "jsonschema", "pytest (>=3.6.0)", "pytest-cov", "pytz"] + [[package]] name = "isoduration" version = "20.11.0" @@ -1387,6 +1408,17 @@ docs = ["autodoc-traits", "jinja2 (<3.2.0)", "mistune (<4)", "myst-parser", "pyd openapi = ["openapi-core (>=0.16.1,<0.17.0)", "ruamel-yaml"] test = ["hatch", "ipykernel", "jupyterlab-server[openapi]", "openapi-spec-validator (>=0.5.1,<0.7.0)", "pytest (>=7.0)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter[server] (>=0.6.2)", "pytest-timeout", "requests-mock", "sphinxcontrib-spelling", "strict-rfc3339", "werkzeug"] +[[package]] +name = "jupyterlab-widgets" +version = "3.0.9" +description = "Jupyter interactive widgets for JupyterLab" +optional = false +python-versions = ">=3.7" +files = [ + {file = "jupyterlab_widgets-3.0.9-py3-none-any.whl", hash = "sha256:3cf5bdf5b897bf3bccf1c11873aa4afd776d7430200f765e0686bd352487b58d"}, + {file = "jupyterlab_widgets-3.0.9.tar.gz", hash = "sha256:6005a4e974c7beee84060fdfba341a3218495046de8ae3ec64888e5fe19fdb4c"}, +] + [[package]] name = "jupytext" version = "1.15.1" @@ -2124,6 +2156,21 @@ files = [ docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.1)", "sphinx-autodoc-typehints (>=1.24)"] test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)"] +[[package]] +name = "plotly" +version = "5.17.0" +description = "An open-source, interactive data visualization library for Python" +optional = false +python-versions = ">=3.6" +files = [ + {file = "plotly-5.17.0-py2.py3-none-any.whl", hash = "sha256:7c84cdf11da162423da957bb093287134f2d6f170eb9a74f1459f825892247c3"}, + {file = "plotly-5.17.0.tar.gz", hash = "sha256:290d796bf7bab87aad184fe24b86096234c4c95dcca6ecbca02d02bdf17d3d97"}, +] + +[package.dependencies] +packaging = "*" +tenacity = ">=6.2.0" + [[package]] name = "pluggy" version = "1.2.0" @@ -3232,6 +3279,20 @@ files = [ [package.extras] widechars = ["wcwidth"] +[[package]] +name = "tenacity" +version = "8.2.3" +description = "Retry code until it succeeds" +optional = false +python-versions = ">=3.7" +files = [ + {file = "tenacity-8.2.3-py3-none-any.whl", hash = "sha256:ce510e327a630c9e1beaf17d42e6ffacc88185044ad85cf74c0a8887c6a0f88c"}, + {file = "tenacity-8.2.3.tar.gz", hash = "sha256:5398ef0d78e63f40007c1fb4c0bff96e1911394d2fa8d194f77619c05ff6cc8a"}, +] + +[package.extras] +doc = ["reno", "sphinx", "tornado (>=4.5)"] + [[package]] name = "terminado" version = "0.17.1" @@ -3433,6 +3494,17 @@ docs = ["Sphinx (>=6.0)", "sphinx-rtd-theme (>=1.1.0)"] optional = ["python-socks", "wsaccel"] test = ["websockets"] +[[package]] +name = "widgetsnbextension" +version = "4.0.9" +description = "Jupyter interactive widgets for Jupyter Notebook" +optional = false +python-versions = ">=3.7" +files = [ + {file = "widgetsnbextension-4.0.9-py3-none-any.whl", hash = "sha256:91452ca8445beb805792f206e560c1769284267a30ceb1cec9f5bcc887d15175"}, + {file = "widgetsnbextension-4.0.9.tar.gz", hash = "sha256:3c1f5e46dc1166dfd40a42d685e6a51396fd34ff878742a3e47c6f0cc4a2a385"}, +] + [[package]] name = "zipp" version = "3.16.2" @@ -3454,4 +3526,4 @@ examples = ["jupyterlab", "lxml", "pandas", "tabulate"] [metadata] lock-version = "2.0" python-versions = "^3.8.0" -content-hash = "9b9de963ae528aa9fd3ea802867d4dab9b28f9b17988da90d2b66e1a8d9b5f68" +content-hash = "b4b8eb0d91f56793b0f7a9a28a94f65f3ae7ec021f4876d2283308cb2acfb548" diff --git a/pyproject.toml b/pyproject.toml index 7f2e99d4..8793dbba 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -58,6 +58,8 @@ pytest = "^7" pytest-cov = "^4" requests-mock = "^1" ipython = "^8" +plotly = "^5.17.0" +ipywidgets = "^8.1.1" [tool.poetry.group.doc] optional = true @@ -81,6 +83,8 @@ examples = [ "tabulate", "pandas", "jupyterlab", + "plotly", + "ipywidgets", ] [tool.tox] diff --git a/src/ansys/grantami/bomanalytics/_item_results.py b/src/ansys/grantami/bomanalytics/_item_results.py index 9b126604..fbb9c9da 100644 --- a/src/ansys/grantami/bomanalytics/_item_results.py +++ b/src/ansys/grantami/bomanalytics/_item_results.py @@ -1382,6 +1382,9 @@ def unit(self) -> str: """ return self._unit + def __repr__(self) -> str: + return f'<{self.__class__.__name__}(value={self._value}, unit="{self._unit}")>' + class SustainabilityResultMixin: """Adds results from a sustainability query to a class. diff --git a/src/ansys/grantami/bomanalytics/queries.py b/src/ansys/grantami/bomanalytics/queries.py index 3444ce4e..800ded77 100644 --- a/src/ansys/grantami/bomanalytics/queries.py +++ b/src/ansys/grantami/bomanalytics/queries.py @@ -1816,8 +1816,12 @@ def with_units( """ Specifies units to use in the response. - Sets all units, overriding any previous configuration. Units not set will default to the API default unit. - Provided unit symbols must exist in the target database. + Sets all units, overriding any previous configuration. Provided unit symbols must exist in the target database. + Units not set will default to the API default unit: + + * Distance: ``km`` + * Energy: ``MJ`` + * Mass: ``kg`` Parameters ---------- diff --git a/tests/test_item_results.py b/tests/test_item_results.py index 02cb57a6..3123b75b 100644 --- a/tests/test_item_results.py +++ b/tests/test_item_results.py @@ -280,3 +280,10 @@ def test_substance_result_repr(self): result = ItemResultFactory.create_substance_result(model) expected = "" assert repr(result) == expected + + +def test_unitted_value_repr(): + model = models.GrantaBomAnalyticsServicesImplementationCommonValueWithUnit(unit="kg", value=255.2) + result = ItemResultFactory.create_unitted_value(model) + expected = '' + assert repr(result) == expected From cf9879e65e36263f9f571cbecf00009aa5f892fb Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Fri, 22 Sep 2023 17:50:02 +0200 Subject: [PATCH 058/275] Maint: Add revision hash (#39) * Add revision hash * Allow long paths * Revert "Allow long paths" This reverts commit 347296b0be59f6b7407f966b5c4cce20918d8302. * Pass HOME env var --- poetry.lock | 2 +- pyproject.toml | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/poetry.lock b/poetry.lock index 5c6eb730..20021770 100644 --- a/poetry.lock +++ b/poetry.lock @@ -3526,4 +3526,4 @@ examples = ["jupyterlab", "lxml", "pandas", "tabulate"] [metadata] lock-version = "2.0" python-versions = "^3.8.0" -content-hash = "b4b8eb0d91f56793b0f7a9a28a94f65f3ae7ec021f4876d2283308cb2acfb548" +content-hash = "78b3fa44ac412ab1436d7d5e0d1a583ca6282bf212f5e9917d50975fa7c1b0de" diff --git a/pyproject.toml b/pyproject.toml index 8793dbba..7069d196 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,7 +40,7 @@ python = "^3.8.0" # Packages for core library ansys-openapi-common = "< 2.0.0" -ansys-grantami-bomanalytics-openapi = { git = 'https://github.com/ansys/grantami-bomanalytics-openapi-private.git', subdirectory = 'ansys-grantami-bomanalytics-openapi' } +ansys-grantami-bomanalytics-openapi = { git = 'https://github.com/ansys/grantami-bomanalytics-openapi-private.git', subdirectory = 'ansys-grantami-bomanalytics-openapi', rev = '79a7be6' } # Packages for the examples extra jupyterlab = { version = ">=3,<5", optional = true } @@ -113,6 +113,7 @@ passenv = TEST_PASS TEST_WRITE_USER TEST_WRITE_PASS + HOME """ [tool.mypy] From 0d8bde5ec70acc60307e9db431b2b7dfab63f89b Mon Sep 17 00:00:00 2001 From: Doug Addy Date: Mon, 25 Sep 2023 10:39:06 +0100 Subject: [PATCH 059/275] Review comments II --- .../grantami/bomanalytics/_bom_helper.py | 12 +- .../bomanalytics/bom_types/_bom_types.py | 221 +++++------------- .../bomanalytics/bom_types/_builders.py | 38 +-- 3 files changed, 88 insertions(+), 183 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/_bom_helper.py b/src/ansys/grantami/bomanalytics/_bom_helper.py index 84002f87..2df2f29a 100644 --- a/src/ansys/grantami/bomanalytics/_bom_helper.py +++ b/src/ansys/grantami/bomanalytics/_bom_helper.py @@ -23,12 +23,12 @@ def __init__(self) -> None: def load_bom_from_file(self, file_path: Path) -> "BillOfMaterials": """ - Read a BoM from a file and return the corresponding BillOfMaterials object for use + Read a BoM from a file and return the corresponding BillOfMaterials object for use. Parameters ---------- file_path: Path - Location of the BoM XML file + Location of the BoM XML file. Returns ------- @@ -47,12 +47,12 @@ def load_bom_from_file(self, file_path: Path) -> "BillOfMaterials": def load_bom_from_text(self, bom_text: str) -> "BillOfMaterials": """ - Read a BoM from a string and return the corresponding BillOfMaterials object for use + Read a BoM from a string and return the corresponding BillOfMaterials object for use. Parameters ---------- bom_text: str - String object containing an XML representation of a BoM + String object containing an XML representation of a BoM. Returns ------- @@ -70,7 +70,7 @@ def load_bom_from_text(self, bom_text: str) -> "BillOfMaterials": def dump_bom(self, bom: "BillOfMaterials") -> str: """ - Convert a BillOfMaterials object into a string XML representation + Convert a BillOfMaterials object into a string XML representation. Parameters ---------- @@ -79,7 +79,7 @@ def dump_bom(self, bom: "BillOfMaterials") -> str: Returns ------- str - Serialized representation of the BoM + Serialized representation of the BoM. """ bom_dict = self._writer.convert_bom_to_dict(bom) obj, errors = self._schema.encode(bom_dict, validation="lax", unordered=True) diff --git a/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py b/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py index 07b05013..4c7e4d67 100644 --- a/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py +++ b/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py @@ -8,6 +8,7 @@ class BaseType: """Base type from which all XML DTOs inherit. + Handles conversion from python properties to xmlschema objects. Attributes @@ -48,9 +49,9 @@ def _process_custom_fields(cls, obj: Dict, field_reader: NamespaceFieldReader) - Parameters ---------- obj: Dict - The json representation of the source XML BoM to be parsed + The json representation of the source XML BoM to be parsed. field_reader: NamespaceFieldReader - Helper object that maintains information about the global namespaces + Helper object that maintains information about the global namespaces. Returns ------- @@ -70,7 +71,7 @@ def _write_custom_fields(self, obj: Dict, bom_writer: BoMWriter) -> None: obj: Dict Dictionary representing the current state of the serialization of self. Modified in place by this method. bom_writer: BoMWriter - Helper object that maintains information about the global namespaces + Helper object that maintains information about the global namespaces. """ pass @@ -97,7 +98,7 @@ def from_string(cls, value: str) -> "DimensionType": Parameters ---------- value: str - String representation of this object + String representation of this object. """ return DimensionType[value] @@ -108,7 +109,7 @@ def to_string(self) -> str: Returns ------- str - String representation of this object + String representation of this object. """ return self.name @@ -139,7 +140,7 @@ def from_string(cls, value: str) -> "PseudoAttribute": Parameters ---------- value: str - String representation of this object + String representation of this object. """ return PseudoAttribute[f"{value[0].upper()}{value[1:]}"] @@ -150,16 +151,12 @@ def to_string(self) -> str: Returns ------- str - String representation of this object + String representation of this object. """ return f"{self.name[0].lower()}{self.name[1:]}" class PartialTableReference(BaseType): - _table_identity: Optional[int] = None - _table_guid: Optional[str] = None - _table_name: Optional[str] = None - _simple_values = [("table_identity", "tableIdentity"), ("table_guid", "tableGuid"), ("table_name", "tableName")] _namespace = "http://www.grantadesign.com/12/05/GrantaBaseTypes" @@ -240,13 +237,6 @@ def table_name(self, value: Optional[str]) -> None: class MIAttributeReference(BaseType): - _db_key: str - _attribute_identity: Optional[int] = None - _table_reference: Optional[PartialTableReference] = None - _attribute_name: Optional[str] = None - _pseudo: Optional[PseudoAttribute] = None - _is_standard: Optional[bool] = None - _simple_values = [("db_key", "dbKey"), ("attribute_identity", "attributeIdentity")] _namespace = "http://www.grantadesign.com/12/05/GrantaBaseTypes" @@ -282,7 +272,7 @@ def __init__( attribute_name: Optional[str] Name of the Attribute. pseudo: Optional[PseudoAttribute] - The Pseudoattribute type if referring to a Pseudoattribute. + The pseudo-attribute type if referring to a pseudo-attribute. is_standard: Optional[bool] If True indicates that the provided ``attribute_name`` is a Standard Name. """ @@ -377,7 +367,7 @@ def attribute_name(self, value: Optional[str]) -> None: @property def pseudo(self) -> Optional[PseudoAttribute]: """ - The Pseudoattribute type if referring to a Pseudoattribute. + The pseudo-attribute type if referring to a pseudo-attribute. Returns ------- @@ -406,15 +396,6 @@ def is_standard(self, value: Optional[bool]) -> None: class MIRecordReference(BaseType): - _db_key: str - _record_history_identity: Optional[int] = None - _record_version_number: Optional[int] = None - _record_guid: Optional[str] = None - _record_history_guid: Optional[str] = None - _lookup_attribute_reference: "Optional[MIAttributeReference]" = None - _lookup_value: Optional[str] = None - _record_uid: Optional[str] = None - _simple_values = [ ("db_key", "dbKey"), ("record_guid", "recordGUID"), @@ -460,7 +441,7 @@ def __init__( Identifies a particular version of a record by its GUID, this is a more persistent way to refer to a record. record_history_guid: Optional[str] Identifies a record history, the latest visible version will be returned. ``record_version_number`` has no - effect on references that use ``record_history_guid`` + effect on references that use ``record_history_guid``. lookup_attribute_reference: Optional[MIAttributeReference] When provided in combination with ``lookup_value`` identifies a record by a unique short-text attribute. Specifies the attribute to be used for the lookup operation. @@ -504,7 +485,7 @@ def _process_custom_fields(cls, obj: Dict, field_reader: NamespaceFieldReader) - @property def db_key(self) -> str: """ - Identifies the database to which this record belongs + Identifies the database to which this record belongs. Returns ------- @@ -519,7 +500,7 @@ def db_key(self, value: str) -> None: @property def record_history_identity(self) -> Optional[int]: """ - Identifies a record by its history identity + Identifies a record by its history identity. Returns ------- @@ -628,8 +609,6 @@ def record_uid(self, value: Optional[str]) -> None: # TODO - I don't like having a nice method to add props then replicating it here, can we do something better with # inheritance? class InternalIdentifierMixin: - _internal_id: Optional[str] = None - def __init__(self, *, internal_id: Optional[str] = None, **kwargs): """A unique identity for this object in this BoM. This identity is only for internal use, allowing other elements to reference this element. @@ -637,7 +616,7 @@ def __init__(self, *, internal_id: Optional[str] = None, **kwargs): Parameters ---------- internal_id: Optional[str] - The identifier to assign to this object + The identifier to assign to this object. """ super().__init__(**kwargs) self.internal_id = internal_id @@ -673,10 +652,6 @@ def internal_id(self, value: Optional[str]) -> None: class CommonIdentifiersMixin: - _identity: Optional[str] = None - _name: Optional[str] = None - _external_identity: Optional[str] = None - def __init__( self, *, @@ -775,20 +750,35 @@ def external_identity(self, value: Optional[str]) -> None: class EndOfLifeFate(BaseType): - _mi_end_of_life_reference: "MIRecordReference" - _fraction: float - _simple_values = [("fraction", "Fraction")] _props = [("MIRecordReference", "mi_end_of_life_reference", "MIEndOfLifeReference")] - def __init__(self, *mi_end_of_life_reference: "MIRecordReference", fraction: float, **kwargs) -> None: + def __init__(self, *, mi_end_of_life_reference: "MIRecordReference", fraction: float, **kwargs) -> None: + """ + The fate of a material at the end-of-life of the product. For example if a material can be recycled, and what + fraction of the total mass or volume can be recycled. + + Parameters + ---------- + mi_end_of_life_reference : MIRecordReference + Reference identifying the applicable fate within the MI Database. + fraction : float + Fraction of the total mass or volume of material to which this fate applies. + """ super().__init__(**kwargs) self.mi_end_of_life_reference = mi_end_of_life_reference self.fraction = fraction @property def mi_end_of_life_reference(self) -> "MIRecordReference": + """ + Reference identifying the applicable fate within the MI Database. + + Returns + ------- + MIRecordReference + """ return self._mi_end_of_life_reference @mi_end_of_life_reference.setter @@ -797,6 +787,13 @@ def mi_end_of_life_reference(self, value: MIRecordReference) -> None: @property def fraction(self) -> float: + """ + Fraction of the total mass or volume of material to which this fate applies. + + Returns + ------- + float + """ return self._fraction @fraction.setter @@ -805,9 +802,6 @@ def fraction(self, value: float) -> None: class UnittedValue(BaseType): - _value: float - _unit: Optional[str] = None - _simple_values = [("value", "$"), ("unit", "@Unit")] def __init__(self, *, value: float, unit: Optional[str] = None, **kwargs) -> None: @@ -818,7 +812,7 @@ def __init__(self, *, value: float, unit: Optional[str] = None, **kwargs) -> Non Parameters ---------- value: float - The value of the quantity in specified units + The value of the quantity in specified units. unit: Optional[str] If provided, specifies the unit symbol applying to the quantity. If absent the quantity will be treated as dimensionless. @@ -865,8 +859,6 @@ def unit(self, value: Optional[str]) -> None: class Location(CommonIdentifiersMixin, InternalIdentifierMixin, BaseType): - _mi_location_reference: "Optional[MIRecordReference]" - _props = [("MIRecordReference", "mi_location_reference", "MILocationReference")] def __init__(self, *, mi_location_reference: "Optional[MIRecordReference]" = None, **kwargs) -> None: @@ -898,9 +890,6 @@ def mi_location_reference(self, value: Optional[MIRecordReference]) -> None: class ElectricityMix(BaseType): - _mi_region_reference: "Optional[MIRecordReference]" = None - _percentage_fossil_fuels: Optional[float] = None - _props = [("MIRecordReference", "mi_region_reference", "MIRegionReference")] _simple_values = [("percentage_fossil_fuels", "PercentageFossilFuels")] @@ -960,10 +949,6 @@ def percentage_fossil_fuels(self, value: Optional[float]) -> None: class MobileMode(BaseType): - _mi_transport_reference: "MIRecordReference" - _days_used_per_year: float - _distance_travelled_per_day: "UnittedValue" - _props = [ ("MIRecordReference", "mi_transport_reference", "MITransportReference"), ("UnittedValue", "distance_travelled_per_day", "DistanceTravelledPerDay"), @@ -1043,11 +1028,6 @@ def distance_travelled_per_day(self, value: UnittedValue) -> None: class StaticMode(BaseType): - _mi_energy_conversion_reference: "MIRecordReference" - _power_rating: "UnittedValue" - _days_used_per_year: float - _hours_used_per_day: float - _props = [ ("MIRecordReference", "mi_energy_conversion_reference", "MIEnergyConversionReference"), ("UnittedValue", "power_rating", "PowerRating"), @@ -1072,11 +1052,11 @@ def __init__( Reference to a record in the MI database representing the primary energy conversion taking place when the product is in use. power_rating: UnittedValue - The power rating of the product whilst in use + The power rating of the product whilst in use. days_used_per_year: float - The number of days per year that the product will be used + The number of days per year that the product will be used. hours_used_per_day: float - The number of hours per day of use that the product will be used + The number of hours per day of use that the product will be used. """ super().__init__(**kwargs) self.mi_energy_conversion_reference = mi_energy_conversion_reference @@ -1103,7 +1083,7 @@ def mi_energy_conversion_reference(self, value: MIRecordReference) -> None: @property def power_rating(self) -> "UnittedValue": """ - The power rating of the product whilst in use + The power rating of the product whilst in use. Returns ------- @@ -1118,7 +1098,7 @@ def power_rating(self, value: UnittedValue) -> None: @property def days_used_per_year(self) -> float: """ - The number of days per year that the product will be used + The number of days per year that the product will be used. Returns ------- @@ -1133,7 +1113,7 @@ def days_used_per_year(self, value: float) -> None: @property def hours_used_per_day(self) -> float: """ - The number of hours per day of use that the product will be used + The number of hours per day of use that the product will be used. Returns ------- @@ -1147,10 +1127,6 @@ def hours_used_per_day(self, value: float) -> None: class UtilitySpecification(BaseType): - _industry_average_duration_years: Optional[float] = None - _industry_average_number_of_functional_units: Optional[float] = None - _utility: Optional[float] = None - _simple_values = [ ("industry_average_duration_years", "IndustryAverageDurationYears"), ("industry_average_number_of_functional_units", "IndustryAverageNumberOfFunctionalUnits"), @@ -1232,11 +1208,6 @@ def utility(self, value: Optional[float]) -> None: class ProductLifeSpan(BaseType): - _duration_years: float - _number_of_functional_units: Optional[float] = None - _functional_unit_description: Optional[str] = None - _utility: "Optional[UtilitySpecification]" = None - _props = [("UtilitySpecification", "utility", "Utility")] _simple_values = [ ("duration_years", "DurationYears"), @@ -1266,7 +1237,7 @@ def __init__( A short (ideally one-word) description of a single functional unit. utility: Optional[UtilitySpecification] Indicates how much use can be obtained from the product represented by the BoM, compared to an - industry-average example + industry-average example. """ super().__init__(**kwargs) self.duration_years = duration_years @@ -1323,7 +1294,7 @@ def functional_unit_description(self, value: Optional[str]) -> None: def utility(self) -> "Optional[UtilitySpecification]": """ Indicates how much use can be obtained from the product represented by the BoM, compared to an industry-average - example + example. Returns ------- @@ -1337,11 +1308,6 @@ def utility(self, value: Optional[UtilitySpecification]) -> None: class UsePhase(BaseType): - _product_life_span: "ProductLifeSpan" - _electricity_mix: "Optional[ElectricityMix]" = None - _static_mode: "Optional[StaticMode]" = None - _mobile_mode: "Optional[MobileMode]" = None - _props = [ ("ProductLifeSpan", "product_life_span", "ProductLifeSpan"), ("ElectricityMix", "electricity_mix", "ElectricityMix"), @@ -1441,10 +1407,6 @@ def mobile_mode(self, value: Optional[MobileMode]) -> None: class BoMDetails(BaseType): - _notes: Optional[str] = None - _picture_url: Optional[str] = None - _product_name: Optional[str] = None - _simple_values = [("notes", "Notes"), ("picture_url", "PictureUrl"), ("product_name", "ProductName")] def __init__( @@ -1461,7 +1423,7 @@ def __init__( Parameters ---------- notes: Optional[str] - General notes for the BoM object + General notes for the BoM object. picture_url: Optional[str] The URL of an image to include at the top of the report. This URL must be accessible from the reporting services server. @@ -1476,7 +1438,7 @@ def __init__( @property def notes(self) -> Optional[str]: """ - General notes for the BoM object + General notes for the BoM object. Returns ------- @@ -1521,10 +1483,6 @@ def product_name(self, value: Optional[str]) -> None: class TransportStage(InternalIdentifierMixin, BaseType): - _name: str - _mi_transport_reference: "MIRecordReference" - _distance: "UnittedValue" - _props = [ ("MIRecordReference", "mi_transport_reference", "MITransportReference"), ("UnittedValue", "distance", "Distance"), @@ -1600,9 +1558,6 @@ def distance(self, value: UnittedValue) -> None: class Specification(CommonIdentifiersMixin, InternalIdentifierMixin, BaseType): - _mi_specification_reference: "MIRecordReference" - _quantity: "Optional[UnittedValue]" = None - _props = [ ("MIRecordReference", "mi_specification_reference", "MISpecificationReference"), ("UnittedValue", "quantity", "Quantity"), @@ -1658,10 +1613,6 @@ def quantity(self, value: Optional[UnittedValue]) -> None: class Substance(CommonIdentifiersMixin, InternalIdentifierMixin, BaseType): - _percentage: Optional[float] = None - _category: Optional[str] = None - _mi_substance_reference: "MIRecordReference" - _simple_values = [("percentage", "Percentage"), ("category", "Category")] _props = [("MIRecordReference", "mi_substance_reference", "MISubstanceReference")] @@ -1740,11 +1691,6 @@ def category(self, value: Optional[str]) -> None: class Process(CommonIdentifiersMixin, InternalIdentifierMixin, BaseType): - _mi_process_reference: "MIRecordReference" - _dimension_type: DimensionType - _percentage_of_part_affected: Optional[float] = None - _quantity_affected: "Optional[UnittedValue]" = None - _simple_values = [("percentage_of_part_affected", "Percentage")] _props = [ @@ -1773,7 +1719,7 @@ def __init__( Object defining the dimension affected by the process, for example area for coatings, or volume for rough machining operations. percentage_of_part_affected: Optional[float] - Fraction of the object affected by the process, with basis specified by ``dimension_type`` + Fraction of the object affected by the process, with basis specified by ``dimension_type``. quantity_affected: Optional[UnittedValue] Number of items affected by the process, if applicable. For example 17 fasteners are galvanized out of 24 total. @@ -1861,16 +1807,6 @@ def quantity_affected(self, value: "Optional[UnittedValue]") -> None: class Material(CommonIdentifiersMixin, InternalIdentifierMixin, BaseType): - """A Material within a part or semi-finished part. The material is stored in the Database.""" - - _percentage: Optional[float] = None - _mass: "Optional[UnittedValue]" = None - _mi_material_reference: "MIRecordReference" - _recycle_content_is_typical: Optional[bool] = None - _recycle_content_percentage: Optional[float] = None - _processes: "List[Process]" = [] - _end_of_life_fates: "List[EndOfLifeFate]" = [] - _simple_values = [("percentage", "Percentage")] _props = [("UnittedValue", "mass", "Mass"), ("MIRecordReference", "mi_material_reference", "MIMaterialReference")] @@ -2074,24 +2010,6 @@ def end_of_life_fates(self, value: "List[EndOfLifeFate]") -> None: class Part(InternalIdentifierMixin, BaseType): - """A single part which may or may not be stored in the MI Database.""" - - _quantity: "Optional[UnittedValue]" = None - _mass_per_unit_of_measure: "Optional[UnittedValue]" = None - _volume_per_unit_of_measure: "Optional[UnittedValue]" = None - _mi_part_reference: "Optional[MIRecordReference]" = None - _non_mi_part_reference: "Optional[Union[str, int]]" = None - _part_number: str - _name: Optional[str] = None - _external_id: Optional[str] = None - _components: "List[Part]" = [] - _specifications: "List[Specification]" = [] - _materials: "List[Material]" = [] - _substances: "List[Substance]" = [] - _processes: "List[Process]" = [] - _rohs_exemptions: "List[str]" = [] - _end_of_life_fates: "List[EndOfLifeFate]" = [] - _props = [ ("UnittedValue", "quantity", "Quantity"), ("UnittedValue", "mass_per_unit_of_measure", "MassPerUom"), @@ -2484,10 +2402,6 @@ def end_of_life_fates(self, value: "List[EndOfLifeFate]") -> None: class AnnotationSource(InternalIdentifierMixin, BaseType): - _name: str - _method: Optional[str] = None - _data: List[Any] = [] - _simple_values = [("name", "Name"), ("method", "Method")] def __init__(self, *, name: str, method: Optional[str] = None, data: List[Any] = None, **kwargs) -> None: @@ -2577,11 +2491,6 @@ def data(self, value: List[Any]) -> None: class Annotation(BaseType): - _target_id: str - _source_id: Optional[str] - _type: str - _value: "Union[str, UnittedValue]" - _props = [("UnittedValue", "value", "Value")] _simple_values = [("type", "type"), ("target_id", "targetId"), ("source_id", "sourceId")] @@ -2609,7 +2518,7 @@ def __init__( Parameters ---------- target_id: str - The ``internal_identity`` of exactly one element to which the annotation applies + The ``internal_identity`` of exactly one element to which the annotation applies. source_id: Optional[str] If provided, is the ``internal_identity`` of exactly one ``AnnotationSource`` object describing the source of the annotation. If absent, no source information is provided. @@ -2628,7 +2537,7 @@ def __init__( @property def target_id(self) -> str: """ - The ``internal_identity`` of exactly one element to which the annotation applies + The ``internal_identity`` of exactly one element to which the annotation applies. Returns ------- @@ -2689,16 +2598,6 @@ def value(self, value: "Union[str, UnittedValue]") -> None: class BillOfMaterials(InternalIdentifierMixin, BaseType): - """Type for the root node of an Eco Bill of Materials (BoM)""" - - _components: "List[Part]" - _transport_phase: "List[TransportStage]" = [] - _use_phase: "Optional[UsePhase]" = None - _location: "Optional[Location]" = None - _notes: "Optional[BoMDetails]" = None - _annotations: "List[Annotation]" = [] - _annotation_sources: "List[AnnotationSource]" = [] - _props = [ ("UsePhase", "use_phase", "UsePhase"), ("Location", "location", "Location"), @@ -2733,7 +2632,7 @@ def __init__( Parameters ---------- components: List[Part] - The parts contained within this BoM + The parts contained within this BoM. transport_phase: List[TransportStage] The different forms of transport to which the parts are subject. use_phase: Optional[UsePhase] @@ -2741,11 +2640,11 @@ def __init__( location: Optional[Location] The location in which the object represented by the BoM is assembled. notes: Optional[BoMDetails] - Any optional notes about this BoM + Any optional notes about this BoM. annotations: List[Annotation] - Any annotations that are associated with objects within the BoM + Any annotations that are associated with objects within the BoM. annotation_sources: List[AnnotationSource] - Sources for annotations present within the BoM + Sources for annotations present within the BoM. """ super().__init__(**kwargs) self.components = components @@ -2843,7 +2742,7 @@ def notes(self, value: "Optional[BoMDetails]") -> None: @property def annotations(self) -> "List[Annotation]": """ - Any annotations that are associated with objects within the BoM + Any annotations that are associated with objects within the BoM. Returns ------- @@ -2858,7 +2757,7 @@ def annotations(self, value: "List[Annotation]") -> None: @property def annotation_sources(self) -> "List[AnnotationSource]": """ - Sources for annotations present within the BoM + Sources for annotations present within the BoM. Returns ------- diff --git a/src/ansys/grantami/bomanalytics/bom_types/_builders.py b/src/ansys/grantami/bomanalytics/bom_types/_builders.py index e3339dcc..642b17b0 100644 --- a/src/ansys/grantami/bomanalytics/bom_types/_builders.py +++ b/src/ansys/grantami/bomanalytics/bom_types/_builders.py @@ -106,7 +106,7 @@ def __init__(self, *, db_key: str) -> None: def with_attribute_identity(self, attribute_identity: int) -> "_FinalAttributeReferenceBuilder": """ - Specify the attribute by its identity + Specify the attribute by its identity. Parameters ---------- @@ -122,7 +122,7 @@ def with_attribute_identity(self, attribute_identity: int) -> "_FinalAttributeRe def as_pseudo_attribute(self, pseudo_attribute: PseudoAttribute) -> "_FinalAttributeReferenceBuilder": """ - Specify that the attribute is a Pseudoattribute + Specify the attribute as a specific pseudo-attribute. Parameters ---------- @@ -144,9 +144,9 @@ def with_attribute_name( Parameters ---------- attribute_name : str - The attribute's name + The attribute's name. is_standard_name : bool - If True, the attribute is defined by a standard name (default false) + If True, the attribute is defined by a standard name (default false). Returns ------- @@ -162,7 +162,7 @@ class RecordReferenceBuilder: def __init__(self, *, db_key: str, record_uid: Optional[str] = None) -> None: """ - Create a MIRecordReference with a valid combination of properties + Create a MIRecordReference with a valid combination of properties. Parameters ---------- @@ -183,7 +183,7 @@ def with_record_history_id( Parameters ---------- record_history_id : int - The record history identity + The record history identity. record_version_number : Optional[int] If the record is in a Version-Controlled table, return a specific version of the record, otherwise the latest released version will be returned. @@ -198,12 +198,14 @@ def with_record_history_id( def with_record_guid(self, record_guid: str) -> "_FinalRecordReferenceBuilder": """ - Specify the record by its GUID, this will specify an exact version if the table is Version-Controlled. + Specify the record by its GUID. + + This will specify an exact version if the table is Version-Controlled. Parameters ---------- record_guid : str - The record version GUID + The record version GUID. Returns ------- @@ -214,13 +216,15 @@ def with_record_guid(self, record_guid: str) -> "_FinalRecordReferenceBuilder": def with_record_history_guid(self, record_history_guid: str) -> "_FinalRecordReferenceBuilder": """ - Specify the record by its History GUID. This will return the latest released version of the record. If a - specific version is required then use the ``with_record_guid`` method instead. + Specify the record by its History GUID. + + This will return the latest released version of the record. If a specific version is required then use the + ``with_record_guid`` method instead. Parameters ---------- record_history_guid : str - The record history GUID + The record history GUID. Returns ------- @@ -233,15 +237,17 @@ def with_lookup_value( self, *, lookup_value: str, lookup_attribute_reference: MIAttributeReference ) -> "_FinalRecordReferenceBuilder": """ - Specify the record by a unique value on a short-text attribute. You must specify both the attribute and the - lookup value. If the value is not unique then an exception will be raised. + Specify the record by a unique value on a short-text attribute. + + You must specify both the attribute and the lookup value. If the value is not unique then an exception will be + raised. Parameters ---------- lookup_value : str - The value identifying the record + The value identifying the record. lookup_attribute_reference : MIAttributeReference - The short-text attribute or compatible pseudoattribute to use for the lookup + The short-text attribute or compatible pseudo-attribute to use for the lookup. Returns ------- @@ -260,7 +266,7 @@ def __init__(self, source: "RecordReferenceBuilder") -> None: def build(self) -> "MIRecordReference": """ - Build the finished MI Record Reference + Build the finished MI Record Reference. Returns ------- From a04074abfb7dbb446fcbf9887766851c53a27142 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Mon, 25 Sep 2023 15:18:57 +0200 Subject: [PATCH 060/275] Maint: Bump openapi package (#42) * Bump openapi * Update ValueWithUnit * Update response examples * Legislation name -> ID * Sustainability properties renaming * Add note for candidate list ID --- README.rst | 2 +- examples/0_Getting_started.py | 9 +-- .../1-1_Materials_impacted_substances.py | 4 +- .../1-2_Parts_impacted_substances.py | 4 +- .../3-1_Working_with_XML_BoMs.py | 2 +- .../4-1_BoM_Sustainability_summary.py | 6 +- poetry.lock | 10 +-- pyproject.toml | 2 +- .../grantami/bomanalytics/_item_results.py | 69 +++++++++---------- .../grantami/bomanalytics/_query_results.py | 2 +- src/ansys/grantami/bomanalytics/queries.py | 18 ++--- tests/common.py | 2 +- tests/inputs/examples.py | 26 +++---- tests/test_integration_tests.py | 4 +- tests/test_item_results.py | 48 +++++-------- tests/test_mocked_responses/test_bom.py | 2 +- tests/test_mocked_responses/test_materials.py | 4 +- tests/test_mocked_responses/test_parts.py | 6 +- .../test_specifications.py | 6 +- .../test_sustainability.py | 8 +-- 20 files changed, 109 insertions(+), 125 deletions(-) diff --git a/README.rst b/README.rst index ec66c77e..78a7d0b6 100644 --- a/README.rst +++ b/README.rst @@ -49,7 +49,7 @@ Here's a brief example of how to use PyGranta BoM Analytics: >>> query = ( ... queries.MaterialImpactedSubstancesQuery() ... .with_material_ids(['plastic-abs-pvc-flame']) - ... .with_legislations(['EU REACH - The Candidate List']) + ... .with_legislations(['Candidate_AnnexXV']) ... ) # Print out the result from the query. diff --git a/examples/0_Getting_started.py b/examples/0_Getting_started.py index 1205dcec..abad359e 100644 --- a/examples/0_Getting_started.py +++ b/examples/0_Getting_started.py @@ -82,10 +82,11 @@ # Note that because the ``MaterialImpactedSubstancesQuery`` object has a fluent interface, you receive the same object # back that you started with, but with the material IDs added. # -# Finally, add the legislation to the query. Legislations are identified by their ``Short title`` attribute. +# Finally, add the legislation to the query. Legislations are identified by their ``Legislation ID`` attribute. +# ``Candidate_AnnexXV`` is the ID of the ``EU REACH - The Candidate List`` legislation. # + tags=[] -query = query.with_legislations(["EU REACH - The Candidate List"]) +query = query.with_legislations(["Candidate_AnnexXV"]) query # - @@ -93,7 +94,7 @@ # consolidate the cells above into a single step: # + tags=[] -query = queries.MaterialImpactedSubstancesQuery().with_material_ids(["plastic-abs-high-impact"]).with_legislations(["EU REACH - The Candidate List"]) # noqa: E501 +query = queries.MaterialImpactedSubstancesQuery().with_material_ids(["plastic-abs-high-impact"]).with_legislations(["Candidate_AnnexXV"]) # noqa: E501 query # - @@ -105,7 +106,7 @@ query = ( queries.MaterialImpactedSubstancesQuery() .with_material_ids(["plastic-abs-high-impact"]) - .with_legislations(["EU REACH - The Candidate List"]) + .with_legislations(["Candidate_AnnexXV"]) ) query # - diff --git a/examples/1_Impacted_Substances_Queries/1-1_Materials_impacted_substances.py b/examples/1_Impacted_Substances_Queries/1-1_Materials_impacted_substances.py index 0846bf63..4501429a 100644 --- a/examples/1_Impacted_Substances_Queries/1-1_Materials_impacted_substances.py +++ b/examples/1_Impacted_Substances_Queries/1-1_Materials_impacted_substances.py @@ -42,8 +42,8 @@ # + tags=[] PPS_ID = "plastic-pps-generalpurpose" PC_ID = "plastic-pc-20carbonfiber" -SIN_LIST = "The SIN List 2.1 (Substitute It Now!)" -REACH = "EU REACH - The Candidate List" +SIN_LIST = "SINList" +REACH = "Candidate_AnnexXV" # - # Next import the ``queries`` module and build the query with the references in the previous cell. diff --git a/examples/1_Impacted_Substances_Queries/1-2_Parts_impacted_substances.py b/examples/1_Impacted_Substances_Queries/1-2_Parts_impacted_substances.py index 2d5a1745..f514aea6 100644 --- a/examples/1_Impacted_Substances_Queries/1-2_Parts_impacted_substances.py +++ b/examples/1_Impacted_Substances_Queries/1-2_Parts_impacted_substances.py @@ -53,8 +53,8 @@ # + tags=[] DRILL = "DRILL" WING = "asm_flap_mating" -SIN_LIST = "The SIN List 2.1 (Substitute It Now!)" -REACH = "EU REACH - The Candidate List" +SIN_LIST = "SINList" +REACH = "Candidate_AnnexXV" # - # Next, import the ``queries`` module and build the query with the references in the previous cell. diff --git a/examples/3_Advanced_Topics/3-1_Working_with_XML_BoMs.py b/examples/3_Advanced_Topics/3-1_Working_with_XML_BoMs.py index 34ae6900..ceb015a7 100644 --- a/examples/3_Advanced_Topics/3-1_Working_with_XML_BoMs.py +++ b/examples/3_Advanced_Topics/3-1_Working_with_XML_BoMs.py @@ -90,7 +90,7 @@ def xml_validator(xml: str, schema_file: str) -> bool: # + tags=[] from ansys.grantami.bomanalytics import queries -SIN_LIST = "The SIN List 2.1 (Substitute It Now!)" +SIN_LIST = "SINList" impacted_substances_query = ( queries.BomImpactedSubstancesQuery() .with_bom(valid_xml) diff --git a/examples/4_Sustainability/4-1_BoM_Sustainability_summary.py b/examples/4_Sustainability/4-1_BoM_Sustainability_summary.py index ea4fdf31..f4303b55 100644 --- a/examples/4_Sustainability/4-1_BoM_Sustainability_summary.py +++ b/examples/4_Sustainability/4-1_BoM_Sustainability_summary.py @@ -176,7 +176,7 @@ def plot_footprint(df, title, textinfo="percent+label", hoverinfo="value+name"): materials_df = pd.DataFrame.from_records( [ { - "Name": item.name, + "Name": item.identity, "EE%": item.embodied_energy_percentage, EE_HEADER: item.embodied_energy.value, "CC%": item.climate_change_percentage, @@ -232,7 +232,7 @@ def plot_footprint(df, title, textinfo="percent+label", hoverinfo="value+name"): [ { "Process name": item.process_name, - "Material name": item.material_name, + "Material name": item.material_identity, "EE%": item.embodied_energy_percentage, EE_HEADER: item.embodied_energy.value, "CC%": item.climate_change_percentage, @@ -260,7 +260,7 @@ def plot_footprint(df, title, textinfo="percent+label", hoverinfo="value+name"): [ { "Process name": item.process_name, - "Material name": item.material_name, + "Material name": item.material_identity, "EE%": item.embodied_energy_percentage, EE_HEADER: item.embodied_energy.value, "CC%": item.climate_change_percentage, diff --git a/poetry.lock b/poetry.lock index 20021770..a41c48db 100644 --- a/poetry.lock +++ b/poetry.lock @@ -27,7 +27,7 @@ files = [ [[package]] name = "ansys-grantami-bomanalytics-openapi" -version = "1.1.0.dev20" +version = "1.1.0.dev22" description = "Autogenerated client library for the Granta MI BoM Analytics Services." optional = false python-versions = ">=3.8" @@ -40,13 +40,13 @@ python-dateutil = ">=2.8.2" requests = ">=2.26.0" [package.extras] -test = ["pytest (==7.4.1)", "requests-mock (==1.11.0)"] +test = ["pytest (==7.4.0)", "requests-mock (==1.11.0)"] [package.source] type = "git" url = "https://github.com/ansys/grantami-bomanalytics-openapi-private.git" -reference = "HEAD" -resolved_reference = "79a7be69f5f8ce29e552481dbc421501b2100b57" +reference = "157ee51" +resolved_reference = "157ee511f0b56b5bfb7d91326dd6d53ffebe8a2c" subdirectory = "ansys-grantami-bomanalytics-openapi" [[package]] @@ -3526,4 +3526,4 @@ examples = ["jupyterlab", "lxml", "pandas", "tabulate"] [metadata] lock-version = "2.0" python-versions = "^3.8.0" -content-hash = "78b3fa44ac412ab1436d7d5e0d1a583ca6282bf212f5e9917d50975fa7c1b0de" +content-hash = "a90724cfacc305dd13bdb3a5e540d88e2ae402668051ebde25590e41091c0bef" diff --git a/pyproject.toml b/pyproject.toml index 7069d196..7b44d82f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,7 +40,7 @@ python = "^3.8.0" # Packages for core library ansys-openapi-common = "< 2.0.0" -ansys-grantami-bomanalytics-openapi = { git = 'https://github.com/ansys/grantami-bomanalytics-openapi-private.git', subdirectory = 'ansys-grantami-bomanalytics-openapi', rev = '79a7be6' } +ansys-grantami-bomanalytics-openapi = { git = 'https://github.com/ansys/grantami-bomanalytics-openapi-private.git', subdirectory = 'ansys-grantami-bomanalytics-openapi', rev = '157ee51' } # Packages for the examples extra jupyterlab = { version = ">=3,<5", optional = true } diff --git a/src/ansys/grantami/bomanalytics/_item_results.py b/src/ansys/grantami/bomanalytics/_item_results.py index fbb9c9da..b9108f27 100644 --- a/src/ansys/grantami/bomanalytics/_item_results.py +++ b/src/ansys/grantami/bomanalytics/_item_results.py @@ -350,7 +350,7 @@ def create_material_with_sustainability( reported_mass=cls.create_unitted_value(result_with_sustainability.reported_mass), recyclable=result_with_sustainability.recyclable, biodegradable=result_with_sustainability.biodegradable, - downcycle=result_with_sustainability.downcycle, + functional_recycle=result_with_sustainability.functional_recycle, ) material_with_sustainability._add_child_processes(result_with_sustainability.processes) material_with_sustainability._add_child_substances(result_with_sustainability.substances) @@ -462,14 +462,12 @@ def create_transport_with_sustainability( return transport_with_sustainability @classmethod - def create_unitted_value( - cls, result: models.GrantaBomAnalyticsServicesImplementationCommonValueWithUnit - ) -> "ValueWithUnit": + def create_unitted_value(cls, result: models.CommonValueWithUnit) -> "ValueWithUnit": """Returns a value with unit. Parameters ---------- - result: models.GrantaBomAnalyticsServicesImplementationCommonValueWithUnit + result: models.CommonValueWithUnit Result from the REST API describing the value and unit. Returns @@ -550,7 +548,7 @@ def create_material_summary( return MaterialSummaryResult( reference_type=reference_type, reference_value=result.record_reference.reference_value, - name=result.name, + identity=result.identity, embodied_energy=cls.create_unitted_value(result.embodied_energy), embodied_energy_percentage=result.embodied_energy_percentage, climate_change=cls.create_unitted_value(result.climate_change), @@ -600,7 +598,7 @@ def create_process_summary(cls, result: models.CommonSustainabilityProcessSummar ProcessSummaryResult """ return ProcessSummaryResult( - material_name=result.material_name, + material_identity=result.material_identity, material_reference=MaterialDefinition( reference_type=cls.parse_reference_type(result.material_record_reference.reference_type), reference_value=result.material_record_reference.reference_value, @@ -737,7 +735,7 @@ def __init__( new_substances = [ self._create_impacted_substance(substance) for substance in legislation.impacted_substances ] - self._substances_by_legislation[legislation.legislation_name] = new_substances + self._substances_by_legislation[legislation.legislation_id] = new_substances @staticmethod def _create_impacted_substance( @@ -783,8 +781,7 @@ def _create_impacted_substance( @property def substances_by_legislation(self) -> Dict[str, List[ImpactedSubstance]]: - """Substances impacted for this item, grouped by legislation name.""" - # TODO: will change to legislation id, presumably + """Substances impacted for this item, grouped by legislation ID.""" return self._substances_by_legislation @property @@ -825,7 +822,7 @@ class MaterialWithImpactedSubstancesResult(RecordWithImpactedSubstancesResultMix >>> result: MaterialImpactedSubstancesQueryResult >>> material_result = result.impacted_substances_by_material[0] >>> material_result.substances_by_legislation - {'California Proposition 65 List': []} + {'Prop65': []} >>> result: MaterialImpactedSubstancesQueryResult >>> material_result = result.impacted_substances_by_material[0] @@ -856,7 +853,7 @@ class PartWithImpactedSubstancesResult(RecordWithImpactedSubstancesResultMixin, >>> result: PartImpactedSubstancesQueryResult >>> part_result = result.impacted_substances_by_part[0] >>> part_result.substances_by_legislation - {'California Proposition 65 List': []} + {'Prop65': []} >>> result: PartImpactedSubstancesQueryResult >>> part_result = result.impacted_substances_by_part[0] @@ -887,7 +884,7 @@ class SpecificationWithImpactedSubstancesResult(RecordWithImpactedSubstancesResu >>> result: SpecificationImpactedSubstancesQueryResult >>> specification_result = result.impacted_substances_by_specification[0] >>> specification_result.substances_by_legislation - {'California Proposition 65 List': []} + {'Prop65': []} >>> result: SpecificationImpactedSubstancesQueryResult >>> specification_result = result.impacted_substances_by_specification[0] @@ -907,13 +904,6 @@ class BoM1711WithImpactedSubstancesResult(ImpactedSubstancesResultMixin): substances associated with the BoM, both as a flat list and separated by legislation. There is no item representing this BoM in Granta MI, and so there are no records to reference. - Attributes - ---------- - substances_by_legislation : dict[str, list[:class:`~ansys.grantami.bomanalytics._item_results.ImpactedSubstance`]] - Substances impacted for a particular item, grouped by legislation name. - substances : list[:class:`~ansys.grantami.bomanalytics._item_results.ImpactedSubstance`] - Substances impacted for a particular item as a flattened list. - Notes ----- Objects of this class are only returned as the result of a query. The class is not intended to be instantiated @@ -1480,7 +1470,7 @@ class ReusabilityResultMixin: biodegradable Indicates whether a material is biodegradable. Includes any waste that is capable of undergoing anaerobic or aerobic decomposition. - downcycle: + functional_recycle: Indicates whether a material can be recycled into material of an equivalent quality, that can be used for the same (or similar) applications. **kwargs @@ -1492,13 +1482,13 @@ def __init__( self, recyclable: bool, biodegradable: bool, - downcycle: bool, + functional_recycle: bool, **kwargs: Any, ) -> None: super().__init__(**kwargs) self._recyclable: bool = recyclable self._biodegradable: bool = biodegradable - self._downcycle: bool = downcycle + self._functional_recycle: bool = functional_recycle @property def recyclable(self) -> bool: @@ -1516,12 +1506,12 @@ def biodegradable(self) -> bool: return self._biodegradable @property - def downcycle(self) -> bool: + def functional_recycle(self) -> bool: """ Indicates whether the material can be recycled into material of an equivalent quality, that can be used for the same (or similar) applications. """ - return self._downcycle + return self._functional_recycle class ChildMaterialWithSustainabilityMixin: @@ -2078,29 +2068,34 @@ def __repr__(self) -> str: return f"<{self.__class__.__name__}('{self.name}', mass={_mass})>" -class MaterialSummaryResult(SustainabilitySummaryMixin, NamedItemMixin, MaterialReference): +class MaterialSummaryResult(SustainabilitySummaryMixin, MaterialReference): """ Aggregated sustainability summary for a material. Describes the environmental footprint of a unique material, accounting for all occurrences of the material in BoM. """ - # Overriding docstring for property `name` inherited from mixin - name: str - """Name of the material.""" - def __init__( self, + identity: str, mass_before_processing: ValueWithUnit, mass_after_processing: ValueWithUnit, contributors: List[ContributingComponentResult], **kwargs: Any, ) -> None: super().__init__(**kwargs) + self._identity = identity self._mass_before_processing = mass_before_processing self._mass_after_processing = mass_after_processing self._contributors = contributors + @property + def identity(self) -> str: + """ + Material identity. + """ + return self._identity + @property def mass_before_processing(self) -> ValueWithUnit: """ @@ -2123,7 +2118,7 @@ def contributors(self) -> List[ContributingComponentResult]: def __repr__(self) -> str: return ( - f"<{self.__class__.__name__}('{self.name}'," + f"<{self.__class__.__name__}('{self.identity}'," f" EE%={self.embodied_energy_percentage}, CC%={self.climate_change_percentage})>" ) @@ -2138,14 +2133,14 @@ class ProcessSummaryResult(SustainabilitySummaryMixin): def __init__( self, - material_name: str, + material_identity: str, material_reference: MaterialReference, process_name: str, process_reference: ProcessReference, **kwargs: Any, ) -> None: super().__init__(**kwargs) - self._material_name = material_name + self._material_identity = material_identity self._material_reference = material_reference self._process_name = process_name self._process_reference = process_reference @@ -2165,11 +2160,11 @@ def process_reference(self) -> ProcessReference: return self._process_reference @property - def material_name(self) -> str: + def material_identity(self) -> str: """ - Material name. + Material identity. """ - return self._material_name + return self._material_identity @property def material_reference(self) -> MaterialReference: @@ -2180,6 +2175,6 @@ def material_reference(self) -> MaterialReference: def __repr__(self) -> str: return ( - f"<{self.__class__.__name__}(process='{self.process_name}', material='{self.material_name}', " + f"<{self.__class__.__name__}(process='{self.process_name}', material='{self.material_identity}', " f"EE%={self.embodied_energy_percentage}, CC%={self.climate_change_percentage})>" ) diff --git a/src/ansys/grantami/bomanalytics/_query_results.py b/src/ansys/grantami/bomanalytics/_query_results.py index 0e0020fb..299847d9 100644 --- a/src/ansys/grantami/bomanalytics/_query_results.py +++ b/src/ansys/grantami/bomanalytics/_query_results.py @@ -167,7 +167,7 @@ def impacted_substances_by_legislation(self) -> Dict[str, List["ImpactedSubstanc -------- >>> result: MaterialImpactedSubstancesQueryResult >>> result.impacted_substances_by_legislation - {'EU REACH - The Candidate List': [ + {'Candidate_AnnexXV': [ , ...] } """ diff --git a/src/ansys/grantami/bomanalytics/queries.py b/src/ansys/grantami/bomanalytics/queries.py index 800ded77..b181bbc9 100644 --- a/src/ansys/grantami/bomanalytics/queries.py +++ b/src/ansys/grantami/bomanalytics/queries.py @@ -729,7 +729,7 @@ class _ImpactedSubstanceMixin(_ApiMixin, ABC): def __init__(self) -> None: super().__init__() self._legislations: List[str] = [] - """Legislation names added to the query.""" + """Legislation ids added to the query.""" self._api_method: str = "" """Name of the method in the ``api`` class. The name is specified in the concrete class and @@ -747,12 +747,12 @@ def __repr__(self) -> str: def with_legislations(self: _ImpactedSubstanceQuery, legislation_names: List[str]) -> _ImpactedSubstanceQuery: """Add a list or set of legislations to retrieve the impacted substances for. - Legislations are identified based on their ``Short title`` attribute value. + Legislations are identified based on their ``Legislation ID`` attribute value. Parameters ---------- legislation_names : list[str] | set[str] - List or set of legistlation names. + List or set of legislation ids. Returns ------- @@ -788,10 +788,10 @@ def _run_query(self, api_instance: api.ImpactedSubstancesApi, static_arguments: """ api_method = getattr(api_instance, self._api_method) - arguments = {"legislation_names": self._legislations, **static_arguments} + arguments = {"legislation_ids": self._legislations, **static_arguments} legislations_text = ", ".join(['"' + leg + '"' for leg in self._legislations]) - logger.debug(f"Legislation names: {legislations_text}") + logger.debug(f"Legislation ids: {legislations_text}") self._call_api(api_method, arguments) result: ResultBaseClass = QueryResultFactory.create_result( @@ -912,7 +912,7 @@ class MaterialImpactedSubstancesQuery(_ImpactedSubstanceMixin, _MaterialQueryBui >>> query = ( ... MaterialImpactedSubstancesQuery() ... .with_material_ids(['elastomer-butadienerubber', 'NBR-100']) - ... .with_legislations(["EU REACH - The Candidate List"]) + ... .with_legislations(["Candidate_AnnexXV"]) ... ) >>> cxn.run(query) @@ -1018,7 +1018,7 @@ class PartImpactedSubstancesQuery(_ImpactedSubstanceMixin, _PartQueryBuilder): >>> query = ( ... PartImpactedSubstancesQuery() ... .with_part_numbers(['DRILL', 'FLRY34']) - ... .with_legislations(["EU REACH - The Candidate List"]) + ... .with_legislations(["Candidate_AnnexXV"]) ... ) >>> cxn.run(query) @@ -1127,7 +1127,7 @@ class SpecificationImpactedSubstancesQuery(_ImpactedSubstanceMixin, _Specificati >>> query = ( ... SpecificationImpactedSubstancesQuery() ... .with_specification_ids(['MIL-A-8625', 'PSP101']) - ... .with_legislations(["EU REACH - The Candidate List"]) + ... .with_legislations(["Candidate_AnnexXV"]) ... ) >>> cxn.run(query) >> query = ( ... BomImpactedSubstancesQuery() ... .with_bom(">> cxn.run(query) diff --git a/tests/common.py b/tests/common.py index 21286e3b..70136343 100644 --- a/tests/common.py +++ b/tests/common.py @@ -1,6 +1,6 @@ from ansys.grantami.bomanalytics import indicators -LEGISLATIONS = ["The SIN List 2.1 (Substitute It Now!)", "Canadian Chemical Challenge"] +LEGISLATIONS = ["SINList", "CCC"] two_legislation_indicator = indicators.WatchListIndicator( name="Two legislations", diff --git a/tests/inputs/examples.py b/tests/inputs/examples.py index 4cc5b058..c3e59ff0 100644 --- a/tests/inputs/examples.py +++ b/tests/inputs/examples.py @@ -36,6 +36,7 @@ "CommonSustainabilityTransportSummaryEntry": r"""""", # noqa: E501 "CommonSustainabilityTransportWithSustainability": r"""""", # noqa: E501 "CommonTransportReference": r"""""", # noqa: E501 + "CommonValueWithUnit": r"""""", # noqa: E501 "GetAvailableLicensesResponse": r"""{"RestrictedSubstances":true,"Sustainability":false,"LogMessages":[]}""", # noqa: E501 "GetComplianceForBom1711Request": r"""{"BomXml1711":"<PartsEco xmlns=\"http://www.grantadesign.com/17/11/BillOfMaterialsEco\" id=\"B0\"><Components><Part id=\"A0\"><Quantity Unit=\"Each\">2</Quantity><PartNumber>123456789</PartNumber><Name>Part One</Name><Components><Part><Quantity Unit=\"Each\">1</Quantity><MassPerUom Unit=\"kg/Part\">2</MassPerUom><PartNumber>987654321</PartNumber><Name>New Part One</Name><Substances><Substance><Percentage>66</Percentage><MISubstanceReference><dbKey xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey><recordGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">de44a721-14e7-4bd1-b0d1-5e1179d1f5e2</recordGUID><recordHistoryGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">af1cb650-6db5-49d6-b4a2-0eee9a090207</recordHistoryGUID></MISubstanceReference><Name>Lead oxide</Name></Substance></Substances></Part><Part><Quantity Unit=\"Each\">1</Quantity><MassPerUom Unit=\"kg/Part\">2</MassPerUom><PartNumber>3333</PartNumber><Name>Part Two</Name><Materials><Material><Percentage>80</Percentage><MIMaterialReference><dbKey xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey><recordGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">3df206df-9fc8-4859-90d4-3519764f8b55</recordGUID><recordHistoryGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">b8e22139-81c5-4097-b2ec-718aa05dca04</recordHistoryGUID></MIMaterialReference></Material></Materials></Part></Components></Part></Components><Notes><Notes>Part with substance</Notes><ProductName>Part with substance</ProductName></Notes></PartsEco>","Indicators":[{"Name":"Indicator 1","LegislationIds":["SINList"],"DefaultThresholdPercentage":0.1,"IgnoreExemptions":false,"IgnoreProcessChemicals":false,"Type":"WatchList"},{"Name":"Indicator 2","LegislationIds":["ELV"],"DefaultThresholdPercentage":0.1,"IgnoreExemptions":false,"IgnoreProcessChemicals":false,"Type":"Rohs"}],"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 "GetComplianceForBom1711Response": r"""{"Parts":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Parts":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Parts":[],"Specifications":[],"Materials":[],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListNotImpacted"},{"Name":"Indicator 2","Flag":"RohsNotImpacted"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":62345}],"ReferenceType":"PartNumber","ReferenceValue":null}],"Specifications":[],"Materials":[],"Substances":[],"ReferenceType":"PartNumber","ReferenceValue":null},{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListHasSubstanceAboveThreshold"},{"Name":"Indicator 2","Flag":"RohsNonCompliant"}],"Parts":[],"Specifications":[],"Materials":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsBelowThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":12345}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":111111}],"Substances":[],"ReferenceType":"PartNumber","ReferenceValue":null}],"LogMessages":[]}""", # noqa: E501 @@ -50,24 +51,23 @@ "GetComplianceForSubstancesRequest": r"""{"Substances":[{"PercentageAmount":0.05,"ReferenceType":"CasNumber","ReferenceValue":"50-00-0"},{"PercentageAmount":20,"ReferenceType":"ChemicalName","ReferenceValue":"1,3-Butadiene"}],"Indicators":[{"Name":"Indicator 1","LegislationIds":["SINList"],"DefaultThresholdPercentage":0.1,"IgnoreExemptions":false,"IgnoreProcessChemicals":false,"Type":"WatchList"},{"Name":"Indicator 2","LegislationIds":["ELV"],"DefaultThresholdPercentage":0.1,"IgnoreExemptions":false,"IgnoreProcessChemicals":false,"Type":"Rohs"}],"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 "GetComplianceForSubstancesResponse": r"""{"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsBelowThreshold"}],"ReferenceType":"CasNumber","ReferenceValue":"50-00-0"},{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAboveThreshold"},{"Name":"Indicator 2","Flag":"RohsAboveThreshold"}],"ReferenceType":"ChemicalName","ReferenceValue":"1,3-Butadiene"}],"LogMessages":[]}""", # noqa: E501 "GetComplianceForSubstancesSubstanceWithAmount": r"""""", # noqa: E501 - "GetImpactedSubstancesForBom1711Request": r"""{"BomXml1711":"<PartsEco xmlns=\"http://www.grantadesign.com/17/11/BillOfMaterialsEco\" id=\"B0\"><Components><Part id=\"A0\"><Quantity Unit=\"Each\">2</Quantity><PartNumber>123456789</PartNumber><Name>Part One</Name><Components><Part><Quantity Unit=\"Each\">1</Quantity><MassPerUom Unit=\"kg/Part\">2</MassPerUom><PartNumber>987654321</PartNumber><Name>New Part One</Name><Substances><Substance><Percentage>66</Percentage><MISubstanceReference><dbKey xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey><recordGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">de44a721-14e7-4bd1-b0d1-5e1179d1f5e2</recordGUID><recordHistoryGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">af1cb650-6db5-49d6-b4a2-0eee9a090207</recordHistoryGUID></MISubstanceReference><Name>Lead oxide</Name></Substance></Substances></Part><Part><Quantity Unit=\"Each\">1</Quantity><MassPerUom Unit=\"kg/Part\">2</MassPerUom><PartNumber>3333</PartNumber><Name>Part Two</Name><Materials><Material><Percentage>80</Percentage><MIMaterialReference><dbKey xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey><recordGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">3df206df-9fc8-4859-90d4-3519764f8b55</recordGUID><recordHistoryGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">b8e22139-81c5-4097-b2ec-718aa05dca04</recordHistoryGUID></MIMaterialReference></Material></Materials></Part></Components></Part></Components><Notes><Notes>Part with substance</Notes><ProductName>Part with substance</ProductName></Notes></PartsEco>","LegislationNames":["The SIN List 2.1 (Substitute It Now!)"],"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 - "GetImpactedSubstancesForBom1711Response": r"""{"Legislations":[{"LegislationName":"The SIN List 2.1 (Substitute It Now!)","ImpactedSubstances":[{"SubstanceName":"1,3-Butadiene","CasNumber":"106-99-0","EcNumber":"203-450-8","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1},{"SubstanceName":"Butylated hydroxytoluene [BAN:NF]","CasNumber":"128-37-0","EcNumber":"204-881-4","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1}]}],"LogMessages":[]}""", # noqa: E501 - "GetImpactedSubstancesForBom2301Request": r"""{"BomXml2301":"<PartsEco xmlns=\"http://www.grantadesign.com/23/01/BillOfMaterialsEco\" id=\"B0\"><Components><Part id=\"A0\"><Quantity Unit=\"Each\">2</Quantity><PartNumber>123456789</PartNumber><Name>Part One</Name><Components><Part><Quantity Unit=\"Each\">1</Quantity><MassPerUom Unit=\"kg/Part\">2</MassPerUom><PartNumber>987654321</PartNumber><Name>New Part One</Name><Substances><Substance><Percentage>66</Percentage><MISubstanceReference><dbKey xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey><recordGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">de44a721-14e7-4bd1-b0d1-5e1179d1f5e2</recordGUID><recordHistoryGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">af1cb650-6db5-49d6-b4a2-0eee9a090207</recordHistoryGUID></MISubstanceReference><Name>Lead oxide</Name></Substance></Substances></Part><Part><Quantity Unit=\"Each\">1</Quantity><MassPerUom Unit=\"kg/Part\">2</MassPerUom><PartNumber>3333</PartNumber><Name>Part Two</Name><Materials><Material><Percentage>80</Percentage><MIMaterialReference><dbKey xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey><recordGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">3df206df-9fc8-4859-90d4-3519764f8b55</recordGUID><recordHistoryGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">b8e22139-81c5-4097-b2ec-718aa05dca04</recordHistoryGUID></MIMaterialReference></Material></Materials></Part></Components></Part></Components><Notes><Notes>Part with substance</Notes><ProductName>Part with substance</ProductName></Notes></PartsEco>","LegislationNames":["The SIN List 2.1 (Substitute It Now!)"],"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 - "GetImpactedSubstancesForBom2301Response": r"""{"Legislations":[{"LegislationName":"The SIN List 2.1 (Substitute It Now!)","ImpactedSubstances":[{"SubstanceName":"1,3-Butadiene","CasNumber":"106-99-0","EcNumber":"203-450-8","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1},{"SubstanceName":"Butylated hydroxytoluene [BAN:NF]","CasNumber":"128-37-0","EcNumber":"204-881-4","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1}]}],"LogMessages":[]}""", # noqa: E501 + "GetImpactedSubstancesForBom1711Request": r"""{"BomXml1711":"<PartsEco xmlns=\"http://www.grantadesign.com/17/11/BillOfMaterialsEco\" id=\"B0\"><Components><Part id=\"A0\"><Quantity Unit=\"Each\">2</Quantity><PartNumber>123456789</PartNumber><Name>Part One</Name><Components><Part><Quantity Unit=\"Each\">1</Quantity><MassPerUom Unit=\"kg/Part\">2</MassPerUom><PartNumber>987654321</PartNumber><Name>New Part One</Name><Substances><Substance><Percentage>66</Percentage><MISubstanceReference><dbKey xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey><recordGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">de44a721-14e7-4bd1-b0d1-5e1179d1f5e2</recordGUID><recordHistoryGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">af1cb650-6db5-49d6-b4a2-0eee9a090207</recordHistoryGUID></MISubstanceReference><Name>Lead oxide</Name></Substance></Substances></Part><Part><Quantity Unit=\"Each\">1</Quantity><MassPerUom Unit=\"kg/Part\">2</MassPerUom><PartNumber>3333</PartNumber><Name>Part Two</Name><Materials><Material><Percentage>80</Percentage><MIMaterialReference><dbKey xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey><recordGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">3df206df-9fc8-4859-90d4-3519764f8b55</recordGUID><recordHistoryGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">b8e22139-81c5-4097-b2ec-718aa05dca04</recordHistoryGUID></MIMaterialReference></Material></Materials></Part></Components></Part></Components><Notes><Notes>Part with substance</Notes><ProductName>Part with substance</ProductName></Notes></PartsEco>","LegislationIds":["SINList"],"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 + "GetImpactedSubstancesForBom1711Response": r"""{"Legislations":[{"LegislationId":"SINList","ImpactedSubstances":[{"SubstanceName":"1,3-Butadiene","CasNumber":"106-99-0","EcNumber":"203-450-8","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1},{"SubstanceName":"Butylated hydroxytoluene [BAN:NF]","CasNumber":"128-37-0","EcNumber":"204-881-4","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1}]}],"LogMessages":[]}""", # noqa: E501 + "GetImpactedSubstancesForBom2301Request": r"""{"BomXml2301":"<PartsEco xmlns=\"http://www.grantadesign.com/23/01/BillOfMaterialsEco\" id=\"B0\"><Components><Part id=\"A0\"><Quantity Unit=\"Each\">2</Quantity><PartNumber>123456789</PartNumber><Name>Part One</Name><Components><Part><Quantity Unit=\"Each\">1</Quantity><MassPerUom Unit=\"kg/Part\">2</MassPerUom><PartNumber>987654321</PartNumber><Name>New Part One</Name><Substances><Substance><Percentage>66</Percentage><MISubstanceReference><dbKey xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey><recordGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">de44a721-14e7-4bd1-b0d1-5e1179d1f5e2</recordGUID><recordHistoryGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">af1cb650-6db5-49d6-b4a2-0eee9a090207</recordHistoryGUID></MISubstanceReference><Name>Lead oxide</Name></Substance></Substances></Part><Part><Quantity Unit=\"Each\">1</Quantity><MassPerUom Unit=\"kg/Part\">2</MassPerUom><PartNumber>3333</PartNumber><Name>Part Two</Name><Materials><Material><Percentage>80</Percentage><MIMaterialReference><dbKey xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey><recordGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">3df206df-9fc8-4859-90d4-3519764f8b55</recordGUID><recordHistoryGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">b8e22139-81c5-4097-b2ec-718aa05dca04</recordHistoryGUID></MIMaterialReference></Material></Materials></Part></Components></Part></Components><Notes><Notes>Part with substance</Notes><ProductName>Part with substance</ProductName></Notes></PartsEco>","LegislationIds":["SINList"],"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 + "GetImpactedSubstancesForBom2301Response": r"""{"Legislations":[{"LegislationId":"SINList","ImpactedSubstances":[{"SubstanceName":"1,3-Butadiene","CasNumber":"106-99-0","EcNumber":"203-450-8","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1},{"SubstanceName":"Butylated hydroxytoluene [BAN:NF]","CasNumber":"128-37-0","EcNumber":"204-881-4","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1}]}],"LogMessages":[]}""", # noqa: E501 "GetImpactedSubstancesForMaterialsMaterial": r"""""", # noqa: E501 - "GetImpactedSubstancesForMaterialsRequest": r"""{"Materials":[{"ReferenceType":"MaterialId","ReferenceValue":"elastomer-butadienerubber"}],"LegislationNames":["The SIN List 2.1 (Substitute It Now!)"],"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 - "GetImpactedSubstancesForMaterialsResponse": r"""{"Materials":[{"Legislations":[{"LegislationName":"The SIN List 2.1 (Substitute It Now!)","ImpactedSubstances":[{"SubstanceName":"1,3-Butadiene","CasNumber":"106-99-0","EcNumber":"203-450-8","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1},{"SubstanceName":"Butylated hydroxytoluene [BAN:NF]","CasNumber":"128-37-0","EcNumber":"204-881-4","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1}]}],"ReferenceType":"MaterialId","ReferenceValue":"elastomer-butadienerubber"}],"LogMessages":[]}""", # noqa: E501 + "GetImpactedSubstancesForMaterialsRequest": r"""{"Materials":[{"ReferenceType":"MaterialId","ReferenceValue":"elastomer-butadienerubber"}],"LegislationIds":["SINList"],"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 + "GetImpactedSubstancesForMaterialsResponse": r"""{"Materials":[{"Legislations":[{"LegislationId":"SINList","ImpactedSubstances":[{"SubstanceName":"1,3-Butadiene","CasNumber":"106-99-0","EcNumber":"203-450-8","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1},{"SubstanceName":"Butylated hydroxytoluene [BAN:NF]","CasNumber":"128-37-0","EcNumber":"204-881-4","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1}]}],"ReferenceType":"MaterialId","ReferenceValue":"elastomer-butadienerubber"}],"LogMessages":[]}""", # noqa: E501 "GetImpactedSubstancesForPartsPart": r"""""", # noqa: E501 - "GetImpactedSubstancesForPartsRequest": r"""{"Parts":[{"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":565024},{"ReferenceType":"PartNumber","ReferenceValue":"FLRY33"}],"LegislationNames":["The SIN List 2.1 (Substitute It Now!)"],"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 - "GetImpactedSubstancesForPartsResponse": r"""{"Parts":[{"Legislations":[{"LegislationName":"The SIN List 2.1 (Substitute It Now!)","ImpactedSubstances":[{"SubstanceName":"1,3-Butadiene","CasNumber":"106-99-0","EcNumber":"203-450-8","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1},{"SubstanceName":"Butylated hydroxytoluene [BAN:NF]","CasNumber":"128-37-0","EcNumber":"204-881-4","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1}]}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":565024},{"Legislations":[{"LegislationName":"The SIN List 2.1 (Substitute It Now!)","ImpactedSubstances":[{"SubstanceName":"Benzophenone","CasNumber":"119-61-9","EcNumber":"204-337-6","MaxPercentageAmountInMaterial":1,"LegislationThreshold":0.1},{"SubstanceName":"2,4-Dihydroxybenzophenon","CasNumber":"131-56-6","EcNumber":"205-029-4","MaxPercentageAmountInMaterial":1,"LegislationThreshold":0.1}]}],"ReferenceType":"PartNumber","ReferenceValue":"FLRY33"}],"LogMessages":[]}""", # noqa: E501 - "GetImpactedSubstancesForSpecificationsRequest": r"""{"Specifications":[{"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":545019},{"ReferenceType":"SpecificationId","ReferenceValue":"AMS03-27"}],"LegislationNames":["The SIN List 2.1 (Substitute It Now!)"],"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 - "GetImpactedSubstancesForSpecificationsResponse": r"""{"Specifications":[{"Legislations":[{"LegislationName":"The SIN List 2.1 (Substitute It Now!)","ImpactedSubstances":[{"SubstanceName":"1,3-Butadiene","CasNumber":"106-99-0","EcNumber":"203-450-8","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1},{"SubstanceName":"Butylated hydroxytoluene [BAN:NF]","CasNumber":"128-37-0","EcNumber":"204-881-4","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1}]}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":545019},{"Legislations":[{"LegislationName":"The SIN List 2.1 (Substitute It Now!)","ImpactedSubstances":[{"SubstanceName":"Benzophenone","CasNumber":"119-61-9","EcNumber":"204-337-6","MaxPercentageAmountInMaterial":1,"LegislationThreshold":0.1},{"SubstanceName":"2,4-Dihydroxybenzophenon","CasNumber":"131-56-6","EcNumber":"205-029-4","MaxPercentageAmountInMaterial":1,"LegislationThreshold":0.1}]}],"ReferenceType":"SpecificationId","ReferenceValue":"AMS03-27"}],"LogMessages":[]}""", # noqa: E501 + "GetImpactedSubstancesForPartsRequest": r"""{"Parts":[{"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":565024},{"ReferenceType":"PartNumber","ReferenceValue":"FLRY33"}],"LegislationIds":["SINList"],"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 + "GetImpactedSubstancesForPartsResponse": r"""{"Parts":[{"Legislations":[{"LegislationId":"SINList","ImpactedSubstances":[{"SubstanceName":"1,3-Butadiene","CasNumber":"106-99-0","EcNumber":"203-450-8","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1},{"SubstanceName":"Butylated hydroxytoluene [BAN:NF]","CasNumber":"128-37-0","EcNumber":"204-881-4","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1}]}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":565024},{"Legislations":[{"LegislationId":"SINList","ImpactedSubstances":[{"SubstanceName":"Benzophenone","CasNumber":"119-61-9","EcNumber":"204-337-6","MaxPercentageAmountInMaterial":1,"LegislationThreshold":0.1},{"SubstanceName":"2,4-Dihydroxybenzophenon","CasNumber":"131-56-6","EcNumber":"205-029-4","MaxPercentageAmountInMaterial":1,"LegislationThreshold":0.1}]}],"ReferenceType":"PartNumber","ReferenceValue":"FLRY33"}],"LogMessages":[]}""", # noqa: E501 + "GetImpactedSubstancesForSpecificationsRequest": r"""{"Specifications":[{"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":545019},{"ReferenceType":"SpecificationId","ReferenceValue":"AMS03-27"}],"LegislationIds":["SINList"],"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 + "GetImpactedSubstancesForSpecificationsResponse": r"""{"Specifications":[{"Legislations":[{"LegislationId":"SINList","ImpactedSubstances":[{"SubstanceName":"1,3-Butadiene","CasNumber":"106-99-0","EcNumber":"203-450-8","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1},{"SubstanceName":"Butylated hydroxytoluene [BAN:NF]","CasNumber":"128-37-0","EcNumber":"204-881-4","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1}]}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":545019},{"Legislations":[{"LegislationId":"SINList","ImpactedSubstances":[{"SubstanceName":"Benzophenone","CasNumber":"119-61-9","EcNumber":"204-337-6","MaxPercentageAmountInMaterial":1,"LegislationThreshold":0.1},{"SubstanceName":"2,4-Dihydroxybenzophenon","CasNumber":"131-56-6","EcNumber":"205-029-4","MaxPercentageAmountInMaterial":1,"LegislationThreshold":0.1}]}],"ReferenceType":"SpecificationId","ReferenceValue":"AMS03-27"}],"LogMessages":[]}""", # noqa: E501 "GetImpactedSubstancesForSpecificationsSpecification": r"""""", # noqa: E501 "GetSustainabilityForBom2301Request": r"""{"BomXml2301":"<?xml version= \"1.0\"?><PartsEco xmlns:xsd= \"http://www.w3.org/2001/XMLSchema\" xmlns:xsi= \"http://www.w3.org/2001/XMLSchema-instance\" xmlns= \"http://www.grantadesign.com/23/01/BillOfMaterialsEco\"><Components><Part><Quantity Unit= \"Each\">1</Quantity><PartNumber>PartOne</PartNumber><Name>PartOne</Name><ExternalIdentity>1686152405220|5</ExternalIdentity><Components><Part><Quantity Unit= \"Each\">1</Quantity><MassPerUom Unit= \"kg/Part\">2</MassPerUom><PartNumber>PartTwo</PartNumber><Name>PartTwo</Name><ExternalIdentity>1686152405220|16</ExternalIdentity><Materials><Material><Mass Unit= \"kg\">2</Mass><MIMaterialReference><dbKey xmlns= \"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey><recordGUID xmlns= \"http://www.grantadesign.com/12/05/GrantaBaseTypes\">8dc38bb5-eff9-4c60-9233-271a3c8f6270</recordGUID></MIMaterialReference><Identity>steel-kovar-annealed</Identity><Name>High alloy steel, Kovar, annealed</Name><ExternalIdentity>1686152405220|14</ExternalIdentity><Processes><Process><MIProcessReference><dbKey xmlns= \"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey><recordHistoryGUID xmlns= \"http://www.grantadesign.com/12/05/GrantaBaseTypes\">d986c90a-2835-45f3-8b69-d6d662dcf53a</recordHistoryGUID></MIProcessReference><Identity>Coarse Machining</Identity><Name>Coarse Machining</Name><ExternalIdentity>1977190729730|4</ExternalIdentity><DimensionType>MassRemoved</DimensionType><Quantity Unit= \"kg\">0.05</Quantity></Process></Processes></Material></Materials></Part></Components></Part></Components><Notes><ProductName>Example</ProductName></Notes></PartsEco>","PreferredUnits":null,"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 - "GetSustainabilityForBom2301Response": r"""{"Parts":[{"Parts":[{"Parts":[],"Materials":[{"Processes":[{"EmbodiedEnergy":{"Value":0.09,"Unit":"MJ"},"ClimateChange":{"Value":0,"Unit":"kg"},"ReferenceType":"MiRecordHistoryGuid","ReferenceValue":"d986c90a-2835-45f3-8b69-d6d662dcf53a"}],"Substances":[],"EmbodiedEnergy":{"Value":441.1,"Unit":"MJ"},"ClimateChange":{"Value":14.9,"Unit":"kg"},"Recyclable":true,"Biodegradable":false,"Downcycle":true,"ReportedMass":{"Value":2,"Unit":"kg"},"ReferenceType":"MiRecordGuid","ReferenceValue":"8dc38bb5-eff9-4c60-9233-271a3c8f6270"}],"Processes":[],"Substances":[],"Specifications":[],"EmbodiedEnergy":{"Value":441.2,"Unit":"MJ"},"ClimateChange":{"Value":14.2,"Unit":"kg"},"ReportedMass":{"Value":2,"Unit":"kg"},"ReferenceType":"PartNumber","ReferenceValue":null}],"Materials":[],"Processes":[],"Substances":[],"Specifications":[],"EmbodiedEnergy":{"Value":441.2,"Unit":"MJ"},"ClimateChange":{"Value":14.2,"Unit":"kg"},"ReportedMass":{"Value":2,"Unit":"kg"},"ReferenceType":"PartNumber","ReferenceValue":null}],"TransportStages":[],"LogMessages":[]}""", # noqa: E501 + "GetSustainabilityForBom2301Response": r"""{"Parts":[{"Parts":[{"Parts":[],"Materials":[{"Processes":[{"EmbodiedEnergy":{"Value":0.09,"Unit":"MJ"},"ClimateChange":{"Value":0,"Unit":"kg"},"ReferenceType":"MiRecordHistoryGuid","ReferenceValue":"d986c90a-2835-45f3-8b69-d6d662dcf53a"}],"Substances":[],"EmbodiedEnergy":{"Value":441.1,"Unit":"MJ"},"ClimateChange":{"Value":14.9,"Unit":"kg"},"Recyclable":true,"Biodegradable":false,"FunctionalRecycle":true,"ReportedMass":{"Value":2,"Unit":"kg"},"ReferenceType":"MiRecordGuid","ReferenceValue":"8dc38bb5-eff9-4c60-9233-271a3c8f6270"}],"Processes":[],"Substances":[],"Specifications":[],"EmbodiedEnergy":{"Value":441.2,"Unit":"MJ"},"ClimateChange":{"Value":14.2,"Unit":"kg"},"ReportedMass":{"Value":2,"Unit":"kg"},"ReferenceType":"PartNumber","ReferenceValue":null}],"Materials":[],"Processes":[],"Substances":[],"Specifications":[],"EmbodiedEnergy":{"Value":441.2,"Unit":"MJ"},"ClimateChange":{"Value":14.2,"Unit":"kg"},"ReportedMass":{"Value":2,"Unit":"kg"},"ReferenceType":"PartNumber","ReferenceValue":null}],"TransportStages":[],"LogMessages":[]}""", # noqa: E501 "GetSustainabilitySummaryForBom2301Request": r"""{"BomXml2301":"<?xml version=\"1.0\"?><PartsEco xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://www.grantadesign.com/23/01/BillOfMaterialsEco\"> <Components> <Part> <Quantity Unit=\"Each\">1</Quantity> <PartNumber>PartOne</PartNumber> <ExternalIdentity>47</ExternalIdentity> <Components> <Part> <Quantity Unit=\"Each\">1</Quantity> <PartNumber>PartTwo</PartNumber> <Name /> <ExternalIdentity>50</ExternalIdentity> <Materials> <Material> <Mass Unit=\"kg\">0.5</Mass> <MIMaterialReference> <dbKey xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey> <recordGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">8dc38bb5-eff9-4c60-9233-271a3c8f6270</recordGUID> </MIMaterialReference> <Identity>steel-kovar-annealed</Identity> <Name>High alloy steel, Kovar, annealed</Name> <ExternalIdentity>5777</ExternalIdentity> <Processes> <Process> <MIProcessReference> <dbKey xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey> <recordGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">baa6c95b-ff0e-4811-9120-92717ee15bda</recordGUID> </MIProcessReference> <Identity /> <Name>Metal casting</Name> <ExternalIdentity>5821</ExternalIdentity> <DimensionType>Mass</DimensionType> <Percentage>100</Percentage> </Process> <Process> <MIProcessReference> <dbKey xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey> <recordGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">907bda29-e800-44f6-b7ea-4eb8e7cff375</recordGUID> </MIProcessReference> <Identity /> <Name>Machining, coarse</Name> <ExternalIdentity>5801</ExternalIdentity> <DimensionType>MassRemoved</DimensionType> <Percentage>20</Percentage> </Process> </Processes> </Material> </Materials> </Part> </Components> </Part> </Components> <Notes> <ProductName>Example</ProductName> </Notes></PartsEco>","PreferredUnits":null,"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 - "GetSustainabilitySummaryForBom2301Response": r"""{"MaterialSummary":{"Summary":[{"Name":"steel-kovar-annealed","RecordReference":{"ReferenceType":"MiRecordGuid","ReferenceValue":"8dc38bb5-eff9-4c60-9233-271a3c8f6270"},"EmbodiedEnergy":{"Value":134.482549067761,"Unit":"MJ"},"EmbodiedEnergyPercentage":100,"ClimateChange":{"Value":4.3276934674222,"Unit":"kg"},"ClimateChangePercentage":100,"MassBeforeProcessing":{"Value":0.625,"Unit":"kg"},"MassAfterProcessing":{"Value":0.5,"Unit":"kg"},"LargestContributors":[{"ComponentName":"","RecordReference":{"ReferenceType":"PartNumber","ReferenceValue":null},"MaterialMassBeforeProcessing":{"Value":0.625,"Unit":"kg"}}]}],"PhaseSummary":{"Phase":"Material","EmbodiedEnergy":{"Value":134.482549067761,"Unit":"MJ"},"EmbodiedEnergyPercentage":95.1957177924867,"ClimateChange":{"Value":4.3276934674222,"Unit":"kg"},"ClimateChangePercentage":93.623465310322}},"ProcessSummary":{"PrimaryProcesses":[{"ProcessName":"Metal casting","ProcessRecordReference":{"ReferenceType":"MiRecordGuid","ReferenceValue":"baa6c95b-ff0e-4811-9120-92717ee15bda"},"MaterialRecordReference":{"ReferenceType":"MiRecordGuid","ReferenceValue":"8dc38bb5-eff9-4c60-9233-271a3c8f6270"},"MaterialName":"High alloy steel, Kovar, annealed","EmbodiedEnergy":{"Value":6.55438765769984,"Unit":"MJ"},"EmbodiedEnergyPercentage":100,"ClimateChange":{"Value":0.283705040845716,"Unit":"kg"},"ClimateChangePercentage":100}],"SecondaryProcesses":[{"ProcessName":"Machining, coarse","ProcessRecordReference":{"ReferenceType":"MiRecordGuid","ReferenceValue":"907bda29-e800-44f6-b7ea-4eb8e7cff375"},"MaterialRecordReference":{"ReferenceType":"MiRecordGuid","ReferenceValue":"8dc38bb5-eff9-4c60-9233-271a3c8f6270"},"MaterialName":"High alloy steel, Kovar, annealed","EmbodiedEnergy":{"Value":0.232599537624153,"Unit":"MJ"},"EmbodiedEnergyPercentage":100,"ClimateChange":{"Value":0.0110467869128737,"Unit":"kg"},"ClimateChangePercentage":100}],"JoiningAndFinishingProcesses":[],"PhaseSummary":{"Phase":"Processes","EmbodiedEnergy":{"Value":6.78698719532399,"Unit":"MJ"},"EmbodiedEnergyPercentage":4.80428220751333,"ClimateChange":{"Value":0.29475182775859,"Unit":"kg"},"ClimateChangePercentage":6.37653468967796}},"TransportSummary":{"Summary":[],"PhaseSummary":{"Phase":"Transport","EmbodiedEnergy":{"Value":0,"Unit":"MJ"},"EmbodiedEnergyPercentage":0,"ClimateChange":{"Value":0,"Unit":"kg"},"ClimateChangePercentage":0}},"LogMessages":[]}""", # noqa: E501 - "GrantaBomAnalyticsServicesImplementationCommonValueWithUnit": r"""""", # noqa: E501 + "GetSustainabilitySummaryForBom2301Response": r"""{"MaterialSummary":{"Summary":[{"Identity":"steel-kovar-annealed","RecordReference":{"ReferenceType":"MiRecordGuid","ReferenceValue":"8dc38bb5-eff9-4c60-9233-271a3c8f6270"},"EmbodiedEnergy":{"Value":134.482549067761,"Unit":"MJ"},"EmbodiedEnergyPercentage":100,"ClimateChange":{"Value":4.3276934674222,"Unit":"kg"},"ClimateChangePercentage":100,"MassBeforeProcessing":{"Value":0.625,"Unit":"kg"},"MassAfterProcessing":{"Value":0.5,"Unit":"kg"},"LargestContributors":[{"ComponentName":"","RecordReference":{"ReferenceType":"PartNumber","ReferenceValue":null},"MaterialMassBeforeProcessing":{"Value":0.625,"Unit":"kg"}}]}],"PhaseSummary":{"Phase":"Material","EmbodiedEnergy":{"Value":134.482549067761,"Unit":"MJ"},"EmbodiedEnergyPercentage":95.1957177924867,"ClimateChange":{"Value":4.3276934674222,"Unit":"kg"},"ClimateChangePercentage":93.623465310322}},"ProcessSummary":{"PrimaryProcesses":[{"ProcessName":"Metal casting","ProcessRecordReference":{"ReferenceType":"MiRecordGuid","ReferenceValue":"baa6c95b-ff0e-4811-9120-92717ee15bda"},"MaterialRecordReference":{"ReferenceType":"MiRecordGuid","ReferenceValue":"8dc38bb5-eff9-4c60-9233-271a3c8f6270"},"MaterialIdentity":"High alloy steel, Kovar, annealed","EmbodiedEnergy":{"Value":6.55438765769984,"Unit":"MJ"},"EmbodiedEnergyPercentage":100,"ClimateChange":{"Value":0.283705040845716,"Unit":"kg"},"ClimateChangePercentage":100}],"SecondaryProcesses":[{"ProcessName":"Machining, coarse","ProcessRecordReference":{"ReferenceType":"MiRecordGuid","ReferenceValue":"907bda29-e800-44f6-b7ea-4eb8e7cff375"},"MaterialRecordReference":{"ReferenceType":"MiRecordGuid","ReferenceValue":"8dc38bb5-eff9-4c60-9233-271a3c8f6270"},"MaterialIdentity":"High alloy steel, Kovar, annealed","EmbodiedEnergy":{"Value":0.232599537624153,"Unit":"MJ"},"EmbodiedEnergyPercentage":100,"ClimateChange":{"Value":0.0110467869128737,"Unit":"kg"},"ClimateChangePercentage":100}],"JoiningAndFinishingProcesses":[],"PhaseSummary":{"Phase":"Processes","EmbodiedEnergy":{"Value":6.78698719532399,"Unit":"MJ"},"EmbodiedEnergyPercentage":4.80428220751333,"ClimateChange":{"Value":0.29475182775859,"Unit":"kg"},"ClimateChangePercentage":6.37653468967796}},"TransportSummary":{"Summary":[],"PhaseSummary":{"Phase":"Transport","EmbodiedEnergy":{"Value":0,"Unit":"MJ"},"EmbodiedEnergyPercentage":0,"ClimateChange":{"Value":0,"Unit":"kg"},"ClimateChangePercentage":0}},"LogMessages":[]}""", # noqa: E501 } examples_as_strings = {k: html.unescape(v) for k, v in _example_dict_raw.items() if v} diff --git a/tests/test_integration_tests.py b/tests/test_integration_tests.py index 58f28853..aacbd89b 100644 --- a/tests/test_integration_tests.py +++ b/tests/test_integration_tests.py @@ -161,7 +161,7 @@ def test_withdrawn_records_return_warning_messages_if_not_acting_as_read(self, c class TestSpecLinkDepth: spec_ids = ["MIL-DTL-53039,TypeII"] - legislation_ids = ["EU REACH - The Candidate List"] + legislation_ids = ["Candidate_AnnexXV"] @pytest.fixture(scope="class") def connection_with_custom_tables(self, default_connection): @@ -219,7 +219,7 @@ def test_sustainability_summary_query(self, default_connection): assert len(response.phases_summary) == 3 assert len(response.material_details) == 3 - all_others = next(mat for mat in response.material_details if mat.name == "Other") + all_others = next(mat for mat in response.material_details if mat.identity == "Other") def test_sustainability_query(self, default_connection): query = queries.BomSustainabilityQuery() diff --git a/tests/test_item_results.py b/tests/test_item_results.py index 3123b75b..77e33712 100644 --- a/tests/test_item_results.py +++ b/tests/test_item_results.py @@ -39,10 +39,10 @@ class ComplianceResultMock: substance_name="Substance2", cas_number="456-789", ec_number="987-654" ) sin_list_result = models.CommonLegislationWithImpactedSubstances( - legislation_name="The SIN List 2.1 (Substitute It Now!)", impacted_substances=[impacted_substance_1] + legislation_id="SINList", impacted_substances=[impacted_substance_1] ) ccc_result = models.CommonLegislationWithImpactedSubstances( - legislation_name="Canadian Chemical Challenge", impacted_substances=[impacted_substance_1, impacted_substance_2] + legislation_id="CCC", impacted_substances=[impacted_substance_1, impacted_substance_2] ) legislation_results = [sin_list_result, ccc_result] @@ -81,7 +81,7 @@ def test_impacted_substances_item_repr(result_type): ) for legislation in legislation_results: - assert legislation.legislation_name in repr(result.substances_by_legislation) + assert legislation.legislation_id in repr(result.substances_by_legislation) assert "ImpactedSubstance" in repr(result.substances_by_legislation) @@ -96,7 +96,7 @@ def test_impacted_substances_bom_repr(): ) for legislation in legislation_results: - assert legislation.legislation_name in repr(result.substances_by_legislation) + assert legislation.legislation_id in repr(result.substances_by_legislation) assert "ImpactedSubstance" in repr(result.substances_by_legislation) @@ -125,11 +125,11 @@ def test_compliance_item_repr(result_type): class TestSustainabilitySummaryResultsRepr: _rec_ref_kwargs = {"reference_type": "MiRecordGuid", "reference_value": "TEST_GUID"} _eco_metrics = { - "embodied_energy": models.GrantaBomAnalyticsServicesImplementationCommonValueWithUnit( + "embodied_energy": models.CommonValueWithUnit( value=1.0, unit="KJ", ), - "climate_change": models.GrantaBomAnalyticsServicesImplementationCommonValueWithUnit( + "climate_change": models.CommonValueWithUnit( value=1.0, unit="KJ", ), @@ -149,7 +149,7 @@ def test_transport_phase_summary_repr(self): model = models.CommonSustainabilityTransportSummaryEntry( **self._eco_metrics, stage_name="Train A->B", - distance=models.GrantaBomAnalyticsServicesImplementationCommonValueWithUnit(value=45, unit="km"), + distance=models.CommonValueWithUnit(value=45, unit="km"), record_reference=models.CommonTransportReference(**self._rec_ref_kwargs), ) transport_result = ItemResultFactory.create_transport_summary(model) @@ -159,15 +159,11 @@ def test_transport_phase_summary_repr(self): def test_material_phase_summary_repr(self): model = models.CommonSustainabilityMaterialSummaryEntry( **self._eco_metrics, - name="Steel", + identity="Steel", record_reference=models.CommonMaterialReference(**self._rec_ref_kwargs), largest_contributors=[], - mass_after_processing=models.GrantaBomAnalyticsServicesImplementationCommonValueWithUnit( - value=50, unit="kg" - ), - mass_before_processing=models.GrantaBomAnalyticsServicesImplementationCommonValueWithUnit( - value=45, unit="kg" - ), + mass_after_processing=models.CommonValueWithUnit(value=50, unit="kg"), + mass_before_processing=models.CommonValueWithUnit(value=45, unit="kg"), ) result = ItemResultFactory.create_material_summary(model) expected = "" @@ -176,7 +172,7 @@ def test_material_phase_summary_repr(self): def test_process_phase_summary_repr(self): model = models.CommonSustainabilityProcessSummaryEntry( **self._eco_metrics, - material_name="Steel", + material_identity="Steel", material_record_reference=models.CommonMaterialReference(**self._rec_ref_kwargs), process_name="Forging", process_record_reference=models.CommonProcessReference(**self._rec_ref_kwargs), @@ -188,9 +184,7 @@ def test_process_phase_summary_repr(self): def test_contributing_part_repr(self): model = models.CommonSustainabilityMaterialContributingComponent( component_name="Engine", - material_mass_before_processing=models.GrantaBomAnalyticsServicesImplementationCommonValueWithUnit( - value=50, unit="kg" - ), + material_mass_before_processing=models.CommonValueWithUnit(value=50, unit="kg"), record_reference=models.CommonPartReference(**self._rec_ref_kwargs), ) result = ItemResultFactory.create_contributing_component(model) @@ -201,14 +195,8 @@ def test_contributing_part_repr(self): class TestSustainabilityResultsRepr: _rec_ref_kwargs = {"reference_type": "MiRecordGuid", "reference_value": "TEST_GUID"} _eco_metrics = { - "embodied_energy": models.GrantaBomAnalyticsServicesImplementationCommonValueWithUnit( - value=2.3, - unit="KJ", - ), - "climate_change": models.GrantaBomAnalyticsServicesImplementationCommonValueWithUnit( - value=5.1, - unit="KJ", - ), + "embodied_energy": models.CommonValueWithUnit(value=2.3, unit="KJ"), + "climate_change": models.CommonValueWithUnit(value=5.1, unit="KJ"), } def test_transport_result_repr(self): @@ -231,7 +219,7 @@ def test_part_result_repr(self): specifications=[], processes=[], parts=[], - reported_mass=models.GrantaBomAnalyticsServicesImplementationCommonValueWithUnit(value=45, unit="kg"), + reported_mass=models.CommonValueWithUnit(value=45, unit="kg"), ) result = ItemResultFactory.create_part_with_sustainability(model) expected = "" @@ -242,11 +230,11 @@ def test_material_result_repr(self): **self._eco_metrics, **self._rec_ref_kwargs, biodegradable=True, - downcycle=True, + functional_recycle=True, recyclable=True, processes=[], substances=[], - reported_mass=models.GrantaBomAnalyticsServicesImplementationCommonValueWithUnit(value=45, unit="kg"), + reported_mass=models.CommonValueWithUnit(value=45, unit="kg"), ) result = ItemResultFactory.create_material_with_sustainability(model) expected = ( @@ -283,7 +271,7 @@ def test_substance_result_repr(self): def test_unitted_value_repr(): - model = models.GrantaBomAnalyticsServicesImplementationCommonValueWithUnit(unit="kg", value=255.2) + model = models.CommonValueWithUnit(unit="kg", value=255.2) result = ItemResultFactory.create_unitted_value(model) expected = '' assert repr(result) == expected diff --git a/tests/test_mocked_responses/test_bom.py b/tests/test_mocked_responses/test_bom.py index 4be83d80..5b200772 100644 --- a/tests/test_mocked_responses/test_bom.py +++ b/tests/test_mocked_responses/test_bom.py @@ -15,7 +15,7 @@ class TestImpactedSubstances(BaseMockTester): def test_impacted_substances_by_legislation(self, mock_connection): response = self.get_mocked_response(mock_connection) assert len(response.impacted_substances_by_legislation) == 1 - legislation = response.impacted_substances_by_legislation["The SIN List 2.1 (Substitute It Now!)"] + legislation = response.impacted_substances_by_legislation["SINList"] for substance in legislation: sv = SubstanceValidator(substance) sv.check_substance_details() diff --git a/tests/test_mocked_responses/test_materials.py b/tests/test_mocked_responses/test_materials.py index c5c0ec23..6ac7057b 100644 --- a/tests/test_mocked_responses/test_materials.py +++ b/tests/test_mocked_responses/test_materials.py @@ -31,7 +31,7 @@ def test_impacted_substances_by_material(self, mock_connection): # Test list of substances grouped by legislations legislations = mat_results.substances_by_legislation assert len(legislations) == 1 - substances = legislations["The SIN List 2.1 (Substitute It Now!)"] + substances = legislations["SINList"] assert len(substances) == 2 for substance in substances: sv = SubstanceValidator(substance) @@ -40,7 +40,7 @@ def test_impacted_substances_by_material(self, mock_connection): def test_impacted_substances_by_legislation(self, mock_connection): response = self.get_mocked_response(mock_connection) assert len(response.impacted_substances_by_legislation) == 1 - legislation = response.impacted_substances_by_legislation["The SIN List 2.1 (Substitute It Now!)"] + legislation = response.impacted_substances_by_legislation["SINList"] for substance in legislation: sv = SubstanceValidator(substance) sv.check_substance_details() diff --git a/tests/test_mocked_responses/test_parts.py b/tests/test_mocked_responses/test_parts.py index c66be849..486142dc 100644 --- a/tests/test_mocked_responses/test_parts.py +++ b/tests/test_mocked_responses/test_parts.py @@ -38,7 +38,7 @@ def test_impacted_substances_by_part(self, mock_connection): # Test list of substances grouped by legislations assert len(part_0.substances_by_legislation) == 1 - part_0_substances = part_0.substances_by_legislation["The SIN List 2.1 (Substitute It Now!)"] + part_0_substances = part_0.substances_by_legislation["SINList"] assert len(part_0_substances) == 2 for substance in part_0_substances: sv = SubstanceValidator(substance) @@ -56,7 +56,7 @@ def test_impacted_substances_by_part(self, mock_connection): # Test list of substances grouped by legislations assert len(part_1.substances_by_legislation) == 1 - part_1_substances = part_1.substances_by_legislation["The SIN List 2.1 (Substitute It Now!)"] + part_1_substances = part_1.substances_by_legislation["SINList"] assert len(part_1_substances) == 2 for substance in part_1_substances: sv = SubstanceValidator(substance) @@ -65,7 +65,7 @@ def test_impacted_substances_by_part(self, mock_connection): def test_impacted_substances_by_legislation(self, mock_connection): response = self.get_mocked_response(mock_connection) assert len(response.impacted_substances_by_legislation) == 1 - legislation = response.impacted_substances_by_legislation["The SIN List 2.1 (Substitute It Now!)"] + legislation = response.impacted_substances_by_legislation["SINList"] for substance in legislation: sv = SubstanceValidator(substance) sv.check_substance_details() diff --git a/tests/test_mocked_responses/test_specifications.py b/tests/test_mocked_responses/test_specifications.py index b28e5491..b15485eb 100644 --- a/tests/test_mocked_responses/test_specifications.py +++ b/tests/test_mocked_responses/test_specifications.py @@ -38,7 +38,7 @@ def test_impacted_substances_by_specification(self, mock_connection): # Test list of substances grouped by legislations assert len(spec_result_0.substances_by_legislation) == 1 - substances_0 = spec_result_0.substances_by_legislation["The SIN List 2.1 (Substitute It Now!)"] + substances_0 = spec_result_0.substances_by_legislation["SINList"] assert len(substances_0) == 2 for substance in substances_0: sv = SubstanceValidator(substance) @@ -56,7 +56,7 @@ def test_impacted_substances_by_specification(self, mock_connection): # Test list of substances grouped by legislations assert len(spec_result_1.substances_by_legislation) == 1 - substances_1 = spec_result_1.substances_by_legislation["The SIN List 2.1 (Substitute It Now!)"] + substances_1 = spec_result_1.substances_by_legislation["SINList"] assert len(substances_1) == 2 for substance in substances_1: sv = SubstanceValidator(substance) @@ -65,7 +65,7 @@ def test_impacted_substances_by_specification(self, mock_connection): def test_impacted_substances_by_legislation(self, mock_connection): response = self.get_mocked_response(mock_connection) assert len(response.impacted_substances_by_legislation) == 1 - legislation = response.impacted_substances_by_legislation["The SIN List 2.1 (Substitute It Now!)"] + legislation = response.impacted_substances_by_legislation["SINList"] for substance in legislation: sv = SubstanceValidator(substance) sv.check_substance_details() diff --git a/tests/test_mocked_responses/test_sustainability.py b/tests/test_mocked_responses/test_sustainability.py index 5f8246c8..d730214c 100644 --- a/tests/test_mocked_responses/test_sustainability.py +++ b/tests/test_mocked_responses/test_sustainability.py @@ -71,7 +71,7 @@ def test_response_processing(self, mock_connection): assert part_0_0_material_0.reported_mass.value == 2 assert part_0_0_material_0.recyclable is True assert part_0_0_material_0.biodegradable is False - assert part_0_0_material_0.downcycle is True + assert part_0_0_material_0.functional_recycle is True assert part_0_0_material_0.record_guid == "8dc38bb5-eff9-4c60-9233-271a3c8f6270" assert len(part_0_0_material_0.processes) == 1 @@ -121,7 +121,7 @@ def test_response_processing(self, mock_connection): assert len(response.material_details) == 1 unique_material_0 = response.material_details[0] - assert unique_material_0.name == "steel-kovar-annealed" + assert unique_material_0.identity == "steel-kovar-annealed" assert unique_material_0.record_guid == "8dc38bb5-eff9-4c60-9233-271a3c8f6270" assert unique_material_0.embodied_energy.value == 134.482549067761 assert unique_material_0.embodied_energy.unit == "MJ" @@ -148,7 +148,7 @@ def test_response_processing(self, mock_connection): unique_ppmp_0 = response.primary_processes_details[0] assert unique_ppmp_0.process_name == "Metal casting" assert unique_ppmp_0.process_reference.record_guid == "baa6c95b-ff0e-4811-9120-92717ee15bda" - assert unique_ppmp_0.material_name == "High alloy steel, Kovar, annealed" + assert unique_ppmp_0.material_identity == "High alloy steel, Kovar, annealed" assert unique_ppmp_0.material_reference.record_guid == "8dc38bb5-eff9-4c60-9233-271a3c8f6270" assert unique_ppmp_0.embodied_energy.value == 6.55438765769984 @@ -163,7 +163,7 @@ def test_response_processing(self, mock_connection): unique_spmp_0 = response.secondary_processes_details[0] assert unique_spmp_0.process_name == "Machining, coarse" assert unique_spmp_0.process_reference.record_guid == "907bda29-e800-44f6-b7ea-4eb8e7cff375" - assert unique_spmp_0.material_name == "High alloy steel, Kovar, annealed" + assert unique_spmp_0.material_identity == "High alloy steel, Kovar, annealed" assert unique_spmp_0.material_reference.record_guid == "8dc38bb5-eff9-4c60-9233-271a3c8f6270" assert unique_spmp_0.embodied_energy.value == 0.232599537624153 From 366ab2cb5790f28405443227436baed4e7be8ade Mon Sep 17 00:00:00 2001 From: Doug Addy Date: Mon, 25 Sep 2023 17:37:37 +0100 Subject: [PATCH 061/275] Make mypy happy as larry --- poetry.lock | 48 +++- src/ansys/grantami/bomanalytics/__init__.py | 2 +- .../grantami/bomanalytics/_bom_helper.py | 12 +- .../bomanalytics/bom_types/__init__.py | 4 +- .../bomanalytics/bom_types/_bom_reader.py | 61 +++-- .../bomanalytics/bom_types/_bom_types.py | 212 ++++++++++-------- .../bomanalytics/bom_types/_bom_writer.py | 8 +- .../bomanalytics/bom_types/_builders.py | 7 +- tests/test_bom_handler.py | 10 +- 9 files changed, 202 insertions(+), 162 deletions(-) diff --git a/poetry.lock b/poetry.lock index 20021770..7eadafce 100644 --- a/poetry.lock +++ b/poetry.lock @@ -796,6 +796,20 @@ typing-extensions = ">=3.7.4.1" all = ["pytz (>=2019.1)"] dates = ["pytz (>=2019.1)"] +[[package]] +name = "elementpath" +version = "4.1.5" +description = "XPath 1.0/2.0/3.0/3.1 parsers and selectors for ElementTree and lxml" +optional = false +python-versions = ">=3.7" +files = [ + {file = "elementpath-4.1.5-py3-none-any.whl", hash = "sha256:2ac1a2fb31eb22bbbf817f8cf6752f844513216263f0e3892c8e79782fe4bb55"}, + {file = "elementpath-4.1.5.tar.gz", hash = "sha256:c2d6dc524b29ef751ecfc416b0627668119d8812441c555d7471da41d4bacb8d"}, +] + +[package.extras] +dev = ["Sphinx", "coverage", "flake8", "lxml", "lxml-stubs", "memory-profiler", "memray", "mypy", "tox", "xmlschema (>=2.0.0)"] + [[package]] name = "entrypoints" version = "0.4" @@ -2508,7 +2522,6 @@ files = [ {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, - {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, @@ -2516,15 +2529,8 @@ files = [ {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, - {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, - {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, - {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, - {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, - {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, - {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, - {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, @@ -2541,7 +2547,6 @@ files = [ {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, - {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, @@ -2549,7 +2554,6 @@ files = [ {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, - {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, @@ -2893,7 +2897,8 @@ files = [ {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-win32.whl", hash = "sha256:763d65baa3b952479c4e972669f679fe490eee058d5aa85da483ebae2009d231"}, {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-win_amd64.whl", hash = "sha256:d000f258cf42fec2b1bbf2863c61d7b8918d31ffee905da62dede869254d3b8a"}, {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:045e0626baf1c52e5527bd5db361bc83180faaba2ff586e763d3d5982a876a9e"}, - {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-macosx_12_6_arm64.whl", hash = "sha256:721bc4ba4525f53f6a611ec0967bdcee61b31df5a56801281027a3a6d1c2daf5"}, + {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:1a6391a7cabb7641c32517539ca42cf84b87b667bad38b78d4d42dd23e957c81"}, + {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:9c7617df90c1365638916b98cdd9be833d31d337dbcd722485597b43c4a215bf"}, {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:41d0f1fa4c6830176eef5b276af04c89320ea616655d01327d5ce65e50575c94"}, {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-win32.whl", hash = "sha256:f6d3d39611ac2e4f62c3128a9eed45f19a6608670c5a2f4f07f24e8de3441d38"}, {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-win_amd64.whl", hash = "sha256:da538167284de58a52109a9b89b8f6a53ff8437dd6dc26d33b57bf6699153122"}, @@ -3505,6 +3510,25 @@ files = [ {file = "widgetsnbextension-4.0.9.tar.gz", hash = "sha256:3c1f5e46dc1166dfd40a42d685e6a51396fd34ff878742a3e47c6f0cc4a2a385"}, ] +[[package]] +name = "xmlschema" +version = "2.5.0" +description = "An XML Schema validator and decoder" +optional = false +python-versions = ">=3.7" +files = [ + {file = "xmlschema-2.5.0-py3-none-any.whl", hash = "sha256:f2b29c45485fac414cc1fdb38d18a220c5987d7d3aa996e6df6ff35ee94d5a63"}, + {file = "xmlschema-2.5.0.tar.gz", hash = "sha256:276a03e0fd3c94c148d528bff4d9482f9b99bf8c7b4056a2e8e703d28149d454"}, +] + +[package.dependencies] +elementpath = ">=4.1.5,<5.0.0" + +[package.extras] +codegen = ["elementpath (>=4.1.5,<5.0.0)", "jinja2"] +dev = ["Sphinx", "coverage", "elementpath (>=4.1.5,<5.0.0)", "flake8", "jinja2", "lxml", "lxml-stubs", "memory-profiler", "mypy", "sphinx-rtd-theme", "tox"] +docs = ["Sphinx", "elementpath (>=4.1.5,<5.0.0)", "jinja2", "sphinx-rtd-theme"] + [[package]] name = "zipp" version = "3.16.2" @@ -3526,4 +3550,4 @@ examples = ["jupyterlab", "lxml", "pandas", "tabulate"] [metadata] lock-version = "2.0" python-versions = "^3.8.0" -content-hash = "78b3fa44ac412ab1436d7d5e0d1a583ca6282bf212f5e9917d50975fa7c1b0de" +content-hash = "168196ab3a4a701c80f9d58dabeb7c1830cecf516306a54e91681f5b27091577" diff --git a/src/ansys/grantami/bomanalytics/__init__.py b/src/ansys/grantami/bomanalytics/__init__.py index 9a91e938..17bad746 100644 --- a/src/ansys/grantami/bomanalytics/__init__.py +++ b/src/ansys/grantami/bomanalytics/__init__.py @@ -1,7 +1,7 @@ from importlib import metadata as metadata +from ._bom_helper import BoMHandler from ._connection import Connection from ._exceptions import GrantaMIException -from ._bom_helper import BoMHandler __version__ = metadata.version("ansys-grantami-bomanalytics") diff --git a/src/ansys/grantami/bomanalytics/_bom_helper.py b/src/ansys/grantami/bomanalytics/_bom_helper.py index 2df2f29a..675d046e 100644 --- a/src/ansys/grantami/bomanalytics/_bom_helper.py +++ b/src/ansys/grantami/bomanalytics/_bom_helper.py @@ -1,11 +1,13 @@ from pathlib import Path from typing import TYPE_CHECKING -import xmlschema + +import xmlschema # type: ignore[import] from xmlschema import XMLSchema -from ansys.grantami.bomanalytics.bom_types import BoMReader, BoMWriter + +from .bom_types import BoMReader, BoMWriter if TYPE_CHECKING: - from ansys.grantami.bomanalytics.bom_types._bom_types import BillOfMaterials + from .bom_types import BillOfMaterials class BoMHandler: @@ -82,7 +84,9 @@ def dump_bom(self, bom: "BillOfMaterials") -> str: Serialized representation of the BoM. """ bom_dict = self._writer.convert_bom_to_dict(bom) - obj, errors = self._schema.encode(bom_dict, validation="lax", unordered=True) + obj, errors = self._schema.encode( + bom_dict, validation="lax", namespaces=self._schema.namespaces, unordered=True + ) if len(errors) > 0: newline = "\n" diff --git a/src/ansys/grantami/bomanalytics/bom_types/__init__.py b/src/ansys/grantami/bomanalytics/bom_types/__init__.py index 4fd7bff1..2462c738 100644 --- a/src/ansys/grantami/bomanalytics/bom_types/__init__.py +++ b/src/ansys/grantami/bomanalytics/bom_types/__init__.py @@ -1,4 +1,4 @@ +from ._bom_reader import BoMReader from ._bom_types import * -from ._builders import * from ._bom_writer import BoMWriter -from ._bom_reader import BoMReader +from ._builders import * diff --git a/src/ansys/grantami/bomanalytics/bom_types/_bom_reader.py b/src/ansys/grantami/bomanalytics/bom_types/_bom_reader.py index d8b3c4b6..81a5ab26 100644 --- a/src/ansys/grantami/bomanalytics/bom_types/_bom_reader.py +++ b/src/ansys/grantami/bomanalytics/bom_types/_bom_reader.py @@ -1,20 +1,18 @@ import inspect -from typing import Dict, Optional, Any, TYPE_CHECKING, cast, Iterable, Type +from typing import TYPE_CHECKING, Any, Dict, Iterable, Optional, cast -from xmlschema import XMLSchema - -import ansys.grantami.bomanalytics.bom_types._bom_types as bom_types +from xmlschema import XMLSchema # type: ignore[import] +from . import _bom_types as bom_types +from ._bom_types import BaseType if TYPE_CHECKING: - from ansys.grantami.bomanalytics.bom_types import BillOfMaterials, BaseType + from . import BaseType, BillOfMaterials, HasNamespace class BoMReader: _schema: XMLSchema - _namespaces: Dict[str, str] = {} - _class_members: Dict[str, Type] = {} - _field_reader: "Optional[NamespaceFieldReader]" = None + _class_members: Dict[str, type[BaseType]] def __init__(self, schema: XMLSchema): """ @@ -26,7 +24,10 @@ def __init__(self, schema: XMLSchema): Parsed XMLSchema representing the 2301 Eco BoM format """ self._schema = schema - self._class_members = {k: v for k, v in inspect.getmembers(bom_types, inspect.isclass)} + self._namespaces: Dict[str, str] = {} + self._class_members: Dict[str, type[BaseType]] = { + k: v for k, v in inspect.getmembers(bom_types, inspect.isclass) + } def read_bom(self, obj: Dict) -> "BillOfMaterials": """ @@ -50,12 +51,11 @@ def read_bom(self, obj: Dict) -> "BillOfMaterials": namespaces[prefix] = v self._namespaces = namespaces - self._field_reader = NamespaceFieldReader(self._namespaces) - return cast("BillOfMaterials", self._create_type("BillOfMaterials", obj)) + return cast("BillOfMaterials", self.create_type("BillOfMaterials", obj)) - def _create_type(self, type_name: str, obj: Dict) -> "BaseType": - type_: BaseType = self._class_members[type_name] + def create_type(self, type_name: str, obj: Dict) -> "BaseType": + type_ = self._class_members[type_name] kwargs = {} for target_type, target_property_name, field_name in type_._props: kwargs.update(self._deserialize_single_type(type_, obj, target_type, target_property_name, field_name)) @@ -66,15 +66,15 @@ def _create_type(self, type_name: str, obj: Dict) -> "BaseType": ) ) for target, source in type_._simple_values: - field_obj = self._field_reader.get_field(type_, obj, source) + field_obj = self.get_field(type_, obj, source) kwargs[target] = field_obj - kwargs.update(type_._process_custom_fields(obj, self._field_reader)) + kwargs.update(type_._process_custom_fields(obj, self)) instance = self._class_members[type_name](**kwargs) return instance def _deserialize_list_type( self, - instance: "BaseType", + instance: "type[BaseType]", obj: Dict, target_type: str, target_property_name: str, @@ -82,35 +82,24 @@ def _deserialize_list_type( container_namespace: str, item_name: str, ) -> Dict[str, Iterable]: - container_obj = self._field_reader.get_field(instance, obj, container_name) + container_obj = self.get_field(instance, obj, container_name) if container_obj is not None: - items_obj = self._field_reader.get_field(instance, container_obj, item_name, container_namespace) + items_obj = self.get_field(instance, container_obj, item_name, container_namespace) if items_obj is not None and len(items_obj) > 0: - return {target_property_name: [self._create_type(target_type, item_dict) for item_dict in items_obj]} + return {target_property_name: [self.create_type(target_type, item_dict) for item_dict in items_obj]} return {} def _deserialize_single_type( - self, instance: "BaseType", obj: Dict, target_type: str, target_property_name: str, field_name: str + self, instance: "type[BaseType]", obj: Dict, target_type: str, target_property_name: str, field_name: str ) -> Dict[str, Any]: - field_obj = self._field_reader.get_field(instance, obj, field_name) + field_obj = self.get_field(instance, obj, field_name) if field_obj is not None: - return {target_property_name: self._create_type(target_type, field_obj)} + return {target_property_name: self.create_type(target_type, field_obj)} return {} - -class NamespaceFieldReader: - def __init__(self, namespaces: Dict[str, str]): - """ - Helper class to map local names to qualified names based on the document's defined namespace prefixes. - - Parameters - ---------- - namespaces: Dict[str, str] - Mapping from namespace prefix to namespace URL as defined in the source BoM XML document. - """ - self._namespaces = namespaces - - def get_field(self, instance: "BaseType", obj: Dict, field_name: str, namespace_url: Optional[str] = None) -> Any: + def get_field( + self, instance: "type[HasNamespace]", obj: Dict, field_name: str, namespace_url: Optional[str] = None + ) -> Any: """ Given an object and a local name, determines the qualified field name to fetch based on the document namespace tags. diff --git a/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py b/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py index 4c7e4d67..44614cd1 100644 --- a/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py +++ b/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py @@ -1,12 +1,27 @@ -from typing import Optional, List, Union, Any, Dict, Tuple, cast +from __future__ import annotations from enum import Enum +from typing import TYPE_CHECKING, Any, Dict, Iterable, List, Optional, Protocol, Tuple, Union, cast -from ansys.grantami.bomanalytics.bom_types._bom_reader import BoMReader, NamespaceFieldReader -from ansys.grantami.bomanalytics.bom_types._bom_writer import BoMWriter +if TYPE_CHECKING: + from ._bom_reader import BoMReader + from ._bom_writer import BoMWriter -class BaseType: +class HasNamespace(Protocol): + _namespace: str + + +class SupportsCustomFields(Protocol): + @classmethod + def _process_custom_fields(cls, obj: Dict, bom_reader: BoMReader) -> Dict[str, Any]: + ... + + def _write_custom_fields(self, obj: Dict, bom_writer: BoMWriter) -> None: + ... + + +class BaseType(HasNamespace, SupportsCustomFields): """Base type from which all XML DTOs inherit. Handles conversion from python properties to xmlschema objects. @@ -36,11 +51,11 @@ class BaseType: _namespace = "http://www.grantadesign.com/23/01/BillOfMaterialsEco" - def __init__(self, *args: str, **kwargs: str) -> None: + def __init__(self, *args: Iterable, **kwargs: Dict[str, Any]) -> None: pass @classmethod - def _process_custom_fields(cls, obj: Dict, field_reader: NamespaceFieldReader) -> Dict[str, Any]: + def _process_custom_fields(cls, obj: Dict, bom_reader: BoMReader) -> Dict[str, Any]: """ Populates any fields on the object that are in a nonstandard configuration. This can anonymous complex types, Sequences of simple types and similar. This is called after the standard deserialization occurs, and should @@ -50,7 +65,7 @@ def _process_custom_fields(cls, obj: Dict, field_reader: NamespaceFieldReader) - ---------- obj: Dict The json representation of the source XML BoM to be parsed. - field_reader: NamespaceFieldReader + bom_reader: BoMReader Helper object that maintains information about the global namespaces. Returns @@ -167,7 +182,7 @@ def __init__( table_identity: Optional[int] = None, table_guid: Optional[str] = None, table_name: Optional[str] = None, - **kwargs, + **kwargs: Dict[str, Any], ): """ A type that partially identifies a Table, but does not specify the MI Database. Usually, just one of the several @@ -250,7 +265,7 @@ def __init__( attribute_name: Optional[str] = None, pseudo: Optional[PseudoAttribute] = None, is_standard: Optional[bool] = None, - **kwargs, + **kwargs: Dict[str, Any], ): """A type that allows identification of a particular Attribute in an MI Database. This may be done directly by specifying the Identity of the Attribute, or indirectly by specifying a lookup that will match (only) the @@ -285,20 +300,20 @@ def __init__( self.is_standard = is_standard @classmethod - def _process_custom_fields(cls, obj: Dict, field_reader: NamespaceFieldReader) -> Dict[str, Any]: - props = super()._process_custom_fields(obj, field_reader) - name_obj = field_reader.get_field(MIAttributeReference, obj, "name") + def _process_custom_fields(cls, obj: Dict, bom_reader: BoMReader) -> Dict[str, Any]: + props = super()._process_custom_fields(obj, bom_reader) + name_obj = bom_reader.get_field(MIAttributeReference, obj, "name") if name_obj is not None: props["table_reference"] = cast( - PartialTableReference, field_reader.create_type("PartialTableReference", name_obj) + PartialTableReference, bom_reader.create_type("PartialTableReference", name_obj) ) - attribute_name_obj = field_reader.get_field(MIAttributeReference, name_obj, "attributeName") + attribute_name_obj = bom_reader.get_field(MIAttributeReference, name_obj, "attributeName") if attribute_name_obj is not None: props["attribute_name"] = attribute_name_obj - pseudo_obj = field_reader.get_field(MIAttributeReference, name_obj, "pseudo") + pseudo_obj = bom_reader.get_field(MIAttributeReference, name_obj, "pseudo") if pseudo_obj is not None: props["pseudo"] = pseudo_obj - is_standard_obj = field_reader.get_field(MIAttributeReference, name_obj, "@isStandard") + is_standard_obj = bom_reader.get_field(MIAttributeReference, name_obj, "@isStandard") if is_standard_obj is not None: props["is_standard"] = is_standard_obj return props @@ -416,7 +431,7 @@ def __init__( lookup_attribute_reference: "Optional[MIAttributeReference]" = None, lookup_value: Optional[str] = None, record_uid: Optional[str] = None, - **kwargs, + **kwargs: Dict[str, Any], ): """A type that allows identification of a particular Record in an MI Database. This may be done directly by specifying the Identity or GUID of the Record, or @@ -464,22 +479,22 @@ def __init__( self.record_uid = record_uid @classmethod - def _process_custom_fields(cls, obj: Dict, field_reader: NamespaceFieldReader) -> Dict[str, Any]: - props = super()._process_custom_fields(obj, field_reader) - identity_obj = field_reader.get_field(MIRecordReference, obj, "identity") + def _process_custom_fields(cls, obj: Dict, bom_reader: BoMReader) -> Dict[str, Any]: + props = super()._process_custom_fields(obj, bom_reader) + identity_obj = bom_reader.get_field(MIRecordReference, obj, "identity") if identity_obj is not None: - props["record_history_identity"] = field_reader.get_field( + props["record_history_identity"] = bom_reader.get_field( MIRecordReference, identity_obj, "recordHistoryIdentity" ) - version_obj = field_reader.get_field(MIRecordReference, identity_obj, "version") + version_obj = bom_reader.get_field(MIRecordReference, identity_obj, "version") if version_obj is not None: props["record_version_number"] = version_obj - lookup_obj = field_reader.get_field(MIRecordReference, obj, "lookupValue") + lookup_obj = bom_reader.get_field(MIRecordReference, obj, "lookupValue") if lookup_obj is not None: - props["lookup_attribute_reference"] = field_reader.get_field( + props["lookup_attribute_reference"] = bom_reader.get_field( MIRecordReference, lookup_obj, "attributeReference" ) - props["lookup_value"] = field_reader.get_field(MIRecordReference, lookup_obj, "attributeValue") + props["lookup_value"] = bom_reader.get_field(MIRecordReference, lookup_obj, "attributeValue") return props @property @@ -608,8 +623,8 @@ def record_uid(self, value: Optional[str]) -> None: # TODO - I don't like having a nice method to add props then replicating it here, can we do something better with # inheritance? -class InternalIdentifierMixin: - def __init__(self, *, internal_id: Optional[str] = None, **kwargs): +class InternalIdentifierMixin(SupportsCustomFields): + def __init__(self, *, internal_id: Optional[str] = None, **kwargs: Dict[str, Any]): """A unique identity for this object in this BoM. This identity is only for internal use, allowing other elements to reference this element. @@ -622,9 +637,10 @@ def __init__(self, *, internal_id: Optional[str] = None, **kwargs): self.internal_id = internal_id @classmethod - def _process_custom_fields(cls, obj: Dict, bom_reader: BoMReader) -> None: + def _process_custom_fields(cls, obj: Dict, bom_reader: BoMReader) -> Dict[str, Any]: props = super()._process_custom_fields(obj, bom_reader) - id_obj = bom_reader.get_field(cls, obj, "@id") + instance = cast(type[BaseType], cls) + id_obj = bom_reader.get_field(instance, obj, "@id") if id_obj is not None: props["internal_id"] = id_obj return props @@ -632,7 +648,8 @@ def _process_custom_fields(cls, obj: Dict, bom_reader: BoMReader) -> None: def _write_custom_fields(self, obj: Dict, bom_writer: BoMWriter) -> None: super()._write_custom_fields(obj, bom_writer) if self._internal_id is not None: - field_name = bom_writer._get_qualified_name(self, "@id") + instance = cast(BaseType, self) + field_name = bom_writer._get_qualified_name(instance, "@id") obj[field_name] = self._internal_id @property @@ -651,14 +668,14 @@ def internal_id(self, value: Optional[str]) -> None: self._internal_id = value -class CommonIdentifiersMixin: +class CommonIdentifiersMixin(SupportsCustomFields): def __init__( self, *, identity: Optional[str] = None, name: Optional[str] = None, external_identity: Optional[str] = None, - **kwargs, + **kwargs: Dict[str, Any], ): """ A set of identifiers used by external applications to reference and display parts of the BoM. @@ -679,26 +696,28 @@ def __init__( def _write_custom_fields(self, obj: Dict, bom_writer: BoMWriter) -> None: super()._write_custom_fields(obj, bom_writer) + instance = cast(BaseType, self) if self._identity is not None: - field_name = bom_writer._get_qualified_name(self, "Identity") + field_name = bom_writer._get_qualified_name(instance, "Identity") obj[field_name] = self._identity if self._name is not None: - field_name = bom_writer._get_qualified_name(self, "Name") + field_name = bom_writer._get_qualified_name(instance, "Name") obj[field_name] = self._name if self._external_identity is not None: - field_name = bom_writer._get_qualified_name(self, "ExternalIdentity") + field_name = bom_writer._get_qualified_name(instance, "ExternalIdentity") obj[field_name] = self._external_identity @classmethod def _process_custom_fields(cls, obj: Dict, bom_reader: BoMReader) -> Dict[str, Any]: props = super()._process_custom_fields(obj, bom_reader) - identity_obj = bom_reader.get_field(cls, obj, "Identity") + instance = cast(type[BaseType], cls) + identity_obj = bom_reader.get_field(instance, obj, "Identity") if identity_obj is not None: props["identity"] = identity_obj - name_obj = bom_reader.get_field(cls, obj, "Name") + name_obj = bom_reader.get_field(instance, obj, "Name") if name_obj is not None: props["name"] = name_obj - external_identity_obj = bom_reader.get_field(cls, obj, "ExternalIdentity") + external_identity_obj = bom_reader.get_field(instance, obj, "ExternalIdentity") if external_identity_obj is not None: props["external_identity"] = external_identity_obj return props @@ -754,7 +773,9 @@ class EndOfLifeFate(BaseType): _props = [("MIRecordReference", "mi_end_of_life_reference", "MIEndOfLifeReference")] - def __init__(self, *, mi_end_of_life_reference: "MIRecordReference", fraction: float, **kwargs) -> None: + def __init__( + self, *, mi_end_of_life_reference: "MIRecordReference", fraction: float, **kwargs: Dict[str, Any] + ) -> None: """ The fate of a material at the end-of-life of the product. For example if a material can be recycled, and what fraction of the total mass or volume can be recycled. @@ -804,7 +825,7 @@ def fraction(self, value: float) -> None: class UnittedValue(BaseType): _simple_values = [("value", "$"), ("unit", "@Unit")] - def __init__(self, *, value: float, unit: Optional[str] = None, **kwargs) -> None: + def __init__(self, *, value: float, unit: Optional[str] = None, **kwargs: Dict[str, Any]) -> None: """ A physical quantity with a unit. If provided in a input then the unit should exist within the MI database, otherwise an error will be raised. @@ -861,7 +882,7 @@ def unit(self, value: Optional[str]) -> None: class Location(CommonIdentifiersMixin, InternalIdentifierMixin, BaseType): _props = [("MIRecordReference", "mi_location_reference", "MILocationReference")] - def __init__(self, *, mi_location_reference: "Optional[MIRecordReference]" = None, **kwargs) -> None: + def __init__(self, *, mi_location_reference: "Optional[MIRecordReference]" = None, **kwargs: Any) -> None: """ Defines the manufacturing location for the BoM for use in process calculations. @@ -898,7 +919,7 @@ def __init__( *, mi_region_reference: "Optional[MIRecordReference]" = None, percentage_fossil_fuels: Optional[float] = None, - **kwargs, + **kwargs: Dict[str, Any], ) -> None: """ If the product consumes electrical power, then the amount of CO2 produced to generate depends upon the mix of @@ -961,7 +982,7 @@ def __init__( mi_transport_reference: "MIRecordReference", days_used_per_year: float, distance_travelled_per_day: "UnittedValue", - **kwargs, + **kwargs: Dict[str, Any], ) -> None: """ If the product is transported as part of its use then this type contains details about the way in which it is @@ -1041,7 +1062,7 @@ def __init__( power_rating: "UnittedValue", days_used_per_year: float, hours_used_per_day: float, - **kwargs, + **kwargs: Dict[str, Any], ) -> None: """ Specifies the primary energy conversion that occurs during the product's use. @@ -1139,7 +1160,7 @@ def __init__( industry_average_duration_years: Optional[float] = None, industry_average_number_of_functional_units: Optional[float] = None, utility: Optional[float] = None, - **kwargs, + **kwargs: Dict[str, Any], ) -> None: """ Specifies how much use can be obtained from the product represented by this BoM in comparison to a @@ -1222,7 +1243,7 @@ def __init__( number_of_functional_units: Optional[float] = None, functional_unit_description: Optional[str] = None, utility: Optional[UtilitySpecification] = None, - **kwargs, + **kwargs: Dict[str, Any], ) -> None: """ Specifies the average life span for the product represented by the BoM. @@ -1322,7 +1343,7 @@ def __init__( electricity_mix: "Optional[ElectricityMix]" = None, static_mode: "Optional[StaticMode]" = None, mobile_mode: "Optional[MobileMode]" = None, - **kwargs, + **kwargs: Dict[str, Any], ) -> None: """ Provides information about the sustainability of the product whilst in use, including electricity use, emissions @@ -1415,7 +1436,7 @@ def __init__( notes: Optional[str] = None, picture_url: Optional[str] = None, product_name: Optional[str] = None, - **kwargs, + **kwargs: Dict[str, Any], ) -> None: """ Explanatory information about a BoM. @@ -1490,7 +1511,12 @@ class TransportStage(InternalIdentifierMixin, BaseType): _simple_values = [("name", "Name")] def __init__( - self, *, name: str, mi_transport_reference: "MIRecordReference", distance: "UnittedValue", **kwargs + self, + *, + name: str, + mi_transport_reference: "MIRecordReference", + distance: "UnittedValue", + **kwargs: Any, ) -> None: """ Defines the transportation applied to an object, in terms of the generic transportation type (stored in the @@ -1564,7 +1590,11 @@ class Specification(CommonIdentifiersMixin, InternalIdentifierMixin, BaseType): ] def __init__( - self, *, mi_specification_reference: "MIRecordReference", quantity: "Optional[UnittedValue]" = None, **kwargs + self, + *, + mi_specification_reference: "MIRecordReference", + quantity: "Optional[UnittedValue]" = None, + **kwargs: Any, ) -> None: """ A specification for a part, process, or material. Refers to a record with the MI Database storing the details @@ -1623,7 +1653,7 @@ def __init__( mi_substance_reference: "MIRecordReference", percentage: Optional[float] = None, category: Optional[str] = None, - **kwargs, + **kwargs: Any, ) -> None: """ A substance within a part, semi-finished part, material or specification. The substance is stored in the @@ -1705,7 +1735,7 @@ def __init__( dimension_type: "DimensionType", percentage_of_part_affected: Optional[float] = None, quantity_affected: "Optional[UnittedValue]" = None, - **kwargs, + **kwargs: Any, ) -> None: """ A process that is applied to a subassembly, part, semi-finished part or material. The process is stored in the @@ -1731,10 +1761,10 @@ def __init__( self.quantity_affected = quantity_affected @classmethod - def _process_custom_fields(cls, obj: Dict, field_reader: NamespaceFieldReader) -> Dict[str, Any]: - props = super()._process_custom_fields(obj, field_reader) + def _process_custom_fields(cls, obj: Dict, bom_reader: BoMReader) -> Dict[str, Any]: + props = super()._process_custom_fields(obj, bom_reader) - dimension_type_obj = field_reader.get_field(Process, obj, "DimensionType") + dimension_type_obj = bom_reader.get_field(Process, obj, "DimensionType") props["dimension_type"] = DimensionType.from_string(dimension_type_obj) return props @@ -1830,9 +1860,9 @@ def __init__( mass: "Optional[UnittedValue]" = None, recycle_content_is_typical: Optional[bool] = None, recycle_content_percentage: Optional[float] = None, - processes: "List[Process]" = None, - end_of_life_fates: "List[EndOfLifeFate]" = None, - **kwargs, + processes: "Optional[List[Process]]" = None, + end_of_life_fates: "Optional[List[EndOfLifeFate]]" = None, + **kwargs: Any, ) -> None: """ A Material within a part or semi-finished part. The material is stored in the Database. @@ -1868,20 +1898,16 @@ def __init__( end_of_life_fates = [] self.end_of_life_fates = end_of_life_fates - def __repr__(self) -> str: - if self._percentage is not None: - return f" Dict[str, Any]: - props = super()._process_custom_fields(obj, field_reader) + def _process_custom_fields(cls, obj: Dict, bom_reader: BoMReader) -> Dict[str, Any]: + props = super()._process_custom_fields(obj, bom_reader) - recycle_content_obj = field_reader.get_field(Material, obj, "RecycleContent") + recycle_content_obj = bom_reader.get_field(Material, obj, "RecycleContent") if recycle_content_obj is not None: - typical_obj = field_reader.get_field(Material, recycle_content_obj, "Typical") + typical_obj = bom_reader.get_field(Material, recycle_content_obj, "Typical") if typical_obj is not None: props["recycle_content_is_typical"] = typical_obj - percentage_obj = field_reader.get_field(Material, recycle_content_obj, "Percentage") + percentage_obj = bom_reader.get_field(Material, recycle_content_obj, "Percentage") if percentage_obj is not None: props["recycle_content_percentage"] = percentage_obj return props @@ -2051,14 +2077,14 @@ def __init__( non_mi_part_reference: "Optional[Union[str, int]]" = None, part_name: Optional[str] = None, external_id: Optional[str] = None, - components: "List[Part]" = None, - specifications: "List[Specification]" = None, - materials: "List[Material]" = None, - substances: "List[Substance]" = None, - processes: "List[Process]" = None, - rohs_exemptions: List[str] = None, - end_of_life_fates: "List[EndOfLifeFate]" = None, - **kwargs, + components: "Optional[List[Part]]" = None, + specifications: "Optional[List[Specification]]" = None, + materials: "Optional[List[Material]]" = None, + substances: "Optional[List[Substance]]" = None, + processes: "Optional[List[Process]]" = None, + rohs_exemptions: Optional[List[str]] = None, + end_of_life_fates: "Optional[List[EndOfLifeFate]]" = None, + **kwargs: Any, ): """ A single part which may or may not be stored in the MI Database. @@ -2141,15 +2167,15 @@ def __repr__(self) -> str: return f"" @classmethod - def _process_custom_fields(cls, obj: Dict, field_reader: NamespaceFieldReader) -> Dict[str, Any]: - props = super()._process_custom_fields(obj, field_reader) + def _process_custom_fields(cls, obj: Dict, bom_reader: BoMReader) -> Dict[str, Any]: + props = super()._process_custom_fields(obj, bom_reader) - non_mi_part_ref_obj = field_reader.get_field(Part, obj, "NonMIPartReference") + non_mi_part_ref_obj = bom_reader.get_field(Part, obj, "NonMIPartReference") if non_mi_part_ref_obj is not None: props["non_mi_part_reference"] = non_mi_part_ref_obj - rohs_exemptions_obj = field_reader.get_field(Part, obj, "RohsExemptions") + rohs_exemptions_obj = bom_reader.get_field(Part, obj, "RohsExemptions") if rohs_exemptions_obj is not None: - rohs_exemption_obj = field_reader.get_field( + rohs_exemption_obj = bom_reader.get_field( Part, rohs_exemptions_obj, "RohsExemption", "http://www.grantadesign.com/23/01/BillOfMaterialsEco" ) if rohs_exemption_obj is not None: @@ -2404,7 +2430,9 @@ def end_of_life_fates(self, value: "List[EndOfLifeFate]") -> None: class AnnotationSource(InternalIdentifierMixin, BaseType): _simple_values = [("name", "Name"), ("method", "Method")] - def __init__(self, *, name: str, method: Optional[str] = None, data: List[Any] = None, **kwargs) -> None: + def __init__( + self, *, name: str, method: Optional[str] = None, data: Optional[List[Any]] = None, **kwargs: Any + ) -> None: """ An element indicating the source of annotations in the BoM. Each source may be referenced by zero or more annotations. The producer and consumer(s) of the BoM must agree the @@ -2431,10 +2459,10 @@ def __init__(self, *, name: str, method: Optional[str] = None, data: List[Any] = self.data = data @classmethod - def _process_custom_fields(cls, obj: Dict, field_reader: NamespaceFieldReader) -> Dict[str, Any]: - props = super()._process_custom_fields(cls, obj, field_reader) + def _process_custom_fields(cls, obj: Dict, bom_reader: BoMReader) -> Dict[str, Any]: + props = super()._process_custom_fields(obj, bom_reader) - data_obj = field_reader.get_field(AnnotationSource, obj, "Data") + data_obj = bom_reader.get_field(AnnotationSource, obj, "Data") if data_obj is not None: props["data"] = data_obj return props @@ -2502,7 +2530,7 @@ def __init__( source_id: Optional[str] = None, type_: str, value: "Union[str, UnittedValue]", - **kwargs, + **kwargs: Dict[str, Any], ) -> None: """ An annotation that can be attached to objects within a BoM. The understood annotation types must be agreed @@ -2550,7 +2578,7 @@ def target_id(self, value: str) -> None: self._target_id = value @property - def source_id(self) -> str: + def source_id(self) -> Optional[str]: """ If provided, is the ``internal_identity`` of exactly one ``AnnotationSource`` object describing the source of the annotation. If absent, no source information is provided. @@ -2562,7 +2590,7 @@ def source_id(self) -> str: return self.source_id @source_id.setter - def source_id(self, value: str) -> None: + def source_id(self, value: Optional[str]) -> None: self._source_id = value @property @@ -2575,7 +2603,7 @@ def type_(self) -> str: ------- str """ - return self._type + return self._type_ @type_.setter def type_(self, value: str) -> None: @@ -2618,13 +2646,13 @@ def __init__( self, *, components: "List[Part]", - transport_phase: "List[TransportStage]" = None, + transport_phase: "Optional[List[TransportStage]]" = None, use_phase: "Optional[UsePhase]" = None, location: "Optional[Location]" = None, notes: "Optional[BoMDetails]" = None, - annotations: "List[Annotation]" = None, - annotation_sources: "List[AnnotationSource]" = None, - **kwargs, + annotations: "Optional[List[Annotation]]" = None, + annotation_sources: "Optional[List[AnnotationSource]]" = None, + **kwargs: Any, ) -> None: """ Type representing the root Bill of Materials object. diff --git a/src/ansys/grantami/bomanalytics/bom_types/_bom_writer.py b/src/ansys/grantami/bomanalytics/bom_types/_bom_writer.py index 623d5e2f..6abba4c7 100644 --- a/src/ansys/grantami/bomanalytics/bom_types/_bom_writer.py +++ b/src/ansys/grantami/bomanalytics/bom_types/_bom_writer.py @@ -1,9 +1,9 @@ -from typing import Dict, cast, TYPE_CHECKING +from typing import TYPE_CHECKING, Dict, cast -from xmlschema import XMLSchema +from xmlschema import XMLSchema # type: ignore[import] if TYPE_CHECKING: - from ansys.grantami.bomanalytics.bom_types import BaseType, BillOfMaterials + from . import BaseType, BillOfMaterials, HasNamespace class BoMWriter: @@ -20,7 +20,7 @@ def __init__(self, schema: XMLSchema): """ self._schema = schema - def _get_qualified_name(self, obj: "BaseType", field_name: str) -> str: + def _get_qualified_name(self, obj: "HasNamespace", field_name: str) -> str: namespace_prefixes = [k for k, v in self._schema.namespaces.items() if v == obj._namespace] if len(namespace_prefixes) == 1: namespace_prefix = namespace_prefixes[0] diff --git a/src/ansys/grantami/bomanalytics/bom_types/_builders.py b/src/ansys/grantami/bomanalytics/bom_types/_builders.py index 642b17b0..5aa92c56 100644 --- a/src/ansys/grantami/bomanalytics/bom_types/_builders.py +++ b/src/ansys/grantami/bomanalytics/bom_types/_builders.py @@ -1,11 +1,6 @@ from typing import Optional -from ansys.grantami.bomanalytics.bom_types import ( - PartialTableReference, - MIAttributeReference, - PseudoAttribute, - MIRecordReference, -) +from . import MIAttributeReference, MIRecordReference, PartialTableReference, PseudoAttribute class _AttributeReferenceByNameBuilder: diff --git a/tests/test_bom_handler.py b/tests/test_bom_handler.py index 876dc7bc..835c1d8b 100644 --- a/tests/test_bom_handler.py +++ b/tests/test_bom_handler.py @@ -1,13 +1,13 @@ -import re +from difflib import context_diff from pathlib import Path -from typing import Dict, Any +import re +from typing import Any, Dict -import pytest from lxml import etree +import pytest from ansys.grantami.bomanalytics import BoMHandler -from ansys.grantami.bomanalytics.bom_types import BillOfMaterials, BaseType -from difflib import context_diff +from ansys.grantami.bomanalytics.bom_types import BaseType, BillOfMaterials class TestableBoMHandler(BoMHandler): From 70d0d8cade741d0d2025b8a7b6adcac3e2262422 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Tue, 26 Sep 2023 10:25:52 +0200 Subject: [PATCH 062/275] Feat: use license endpoint (#40) * Add support for licensing endpoint * Make public * Use license endpoint as connection test * Raise on no license * Make get license a private method * Make get yaml a private method * Remove now unnecessary alias * Add missing test & cleanup --- doc/source/api/common.rst | 2 + doc/source/conf.py | 1 - src/ansys/grantami/bomanalytics/__init__.py | 2 +- .../grantami/bomanalytics/_connection.py | 65 ++++++++++++++----- .../grantami/bomanalytics/_exceptions.py | 6 ++ .../grantami/bomanalytics/_item_results.py | 25 +++++++ src/ansys/grantami/bomanalytics/queries.py | 41 +----------- tests/common.py | 2 + tests/conftest.py | 6 +- tests/test_connection.py | 14 +++- tests/test_integration_tests.py | 10 ++- tests/test_item_results.py | 13 ++++ tests/test_mocked_responses/test_licensing.py | 12 ++++ 13 files changed, 132 insertions(+), 67 deletions(-) create mode 100644 tests/test_mocked_responses/test_licensing.py diff --git a/doc/source/api/common.rst b/doc/source/api/common.rst index 644c15b3..8e3956dc 100644 --- a/doc/source/api/common.rst +++ b/doc/source/api/common.rst @@ -35,3 +35,5 @@ Exceptions ========== .. autoclass:: ansys.grantami.bomanalytics.GrantaMIException + +.. autoclass:: ansys.grantami.bomanalytics.LicensingException diff --git a/doc/source/conf.py b/doc/source/conf.py index 22154182..2502a35e 100755 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -46,7 +46,6 @@ # sphinx.ext.autodoc autodoc_typehints = "description" autodoc_typehints_description_target = "documented" -autodoc_type_aliases = {"Yaml": "Yaml"} # Intersphinx mapping intersphinx_mapping = { diff --git a/src/ansys/grantami/bomanalytics/__init__.py b/src/ansys/grantami/bomanalytics/__init__.py index db9e4924..4a866bd0 100644 --- a/src/ansys/grantami/bomanalytics/__init__.py +++ b/src/ansys/grantami/bomanalytics/__init__.py @@ -1,6 +1,6 @@ from importlib import metadata as metadata from ._connection import Connection -from ._exceptions import GrantaMIException +from ._exceptions import GrantaMIException, LicensingException __version__ = metadata.version("ansys-grantami-bomanalytics") diff --git a/src/ansys/grantami/bomanalytics/_connection.py b/src/ansys/grantami/bomanalytics/_connection.py index 82063017..d9db350d 100644 --- a/src/ansys/grantami/bomanalytics/_connection.py +++ b/src/ansys/grantami/bomanalytics/_connection.py @@ -26,9 +26,9 @@ Identifier used internally by the Granta MI Server. """ -from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple, Type, Union, overload +from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple, Union, overload -from ansys.grantami.bomanalytics_openapi import models # type: ignore[import] +from ansys.grantami.bomanalytics_openapi import api, models # type: ignore[import] from ansys.openapi.common import ( # type: ignore[import] ApiClient, ApiClientFactory, @@ -37,16 +37,19 @@ generate_user_agent, ) +from ._exceptions import LicensingException +from ._item_results import ItemResultFactory from ._logger import logger -from .queries import Yaml DEFAULT_DBKEY = "MI_Restricted_Substances" SERVICE_PATH = "/BomAnalytics/v1.svc" MI_AUTH_PATH = "/Health/v2.svc" GRANTA_APPLICATION_NAME_HEADER = "PyGranta BoM Analytics" +MINIMUM_GRANTA_MI_VERSION = (24, 1) if TYPE_CHECKING: + from ._item_results import Licensing from ._query_results import ( BomComplianceQueryResult, BomImpactedSubstancesQueryResult, @@ -149,6 +152,8 @@ def connect(self) -> "BomAnalyticsClient": When the client is not fully configured. ConnectionError If the resulting client cannot connect to the BoM Analytics service. + LicensingException + Error raised if no licenses were found. """ self._validate_builder() @@ -165,9 +170,9 @@ def connect(self) -> "BomAnalyticsClient": def _test_connection(client: "BomAnalyticsClient") -> None: """Check if the created client can be used to perform a query. - This method uses a YAML query because it is a GET query that does not require parameters. + This method checks for the licensing details, because it is a GET query that does not require parameters. It specifically checks for a 404 error, which most likely means that the BoM Analytics - service is not available. + service is not available, or is not the expected minimum version. Parameters ---------- @@ -178,20 +183,28 @@ def _test_connection(client: "BomAnalyticsClient") -> None: ------ ConnectionError Error raised if the test query fails. + LicensingException + Error raised if no licenses were found. """ try: - client.run(Yaml) + licenses = client._get_licensing_information() except ApiException as e: if e.status_code == 404: raise ConnectionError( "Cannot find the BoM Analytics service in Granta MI Service Layer. Ensure a compatible version of " - "the Restricted Substances Reports are available on the server and try again." + "the Restricted Substances And Sustainability Reports are available on the server and try again." + f"The minimum required version is {'.'.join([str(e) for e in MINIMUM_GRANTA_MI_VERSION])}." ) else: raise ConnectionError( "An unexpected error occurred when trying to connect to BoM Analytics service in Granta MI Service " "Layer. Check the Service Layer logs for more information and try again." ) + if not licenses.restricted_substances and not licenses.sustainability: + raise LicensingException( + "The connection to BoM Analytics Services was successful, but there are no valid licenses for either " + "restricted substances or sustainability. Contact your Granta MI administrator." + ) class BomAnalyticsClient(ApiClient): @@ -375,14 +388,6 @@ def run(self, query: "BomImpactedSubstancesQuery") -> "BomImpactedSubstancesQuer def run(self, query: "BomComplianceQuery") -> "BomComplianceQueryResult": ... - @overload - def run(self, query: "Yaml") -> str: - ... - - @overload - def run(self, query: Type["Yaml"]) -> str: - ... - @overload def run(self, query: "BomSustainabilityQuery") -> "BomSustainabilityQueryResult": ... @@ -391,19 +396,19 @@ def run(self, query: "BomSustainabilityQuery") -> "BomSustainabilityQueryResult" def run(self, query: "BomSustainabilitySummaryQuery") -> "BomSustainabilitySummaryQueryResult": ... - def run(self, query: Union["_BaseQuery", Type["Yaml"]]) -> Union["ResultBaseClass", str]: + def run(self, query: "_BaseQuery") -> "ResultBaseClass": """Run a query against the Granta MI database. Parameters ---------- query - A compliance, impacted substance, sustainability, or YAML query object. + A compliance, impacted substance, or sustainability query object. Returns ------- Query Result Specific result object based on the provided query, which contains either the compliance, - impacted substances, or sustainability results. In the case of a YAML query, a string is returned. + impacted substances, or sustainability results. Raises ------ @@ -464,3 +469,27 @@ def _query_arguments( arguments = {"config": config, "database_key": self._db_key} return arguments + + def _get_licensing_information(self) -> "Licensing": + """ + Get licensing information from the server. + + Returns + ------- + :class:`~ansys.grantami.bomanalytics._item_results.Licensing` + """ + api_instance = api.LicensesApi(self) + response = api_instance.get_licenses() + return ItemResultFactory.create_licensing_result(response) + + def _get_yaml(self) -> str: + """ + Get the OpenAPI document for the BoM Analytics Services API. + + Returns + ------- + str + """ + api_instance = api.DocumentationApi(self) + result: str = api_instance.get_yaml() + return result diff --git a/src/ansys/grantami/bomanalytics/_exceptions.py b/src/ansys/grantami/bomanalytics/_exceptions.py index ca47a331..42eca01a 100644 --- a/src/ansys/grantami/bomanalytics/_exceptions.py +++ b/src/ansys/grantami/bomanalytics/_exceptions.py @@ -5,3 +5,9 @@ class GrantaMIException(RuntimeError): """Provides the critical error message to show if processing a BoM Analytics query fails.""" pass + + +class LicensingException(Exception): + """Raised when an operation cannot be performed due to a lack of appropriate license.""" + + pass diff --git a/src/ansys/grantami/bomanalytics/_item_results.py b/src/ansys/grantami/bomanalytics/_item_results.py index b9108f27..5368eadf 100644 --- a/src/ansys/grantami/bomanalytics/_item_results.py +++ b/src/ansys/grantami/bomanalytics/_item_results.py @@ -639,6 +639,13 @@ def parse_reference_type(reference_type: str) -> ReferenceType: except KeyError as e: raise KeyError(f"Unknown reference_type {reference_type} " f"returned.").with_traceback(e.__traceback__) + @staticmethod + def create_licensing_result(result: models.GetAvailableLicensesResponse) -> "Licensing": + return Licensing( + restricted_substances=result.restricted_substances, + sustainability=result.sustainability, + ) + class ImpactedSubstance(BaseSubstanceReference): """Represents a substance impacted by a legislation. @@ -2178,3 +2185,21 @@ def __repr__(self) -> str: f"<{self.__class__.__name__}(process='{self.process_name}', material='{self.material_identity}', " f"EE%={self.embodied_energy_percentage}, CC%={self.climate_change_percentage})>" ) + + +class Licensing: + """Granta MI BomAnalytics Services licensing information.""" + + def __init__(self, restricted_substances: bool, sustainability: bool): + self._restricted_substances: bool = restricted_substances + self._sustainability: bool = sustainability + + @property + def restricted_substances(self) -> bool: + """Whether the targeted Granta MI Server has a license for Restricted Substances analysis.""" + return self._restricted_substances + + @property + def sustainability(self) -> bool: + """Whether the targeted Granta MI Server has a license for Sustainability analysis.""" + return self._sustainability diff --git a/src/ansys/grantami/bomanalytics/queries.py b/src/ansys/grantami/bomanalytics/queries.py index b181bbc9..cf4494ed 100644 --- a/src/ansys/grantami/bomanalytics/queries.py +++ b/src/ansys/grantami/bomanalytics/queries.py @@ -73,7 +73,7 @@ class _BaseQuery(ABC): api_class: Type[api.ApiBase] @abstractmethod - def _run_query(self, api_instance: api.ApiBase, static_arguments: Dict) -> Union[ResultBaseClass, str]: + def _run_query(self, api_instance: api.ApiBase, static_arguments: Dict) -> ResultBaseClass: raise NotImplementedError @@ -1754,45 +1754,6 @@ def __init__(self) -> None: self._api_method = "post_impactedsubstances_bom1711" -class Yaml(_BaseQuery): - """Gets the YAML description of the underlying REST API. - - Because the API is fully implemented in this package, the description is unlikely to be - useful to end users. It is provided for completeness only. - - This class only contains static methods and class attributes so that it can be used without instantiation. - - Examples - -------- - >>> cxn = Connection("http://my_mi_server/mi_servicelayer").with_autologon().connect() - >>> cxn.run(Yaml) - openapi: 3.0.1 - info: - title: Granta.BomAnalyticsServices - ... - """ - - api_class = api.DocumentationApi - - @staticmethod - def _run_query(api_instance: api.DocumentationApi, static_arguments: Dict) -> str: - """Get the YAML representation of the API from Granta MI. - - Parameters - ---------- - api_instance : api.DocumentationApi - Instance of the low-level ``DocumentationApi`` class. - - Returns - ------- - yaml : str - YAML definition of the BoM Analytics API. - """ - - result: str = api_instance.get_yaml() - return result - - class _SustainabilityMixin(_ApiMixin): _api_method: str api_class = api.SustainabilityApi # TODO consider making private. Manually excluded from docs for now. diff --git a/tests/common.py b/tests/common.py index 70136343..b6497ad4 100644 --- a/tests/common.py +++ b/tests/common.py @@ -1,7 +1,9 @@ from ansys.grantami.bomanalytics import indicators +LICENSE_RESPONSE = {"LogMessages": [], "RestrictedSubstances": True, "Sustainability": True} LEGISLATIONS = ["SINList", "CCC"] + two_legislation_indicator = indicators.WatchListIndicator( name="Two legislations", legislation_ids=["GADSL", "Prop65"], diff --git a/tests/conftest.py b/tests/conftest.py index 3eb20c28..58b27db7 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -7,7 +7,7 @@ from ansys.grantami.bomanalytics import Connection -from .common import CUSTOM_TABLES +from .common import CUSTOM_TABLES, LICENSE_RESPONSE sl_url = os.getenv("TEST_SL_URL", "http://localhost/mi_servicelayer") read_username = os.getenv("TEST_USER") @@ -53,9 +53,9 @@ def configurable_connection_write(request): @pytest.fixture -def mock_connection(): +def mock_connection(monkeypatch): with requests_mock.Mocker() as m: - m.get(requests_mock.ANY, text="") + m.get(requests_mock.ANY, json=LICENSE_RESPONSE) connection = Connection(api_url=sl_url).with_anonymous().connect() return connection diff --git a/tests/test_connection.py b/tests/test_connection.py index f0545c96..2523b843 100644 --- a/tests/test_connection.py +++ b/tests/test_connection.py @@ -4,9 +4,9 @@ import pytest import requests_mock -from ansys.grantami.bomanalytics import Connection, _connection +from ansys.grantami.bomanalytics import Connection, LicensingException, _connection -from .common import CUSTOM_TABLES +from .common import CUSTOM_TABLES, LICENSE_RESPONSE SL_URL = os.getenv("TEST_SL_URL", "http://localhost/mi_servicelayer") @@ -80,7 +80,7 @@ class TestConnectToSL: ) def test_mocked(self, sl_url): with requests_mock.Mocker() as m: - m.get(requests_mock.ANY, text="") + m.get(requests_mock.ANY, json=LICENSE_RESPONSE) connection = Connection(api_url=sl_url).with_anonymous().connect() sl_url_stripped = sl_url.strip("/") assert connection.api_url == sl_url_stripped + _connection.SERVICE_PATH @@ -109,6 +109,14 @@ def test_unhandled_bomanalytics_service_response_raises_informative_error(self): ): Connection(api_url=sl_url).with_anonymous().connect() + def test_no_licenses_raises_informative_error(self): + sl_url = "http://host/path" + with requests_mock.Mocker() as m: + no_license_response = {"LogMessages": [], "RestrictedSubstances": False, "Sustainability": False} + m.get(requests_mock.ANY, json=no_license_response) + with pytest.raises(LicensingException, match="no valid licenses "): + connection = Connection(api_url=sl_url).with_anonymous().connect() + @pytest.mark.integration @pytest.mark.parametrize("trailing_slash", [True, False]) def test_real(self, trailing_slash): diff --git a/tests/test_integration_tests.py b/tests/test_integration_tests.py index aacbd89b..1743b2a5 100644 --- a/tests/test_integration_tests.py +++ b/tests/test_integration_tests.py @@ -128,7 +128,15 @@ def test_missing_table_raises_grantami_exception(default_connection): @pytest.mark.parametrize("configurable_connection", [True, False], indirect=True) def test_yaml(configurable_connection): - assert configurable_connection.run(queries.Yaml) + api_def = configurable_connection._get_yaml() + assert len(api_def) > 0 + + +@pytest.mark.parametrize("configurable_connection", [True, False], indirect=True) +def test_licensing(configurable_connection): + resp = configurable_connection._get_licensing_information() + assert resp.restricted_substances is True + assert resp.sustainability is True class TestActAsReadUser: diff --git a/tests/test_item_results.py b/tests/test_item_results.py index 77e33712..3a221f58 100644 --- a/tests/test_item_results.py +++ b/tests/test_item_results.py @@ -270,6 +270,19 @@ def test_substance_result_repr(self): assert repr(result) == expected +class TestLicensing: + @pytest.mark.parametrize("restricted_substances", [True, False]) + @pytest.mark.parametrize("sustainability", [True, False]) + def test_factory(self, restricted_substances, sustainability): + response = models.GetAvailableLicensesResponse( + restricted_substances=restricted_substances, + sustainability=sustainability, + ) + result = ItemResultFactory.create_licensing_result(response) + assert result.restricted_substances is restricted_substances + assert result.sustainability is sustainability + + def test_unitted_value_repr(): model = models.CommonValueWithUnit(unit="kg", value=255.2) result = ItemResultFactory.create_unitted_value(model) diff --git a/tests/test_mocked_responses/test_licensing.py b/tests/test_mocked_responses/test_licensing.py new file mode 100644 index 00000000..89ca219a --- /dev/null +++ b/tests/test_mocked_responses/test_licensing.py @@ -0,0 +1,12 @@ +from ansys.grantami.bomanalytics_openapi.models import GetAvailableLicensesResponse +import requests_mock + +from ..inputs import examples_as_strings + + +def test_response(mock_connection): + with requests_mock.Mocker() as mocker: + mocker.get(requests_mock.ANY, text=examples_as_strings[GetAvailableLicensesResponse.__name__]) + response = mock_connection._get_licensing_information() + assert response.sustainability is False + assert response.restricted_substances is True From 81cf18b757db0da162007eb0ba3996fe45c895a4 Mon Sep 17 00:00:00 2001 From: Doug Addy Date: Tue, 26 Sep 2023 10:04:45 +0100 Subject: [PATCH 063/275] Fix typing for 3.8 --- poetry.lock | 48 ++++++++++++++----- .../bomanalytics/bom_types/_bom_reader.py | 12 ++--- .../bomanalytics/bom_types/_bom_types.py | 18 +++++-- 3 files changed, 57 insertions(+), 21 deletions(-) diff --git a/poetry.lock b/poetry.lock index a41c48db..c2a03594 100644 --- a/poetry.lock +++ b/poetry.lock @@ -796,6 +796,20 @@ typing-extensions = ">=3.7.4.1" all = ["pytz (>=2019.1)"] dates = ["pytz (>=2019.1)"] +[[package]] +name = "elementpath" +version = "4.1.5" +description = "XPath 1.0/2.0/3.0/3.1 parsers and selectors for ElementTree and lxml" +optional = false +python-versions = ">=3.7" +files = [ + {file = "elementpath-4.1.5-py3-none-any.whl", hash = "sha256:2ac1a2fb31eb22bbbf817f8cf6752f844513216263f0e3892c8e79782fe4bb55"}, + {file = "elementpath-4.1.5.tar.gz", hash = "sha256:c2d6dc524b29ef751ecfc416b0627668119d8812441c555d7471da41d4bacb8d"}, +] + +[package.extras] +dev = ["Sphinx", "coverage", "flake8", "lxml", "lxml-stubs", "memory-profiler", "memray", "mypy", "tox", "xmlschema (>=2.0.0)"] + [[package]] name = "entrypoints" version = "0.4" @@ -2508,7 +2522,6 @@ files = [ {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, - {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, @@ -2516,15 +2529,8 @@ files = [ {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, - {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, - {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, - {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, - {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, - {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, - {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, - {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, @@ -2541,7 +2547,6 @@ files = [ {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, - {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, @@ -2549,7 +2554,6 @@ files = [ {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, - {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, @@ -2893,7 +2897,8 @@ files = [ {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-win32.whl", hash = "sha256:763d65baa3b952479c4e972669f679fe490eee058d5aa85da483ebae2009d231"}, {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-win_amd64.whl", hash = "sha256:d000f258cf42fec2b1bbf2863c61d7b8918d31ffee905da62dede869254d3b8a"}, {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:045e0626baf1c52e5527bd5db361bc83180faaba2ff586e763d3d5982a876a9e"}, - {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-macosx_12_6_arm64.whl", hash = "sha256:721bc4ba4525f53f6a611ec0967bdcee61b31df5a56801281027a3a6d1c2daf5"}, + {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:1a6391a7cabb7641c32517539ca42cf84b87b667bad38b78d4d42dd23e957c81"}, + {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:9c7617df90c1365638916b98cdd9be833d31d337dbcd722485597b43c4a215bf"}, {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:41d0f1fa4c6830176eef5b276af04c89320ea616655d01327d5ce65e50575c94"}, {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-win32.whl", hash = "sha256:f6d3d39611ac2e4f62c3128a9eed45f19a6608670c5a2f4f07f24e8de3441d38"}, {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-win_amd64.whl", hash = "sha256:da538167284de58a52109a9b89b8f6a53ff8437dd6dc26d33b57bf6699153122"}, @@ -3505,6 +3510,25 @@ files = [ {file = "widgetsnbextension-4.0.9.tar.gz", hash = "sha256:3c1f5e46dc1166dfd40a42d685e6a51396fd34ff878742a3e47c6f0cc4a2a385"}, ] +[[package]] +name = "xmlschema" +version = "2.5.0" +description = "An XML Schema validator and decoder" +optional = false +python-versions = ">=3.7" +files = [ + {file = "xmlschema-2.5.0-py3-none-any.whl", hash = "sha256:f2b29c45485fac414cc1fdb38d18a220c5987d7d3aa996e6df6ff35ee94d5a63"}, + {file = "xmlschema-2.5.0.tar.gz", hash = "sha256:276a03e0fd3c94c148d528bff4d9482f9b99bf8c7b4056a2e8e703d28149d454"}, +] + +[package.dependencies] +elementpath = ">=4.1.5,<5.0.0" + +[package.extras] +codegen = ["elementpath (>=4.1.5,<5.0.0)", "jinja2"] +dev = ["Sphinx", "coverage", "elementpath (>=4.1.5,<5.0.0)", "flake8", "jinja2", "lxml", "lxml-stubs", "memory-profiler", "mypy", "sphinx-rtd-theme", "tox"] +docs = ["Sphinx", "elementpath (>=4.1.5,<5.0.0)", "jinja2", "sphinx-rtd-theme"] + [[package]] name = "zipp" version = "3.16.2" @@ -3526,4 +3550,4 @@ examples = ["jupyterlab", "lxml", "pandas", "tabulate"] [metadata] lock-version = "2.0" python-versions = "^3.8.0" -content-hash = "a90724cfacc305dd13bdb3a5e540d88e2ae402668051ebde25590e41091c0bef" +content-hash = "ca1b258eb8fa05183ae7ab9e8b21b1dee2a58a64c5b71dfa871ae30cc60f9135" diff --git a/src/ansys/grantami/bomanalytics/bom_types/_bom_reader.py b/src/ansys/grantami/bomanalytics/bom_types/_bom_reader.py index 81a5ab26..c6b098dc 100644 --- a/src/ansys/grantami/bomanalytics/bom_types/_bom_reader.py +++ b/src/ansys/grantami/bomanalytics/bom_types/_bom_reader.py @@ -1,5 +1,5 @@ import inspect -from typing import TYPE_CHECKING, Any, Dict, Iterable, Optional, cast +from typing import TYPE_CHECKING, Any, Dict, Iterable, Optional, Type, cast from xmlschema import XMLSchema # type: ignore[import] @@ -12,7 +12,7 @@ class BoMReader: _schema: XMLSchema - _class_members: Dict[str, type[BaseType]] + _class_members: Dict[str, Type[BaseType]] def __init__(self, schema: XMLSchema): """ @@ -25,7 +25,7 @@ def __init__(self, schema: XMLSchema): """ self._schema = schema self._namespaces: Dict[str, str] = {} - self._class_members: Dict[str, type[BaseType]] = { + self._class_members: Dict[str, Type[BaseType]] = { k: v for k, v in inspect.getmembers(bom_types, inspect.isclass) } @@ -74,7 +74,7 @@ def create_type(self, type_name: str, obj: Dict) -> "BaseType": def _deserialize_list_type( self, - instance: "type[BaseType]", + instance: "Type[BaseType]", obj: Dict, target_type: str, target_property_name: str, @@ -90,7 +90,7 @@ def _deserialize_list_type( return {} def _deserialize_single_type( - self, instance: "type[BaseType]", obj: Dict, target_type: str, target_property_name: str, field_name: str + self, instance: "Type[BaseType]", obj: Dict, target_type: str, target_property_name: str, field_name: str ) -> Dict[str, Any]: field_obj = self.get_field(instance, obj, field_name) if field_obj is not None: @@ -98,7 +98,7 @@ def _deserialize_single_type( return {} def get_field( - self, instance: "type[HasNamespace]", obj: Dict, field_name: str, namespace_url: Optional[str] = None + self, instance: "Type[HasNamespace]", obj: Dict, field_name: str, namespace_url: Optional[str] = None ) -> Any: """ Given an object and a local name, determines the qualified field name to fetch based on the document namespace diff --git a/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py b/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py index 44614cd1..4f4cf4a7 100644 --- a/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py +++ b/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py @@ -1,7 +1,19 @@ from __future__ import annotations from enum import Enum -from typing import TYPE_CHECKING, Any, Dict, Iterable, List, Optional, Protocol, Tuple, Union, cast +from typing import ( + TYPE_CHECKING, + Any, + Dict, + Iterable, + List, + Optional, + Protocol, + Tuple, + Type, + Union, + cast, +) if TYPE_CHECKING: from ._bom_reader import BoMReader @@ -639,7 +651,7 @@ def __init__(self, *, internal_id: Optional[str] = None, **kwargs: Dict[str, Any @classmethod def _process_custom_fields(cls, obj: Dict, bom_reader: BoMReader) -> Dict[str, Any]: props = super()._process_custom_fields(obj, bom_reader) - instance = cast(type[BaseType], cls) + instance = cast(Type[BaseType], cls) id_obj = bom_reader.get_field(instance, obj, "@id") if id_obj is not None: props["internal_id"] = id_obj @@ -710,7 +722,7 @@ def _write_custom_fields(self, obj: Dict, bom_writer: BoMWriter) -> None: @classmethod def _process_custom_fields(cls, obj: Dict, bom_reader: BoMReader) -> Dict[str, Any]: props = super()._process_custom_fields(obj, bom_reader) - instance = cast(type[BaseType], cls) + instance = cast(Type[BaseType], cls) identity_obj = bom_reader.get_field(instance, obj, "Identity") if identity_obj is not None: props["identity"] = identity_obj From 3a60f82b021fcdd61def03dc10224a4b6a823e6c Mon Sep 17 00:00:00 2001 From: Doug Addy Date: Tue, 26 Sep 2023 10:33:14 +0100 Subject: [PATCH 064/275] Fix path so we can actually ship the schema --- .pre-commit-config.yaml | 2 +- {src/ansys => ansys}/grantami/bomanalytics/__init__.py | 0 .../grantami/bomanalytics/_allowed_types.py | 0 {src/ansys => ansys}/grantami/bomanalytics/_bom_helper.py | 0 {src/ansys => ansys}/grantami/bomanalytics/_connection.py | 0 {src/ansys => ansys}/grantami/bomanalytics/_exceptions.py | 0 .../grantami/bomanalytics/_item_definitions.py | 0 .../ansys => ansys}/grantami/bomanalytics/_item_results.py | 0 {src/ansys => ansys}/grantami/bomanalytics/_logger.py | 0 .../grantami/bomanalytics/_query_results.py | 0 .../grantami/bomanalytics/bom_types/__init__.py | 0 .../grantami/bomanalytics/bom_types/_bom_reader.py | 0 .../grantami/bomanalytics/bom_types/_bom_types.py | 0 .../grantami/bomanalytics/bom_types/_bom_writer.py | 0 .../grantami/bomanalytics/bom_types/_builders.py | 0 {src/ansys => ansys}/grantami/bomanalytics/indicators.py | 0 {src/ansys => ansys}/grantami/bomanalytics/py.typed | 0 {src/ansys => ansys}/grantami/bomanalytics/queries.py | 0 .../bomanalytics/schemas/BillOfMaterialsEco2301.xsd | 0 .../grantami/bomanalytics/schemas/grantarecord1205.xsd | 0 pyproject.toml | 7 +++++-- 21 files changed, 6 insertions(+), 3 deletions(-) rename {src/ansys => ansys}/grantami/bomanalytics/__init__.py (100%) rename {src/ansys => ansys}/grantami/bomanalytics/_allowed_types.py (100%) rename {src/ansys => ansys}/grantami/bomanalytics/_bom_helper.py (100%) rename {src/ansys => ansys}/grantami/bomanalytics/_connection.py (100%) rename {src/ansys => ansys}/grantami/bomanalytics/_exceptions.py (100%) rename {src/ansys => ansys}/grantami/bomanalytics/_item_definitions.py (100%) rename {src/ansys => ansys}/grantami/bomanalytics/_item_results.py (100%) rename {src/ansys => ansys}/grantami/bomanalytics/_logger.py (100%) rename {src/ansys => ansys}/grantami/bomanalytics/_query_results.py (100%) rename {src/ansys => ansys}/grantami/bomanalytics/bom_types/__init__.py (100%) rename {src/ansys => ansys}/grantami/bomanalytics/bom_types/_bom_reader.py (100%) rename {src/ansys => ansys}/grantami/bomanalytics/bom_types/_bom_types.py (100%) rename {src/ansys => ansys}/grantami/bomanalytics/bom_types/_bom_writer.py (100%) rename {src/ansys => ansys}/grantami/bomanalytics/bom_types/_builders.py (100%) rename {src/ansys => ansys}/grantami/bomanalytics/indicators.py (100%) rename {src/ansys => ansys}/grantami/bomanalytics/py.typed (100%) rename {src/ansys => ansys}/grantami/bomanalytics/queries.py (100%) rename {src/ansys => ansys}/grantami/bomanalytics/schemas/BillOfMaterialsEco2301.xsd (100%) rename {src/ansys => ansys}/grantami/bomanalytics/schemas/grantarecord1205.xsd (100%) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 68a34ece..865507b2 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -31,7 +31,7 @@ repos: language: python types: [python] require_serial: true - files: "^(src/)" + files: "^(ansys/)" additional_dependencies: ["mypy==1.5.1"] #- repo: https://github.com/pycqa/pydocstyle diff --git a/src/ansys/grantami/bomanalytics/__init__.py b/ansys/grantami/bomanalytics/__init__.py similarity index 100% rename from src/ansys/grantami/bomanalytics/__init__.py rename to ansys/grantami/bomanalytics/__init__.py diff --git a/src/ansys/grantami/bomanalytics/_allowed_types.py b/ansys/grantami/bomanalytics/_allowed_types.py similarity index 100% rename from src/ansys/grantami/bomanalytics/_allowed_types.py rename to ansys/grantami/bomanalytics/_allowed_types.py diff --git a/src/ansys/grantami/bomanalytics/_bom_helper.py b/ansys/grantami/bomanalytics/_bom_helper.py similarity index 100% rename from src/ansys/grantami/bomanalytics/_bom_helper.py rename to ansys/grantami/bomanalytics/_bom_helper.py diff --git a/src/ansys/grantami/bomanalytics/_connection.py b/ansys/grantami/bomanalytics/_connection.py similarity index 100% rename from src/ansys/grantami/bomanalytics/_connection.py rename to ansys/grantami/bomanalytics/_connection.py diff --git a/src/ansys/grantami/bomanalytics/_exceptions.py b/ansys/grantami/bomanalytics/_exceptions.py similarity index 100% rename from src/ansys/grantami/bomanalytics/_exceptions.py rename to ansys/grantami/bomanalytics/_exceptions.py diff --git a/src/ansys/grantami/bomanalytics/_item_definitions.py b/ansys/grantami/bomanalytics/_item_definitions.py similarity index 100% rename from src/ansys/grantami/bomanalytics/_item_definitions.py rename to ansys/grantami/bomanalytics/_item_definitions.py diff --git a/src/ansys/grantami/bomanalytics/_item_results.py b/ansys/grantami/bomanalytics/_item_results.py similarity index 100% rename from src/ansys/grantami/bomanalytics/_item_results.py rename to ansys/grantami/bomanalytics/_item_results.py diff --git a/src/ansys/grantami/bomanalytics/_logger.py b/ansys/grantami/bomanalytics/_logger.py similarity index 100% rename from src/ansys/grantami/bomanalytics/_logger.py rename to ansys/grantami/bomanalytics/_logger.py diff --git a/src/ansys/grantami/bomanalytics/_query_results.py b/ansys/grantami/bomanalytics/_query_results.py similarity index 100% rename from src/ansys/grantami/bomanalytics/_query_results.py rename to ansys/grantami/bomanalytics/_query_results.py diff --git a/src/ansys/grantami/bomanalytics/bom_types/__init__.py b/ansys/grantami/bomanalytics/bom_types/__init__.py similarity index 100% rename from src/ansys/grantami/bomanalytics/bom_types/__init__.py rename to ansys/grantami/bomanalytics/bom_types/__init__.py diff --git a/src/ansys/grantami/bomanalytics/bom_types/_bom_reader.py b/ansys/grantami/bomanalytics/bom_types/_bom_reader.py similarity index 100% rename from src/ansys/grantami/bomanalytics/bom_types/_bom_reader.py rename to ansys/grantami/bomanalytics/bom_types/_bom_reader.py diff --git a/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py b/ansys/grantami/bomanalytics/bom_types/_bom_types.py similarity index 100% rename from src/ansys/grantami/bomanalytics/bom_types/_bom_types.py rename to ansys/grantami/bomanalytics/bom_types/_bom_types.py diff --git a/src/ansys/grantami/bomanalytics/bom_types/_bom_writer.py b/ansys/grantami/bomanalytics/bom_types/_bom_writer.py similarity index 100% rename from src/ansys/grantami/bomanalytics/bom_types/_bom_writer.py rename to ansys/grantami/bomanalytics/bom_types/_bom_writer.py diff --git a/src/ansys/grantami/bomanalytics/bom_types/_builders.py b/ansys/grantami/bomanalytics/bom_types/_builders.py similarity index 100% rename from src/ansys/grantami/bomanalytics/bom_types/_builders.py rename to ansys/grantami/bomanalytics/bom_types/_builders.py diff --git a/src/ansys/grantami/bomanalytics/indicators.py b/ansys/grantami/bomanalytics/indicators.py similarity index 100% rename from src/ansys/grantami/bomanalytics/indicators.py rename to ansys/grantami/bomanalytics/indicators.py diff --git a/src/ansys/grantami/bomanalytics/py.typed b/ansys/grantami/bomanalytics/py.typed similarity index 100% rename from src/ansys/grantami/bomanalytics/py.typed rename to ansys/grantami/bomanalytics/py.typed diff --git a/src/ansys/grantami/bomanalytics/queries.py b/ansys/grantami/bomanalytics/queries.py similarity index 100% rename from src/ansys/grantami/bomanalytics/queries.py rename to ansys/grantami/bomanalytics/queries.py diff --git a/src/ansys/grantami/bomanalytics/schemas/BillOfMaterialsEco2301.xsd b/ansys/grantami/bomanalytics/schemas/BillOfMaterialsEco2301.xsd similarity index 100% rename from src/ansys/grantami/bomanalytics/schemas/BillOfMaterialsEco2301.xsd rename to ansys/grantami/bomanalytics/schemas/BillOfMaterialsEco2301.xsd diff --git a/src/ansys/grantami/bomanalytics/schemas/grantarecord1205.xsd b/ansys/grantami/bomanalytics/schemas/grantarecord1205.xsd similarity index 100% rename from src/ansys/grantami/bomanalytics/schemas/grantarecord1205.xsd rename to ansys/grantami/bomanalytics/schemas/grantarecord1205.xsd diff --git a/pyproject.toml b/pyproject.toml index 5b4962ca..16b50c47 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,8 +32,11 @@ classifiers = [ "Programming Language :: Python :: 3.11", ] packages = [ - { include = "**/*.py", from = "src" } + { include = "ansys/**/*.py" }, ] + include = [ + { path = "ansys/**/*.xsd" } + ] [tool.poetry.dependencies] python = "^3.8.0" @@ -146,4 +149,4 @@ line_length = 100 default_section = "THIRDPARTY" skip_gitignore = true skip = [".ipython", "cicd", "examples", "examples-dummy"] -src_paths = ["src", "tests"] +src_paths = ["ansys", "tests"] From 1f66f66788daf9910e4ea832a94e7f774147e89d Mon Sep 17 00:00:00 2001 From: Doug Addy Date: Tue, 26 Sep 2023 12:17:01 +0100 Subject: [PATCH 065/275] Tidy up typing and add some tests --- .../bomanalytics/bom_types/_bom_reader.py | 12 +- .../bomanalytics/bom_types/_bom_types.py | 214 +++++++++--------- .../bomanalytics/bom_types/_bom_writer.py | 11 +- .../bomanalytics/bom_types/_builders.py | 51 +++-- tests/test_bom_builders.py | 180 +++++++++++++++ 5 files changed, 324 insertions(+), 144 deletions(-) create mode 100644 tests/test_bom_builders.py diff --git a/ansys/grantami/bomanalytics/bom_types/_bom_reader.py b/ansys/grantami/bomanalytics/bom_types/_bom_reader.py index c6b098dc..62c09d24 100644 --- a/ansys/grantami/bomanalytics/bom_types/_bom_reader.py +++ b/ansys/grantami/bomanalytics/bom_types/_bom_reader.py @@ -4,10 +4,10 @@ from xmlschema import XMLSchema # type: ignore[import] from . import _bom_types as bom_types -from ._bom_types import BaseType +from ._bom_types import BaseType, HasNamespace if TYPE_CHECKING: - from . import BaseType, BillOfMaterials, HasNamespace + from . import BillOfMaterials class BoMReader: @@ -54,7 +54,7 @@ def read_bom(self, obj: Dict) -> "BillOfMaterials": return cast("BillOfMaterials", self.create_type("BillOfMaterials", obj)) - def create_type(self, type_name: str, obj: Dict) -> "BaseType": + def create_type(self, type_name: str, obj: Dict) -> BaseType: type_ = self._class_members[type_name] kwargs = {} for target_type, target_property_name, field_name in type_._props: @@ -74,7 +74,7 @@ def create_type(self, type_name: str, obj: Dict) -> "BaseType": def _deserialize_list_type( self, - instance: "Type[BaseType]", + instance: Type[BaseType], obj: Dict, target_type: str, target_property_name: str, @@ -90,7 +90,7 @@ def _deserialize_list_type( return {} def _deserialize_single_type( - self, instance: "Type[BaseType]", obj: Dict, target_type: str, target_property_name: str, field_name: str + self, instance: Type[BaseType], obj: Dict, target_type: str, target_property_name: str, field_name: str ) -> Dict[str, Any]: field_obj = self.get_field(instance, obj, field_name) if field_obj is not None: @@ -98,7 +98,7 @@ def _deserialize_single_type( return {} def get_field( - self, instance: "Type[HasNamespace]", obj: Dict, field_name: str, namespace_url: Optional[str] = None + self, instance: Type[HasNamespace], obj: Dict, field_name: str, namespace_url: Optional[str] = None ) -> Any: """ Given an object and a local name, determines the qualified field name to fetch based on the document namespace diff --git a/ansys/grantami/bomanalytics/bom_types/_bom_types.py b/ansys/grantami/bomanalytics/bom_types/_bom_types.py index 4f4cf4a7..e1845bb4 100644 --- a/ansys/grantami/bomanalytics/bom_types/_bom_types.py +++ b/ansys/grantami/bomanalytics/bom_types/_bom_types.py @@ -118,7 +118,7 @@ class DimensionType(Enum): Time = 6 @classmethod - def from_string(cls, value: str) -> "DimensionType": + def from_string(cls, value: str) -> DimensionType: """ Convert string representation of this object into an instance of this object. @@ -160,7 +160,7 @@ class PseudoAttribute(Enum): TableFilters = 15 @classmethod - def from_string(cls, value: str) -> "PseudoAttribute": + def from_string(cls, value: str) -> PseudoAttribute: """ Convert string representation of this object into an instance of this object. @@ -440,7 +440,7 @@ def __init__( record_version_number: Optional[int] = None, record_guid: Optional[str] = None, record_history_guid: Optional[str] = None, - lookup_attribute_reference: "Optional[MIAttributeReference]" = None, + lookup_attribute_reference: Optional[MIAttributeReference] = None, lookup_value: Optional[str] = None, record_uid: Optional[str] = None, **kwargs: Dict[str, Any], @@ -585,7 +585,7 @@ def record_history_guid(self, value: Optional[str]) -> None: self._record_history_guid = value @property - def lookup_attribute_reference(self) -> "Optional[MIAttributeReference]": + def lookup_attribute_reference(self) -> Optional[MIAttributeReference]: """ Identifies a record by a short-text attribute value. Specifies which attribute should be used to perform this lookup. This should be either a Short-Text Attribute, or a compatible Pseudo-Attribute. @@ -786,7 +786,7 @@ class EndOfLifeFate(BaseType): _props = [("MIRecordReference", "mi_end_of_life_reference", "MIEndOfLifeReference")] def __init__( - self, *, mi_end_of_life_reference: "MIRecordReference", fraction: float, **kwargs: Dict[str, Any] + self, *, mi_end_of_life_reference: MIRecordReference, fraction: float, **kwargs: Dict[str, Any] ) -> None: """ The fate of a material at the end-of-life of the product. For example if a material can be recycled, and what @@ -804,7 +804,7 @@ def __init__( self.fraction = fraction @property - def mi_end_of_life_reference(self) -> "MIRecordReference": + def mi_end_of_life_reference(self) -> MIRecordReference: """ Reference identifying the applicable fate within the MI Database. @@ -894,7 +894,7 @@ def unit(self, value: Optional[str]) -> None: class Location(CommonIdentifiersMixin, InternalIdentifierMixin, BaseType): _props = [("MIRecordReference", "mi_location_reference", "MILocationReference")] - def __init__(self, *, mi_location_reference: "Optional[MIRecordReference]" = None, **kwargs: Any) -> None: + def __init__(self, *, mi_location_reference: Optional[MIRecordReference] = None, **kwargs: Any) -> None: """ Defines the manufacturing location for the BoM for use in process calculations. @@ -907,7 +907,7 @@ def __init__(self, *, mi_location_reference: "Optional[MIRecordReference]" = Non self.mi_location_reference = mi_location_reference @property - def mi_location_reference(self) -> "Optional[MIRecordReference]": + def mi_location_reference(self) -> Optional[MIRecordReference]: """ Reference to a record in the MI database representing the manufacturing location. @@ -929,7 +929,7 @@ class ElectricityMix(BaseType): def __init__( self, *, - mi_region_reference: "Optional[MIRecordReference]" = None, + mi_region_reference: Optional[MIRecordReference] = None, percentage_fossil_fuels: Optional[float] = None, **kwargs: Dict[str, Any], ) -> None: @@ -951,7 +951,7 @@ def __init__( self.percentage_fossil_fuels = percentage_fossil_fuels @property - def mi_region_reference(self) -> "Optional[MIRecordReference]": + def mi_region_reference(self) -> Optional[MIRecordReference]: """ Reference to a record in the MI database representing the electricity mix for the destination country. @@ -991,9 +991,9 @@ class MobileMode(BaseType): def __init__( self, *, - mi_transport_reference: "MIRecordReference", + mi_transport_reference: MIRecordReference, days_used_per_year: float, - distance_travelled_per_day: "UnittedValue", + distance_travelled_per_day: UnittedValue, **kwargs: Dict[str, Any], ) -> None: """ @@ -1045,7 +1045,7 @@ def days_used_per_year(self, value: float) -> None: self._days_used_per_year = value @property - def distance_travelled_per_day(self) -> "UnittedValue": + def distance_travelled_per_day(self) -> UnittedValue: """ The distance the product will be transported each day as part of its use. @@ -1070,8 +1070,8 @@ class StaticMode(BaseType): def __init__( self, *, - mi_energy_conversion_reference: "MIRecordReference", - power_rating: "UnittedValue", + mi_energy_conversion_reference: MIRecordReference, + power_rating: UnittedValue, days_used_per_year: float, hours_used_per_day: float, **kwargs: Dict[str, Any], @@ -1098,7 +1098,7 @@ def __init__( self.hours_used_per_day = hours_used_per_day @property - def mi_energy_conversion_reference(self) -> "MIRecordReference": + def mi_energy_conversion_reference(self) -> MIRecordReference: """ Reference to a record in the MI database representing the primary energy conversion taking place when the product is in use. @@ -1114,7 +1114,7 @@ def mi_energy_conversion_reference(self, value: MIRecordReference) -> None: self._mi_energy_conversion_reference = value @property - def power_rating(self) -> "UnittedValue": + def power_rating(self) -> UnittedValue: """ The power rating of the product whilst in use. @@ -1324,7 +1324,7 @@ def functional_unit_description(self, value: Optional[str]) -> None: self._functional_unit_description = value @property - def utility(self) -> "Optional[UtilitySpecification]": + def utility(self) -> Optional[UtilitySpecification]: """ Indicates how much use can be obtained from the product represented by the BoM, compared to an industry-average example. @@ -1351,10 +1351,10 @@ class UsePhase(BaseType): def __init__( self, *, - product_life_span: "ProductLifeSpan", - electricity_mix: "Optional[ElectricityMix]" = None, - static_mode: "Optional[StaticMode]" = None, - mobile_mode: "Optional[MobileMode]" = None, + product_life_span: ProductLifeSpan, + electricity_mix: Optional[ElectricityMix] = None, + static_mode: Optional[StaticMode] = None, + mobile_mode: Optional[MobileMode] = None, **kwargs: Dict[str, Any], ) -> None: """ @@ -1379,7 +1379,7 @@ def __init__( self.mobile_mode = mobile_mode @property - def product_life_span(self) -> "ProductLifeSpan": + def product_life_span(self) -> ProductLifeSpan: """ Specifies the expected life span of the product. @@ -1394,7 +1394,7 @@ def product_life_span(self, value: ProductLifeSpan) -> None: self._product_life_span = value @property - def electricity_mix(self) -> "Optional[ElectricityMix]": + def electricity_mix(self) -> Optional[ElectricityMix]: """ Specifies the proportion of electricity within the destination country that comes from fossil fuels. @@ -1409,7 +1409,7 @@ def electricity_mix(self, value: Optional[ElectricityMix]) -> None: self._electricity_mix = value @property - def static_mode(self) -> "Optional[StaticMode]": + def static_mode(self) -> Optional[StaticMode]: """ Provides information about the expected static use of the product. @@ -1424,7 +1424,7 @@ def static_mode(self, value: Optional[StaticMode]) -> None: self._static_mode = value @property - def mobile_mode(self) -> "Optional[MobileMode]": + def mobile_mode(self) -> Optional[MobileMode]: """ Provides information about the expected mobile use of the product. @@ -1526,8 +1526,8 @@ def __init__( self, *, name: str, - mi_transport_reference: "MIRecordReference", - distance: "UnittedValue", + mi_transport_reference: MIRecordReference, + distance: UnittedValue, **kwargs: Any, ) -> None: """ @@ -1565,7 +1565,7 @@ def name(self, value: str) -> None: self._name = value @property - def mi_transport_reference(self) -> "MIRecordReference": + def mi_transport_reference(self) -> MIRecordReference: """ Reference to a record in the MI Database representing the means of transportation for this stage. @@ -1580,7 +1580,7 @@ def mi_transport_reference(self, value: MIRecordReference) -> None: self._mi_transport_reference = value @property - def distance(self) -> "UnittedValue": + def distance(self) -> UnittedValue: """ The distance covered by this transportation stage. @@ -1604,8 +1604,8 @@ class Specification(CommonIdentifiersMixin, InternalIdentifierMixin, BaseType): def __init__( self, *, - mi_specification_reference: "MIRecordReference", - quantity: "Optional[UnittedValue]" = None, + mi_specification_reference: MIRecordReference, + quantity: Optional[UnittedValue] = None, **kwargs: Any, ) -> None: """ @@ -1624,7 +1624,7 @@ def __init__( self.quantity = quantity @property - def mi_specification_reference(self) -> "MIRecordReference": + def mi_specification_reference(self) -> MIRecordReference: """ Reference identifying the record representing this specification in the MI Database. @@ -1639,7 +1639,7 @@ def mi_specification_reference(self, value: MIRecordReference) -> None: self._mi_specification_reference = value @property - def quantity(self) -> "Optional[UnittedValue]": + def quantity(self) -> Optional[UnittedValue]: """ A quantification of the specification, if applicable. @@ -1662,7 +1662,7 @@ class Substance(CommonIdentifiersMixin, InternalIdentifierMixin, BaseType): def __init__( self, *, - mi_substance_reference: "MIRecordReference", + mi_substance_reference: MIRecordReference, percentage: Optional[float] = None, category: Optional[str] = None, **kwargs: Any, @@ -1687,7 +1687,7 @@ def __init__( self.category = category @property - def mi_substance_reference(self) -> "MIRecordReference": + def mi_substance_reference(self) -> MIRecordReference: """ Reference identifying the record representing the substance in the MI Database. @@ -1698,7 +1698,7 @@ def mi_substance_reference(self) -> "MIRecordReference": return self._mi_substance_reference @mi_substance_reference.setter - def mi_substance_reference(self, value: "MIRecordReference") -> None: + def mi_substance_reference(self, value: MIRecordReference) -> None: self._mi_substance_reference = value @property @@ -1743,10 +1743,10 @@ class Process(CommonIdentifiersMixin, InternalIdentifierMixin, BaseType): def __init__( self, *, - mi_process_reference: "MIRecordReference", - dimension_type: "DimensionType", + mi_process_reference: MIRecordReference, + dimension_type: DimensionType, percentage_of_part_affected: Optional[float] = None, - quantity_affected: "Optional[UnittedValue]" = None, + quantity_affected: Optional[UnittedValue] = None, **kwargs: Any, ) -> None: """ @@ -1787,7 +1787,7 @@ def _write_custom_fields(self, obj: Dict, bom_writer: BoMWriter) -> None: obj[dimension_field_name] = self.dimension_type.to_string() @property - def mi_process_reference(self) -> "MIRecordReference": + def mi_process_reference(self) -> MIRecordReference: """ Reference identifying a record in the MI Database containing information about this process. @@ -1833,7 +1833,7 @@ def percentage_of_part_affected(self, value: Optional[float]) -> None: self._percentage_of_part_affected = value @property - def quantity_affected(self) -> "Optional[UnittedValue]": + def quantity_affected(self) -> Optional[UnittedValue]: """ Number of items affected by the process, if applicable. For example 17 fasteners are galvanized out of 24 total. @@ -1844,7 +1844,7 @@ def quantity_affected(self) -> "Optional[UnittedValue]": return self._quantity_affected @quantity_affected.setter - def quantity_affected(self, value: "Optional[UnittedValue]") -> None: + def quantity_affected(self, value: Optional[UnittedValue]) -> None: self._quantity_affected = value @@ -1867,13 +1867,13 @@ class Material(CommonIdentifiersMixin, InternalIdentifierMixin, BaseType): def __init__( self, *, - mi_material_reference: "MIRecordReference", + mi_material_reference: MIRecordReference, percentage: Optional[float] = None, - mass: "Optional[UnittedValue]" = None, + mass: Optional[UnittedValue] = None, recycle_content_is_typical: Optional[bool] = None, recycle_content_percentage: Optional[float] = None, - processes: "Optional[List[Process]]" = None, - end_of_life_fates: "Optional[List[EndOfLifeFate]]" = None, + processes: Optional[List[Process]] = None, + end_of_life_fates: Optional[List[EndOfLifeFate]] = None, **kwargs: Any, ) -> None: """ @@ -1969,7 +1969,7 @@ def percentage(self, value: Optional[float]) -> None: self._percentage = value @property - def mass(self) -> "Optional[UnittedValue]": + def mass(self) -> Optional[UnittedValue]: """ The mass of this material present within the part. Provide either this or ``percentage``. @@ -1980,7 +1980,7 @@ def mass(self) -> "Optional[UnittedValue]": return self._mass @mass.setter - def mass(self, value: "Optional[UnittedValue]") -> None: + def mass(self, value: Optional[UnittedValue]) -> None: self._mass = value @property @@ -2028,11 +2028,11 @@ def processes(self) -> List[Process]: return self._processes @processes.setter - def processes(self, value: "List[Process]") -> None: + def processes(self, value: List[Process]) -> None: self._processes = value @property - def end_of_life_fates(self) -> "List[EndOfLifeFate]": + def end_of_life_fates(self) -> List[EndOfLifeFate]: """ The fates of this material once the product is disposed of. @@ -2043,7 +2043,7 @@ def end_of_life_fates(self) -> "List[EndOfLifeFate]": return self._end_of_life_fates @end_of_life_fates.setter - def end_of_life_fates(self, value: "List[EndOfLifeFate]") -> None: + def end_of_life_fates(self, value: List[EndOfLifeFate]) -> None: self._end_of_life_fates = value @@ -2082,20 +2082,20 @@ def __init__( self, *, part_number: str, - quantity: "Optional[UnittedValue]" = None, - mass_per_unit_of_measure: "Optional[UnittedValue]" = None, - volume_per_unit_of_measure: "Optional[UnittedValue]" = None, - mi_part_reference: "Optional[MIRecordReference]" = None, - non_mi_part_reference: "Optional[Union[str, int]]" = None, + quantity: Optional[UnittedValue] = None, + mass_per_unit_of_measure: Optional[UnittedValue] = None, + volume_per_unit_of_measure: Optional[UnittedValue] = None, + mi_part_reference: Optional[MIRecordReference] = None, + non_mi_part_reference: Optional[Union[str, int]] = None, part_name: Optional[str] = None, external_id: Optional[str] = None, - components: "Optional[List[Part]]" = None, - specifications: "Optional[List[Specification]]" = None, - materials: "Optional[List[Material]]" = None, - substances: "Optional[List[Substance]]" = None, - processes: "Optional[List[Process]]" = None, + components: Optional[List[Part]] = None, + specifications: Optional[List[Specification]] = None, + materials: Optional[List[Material]] = None, + substances: Optional[List[Substance]] = None, + processes: Optional[List[Process]] = None, rohs_exemptions: Optional[List[str]] = None, - end_of_life_fates: "Optional[List[EndOfLifeFate]]" = None, + end_of_life_fates: Optional[List[EndOfLifeFate]] = None, **kwargs: Any, ): """ @@ -2206,7 +2206,7 @@ def _write_custom_fields(self, obj: Dict, bom_writer: BoMWriter) -> None: obj[rohs_exemptions_field_name] = rohs_exemptions @property - def quantity(self) -> "Optional[UnittedValue]": + def quantity(self) -> Optional[UnittedValue]: """ The quantity of part(s) used in the parent part. For discrete parts, this will be the part count - an integer with a blank unit (or "Each"). For continuous parts, it will be a mass, length, area or volume - a float value @@ -2219,11 +2219,11 @@ def quantity(self) -> "Optional[UnittedValue]": return self._quantity @quantity.setter - def quantity(self, value: "Optional[UnittedValue]") -> None: + def quantity(self, value: Optional[UnittedValue]) -> None: self._quantity = value @property - def mass_per_unit_of_measure(self) -> "Optional[UnittedValue]": + def mass_per_unit_of_measure(self) -> Optional[UnittedValue]: """ The mass of the part, after processing, relative to the unit that Quantity is given in. If MassPerUom is specified and VolumePerUom is not, then specifying materials within this part is interpreted to be percentage @@ -2236,11 +2236,11 @@ def mass_per_unit_of_measure(self) -> "Optional[UnittedValue]": return self._mass_per_unit_of_measure @mass_per_unit_of_measure.setter - def mass_per_unit_of_measure(self, value: "Optional[UnittedValue]") -> None: + def mass_per_unit_of_measure(self, value: Optional[UnittedValue]) -> None: self._mass_per_unit_of_measure = value @property - def volume_per_unit_of_measure(self) -> "Optional[UnittedValue]": + def volume_per_unit_of_measure(self) -> Optional[UnittedValue]: """ The volume of the part, after processing, relative to the unit that Quantity is given in. If VolumePerUom is specified and MassPerUom is not, then specifying materials within this part is interpreted to be percentage by @@ -2253,11 +2253,11 @@ def volume_per_unit_of_measure(self) -> "Optional[UnittedValue]": return self._volume_per_unit_of_measure @volume_per_unit_of_measure.setter - def volume_per_unit_of_measure(self, value: "Optional[UnittedValue]") -> None: + def volume_per_unit_of_measure(self, value: Optional[UnittedValue]) -> None: self._volume_per_unit_of_measure = value @property - def mi_part_reference(self) -> "Optional[MIRecordReference]": + def mi_part_reference(self) -> Optional[MIRecordReference]: """ A reference identifying a part stored in the MI Database. @@ -2268,7 +2268,7 @@ def mi_part_reference(self) -> "Optional[MIRecordReference]": return self._mi_part_reference @mi_part_reference.setter - def mi_part_reference(self, value: "Optional[MIRecordReference]") -> None: + def mi_part_reference(self, value: Optional[MIRecordReference]) -> None: self._mi_part_reference = value @property @@ -2332,7 +2332,7 @@ def external_id(self, value: Optional[str]) -> None: self._external_id = value @property - def components(self) -> "List[Part]": + def components(self) -> List[Part]: """ List of subcomponents for this part. @@ -2343,11 +2343,11 @@ def components(self) -> "List[Part]": return self._components @components.setter - def components(self, value: "List[Part]") -> None: + def components(self, value: List[Part]) -> None: self._components = value @property - def specifications(self) -> "List[Specification]": + def specifications(self) -> List[Specification]: """ List of substances contained within this part. @@ -2359,11 +2359,11 @@ def specifications(self) -> "List[Specification]": return self._specifications @specifications.setter - def specifications(self, value: "List[Specification]") -> None: + def specifications(self, value: List[Specification]) -> None: self._specifications = value @property - def materials(self) -> "List[Material]": + def materials(self) -> List[Material]: """ List of constituent materials making up this part. @@ -2374,11 +2374,11 @@ def materials(self) -> "List[Material]": return self._materials @materials.setter - def materials(self, value: "List[Material]") -> None: + def materials(self, value: List[Material]) -> None: self._materials = value @property - def substances(self) -> "List[Substance]": + def substances(self) -> List[Substance]: """ List of substances contained within this part. @@ -2389,11 +2389,11 @@ def substances(self) -> "List[Substance]": return self._substances @substances.setter - def substances(self, value: "List[Substance]") -> None: + def substances(self, value: List[Substance]) -> None: self._substances = value @property - def processes(self) -> "List[Process]": + def processes(self) -> List[Process]: """ List of processes used in the manufacture of this part. @@ -2404,7 +2404,7 @@ def processes(self) -> "List[Process]": return self._processes @processes.setter - def processes(self, value: "List[Process]") -> None: + def processes(self, value: List[Process]) -> None: self._processes = value @property @@ -2424,7 +2424,7 @@ def rohs_exemptions(self, value: List[str]) -> None: self._rohs_exemptions = value @property - def end_of_life_fates(self) -> "List[EndOfLifeFate]": + def end_of_life_fates(self) -> List[EndOfLifeFate]: """ The fate(s) of the part, at the end-of-life of the product. @@ -2435,7 +2435,7 @@ def end_of_life_fates(self) -> "List[EndOfLifeFate]": return self._end_of_life_fates @end_of_life_fates.setter - def end_of_life_fates(self, value: "List[EndOfLifeFate]") -> None: + def end_of_life_fates(self, value: List[EndOfLifeFate]) -> None: self._end_of_life_fates = value @@ -2541,7 +2541,7 @@ def __init__( target_id: str, source_id: Optional[str] = None, type_: str, - value: "Union[str, UnittedValue]", + value: Union[str, UnittedValue], **kwargs: Dict[str, Any], ) -> None: """ @@ -2622,7 +2622,7 @@ def type_(self, value: str) -> None: self._type_ = value @property - def value(self) -> "Union[str, UnittedValue]": + def value(self) -> Union[str, UnittedValue]: """ The content of this annotation @@ -2633,7 +2633,7 @@ def value(self) -> "Union[str, UnittedValue]": return self._value @value.setter - def value(self, value: "Union[str, UnittedValue]") -> None: + def value(self, value: Union[str, UnittedValue]) -> None: self._value = value @@ -2657,13 +2657,13 @@ class BillOfMaterials(InternalIdentifierMixin, BaseType): def __init__( self, *, - components: "List[Part]", - transport_phase: "Optional[List[TransportStage]]" = None, - use_phase: "Optional[UsePhase]" = None, - location: "Optional[Location]" = None, - notes: "Optional[BoMDetails]" = None, - annotations: "Optional[List[Annotation]]" = None, - annotation_sources: "Optional[List[AnnotationSource]]" = None, + components: List[Part], + transport_phase: Optional[List[TransportStage]] = None, + use_phase: Optional[UsePhase] = None, + location: Optional[Location] = None, + notes: Optional[BoMDetails] = None, + annotations: Optional[List[Annotation]] = None, + annotation_sources: Optional[List[AnnotationSource]] = None, **kwargs: Any, ) -> None: """ @@ -2705,7 +2705,7 @@ def __repr__(self) -> str: return f"" @property - def components(self) -> "List[Part]": + def components(self) -> List[Part]: """ The parts contained within this BoM. @@ -2716,11 +2716,11 @@ def components(self) -> "List[Part]": return self._components @components.setter - def components(self, value: "List[Part]") -> None: + def components(self, value: List[Part]) -> None: self._components = value @property - def transport_phase(self) -> "List[TransportStage]": + def transport_phase(self) -> List[TransportStage]: """ The different forms of transport to which the parts are subject. @@ -2731,11 +2731,11 @@ def transport_phase(self) -> "List[TransportStage]": return self._transport_phase @transport_phase.setter - def transport_phase(self, value: "List[TransportStage]") -> None: + def transport_phase(self, value: List[TransportStage]) -> None: self._transport_phase = value @property - def use_phase(self) -> "Optional[UsePhase]": + def use_phase(self) -> Optional[UsePhase]: """ The type of use to which this product is subject. @@ -2746,11 +2746,11 @@ def use_phase(self) -> "Optional[UsePhase]": return self._use_phase @use_phase.setter - def use_phase(self, value: "Optional[UsePhase]") -> None: + def use_phase(self, value: Optional[UsePhase]) -> None: self._use_phase = value @property - def location(self) -> "Optional[Location]": + def location(self) -> Optional[Location]: """ The location in which the object represented by the BoM is assembled. @@ -2761,11 +2761,11 @@ def location(self) -> "Optional[Location]": return self._location @location.setter - def location(self, value: "Optional[Location]") -> None: + def location(self, value: Optional[Location]) -> None: self._location = value @property - def notes(self) -> "Optional[BoMDetails]": + def notes(self) -> Optional[BoMDetails]: """ Any optional notes about this BoM. @@ -2776,11 +2776,11 @@ def notes(self) -> "Optional[BoMDetails]": return self._notes @notes.setter - def notes(self, value: "Optional[BoMDetails]") -> None: + def notes(self, value: Optional[BoMDetails]) -> None: self._notes = value @property - def annotations(self) -> "List[Annotation]": + def annotations(self) -> List[Annotation]: """ Any annotations that are associated with objects within the BoM. @@ -2791,11 +2791,11 @@ def annotations(self) -> "List[Annotation]": return self._annotations @annotations.setter - def annotations(self, value: "List[Annotation]") -> None: + def annotations(self, value: List[Annotation]) -> None: self._annotations = value @property - def annotation_sources(self) -> "List[AnnotationSource]": + def annotation_sources(self) -> List[AnnotationSource]: """ Sources for annotations present within the BoM. @@ -2806,5 +2806,5 @@ def annotation_sources(self) -> "List[AnnotationSource]": return self._annotation_sources @annotation_sources.setter - def annotation_sources(self, value: "List[AnnotationSource]") -> None: + def annotation_sources(self, value: List[AnnotationSource]) -> None: self._annotation_sources = value diff --git a/ansys/grantami/bomanalytics/bom_types/_bom_writer.py b/ansys/grantami/bomanalytics/bom_types/_bom_writer.py index 6abba4c7..506be21c 100644 --- a/ansys/grantami/bomanalytics/bom_types/_bom_writer.py +++ b/ansys/grantami/bomanalytics/bom_types/_bom_writer.py @@ -1,9 +1,8 @@ -from typing import TYPE_CHECKING, Dict, cast +from typing import Dict, cast from xmlschema import XMLSchema # type: ignore[import] -if TYPE_CHECKING: - from . import BaseType, BillOfMaterials, HasNamespace +from . import BaseType, BillOfMaterials, HasNamespace class BoMWriter: @@ -20,7 +19,7 @@ def __init__(self, schema: XMLSchema): """ self._schema = schema - def _get_qualified_name(self, obj: "HasNamespace", field_name: str) -> str: + def _get_qualified_name(self, obj: HasNamespace, field_name: str) -> str: namespace_prefixes = [k for k, v in self._schema.namespaces.items() if v == obj._namespace] if len(namespace_prefixes) == 1: namespace_prefix = namespace_prefixes[0] @@ -34,7 +33,7 @@ def _get_qualified_name(self, obj: "HasNamespace", field_name: str) -> str: return f"@{namespace_prefix}:{field_name[1:]}" return f"{namespace_prefix}:{field_name}" - def _convert_to_dict(self, obj: "BaseType") -> Dict: + def _convert_to_dict(self, obj: BaseType) -> Dict: value = {} for prop, field_name in obj._simple_values: @@ -58,7 +57,7 @@ def _convert_to_dict(self, obj: "BaseType") -> Dict: obj._write_custom_fields(value, self) return value - def convert_bom_to_dict(self, obj: "BillOfMaterials") -> Dict: + def convert_bom_to_dict(self, obj: BillOfMaterials) -> Dict: """ Convert a BillOfMaterials object into its xmlschema dictionary form for serialization to XML. diff --git a/ansys/grantami/bomanalytics/bom_types/_builders.py b/ansys/grantami/bomanalytics/bom_types/_builders.py index 5aa92c56..8cc198d7 100644 --- a/ansys/grantami/bomanalytics/bom_types/_builders.py +++ b/ansys/grantami/bomanalytics/bom_types/_builders.py @@ -1,15 +1,17 @@ +from __future__ import annotations + from typing import Optional from . import MIAttributeReference, MIRecordReference, PartialTableReference, PseudoAttribute class _AttributeReferenceByNameBuilder: - _parent: "AttributeReferenceBuilder" + _parent: AttributeReferenceBuilder - def __init__(self, root_builder: "AttributeReferenceBuilder") -> None: + def __init__(self, root_builder: AttributeReferenceBuilder) -> None: self._parent = root_builder - def with_table_name(self, table_name: str) -> "_FinalAttributeReferenceBuilder": + def with_table_name(self, table_name: str) -> _FinalAttributeReferenceBuilder: """ Specify the table by name @@ -27,7 +29,7 @@ def with_table_name(self, table_name: str) -> "_FinalAttributeReferenceBuilder": self._set_table_reference(table_reference) return _FinalAttributeReferenceBuilder(self._parent) - def with_table_identity(self, table_identity: int) -> "_FinalAttributeReferenceBuilder": + def with_table_identity(self, table_identity: int) -> _FinalAttributeReferenceBuilder: """ Specify the table by its identity @@ -45,7 +47,7 @@ def with_table_identity(self, table_identity: int) -> "_FinalAttributeReferenceB self._set_table_reference(table_reference) return _FinalAttributeReferenceBuilder(self._parent) - def with_table_guid(self, table_guid: str) -> "_FinalAttributeReferenceBuilder": + def with_table_guid(self, table_guid: str) -> _FinalAttributeReferenceBuilder: """ Specify the table by its GUID @@ -63,17 +65,17 @@ def with_table_guid(self, table_guid: str) -> "_FinalAttributeReferenceBuilder": self._set_table_reference(table_reference) return _FinalAttributeReferenceBuilder(self._parent) - def _set_table_reference(self, table_reference: "PartialTableReference") -> None: + def _set_table_reference(self, table_reference: PartialTableReference) -> None: self._parent._build.table_reference = table_reference class _FinalAttributeReferenceBuilder: - _source: "AttributeReferenceBuilder" + _source: AttributeReferenceBuilder - def __init__(self, source: "AttributeReferenceBuilder") -> None: + def __init__(self, source: AttributeReferenceBuilder) -> None: self._source = source - def build(self) -> "MIAttributeReference": + def build(self) -> MIAttributeReference: """ Build the finished MI Attribute Reference @@ -85,10 +87,9 @@ def build(self) -> "MIAttributeReference": class AttributeReferenceBuilder: - _build: "MIAttributeReference" - _is_complete: bool + _build: MIAttributeReference - def __init__(self, *, db_key: str) -> None: + def __init__(self, db_key: str) -> None: """ Create a MI Attribute Reference with a valid combination of properties. @@ -99,7 +100,7 @@ def __init__(self, *, db_key: str) -> None: """ self._build = MIAttributeReference(db_key=db_key) - def with_attribute_identity(self, attribute_identity: int) -> "_FinalAttributeReferenceBuilder": + def with_attribute_identity(self, attribute_identity: int) -> _FinalAttributeReferenceBuilder: """ Specify the attribute by its identity. @@ -115,7 +116,7 @@ def with_attribute_identity(self, attribute_identity: int) -> "_FinalAttributeRe self._build.attribute_identity = attribute_identity return _FinalAttributeReferenceBuilder(self) - def as_pseudo_attribute(self, pseudo_attribute: PseudoAttribute) -> "_FinalAttributeReferenceBuilder": + def as_pseudo_attribute(self, pseudo_attribute: PseudoAttribute) -> _FinalAttributeReferenceBuilder: """ Specify the attribute as a specific pseudo-attribute. @@ -131,8 +132,8 @@ def as_pseudo_attribute(self, pseudo_attribute: PseudoAttribute) -> "_FinalAttri return _FinalAttributeReferenceBuilder(self) def with_attribute_name( - self, attribute_name: str, is_standard_name: bool = False - ) -> "_AttributeReferenceByNameBuilder": + self, attribute_name: str, *, is_standard_name: bool = False + ) -> _AttributeReferenceByNameBuilder: """ Specify the attribute by name, which may be a standard name. @@ -153,9 +154,9 @@ def with_attribute_name( class RecordReferenceBuilder: - _build: "MIRecordReference" + _build: MIRecordReference - def __init__(self, *, db_key: str, record_uid: Optional[str] = None) -> None: + def __init__(self, db_key: str, *, record_uid: Optional[str] = None) -> None: """ Create a MIRecordReference with a valid combination of properties. @@ -170,7 +171,7 @@ def __init__(self, *, db_key: str, record_uid: Optional[str] = None) -> None: def with_record_history_id( self, record_history_id: int, *, record_version_number: Optional[int] = None - ) -> "_FinalRecordReferenceBuilder": + ) -> _FinalRecordReferenceBuilder: """ Specify the record by its history identity, and optionally the version number if the record is in a Version-Controlled table. @@ -191,7 +192,7 @@ def with_record_history_id( self._build.record_version_number = record_version_number return _FinalRecordReferenceBuilder(self) - def with_record_guid(self, record_guid: str) -> "_FinalRecordReferenceBuilder": + def with_record_guid(self, record_guid: str) -> _FinalRecordReferenceBuilder: """ Specify the record by its GUID. @@ -209,7 +210,7 @@ def with_record_guid(self, record_guid: str) -> "_FinalRecordReferenceBuilder": self._build.record_guid = record_guid return _FinalRecordReferenceBuilder(self) - def with_record_history_guid(self, record_history_guid: str) -> "_FinalRecordReferenceBuilder": + def with_record_history_guid(self, record_history_guid: str) -> _FinalRecordReferenceBuilder: """ Specify the record by its History GUID. @@ -230,7 +231,7 @@ def with_record_history_guid(self, record_history_guid: str) -> "_FinalRecordRef def with_lookup_value( self, *, lookup_value: str, lookup_attribute_reference: MIAttributeReference - ) -> "_FinalRecordReferenceBuilder": + ) -> _FinalRecordReferenceBuilder: """ Specify the record by a unique value on a short-text attribute. @@ -254,12 +255,12 @@ def with_lookup_value( class _FinalRecordReferenceBuilder: - _source: "RecordReferenceBuilder" + _source: RecordReferenceBuilder - def __init__(self, source: "RecordReferenceBuilder") -> None: + def __init__(self, source: RecordReferenceBuilder) -> None: self._source = source - def build(self) -> "MIRecordReference": + def build(self) -> MIRecordReference: """ Build the finished MI Record Reference. diff --git a/tests/test_bom_builders.py b/tests/test_bom_builders.py new file mode 100644 index 00000000..b29bb909 --- /dev/null +++ b/tests/test_bom_builders.py @@ -0,0 +1,180 @@ +from typing import Optional +import uuid + +import pytest + +from ansys.grantami.bomanalytics.bom_types import ( + AttributeReferenceBuilder, + PseudoAttribute, + RecordReferenceBuilder, +) + + +class TestAttributeReferenceBuilder: + _DB_KEY = "TEST_DB_KEY" + _ATTRIBUTE_ID = 13 + _ATTRIBUTE_NAME = "Test Attribute" + _TABLE_ID = 23 + _TABLE_GUID = "219267ba-2c04-4f40-9beb-a9d02af77c2f" + _TABLE_NAME = "Test Table" + + def test_by_id(self): + attribute_reference = ( + AttributeReferenceBuilder(db_key=self._DB_KEY) + .with_attribute_identity(attribute_identity=self._ATTRIBUTE_ID) + .build() + ) + assert attribute_reference.db_key == self._DB_KEY + assert attribute_reference.attribute_identity == self._ATTRIBUTE_ID + assert attribute_reference.table_reference is None + assert attribute_reference.attribute_name is None + assert attribute_reference.pseudo is None + + @pytest.mark.parametrize("is_standard", [True, False]) + def test_by_name_and_table_id(self, is_standard: bool): + attribute_reference = ( + AttributeReferenceBuilder(db_key=self._DB_KEY) + .with_attribute_name(attribute_name=self._ATTRIBUTE_NAME, is_standard_name=is_standard) + .with_table_identity(table_identity=self._TABLE_ID) + .build() + ) + assert attribute_reference.db_key == self._DB_KEY + assert attribute_reference.attribute_identity is None + assert attribute_reference.table_reference is not None + assert attribute_reference.table_reference.table_name is None + assert attribute_reference.table_reference.table_guid is None + assert attribute_reference.table_reference.table_identity == self._TABLE_ID + assert attribute_reference.attribute_name == self._ATTRIBUTE_NAME + assert attribute_reference.is_standard == is_standard + assert attribute_reference.pseudo is None + + @pytest.mark.parametrize("is_standard", [True, False]) + def test_by_name_and_table_gud(self, is_standard: bool): + attribute_reference = ( + AttributeReferenceBuilder(db_key=self._DB_KEY) + .with_attribute_name(attribute_name=self._ATTRIBUTE_NAME, is_standard_name=is_standard) + .with_table_guid(table_guid=self._TABLE_GUID) + .build() + ) + assert attribute_reference.db_key == self._DB_KEY + assert attribute_reference.attribute_identity is None + assert attribute_reference.table_reference is not None + assert attribute_reference.table_reference.table_name is None + assert attribute_reference.table_reference.table_guid == self._TABLE_GUID + assert attribute_reference.table_reference.table_identity is None + assert attribute_reference.attribute_name == self._ATTRIBUTE_NAME + assert attribute_reference.is_standard == is_standard + assert attribute_reference.pseudo is None + + @pytest.mark.parametrize("is_standard", [True, False]) + def test_by_name_and_table_name(self, is_standard: bool): + attribute_reference = ( + AttributeReferenceBuilder(db_key=self._DB_KEY) + .with_attribute_name(attribute_name=self._ATTRIBUTE_NAME, is_standard_name=is_standard) + .with_table_name(table_name=self._TABLE_NAME) + .build() + ) + assert attribute_reference.db_key == self._DB_KEY + assert attribute_reference.attribute_identity is None + assert attribute_reference.table_reference is not None + assert attribute_reference.table_reference.table_name == self._TABLE_NAME + assert attribute_reference.table_reference.table_guid is None + assert attribute_reference.table_reference.table_identity is None + assert attribute_reference.attribute_name == self._ATTRIBUTE_NAME + assert attribute_reference.is_standard == is_standard + assert attribute_reference.pseudo is None + + @pytest.mark.parametrize("pseudo_id", range(0, 16)) + def test_by_pseudo(self, pseudo_id: int): + pseudo = PseudoAttribute(pseudo_id) + attribute_reference = AttributeReferenceBuilder(db_key=self._DB_KEY).as_pseudo_attribute(pseudo).build() + assert attribute_reference.db_key == self._DB_KEY + assert attribute_reference.attribute_identity is None + assert attribute_reference.attribute_name is None + assert attribute_reference.table_reference is None + assert attribute_reference.pseudo == pseudo + + +class TestRecordReferenceBuilder: + _DB_KEY = "TEST_DB_KEY" + _LOOKUP_ATTRIBUTE_ID = 23 + _LOOKUP_ATTRIBUTE_REF = ( + AttributeReferenceBuilder(db_key=_DB_KEY) + .with_attribute_identity(attribute_identity=_LOOKUP_ATTRIBUTE_ID) + .build() + ) + _LOOKUP_VALUE = "RECORD 1" + _TABLE_ID = 23 + _TABLE_GUID = "219267ba-2c04-4f40-9beb-a9d02af77c2f" + _TABLE_NAME = "Test Table" + _RECORD_GUID = "5cfd6f47-a9f1-49ac-b65e-27b4e115e5f6" + _RECORD_HISTORY_GUID = "1743b0d3-4784-472f-b199-ead0931eb1ca" + _RECORD_ID = 1412 + _RECORD_HISTORY_ID = 248976 + + @pytest.mark.parametrize("version_number", [None, 1, 19]) + @pytest.mark.parametrize("uid", [None, "a", str(uuid.uuid4())]) + def test_by_record_history_id(self, version_number: Optional[int], uid: Optional[str]): + record_reference = ( + RecordReferenceBuilder(db_key=self._DB_KEY, record_uid=uid) + .with_record_history_id(record_history_id=self._RECORD_HISTORY_ID, record_version_number=version_number) + .build() + ) + assert record_reference.db_key == self._DB_KEY + assert record_reference.record_uid == uid + assert record_reference.record_history_identity == self._RECORD_HISTORY_ID + assert record_reference.record_version_number == version_number + assert record_reference.record_guid is None + assert record_reference.record_history_guid is None + assert record_reference.lookup_attribute_reference is None + assert record_reference.lookup_value is None + + @pytest.mark.parametrize("uid", [None, "a", str(uuid.uuid4())]) + def test_by_record_history_guid(self, uid: Optional[str]): + record_reference = ( + RecordReferenceBuilder(db_key=self._DB_KEY, record_uid=uid) + .with_record_history_guid(record_history_guid=self._RECORD_HISTORY_GUID) + .build() + ) + assert record_reference.db_key == self._DB_KEY + assert record_reference.record_uid == uid + assert record_reference.record_history_identity is None + assert record_reference.record_version_number is None + assert record_reference.record_guid is None + assert record_reference.record_history_guid == self._RECORD_HISTORY_GUID + assert record_reference.lookup_attribute_reference is None + assert record_reference.lookup_value is None + + @pytest.mark.parametrize("uid", [None, "a", str(uuid.uuid4())]) + def test_by_record_guid(self, uid: Optional[str]): + record_reference = ( + RecordReferenceBuilder(db_key=self._DB_KEY, record_uid=uid) + .with_record_guid(record_guid=self._RECORD_GUID) + .build() + ) + assert record_reference.db_key == self._DB_KEY + assert record_reference.record_uid == uid + assert record_reference.record_history_identity is None + assert record_reference.record_version_number is None + assert record_reference.record_guid == self._RECORD_GUID + assert record_reference.record_history_guid is None + assert record_reference.lookup_attribute_reference is None + assert record_reference.lookup_value is None + + @pytest.mark.parametrize("uid", [None, "a", str(uuid.uuid4())]) + def test_by_lookup_value(self, uid: Optional[str]): + record_reference = ( + RecordReferenceBuilder(db_key=self._DB_KEY, record_uid=uid) + .with_lookup_value(lookup_value=self._LOOKUP_VALUE, lookup_attribute_reference=self._LOOKUP_ATTRIBUTE_REF) + .build() + ) + assert record_reference.db_key == self._DB_KEY + assert record_reference.record_uid == uid + assert record_reference.record_history_identity is None + assert record_reference.record_version_number is None + assert record_reference.record_guid is None + assert record_reference.record_history_guid is None + assert record_reference.lookup_attribute_reference is not None + assert record_reference.lookup_attribute_reference.db_key == self._DB_KEY + assert record_reference.lookup_attribute_reference.attribute_identity == self._LOOKUP_ATTRIBUTE_ID + assert record_reference.lookup_value == self._LOOKUP_VALUE From 729e074cd309f3b1ce2be929fdc691a95bbf9a42 Mon Sep 17 00:00:00 2001 From: Doug Addy Date: Tue, 26 Sep 2023 12:32:56 +0100 Subject: [PATCH 066/275] Docstring amendments --- ansys/grantami/bomanalytics/bom_types/_bom_types.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ansys/grantami/bomanalytics/bom_types/_bom_types.py b/ansys/grantami/bomanalytics/bom_types/_bom_types.py index e1845bb4..bc5cbcbe 100644 --- a/ansys/grantami/bomanalytics/bom_types/_bom_types.py +++ b/ansys/grantami/bomanalytics/bom_types/_bom_types.py @@ -89,9 +89,9 @@ def _process_custom_fields(cls, obj: Dict, bom_reader: BoMReader) -> Dict[str, A def _write_custom_fields(self, obj: Dict, bom_writer: BoMWriter) -> None: """ - Writes any fields on the serialized object that are in a nonstandard configuration. This can anonymous complex - types, Sequences of simple types and similar. This is called after the standard serialization occurs, and - should modify in place the ``obj`` argument. + Writes any fields on the serialized object that are in a nonstandard configuration. This can be anonymous + complex types, Sequences of simple types and similar. This is called after the standard serialization occurs, + and should modify the ``obj`` argument in place. Parameters ---------- From c1bdd8236fda9123dd493aa5c09e4cad24e9e94a Mon Sep 17 00:00:00 2001 From: Doug Addy Date: Tue, 26 Sep 2023 12:53:23 +0100 Subject: [PATCH 067/275] Docstring amendments II --- ansys/grantami/bomanalytics/bom_types/_bom_types.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansys/grantami/bomanalytics/bom_types/_bom_types.py b/ansys/grantami/bomanalytics/bom_types/_bom_types.py index bc5cbcbe..bff08110 100644 --- a/ansys/grantami/bomanalytics/bom_types/_bom_types.py +++ b/ansys/grantami/bomanalytics/bom_types/_bom_types.py @@ -69,7 +69,7 @@ def __init__(self, *args: Iterable, **kwargs: Dict[str, Any]) -> None: @classmethod def _process_custom_fields(cls, obj: Dict, bom_reader: BoMReader) -> Dict[str, Any]: """ - Populates any fields on the object that are in a nonstandard configuration. This can anonymous complex types, + Populates any fields on the object that are in a nonstandard configuration. This can be anonymous complex types, Sequences of simple types and similar. This is called after the standard deserialization occurs, and should return a dictionary mapping constructor argument names to values. From 2b2d86662305916c3403189799ed5ab290c4f9f9 Mon Sep 17 00:00:00 2001 From: Andy Grigg Date: Tue, 26 Sep 2023 12:25:10 -0400 Subject: [PATCH 068/275] Bump bomanalytics-openapi to new version based on new template --- poetry.lock | 39 ++++++++++++++++++++++++++++----------- pyproject.toml | 2 +- 2 files changed, 29 insertions(+), 12 deletions(-) diff --git a/poetry.lock b/poetry.lock index c2a03594..192db3e6 100644 --- a/poetry.lock +++ b/poetry.lock @@ -27,26 +27,23 @@ files = [ [[package]] name = "ansys-grantami-bomanalytics-openapi" -version = "1.1.0.dev22" +version = "1.1.0.dev33" description = "Autogenerated client library for the Granta MI BoM Analytics Services." optional = false -python-versions = ">=3.8" +python-versions = "^3.8.0" files = [] develop = false [package.dependencies] -ansys-openapi-common = ">=1.2.1,<2.0.0" -python-dateutil = ">=2.8.2" -requests = ">=2.26.0" - -[package.extras] -test = ["pytest (==7.4.0)", "requests-mock (==1.11.0)"] +ansys-openapi-common = "^1.2.1" +python-dateutil = "^2.8.2" +requests = "^2.26.0" [package.source] type = "git" url = "https://github.com/ansys/grantami-bomanalytics-openapi-private.git" -reference = "157ee51" -resolved_reference = "157ee511f0b56b5bfb7d91326dd6d53ffebe8a2c" +reference = "43692da" +resolved_reference = "43692da943d035d22a99bcc684a314a166c1c997" subdirectory = "ansys-grantami-bomanalytics-openapi" [[package]] @@ -1613,6 +1610,16 @@ files = [ {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"}, {file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"}, {file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-win32.whl", hash = "sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-win_amd64.whl", hash = "sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb"}, {file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"}, {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"}, {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"}, @@ -2522,6 +2529,7 @@ files = [ {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, + {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, @@ -2529,8 +2537,15 @@ files = [ {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, + {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, + {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, + {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, + {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, @@ -2547,6 +2562,7 @@ files = [ {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, + {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, @@ -2554,6 +2570,7 @@ files = [ {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, + {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, @@ -3550,4 +3567,4 @@ examples = ["jupyterlab", "lxml", "pandas", "tabulate"] [metadata] lock-version = "2.0" python-versions = "^3.8.0" -content-hash = "ca1b258eb8fa05183ae7ab9e8b21b1dee2a58a64c5b71dfa871ae30cc60f9135" +content-hash = "a83a5493863a350e9a18adafeeb348c1158e1ab669bfcc477bceb721d901af38" diff --git a/pyproject.toml b/pyproject.toml index 16b50c47..02688e44 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -43,7 +43,7 @@ python = "^3.8.0" # Packages for core library ansys-openapi-common = "< 2.0.0" -ansys-grantami-bomanalytics-openapi = { git = 'https://github.com/ansys/grantami-bomanalytics-openapi-private.git', subdirectory = 'ansys-grantami-bomanalytics-openapi', rev = '157ee51' } +ansys-grantami-bomanalytics-openapi = { git = 'https://github.com/ansys/grantami-bomanalytics-openapi-private.git', subdirectory = 'ansys-grantami-bomanalytics-openapi', rev = '43692da' } # Packages for the examples extra jupyterlab = { version = ">=3,<5", optional = true } From fe94edc739eaa619abc04a45e0c44cdcd6c61425 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Tue, 26 Sep 2023 20:42:50 +0200 Subject: [PATCH 069/275] Revert "Fix path so we can actually ship the schema" This reverts commit 3a60f82b021fcdd61def03dc10224a4b6a823e6c. --- .pre-commit-config.yaml | 2 +- pyproject.toml | 7 ++----- {ansys => src/ansys}/grantami/bomanalytics/__init__.py | 0 .../ansys}/grantami/bomanalytics/_allowed_types.py | 0 {ansys => src/ansys}/grantami/bomanalytics/_bom_helper.py | 0 {ansys => src/ansys}/grantami/bomanalytics/_connection.py | 0 {ansys => src/ansys}/grantami/bomanalytics/_exceptions.py | 0 .../ansys}/grantami/bomanalytics/_item_definitions.py | 0 .../ansys}/grantami/bomanalytics/_item_results.py | 0 {ansys => src/ansys}/grantami/bomanalytics/_logger.py | 0 .../ansys}/grantami/bomanalytics/_query_results.py | 0 .../ansys}/grantami/bomanalytics/bom_types/__init__.py | 0 .../ansys}/grantami/bomanalytics/bom_types/_bom_reader.py | 0 .../ansys}/grantami/bomanalytics/bom_types/_bom_types.py | 0 .../ansys}/grantami/bomanalytics/bom_types/_bom_writer.py | 0 .../ansys}/grantami/bomanalytics/bom_types/_builders.py | 0 {ansys => src/ansys}/grantami/bomanalytics/indicators.py | 0 {ansys => src/ansys}/grantami/bomanalytics/py.typed | 0 {ansys => src/ansys}/grantami/bomanalytics/queries.py | 0 .../bomanalytics/schemas/BillOfMaterialsEco2301.xsd | 0 .../grantami/bomanalytics/schemas/grantarecord1205.xsd | 0 21 files changed, 3 insertions(+), 6 deletions(-) rename {ansys => src/ansys}/grantami/bomanalytics/__init__.py (100%) rename {ansys => src/ansys}/grantami/bomanalytics/_allowed_types.py (100%) rename {ansys => src/ansys}/grantami/bomanalytics/_bom_helper.py (100%) rename {ansys => src/ansys}/grantami/bomanalytics/_connection.py (100%) rename {ansys => src/ansys}/grantami/bomanalytics/_exceptions.py (100%) rename {ansys => src/ansys}/grantami/bomanalytics/_item_definitions.py (100%) rename {ansys => src/ansys}/grantami/bomanalytics/_item_results.py (100%) rename {ansys => src/ansys}/grantami/bomanalytics/_logger.py (100%) rename {ansys => src/ansys}/grantami/bomanalytics/_query_results.py (100%) rename {ansys => src/ansys}/grantami/bomanalytics/bom_types/__init__.py (100%) rename {ansys => src/ansys}/grantami/bomanalytics/bom_types/_bom_reader.py (100%) rename {ansys => src/ansys}/grantami/bomanalytics/bom_types/_bom_types.py (100%) rename {ansys => src/ansys}/grantami/bomanalytics/bom_types/_bom_writer.py (100%) rename {ansys => src/ansys}/grantami/bomanalytics/bom_types/_builders.py (100%) rename {ansys => src/ansys}/grantami/bomanalytics/indicators.py (100%) rename {ansys => src/ansys}/grantami/bomanalytics/py.typed (100%) rename {ansys => src/ansys}/grantami/bomanalytics/queries.py (100%) rename {ansys => src/ansys}/grantami/bomanalytics/schemas/BillOfMaterialsEco2301.xsd (100%) rename {ansys => src/ansys}/grantami/bomanalytics/schemas/grantarecord1205.xsd (100%) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 865507b2..68a34ece 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -31,7 +31,7 @@ repos: language: python types: [python] require_serial: true - files: "^(ansys/)" + files: "^(src/)" additional_dependencies: ["mypy==1.5.1"] #- repo: https://github.com/pycqa/pydocstyle diff --git a/pyproject.toml b/pyproject.toml index 16b50c47..5b4962ca 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,11 +32,8 @@ classifiers = [ "Programming Language :: Python :: 3.11", ] packages = [ - { include = "ansys/**/*.py" }, + { include = "**/*.py", from = "src" } ] - include = [ - { path = "ansys/**/*.xsd" } - ] [tool.poetry.dependencies] python = "^3.8.0" @@ -149,4 +146,4 @@ line_length = 100 default_section = "THIRDPARTY" skip_gitignore = true skip = [".ipython", "cicd", "examples", "examples-dummy"] -src_paths = ["ansys", "tests"] +src_paths = ["src", "tests"] diff --git a/ansys/grantami/bomanalytics/__init__.py b/src/ansys/grantami/bomanalytics/__init__.py similarity index 100% rename from ansys/grantami/bomanalytics/__init__.py rename to src/ansys/grantami/bomanalytics/__init__.py diff --git a/ansys/grantami/bomanalytics/_allowed_types.py b/src/ansys/grantami/bomanalytics/_allowed_types.py similarity index 100% rename from ansys/grantami/bomanalytics/_allowed_types.py rename to src/ansys/grantami/bomanalytics/_allowed_types.py diff --git a/ansys/grantami/bomanalytics/_bom_helper.py b/src/ansys/grantami/bomanalytics/_bom_helper.py similarity index 100% rename from ansys/grantami/bomanalytics/_bom_helper.py rename to src/ansys/grantami/bomanalytics/_bom_helper.py diff --git a/ansys/grantami/bomanalytics/_connection.py b/src/ansys/grantami/bomanalytics/_connection.py similarity index 100% rename from ansys/grantami/bomanalytics/_connection.py rename to src/ansys/grantami/bomanalytics/_connection.py diff --git a/ansys/grantami/bomanalytics/_exceptions.py b/src/ansys/grantami/bomanalytics/_exceptions.py similarity index 100% rename from ansys/grantami/bomanalytics/_exceptions.py rename to src/ansys/grantami/bomanalytics/_exceptions.py diff --git a/ansys/grantami/bomanalytics/_item_definitions.py b/src/ansys/grantami/bomanalytics/_item_definitions.py similarity index 100% rename from ansys/grantami/bomanalytics/_item_definitions.py rename to src/ansys/grantami/bomanalytics/_item_definitions.py diff --git a/ansys/grantami/bomanalytics/_item_results.py b/src/ansys/grantami/bomanalytics/_item_results.py similarity index 100% rename from ansys/grantami/bomanalytics/_item_results.py rename to src/ansys/grantami/bomanalytics/_item_results.py diff --git a/ansys/grantami/bomanalytics/_logger.py b/src/ansys/grantami/bomanalytics/_logger.py similarity index 100% rename from ansys/grantami/bomanalytics/_logger.py rename to src/ansys/grantami/bomanalytics/_logger.py diff --git a/ansys/grantami/bomanalytics/_query_results.py b/src/ansys/grantami/bomanalytics/_query_results.py similarity index 100% rename from ansys/grantami/bomanalytics/_query_results.py rename to src/ansys/grantami/bomanalytics/_query_results.py diff --git a/ansys/grantami/bomanalytics/bom_types/__init__.py b/src/ansys/grantami/bomanalytics/bom_types/__init__.py similarity index 100% rename from ansys/grantami/bomanalytics/bom_types/__init__.py rename to src/ansys/grantami/bomanalytics/bom_types/__init__.py diff --git a/ansys/grantami/bomanalytics/bom_types/_bom_reader.py b/src/ansys/grantami/bomanalytics/bom_types/_bom_reader.py similarity index 100% rename from ansys/grantami/bomanalytics/bom_types/_bom_reader.py rename to src/ansys/grantami/bomanalytics/bom_types/_bom_reader.py diff --git a/ansys/grantami/bomanalytics/bom_types/_bom_types.py b/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py similarity index 100% rename from ansys/grantami/bomanalytics/bom_types/_bom_types.py rename to src/ansys/grantami/bomanalytics/bom_types/_bom_types.py diff --git a/ansys/grantami/bomanalytics/bom_types/_bom_writer.py b/src/ansys/grantami/bomanalytics/bom_types/_bom_writer.py similarity index 100% rename from ansys/grantami/bomanalytics/bom_types/_bom_writer.py rename to src/ansys/grantami/bomanalytics/bom_types/_bom_writer.py diff --git a/ansys/grantami/bomanalytics/bom_types/_builders.py b/src/ansys/grantami/bomanalytics/bom_types/_builders.py similarity index 100% rename from ansys/grantami/bomanalytics/bom_types/_builders.py rename to src/ansys/grantami/bomanalytics/bom_types/_builders.py diff --git a/ansys/grantami/bomanalytics/indicators.py b/src/ansys/grantami/bomanalytics/indicators.py similarity index 100% rename from ansys/grantami/bomanalytics/indicators.py rename to src/ansys/grantami/bomanalytics/indicators.py diff --git a/ansys/grantami/bomanalytics/py.typed b/src/ansys/grantami/bomanalytics/py.typed similarity index 100% rename from ansys/grantami/bomanalytics/py.typed rename to src/ansys/grantami/bomanalytics/py.typed diff --git a/ansys/grantami/bomanalytics/queries.py b/src/ansys/grantami/bomanalytics/queries.py similarity index 100% rename from ansys/grantami/bomanalytics/queries.py rename to src/ansys/grantami/bomanalytics/queries.py diff --git a/ansys/grantami/bomanalytics/schemas/BillOfMaterialsEco2301.xsd b/src/ansys/grantami/bomanalytics/schemas/BillOfMaterialsEco2301.xsd similarity index 100% rename from ansys/grantami/bomanalytics/schemas/BillOfMaterialsEco2301.xsd rename to src/ansys/grantami/bomanalytics/schemas/BillOfMaterialsEco2301.xsd diff --git a/ansys/grantami/bomanalytics/schemas/grantarecord1205.xsd b/src/ansys/grantami/bomanalytics/schemas/grantarecord1205.xsd similarity index 100% rename from ansys/grantami/bomanalytics/schemas/grantarecord1205.xsd rename to src/ansys/grantami/bomanalytics/schemas/grantarecord1205.xsd From 496f215d28b3f769caa1018b16da2f0a4f5a98fd Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Tue, 26 Sep 2023 20:44:50 +0200 Subject: [PATCH 070/275] Update poetry packaging config --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 5b4962ca..5c705963 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,7 +32,7 @@ classifiers = [ "Programming Language :: Python :: 3.11", ] packages = [ - { include = "**/*.py", from = "src" } + { include = "ansys", from = "src" } ] [tool.poetry.dependencies] From 8a33391ecae25ef04eec52d8f2fa4e50e6dafc46 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Wed, 27 Sep 2023 11:05:12 +0200 Subject: [PATCH 071/275] Reorganize fixtures --- tests/conftest.py | 52 +++++++------ tests/test_integration_tests.py | 132 ++++++++++++++------------------ 2 files changed, 89 insertions(+), 95 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index 58b27db7..3de1c5ec 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -17,39 +17,47 @@ write_password = os.getenv("TEST_WRITE_PASS") -@pytest.fixture(scope="session") -def default_connection(): - if read_username is not None: - connection = Connection(api_url=sl_url).with_credentials(read_username, read_password).connect() - else: - connection = Connection(api_url=sl_url).with_autologon().connect() - return connection - - -def _get_connection(request, url, username, password): +def _get_connection(url, username, password): if username is not None: connection = Connection(api_url=url).with_credentials(username, password).connect() else: connection = Connection(api_url=url).with_autologon().connect() - if request.param: - if isinstance(request.param, str): - db_key = request.param - else: - db_key = "MI_Restricted_Substances_Custom_Tables" - connection.set_database_details(database_key=db_key, **{pn: tn for pn, tn in CUSTOM_TABLES}) - else: - connection.set_database_details() return connection @pytest.fixture -def configurable_connection(request): - return _get_connection(request, sl_url, read_username, read_password) +def connection(): + return _get_connection(sl_url, read_username, read_password) + + +def _configure_connection_for_custom_db(_cxn): + _cxn.set_database_details( + database_key="MI_Restricted_Substances_Custom_Tables", + **{pn: tn for pn, tn in CUSTOM_TABLES}, + ) + + +@pytest.fixture +def connection_custom_db(connection): + _configure_connection_for_custom_db(connection) + return connection + + +@pytest.fixture(params=["default_db", "custom_db"]) +def parameterized_connection(request): + connection = _get_connection(sl_url, read_username, read_password) + if request.param == "default_db": + return connection + elif request.param == "custom_db": + _configure_connection_for_custom_db(connection) + return connection @pytest.fixture -def configurable_connection_write(request): - return _get_connection(request, sl_url, write_username, write_password) +def connection_write_custom_db(): + cxn = _get_connection(sl_url, write_username, write_password) + _configure_connection_for_custom_db(cxn) + return cxn @pytest.fixture diff --git a/tests/test_integration_tests.py b/tests/test_integration_tests.py index 1743b2a5..df1fd112 100644 --- a/tests/test_integration_tests.py +++ b/tests/test_integration_tests.py @@ -2,7 +2,7 @@ from ansys.grantami.bomanalytics import GrantaMIException, queries -from .common import CUSTOM_TABLES, INDICATORS, LEGISLATIONS +from .common import INDICATORS, LEGISLATIONS from .inputs import sample_bom_2301_complex, sample_bom_complex, sample_bom_custom_db pytestmark = pytest.mark.integration @@ -10,131 +10,132 @@ indicators = list(INDICATORS.values()) -@pytest.mark.parametrize("configurable_connection", [True, False], indirect=True) class TestMaterialQueries: ids = ["plastic-abs-pvc-flame", "plastic-pmma-pc"] - def test_impacted_substances(self, configurable_connection): + def test_impacted_substances(self, parameterized_connection): query = queries.MaterialImpactedSubstancesQuery().with_material_ids(self.ids).with_legislations(LEGISLATIONS) - response = configurable_connection.run(query) + response = parameterized_connection.run(query) assert response.impacted_substances assert response.impacted_substances_by_legislation assert response.impacted_substances_by_material[0].substances assert response.impacted_substances_by_material[0].substances_by_legislation - def test_compliance(self, configurable_connection): + def test_compliance(self, parameterized_connection): query = queries.MaterialComplianceQuery().with_material_ids(self.ids).with_indicators(indicators) - response = configurable_connection.run(query) + response = parameterized_connection.run(query) assert response.compliance_by_indicator assert response.compliance_by_material_and_indicator -@pytest.mark.parametrize("configurable_connection", [True, False], indirect=True) class TestPartQueries: ids = ["DRILL", "asm_flap_mating"] - def test_impacted_substances(self, configurable_connection): + def test_impacted_substances(self, parameterized_connection): query = queries.PartImpactedSubstancesQuery().with_part_numbers(self.ids).with_legislations(LEGISLATIONS) - response = configurable_connection.run(query) + response = parameterized_connection.run(query) assert response.impacted_substances assert response.impacted_substances_by_legislation assert response.impacted_substances_by_part[0].substances assert response.impacted_substances_by_part[0].substances_by_legislation - def test_compliance(self, configurable_connection): + def test_compliance(self, parameterized_connection): query = queries.PartComplianceQuery().with_part_numbers(self.ids).with_indicators(indicators) - response = configurable_connection.run(query) + response = parameterized_connection.run(query) assert response.compliance_by_indicator assert response.compliance_by_part_and_indicator -@pytest.mark.parametrize("configurable_connection", [True, False], indirect=True) class TestSpecificationQueries: ids = ["MIL-DTL-53039,TypeI", "AMS2404,Class1"] - def test_impacted_substances(self, configurable_connection): + def test_impacted_substances(self, parameterized_connection): query = ( queries.SpecificationImpactedSubstancesQuery() .with_specification_ids(self.ids) .with_legislations(LEGISLATIONS) ) - response = configurable_connection.run(query) + response = parameterized_connection.run(query) assert response.impacted_substances assert response.impacted_substances_by_legislation assert response.impacted_substances_by_specification[0].substances assert response.impacted_substances_by_specification[0].substances_by_legislation - def test_compliance(self, configurable_connection): + def test_compliance(self, parameterized_connection): query = queries.SpecificationComplianceQuery().with_specification_ids(self.ids).with_indicators(indicators) - response = configurable_connection.run(query) + response = parameterized_connection.run(query) assert response.compliance_by_specification_and_indicator assert response.compliance_by_indicator -@pytest.mark.parametrize("configurable_connection", [True, False], indirect=True) class TestSubstancesQueries: - def test_compliance(self, configurable_connection): + def test_compliance(self, parameterized_connection): query = ( queries.SubstanceComplianceQuery() .with_cas_numbers(["50-00-0", "57-24-9"]) .with_cas_numbers_and_amounts([("1333-86-4", 25), ("75-74-1", 50)]) .with_indicators(indicators) ) - response = configurable_connection.run(query) + response = parameterized_connection.run(query) assert response.compliance_by_substance_and_indicator assert response.compliance_by_indicator -@pytest.mark.parametrize( - "configurable_connection, bom", - [(False, sample_bom_complex), (True, sample_bom_custom_db)], - indirect=["configurable_connection"], -) class TestBomQueries: - def test_impacted_substances(self, bom, configurable_connection): + @pytest.fixture + def bom(self, parameterized_connection): + if parameterized_connection._db_key == "MI_Restricted_Substances_Custom_Tables": + return sample_bom_custom_db + else: + return sample_bom_complex + + def test_impacted_substances(self, bom, parameterized_connection): query = queries.BomImpactedSubstancesQuery().with_bom(bom).with_legislations(LEGISLATIONS) - response = configurable_connection.run(query) + response = parameterized_connection.run(query) assert response.impacted_substances assert response.impacted_substances_by_legislation - def test_compliance(self, bom, configurable_connection): + def test_compliance(self, bom, parameterized_connection): query = queries.BomComplianceQuery().with_bom(bom).with_indicators(indicators) - response = configurable_connection.run(query) + response = parameterized_connection.run(query) assert response.compliance_by_part_and_indicator assert response.compliance_by_indicator -@pytest.mark.parametrize("configurable_connection", ["MI_Missing_Database"], indirect=["configurable_connection"]) -def test_missing_database_raises_grantami_exception(configurable_connection): - query = queries.MaterialImpactedSubstancesQuery().with_material_ids(["mat_id"]).with_legislations(LEGISLATIONS) - with pytest.raises(GrantaMIException) as e: - configurable_connection.run(query) - assert "None of the record references resolved to material records in 'MI_Missing_Database'." == str(e.value) +class TestMissingDatabase: + @pytest.fixture + def connection_missing_db(self, connection): + connection.set_database_details(database_key="MI_Missing_Database") + return connection + + def test_missing_database_raises_grantami_exception(self, connection_missing_db): + query = queries.MaterialImpactedSubstancesQuery().with_material_ids(["mat_id"]).with_legislations(LEGISLATIONS) + with pytest.raises(GrantaMIException) as e: + connection_missing_db.run(query) + assert str(e.value) == "None of the record references resolved to material records in 'MI_Missing_Database'." -def test_missing_table_raises_grantami_exception(default_connection): +def test_missing_table_raises_grantami_exception(connection): query = queries.BomImpactedSubstancesQuery().with_bom(sample_bom_custom_db).with_legislations(LEGISLATIONS) with pytest.raises(GrantaMIException) as e: - default_connection.run(query) + connection.run(query) assert "Table name" in str(e.value) and "not found in database" in str(e.value) -@pytest.mark.parametrize("configurable_connection", [True, False], indirect=True) -def test_yaml(configurable_connection): - api_def = configurable_connection._get_yaml() +def test_yaml(parameterized_connection): + api_def = parameterized_connection._get_yaml() assert len(api_def) > 0 -@pytest.mark.parametrize("configurable_connection", [True, False], indirect=True) -def test_licensing(configurable_connection): - resp = configurable_connection._get_licensing_information() +def test_licensing(parameterized_connection): + resp = parameterized_connection._get_licensing_information() assert resp.restricted_substances is True assert resp.sustainability is True @@ -151,16 +152,14 @@ def _run_query(self, connection): results = connection.run(mat_query) return results - @pytest.mark.parametrize("configurable_connection_write", [True], indirect=True) - def test_withdrawn_records_are_not_included(self, configurable_connection_write): - results = self._run_query(configurable_connection_write) + def test_withdrawn_records_are_not_included(self, connection_write_custom_db): + results = self._run_query(connection_write_custom_db) assert not results.messages - @pytest.mark.parametrize("configurable_connection_write", [True], indirect=True) - def test_withdrawn_records_return_warning_messages_if_not_acting_as_read(self, configurable_connection_write): - del configurable_connection_write.rest_client.headers["X-Granta-ActAsReadUser"] - results = self._run_query(configurable_connection_write) + def test_withdrawn_records_return_warning_messages_if_not_acting_as_read(self, connection_write_custom_db): + del connection_write_custom_db.rest_client.headers["X-Granta-ActAsReadUser"] + results = self._run_query(connection_write_custom_db) assert any( "has 1 substance row(s) having more than one linked substance. " in msg.message for msg in results.messages @@ -171,29 +170,15 @@ class TestSpecLinkDepth: spec_ids = ["MIL-DTL-53039,TypeII"] legislation_ids = ["Candidate_AnnexXV"] - @pytest.fixture(scope="class") - def connection_with_custom_tables(self, default_connection): - db_key = "MI_Restricted_Substances_Custom_Tables" - base_db_key = default_connection._db_key - default_connection.set_database_details(database_key=db_key, **{pn: tn for pn, tn in CUSTOM_TABLES}) - yield default_connection - default_connection.set_database_details(database_key=base_db_key, **{pn: None for pn, _ in CUSTOM_TABLES}) - - @pytest.fixture(scope="function") - def connection(self, connection_with_custom_tables): - old_depth = connection_with_custom_tables.maximum_spec_link_depth - yield connection_with_custom_tables - connection_with_custom_tables.maximum_spec_link_depth = old_depth - - def test_legislation_is_affected_with_link_depth_one(self, connection): - connection.maximum_spec_link_depth = 1 + def test_legislation_is_affected_with_link_depth_one(self, connection_custom_db): + connection_custom_db.maximum_spec_link_depth = 1 query = ( queries.SpecificationImpactedSubstancesQuery() .with_specification_ids(self.spec_ids) .with_legislations(self.legislation_ids) ) - response = connection.run(query) + response = connection_custom_db.run(query) assert len(response.impacted_substances) == 1 assert response.impacted_substances[0].cas_number == "872-50-4" assert len(response.impacted_substances_by_legislation) == 1 @@ -203,23 +188,24 @@ def test_legislation_is_affected_with_link_depth_one(self, connection): assert len(impacted_by_reach) == 1 assert impacted_by_reach[0].cas_number == "872-50-4" - def test_legislation_is_not_affected_with_no_links(self, connection): - connection.maximum_spec_link_depth = 0 + def test_legislation_is_not_affected_with_no_links(self, connection_custom_db): + connection_custom_db.maximum_spec_link_depth = 0 query = ( queries.SpecificationImpactedSubstancesQuery() .with_specification_ids(self.spec_ids) .with_legislations(self.legislation_ids) ) - response = connection.run(query) + response = connection_custom_db.run(query) assert len(response.impacted_substances) == 0 +# TODO test with custom db? class TestSustainabilityBomQueries: - def test_sustainability_summary_query(self, default_connection): + def test_sustainability_summary_query(self, connection): query = queries.BomSustainabilitySummaryQuery() query.with_bom(sample_bom_2301_complex) - response = default_connection.run(query) + response = connection.run(query) assert response.process.name == "Processes" assert response.material.name == "Material" @@ -229,7 +215,7 @@ def test_sustainability_summary_query(self, default_connection): assert len(response.material_details) == 3 all_others = next(mat for mat in response.material_details if mat.identity == "Other") - def test_sustainability_query(self, default_connection): + def test_sustainability_query(self, connection): query = queries.BomSustainabilityQuery() query.with_bom(sample_bom_2301_complex) - response = default_connection.run(query) + response = connection.run(query) From 5d6cad8747a23afeca5f1651c477e70aa26da72b Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 28 Sep 2023 10:46:55 +0200 Subject: [PATCH 072/275] Revert to 17/11 BoMs --- tests/inputs/bom-complex.xml | 2 +- tests/inputs/bom.xml | 2 +- tests/test_bom_handler.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/inputs/bom-complex.xml b/tests/inputs/bom-complex.xml index 642be713..f4992ed9 100644 --- a/tests/inputs/bom-complex.xml +++ b/tests/inputs/bom-complex.xml @@ -1,4 +1,4 @@ - + 1.0 diff --git a/tests/inputs/bom.xml b/tests/inputs/bom.xml index 6e4fd7aa..da158552 100644 --- a/tests/inputs/bom.xml +++ b/tests/inputs/bom.xml @@ -1,4 +1,4 @@ - + 2.0 diff --git a/tests/test_bom_handler.py b/tests/test_bom_handler.py index 835c1d8b..ccb397bb 100644 --- a/tests/test_bom_handler.py +++ b/tests/test_bom_handler.py @@ -60,7 +60,7 @@ def _compare_boms(*, source_bom: str, result_bom: str): @pytest.mark.parametrize( "bom_filename", - ["bom.xml", "bom-complex.xml", "drill.xml", "medium-test-bom.xml", "bom-2301.xml", "bom-2301-complex.xml"], + ["drill.xml", "medium-test-bom.xml", "bom-2301.xml", "bom-2301-complex.xml"], ) def test_roundtrip(self, bom_filename: str): bom_path = self._bom_location / bom_filename From 9c4e1e08ac77817b722738f072287caad6fbe610 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 28 Sep 2023 10:47:28 +0200 Subject: [PATCH 073/275] Add new BoM to satisfy test... --- tests/inputs/bom-1711-as-2301.xml | 46 +++++++++++++++++++++++++++++++ tests/test_bom_handler.py | 2 +- 2 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 tests/inputs/bom-1711-as-2301.xml diff --git a/tests/inputs/bom-1711-as-2301.xml b/tests/inputs/bom-1711-as-2301.xml new file mode 100644 index 00000000..6e4fd7aa --- /dev/null +++ b/tests/inputs/bom-1711-as-2301.xml @@ -0,0 +1,46 @@ + + + + 2.0 + 123456789 + Part One + + + 1.0 + 2.0 + 987654321 + New Part One + + + 66.0 + + MI_Restricted_Substances + af1cb650-6db5-49d6-b4a2-0eee9a090207 + + Lead oxide + + + + + 1.0 + 2.0 + 3333 + Part Two + + + 80.0 + + MI_Restricted_Substances + ab4147f6-0e97-47f0-be53-cb5d17dfa82b + + + + + + + + + Part with substance + Part with substance + + diff --git a/tests/test_bom_handler.py b/tests/test_bom_handler.py index ccb397bb..e07e450b 100644 --- a/tests/test_bom_handler.py +++ b/tests/test_bom_handler.py @@ -83,7 +83,7 @@ class TestBoMDeserialization: @pytest.fixture(scope="class") def simple_bom(self): - bom_path = self._bom_location / "bom.xml" + bom_path = self._bom_location / "bom-1711-as-2301.xml" with open(bom_path, "r", encoding="utf8") as fp: input_bom = fp.read() From 72f7d4fd984f3b235718b835d7cb5f732ecb2a06 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 28 Sep 2023 17:34:06 +0200 Subject: [PATCH 074/275] Rename fixture --- tests/conftest.py | 8 +++--- tests/test_integration_tests.py | 48 ++++++++++++++++----------------- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index 3de1c5ec..40c20c11 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -44,11 +44,11 @@ def connection_custom_db(connection): @pytest.fixture(params=["default_db", "custom_db"]) -def parameterized_connection(request): +def connection_with_db_variants(request): + """Parameterized fixture: tests using this fixture will run multiple times, according to parameter values provided + in the fixture decorator.""" connection = _get_connection(sl_url, read_username, read_password) - if request.param == "default_db": - return connection - elif request.param == "custom_db": + if request.param == "custom_db": _configure_connection_for_custom_db(connection) return connection diff --git a/tests/test_integration_tests.py b/tests/test_integration_tests.py index df1fd112..264167a0 100644 --- a/tests/test_integration_tests.py +++ b/tests/test_integration_tests.py @@ -13,17 +13,17 @@ class TestMaterialQueries: ids = ["plastic-abs-pvc-flame", "plastic-pmma-pc"] - def test_impacted_substances(self, parameterized_connection): + def test_impacted_substances(self, connection_with_db_variants): query = queries.MaterialImpactedSubstancesQuery().with_material_ids(self.ids).with_legislations(LEGISLATIONS) - response = parameterized_connection.run(query) + response = connection_with_db_variants.run(query) assert response.impacted_substances assert response.impacted_substances_by_legislation assert response.impacted_substances_by_material[0].substances assert response.impacted_substances_by_material[0].substances_by_legislation - def test_compliance(self, parameterized_connection): + def test_compliance(self, connection_with_db_variants): query = queries.MaterialComplianceQuery().with_material_ids(self.ids).with_indicators(indicators) - response = parameterized_connection.run(query) + response = connection_with_db_variants.run(query) assert response.compliance_by_indicator assert response.compliance_by_material_and_indicator @@ -31,18 +31,18 @@ def test_compliance(self, parameterized_connection): class TestPartQueries: ids = ["DRILL", "asm_flap_mating"] - def test_impacted_substances(self, parameterized_connection): + def test_impacted_substances(self, connection_with_db_variants): query = queries.PartImpactedSubstancesQuery().with_part_numbers(self.ids).with_legislations(LEGISLATIONS) - response = parameterized_connection.run(query) + response = connection_with_db_variants.run(query) assert response.impacted_substances assert response.impacted_substances_by_legislation assert response.impacted_substances_by_part[0].substances assert response.impacted_substances_by_part[0].substances_by_legislation - def test_compliance(self, parameterized_connection): + def test_compliance(self, connection_with_db_variants): query = queries.PartComplianceQuery().with_part_numbers(self.ids).with_indicators(indicators) - response = parameterized_connection.run(query) + response = connection_with_db_variants.run(query) assert response.compliance_by_indicator assert response.compliance_by_part_and_indicator @@ -51,36 +51,36 @@ def test_compliance(self, parameterized_connection): class TestSpecificationQueries: ids = ["MIL-DTL-53039,TypeI", "AMS2404,Class1"] - def test_impacted_substances(self, parameterized_connection): + def test_impacted_substances(self, connection_with_db_variants): query = ( queries.SpecificationImpactedSubstancesQuery() .with_specification_ids(self.ids) .with_legislations(LEGISLATIONS) ) - response = parameterized_connection.run(query) + response = connection_with_db_variants.run(query) assert response.impacted_substances assert response.impacted_substances_by_legislation assert response.impacted_substances_by_specification[0].substances assert response.impacted_substances_by_specification[0].substances_by_legislation - def test_compliance(self, parameterized_connection): + def test_compliance(self, connection_with_db_variants): query = queries.SpecificationComplianceQuery().with_specification_ids(self.ids).with_indicators(indicators) - response = parameterized_connection.run(query) + response = connection_with_db_variants.run(query) assert response.compliance_by_specification_and_indicator assert response.compliance_by_indicator class TestSubstancesQueries: - def test_compliance(self, parameterized_connection): + def test_compliance(self, connection_with_db_variants): query = ( queries.SubstanceComplianceQuery() .with_cas_numbers(["50-00-0", "57-24-9"]) .with_cas_numbers_and_amounts([("1333-86-4", 25), ("75-74-1", 50)]) .with_indicators(indicators) ) - response = parameterized_connection.run(query) + response = connection_with_db_variants.run(query) assert response.compliance_by_substance_and_indicator assert response.compliance_by_indicator @@ -88,22 +88,22 @@ def test_compliance(self, parameterized_connection): class TestBomQueries: @pytest.fixture - def bom(self, parameterized_connection): - if parameterized_connection._db_key == "MI_Restricted_Substances_Custom_Tables": + def bom(self, connection_with_db_variants): + if connection_with_db_variants._db_key == "MI_Restricted_Substances_Custom_Tables": return sample_bom_custom_db else: return sample_bom_complex - def test_impacted_substances(self, bom, parameterized_connection): + def test_impacted_substances(self, bom, connection_with_db_variants): query = queries.BomImpactedSubstancesQuery().with_bom(bom).with_legislations(LEGISLATIONS) - response = parameterized_connection.run(query) + response = connection_with_db_variants.run(query) assert response.impacted_substances assert response.impacted_substances_by_legislation - def test_compliance(self, bom, parameterized_connection): + def test_compliance(self, bom, connection_with_db_variants): query = queries.BomComplianceQuery().with_bom(bom).with_indicators(indicators) - response = parameterized_connection.run(query) + response = connection_with_db_variants.run(query) assert response.compliance_by_part_and_indicator assert response.compliance_by_indicator @@ -129,13 +129,13 @@ def test_missing_table_raises_grantami_exception(connection): assert "Table name" in str(e.value) and "not found in database" in str(e.value) -def test_yaml(parameterized_connection): - api_def = parameterized_connection._get_yaml() +def test_yaml(connection_with_db_variants): + api_def = connection_with_db_variants._get_yaml() assert len(api_def) > 0 -def test_licensing(parameterized_connection): - resp = parameterized_connection._get_licensing_information() +def test_licensing(connection_with_db_variants): + resp = connection_with_db_variants._get_licensing_information() assert resp.restricted_substances is True assert resp.sustainability is True From 676c1ac3684c4e38af9db7bab8baa76f656567a5 Mon Sep 17 00:00:00 2001 From: Doug Addy Date: Fri, 29 Sep 2023 11:05:51 +0100 Subject: [PATCH 075/275] Fix serialization and deserialization for some types - MIRecordReference - PartialTableReference - MIAttributeReference --- .../bomanalytics/bom_types/_bom_types.py | 45 ++++++++++++++++--- 1 file changed, 39 insertions(+), 6 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py b/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py index bff08110..89322823 100644 --- a/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py +++ b/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py @@ -316,9 +316,11 @@ def _process_custom_fields(cls, obj: Dict, bom_reader: BoMReader) -> Dict[str, A props = super()._process_custom_fields(obj, bom_reader) name_obj = bom_reader.get_field(MIAttributeReference, obj, "name") if name_obj is not None: - props["table_reference"] = cast( - PartialTableReference, bom_reader.create_type("PartialTableReference", name_obj) - ) + table_obj = bom_reader.get_field(MIAttributeReference, name_obj, "table") + if table_obj is not None: + props["table_reference"] = cast( + PartialTableReference, bom_reader.create_type("PartialTableReference", table_obj) + ) attribute_name_obj = bom_reader.get_field(MIAttributeReference, name_obj, "attributeName") if attribute_name_obj is not None: props["attribute_name"] = attribute_name_obj @@ -330,6 +332,20 @@ def _process_custom_fields(cls, obj: Dict, bom_reader: BoMReader) -> Dict[str, A props["is_standard"] = is_standard_obj return props + def _write_custom_fields(self, obj: Dict, bom_writer: BoMWriter) -> None: + super()._write_custom_fields(obj, bom_writer) + name_dict: Dict[str, Any] = {} + if self.table_reference is not None: + name_dict[bom_writer._get_qualified_name(self, "table")] = bom_writer._convert_to_dict(self.table_reference) + if self.attribute_name is not None: + name_dict[bom_writer._get_qualified_name(self, "attributeName")] = self.attribute_name + if self.pseudo is not None: + name_dict[bom_writer._get_qualified_name(self, "pseudo")] = self.pseudo.to_string() + if self.is_standard is not None: + name_dict[bom_writer._get_qualified_name(self, "@isStandard")] = self.is_standard + if name_dict != {}: + obj[bom_writer._get_qualified_name(self, "name")] = name_dict + @property def db_key(self) -> str: """ @@ -503,12 +519,29 @@ def _process_custom_fields(cls, obj: Dict, bom_reader: BoMReader) -> Dict[str, A props["record_version_number"] = version_obj lookup_obj = bom_reader.get_field(MIRecordReference, obj, "lookupValue") if lookup_obj is not None: - props["lookup_attribute_reference"] = bom_reader.get_field( - MIRecordReference, lookup_obj, "attributeReference" - ) + attr_ref_obj = bom_reader.get_field(MIRecordReference, lookup_obj, "attributeReference") + props["lookup_attribute_reference"] = bom_reader.create_type("MIAttributeReference", attr_ref_obj) props["lookup_value"] = bom_reader.get_field(MIRecordReference, lookup_obj, "attributeValue") return props + def _write_custom_fields(self, obj: Dict, bom_writer: BoMWriter) -> None: + super()._write_custom_fields(obj, bom_writer) + if self.record_history_identity is not None: + identity_dict = { + bom_writer._get_qualified_name(self, "recordHistoryIdentity"): self.record_history_identity + } + if self.record_version_number is not None: + identity_dict[bom_writer._get_qualified_name(self, "version")] = self.record_version_number + obj[bom_writer._get_qualified_name(self, "identity")] = identity_dict + if self.lookup_value is not None: + lookup_dict = { + bom_writer._get_qualified_name(self, "attributeReference"): bom_writer._convert_to_dict( + cast(BaseType, self.lookup_attribute_reference) + ), + bom_writer._get_qualified_name(self, "attributeValue"): self.lookup_value, + } + obj[bom_writer._get_qualified_name(self, "lookupValue")] = lookup_dict + @property def db_key(self) -> str: """ From 8ac378c832e2bb44fae04c10353cca84fbb262e7 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 28 Sep 2023 10:16:12 +0200 Subject: [PATCH 076/275] Bump openapi version --- poetry.lock | 21 +++++---------------- pyproject.toml | 2 +- 2 files changed, 6 insertions(+), 17 deletions(-) diff --git a/poetry.lock b/poetry.lock index 192db3e6..e1a6349c 100644 --- a/poetry.lock +++ b/poetry.lock @@ -27,7 +27,7 @@ files = [ [[package]] name = "ansys-grantami-bomanalytics-openapi" -version = "1.1.0.dev33" +version = "1.1.0.dev37" description = "Autogenerated client library for the Granta MI BoM Analytics Services." optional = false python-versions = "^3.8.0" @@ -42,8 +42,8 @@ requests = "^2.26.0" [package.source] type = "git" url = "https://github.com/ansys/grantami-bomanalytics-openapi-private.git" -reference = "43692da" -resolved_reference = "43692da943d035d22a99bcc684a314a166c1c997" +reference = "bd92030" +resolved_reference = "bd92030c2dcf7e1c66067b2b04e6ff50e200c6df" subdirectory = "ansys-grantami-bomanalytics-openapi" [[package]] @@ -1610,16 +1610,6 @@ files = [ {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"}, {file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"}, {file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-win32.whl", hash = "sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-win_amd64.whl", hash = "sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb"}, {file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"}, {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"}, {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"}, @@ -2914,8 +2904,7 @@ files = [ {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-win32.whl", hash = "sha256:763d65baa3b952479c4e972669f679fe490eee058d5aa85da483ebae2009d231"}, {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-win_amd64.whl", hash = "sha256:d000f258cf42fec2b1bbf2863c61d7b8918d31ffee905da62dede869254d3b8a"}, {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:045e0626baf1c52e5527bd5db361bc83180faaba2ff586e763d3d5982a876a9e"}, - {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:1a6391a7cabb7641c32517539ca42cf84b87b667bad38b78d4d42dd23e957c81"}, - {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:9c7617df90c1365638916b98cdd9be833d31d337dbcd722485597b43c4a215bf"}, + {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-macosx_12_6_arm64.whl", hash = "sha256:721bc4ba4525f53f6a611ec0967bdcee61b31df5a56801281027a3a6d1c2daf5"}, {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:41d0f1fa4c6830176eef5b276af04c89320ea616655d01327d5ce65e50575c94"}, {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-win32.whl", hash = "sha256:f6d3d39611ac2e4f62c3128a9eed45f19a6608670c5a2f4f07f24e8de3441d38"}, {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-win_amd64.whl", hash = "sha256:da538167284de58a52109a9b89b8f6a53ff8437dd6dc26d33b57bf6699153122"}, @@ -3567,4 +3556,4 @@ examples = ["jupyterlab", "lxml", "pandas", "tabulate"] [metadata] lock-version = "2.0" python-versions = "^3.8.0" -content-hash = "a83a5493863a350e9a18adafeeb348c1158e1ab669bfcc477bceb721d901af38" +content-hash = "8a58166bff5ff94be4163d4e82de010afd43759235077658c88fa6704d260a78" diff --git a/pyproject.toml b/pyproject.toml index d87d25bd..552ecfac 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,7 +40,7 @@ python = "^3.8.0" # Packages for core library ansys-openapi-common = "< 2.0.0" -ansys-grantami-bomanalytics-openapi = { git = 'https://github.com/ansys/grantami-bomanalytics-openapi-private.git', subdirectory = 'ansys-grantami-bomanalytics-openapi', rev = '43692da' } +ansys-grantami-bomanalytics-openapi = { git = 'https://github.com/ansys/grantami-bomanalytics-openapi-private.git', subdirectory = 'ansys-grantami-bomanalytics-openapi', rev = 'bd92030' } # Packages for the examples extra jupyterlab = { version = ">=3,<5", optional = true } From 9b1278d9dd2bbf21304a9058edbef7a8a3aa3576 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 28 Sep 2023 10:30:09 +0200 Subject: [PATCH 077/275] Make ReferenceType optional --- src/ansys/grantami/bomanalytics/_item_definitions.py | 5 +++-- src/ansys/grantami/bomanalytics/_item_results.py | 6 ++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/_item_definitions.py b/src/ansys/grantami/bomanalytics/_item_definitions.py index 51714171..378d9a88 100644 --- a/src/ansys/grantami/bomanalytics/_item_definitions.py +++ b/src/ansys/grantami/bomanalytics/_item_definitions.py @@ -46,7 +46,7 @@ class RecordReference(ABC): def __init__( self, - reference_type: ReferenceType, + reference_type: Optional[ReferenceType], reference_value: Union[int, str, None], ): self._reference_type = reference_type @@ -82,8 +82,9 @@ def _record_reference(self) -> Dict[str, Optional[str]]: """ _reference_value = str(self._reference_value) if self._reference_value is not None else None + _reference_type = self._reference_type.name if self._reference_type is not None else None result = { - "reference_type": self._reference_type.name, + "reference_type": _reference_type, "reference_value": _reference_value, } return result diff --git a/src/ansys/grantami/bomanalytics/_item_results.py b/src/ansys/grantami/bomanalytics/_item_results.py index 5368eadf..bf7962bf 100644 --- a/src/ansys/grantami/bomanalytics/_item_results.py +++ b/src/ansys/grantami/bomanalytics/_item_results.py @@ -615,7 +615,7 @@ def create_process_summary(cls, result: models.CommonSustainabilityProcessSummar ) @staticmethod - def parse_reference_type(reference_type: str) -> ReferenceType: + def parse_reference_type(reference_type: Optional[str]) -> Optional[ReferenceType]: """Parse the ``reference_type`` returned by the low-level API into a ``ReferenceType``. Parameters @@ -634,6 +634,8 @@ def parse_reference_type(reference_type: str) -> ReferenceType: Error to raise if the ``reference_type`` returned by the low-level API doesn't appear in ``ReferenceType``. """ + if reference_type is None: + return reference_type try: return ReferenceType[reference_type] except KeyError as e: @@ -666,7 +668,7 @@ class ImpactedSubstance(BaseSubstanceReference): def __init__( self, - reference_type: ReferenceType, + reference_type: Optional[ReferenceType], reference_value: Union[int, str], max_percentage_amount_in_material: Optional[float], legislation_threshold: Optional[float], From 3e17ac63372946c2e32733c4af26fdd63db85aff Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Fri, 29 Sep 2023 10:24:14 +0200 Subject: [PATCH 078/275] Update examples.py --- tests/inputs/examples.py | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/tests/inputs/examples.py b/tests/inputs/examples.py index c3e59ff0..aeb182b4 100644 --- a/tests/inputs/examples.py +++ b/tests/inputs/examples.py @@ -39,35 +39,35 @@ "CommonValueWithUnit": r"""""", # noqa: E501 "GetAvailableLicensesResponse": r"""{"RestrictedSubstances":true,"Sustainability":false,"LogMessages":[]}""", # noqa: E501 "GetComplianceForBom1711Request": r"""{"BomXml1711":"<PartsEco xmlns=\"http://www.grantadesign.com/17/11/BillOfMaterialsEco\" id=\"B0\"><Components><Part id=\"A0\"><Quantity Unit=\"Each\">2</Quantity><PartNumber>123456789</PartNumber><Name>Part One</Name><Components><Part><Quantity Unit=\"Each\">1</Quantity><MassPerUom Unit=\"kg/Part\">2</MassPerUom><PartNumber>987654321</PartNumber><Name>New Part One</Name><Substances><Substance><Percentage>66</Percentage><MISubstanceReference><dbKey xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey><recordGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">de44a721-14e7-4bd1-b0d1-5e1179d1f5e2</recordGUID><recordHistoryGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">af1cb650-6db5-49d6-b4a2-0eee9a090207</recordHistoryGUID></MISubstanceReference><Name>Lead oxide</Name></Substance></Substances></Part><Part><Quantity Unit=\"Each\">1</Quantity><MassPerUom Unit=\"kg/Part\">2</MassPerUom><PartNumber>3333</PartNumber><Name>Part Two</Name><Materials><Material><Percentage>80</Percentage><MIMaterialReference><dbKey xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey><recordGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">3df206df-9fc8-4859-90d4-3519764f8b55</recordGUID><recordHistoryGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">b8e22139-81c5-4097-b2ec-718aa05dca04</recordHistoryGUID></MIMaterialReference></Material></Materials></Part></Components></Part></Components><Notes><Notes>Part with substance</Notes><ProductName>Part with substance</ProductName></Notes></PartsEco>","Indicators":[{"Name":"Indicator 1","LegislationIds":["SINList"],"DefaultThresholdPercentage":0.1,"IgnoreExemptions":false,"IgnoreProcessChemicals":false,"Type":"WatchList"},{"Name":"Indicator 2","LegislationIds":["ELV"],"DefaultThresholdPercentage":0.1,"IgnoreExemptions":false,"IgnoreProcessChemicals":false,"Type":"Rohs"}],"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 - "GetComplianceForBom1711Response": r"""{"Parts":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Parts":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Parts":[],"Specifications":[],"Materials":[],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListNotImpacted"},{"Name":"Indicator 2","Flag":"RohsNotImpacted"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":62345}],"ReferenceType":"PartNumber","ReferenceValue":null}],"Specifications":[],"Materials":[],"Substances":[],"ReferenceType":"PartNumber","ReferenceValue":null},{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListHasSubstanceAboveThreshold"},{"Name":"Indicator 2","Flag":"RohsNonCompliant"}],"Parts":[],"Specifications":[],"Materials":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsBelowThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":12345}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":111111}],"Substances":[],"ReferenceType":"PartNumber","ReferenceValue":null}],"LogMessages":[]}""", # noqa: E501 + "GetComplianceForBom1711Response": r"""{"Parts":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Parts":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Parts":[],"Specifications":[],"Materials":[],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListNotImpacted"},{"Name":"Indicator 2","Flag":"RohsNotImpacted"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":62345,"Id":null}],"ReferenceType":null,"ReferenceValue":null,"Id":null}],"Specifications":[],"Materials":[],"Substances":[],"ReferenceType":null,"ReferenceValue":null,"Id":null},{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListHasSubstanceAboveThreshold"},{"Name":"Indicator 2","Flag":"RohsNonCompliant"}],"Parts":[],"Specifications":[],"Materials":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsBelowThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":12345,"Id":null}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":111111,"Id":null}],"Substances":[],"ReferenceType":null,"ReferenceValue":null,"Id":null}],"LogMessages":[]}""", # noqa: E501 "GetComplianceForBom2301Request": r"""{"BomXml2301":"<PartsEco xmlns=\"http://www.grantadesign.com/23/01/BillOfMaterialsEco\" id=\"B0\"><Components><Part id=\"A0\"><Quantity Unit=\"Each\">2</Quantity><PartNumber>123456789</PartNumber><Name>Part One</Name><Components><Part><Quantity Unit=\"Each\">1</Quantity><MassPerUom Unit=\"kg/Part\">2</MassPerUom><PartNumber>987654321</PartNumber><Name>New Part One</Name><Substances><Substance><Percentage>66</Percentage><MISubstanceReference><dbKey xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey><recordGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">de44a721-14e7-4bd1-b0d1-5e1179d1f5e2</recordGUID><recordHistoryGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">af1cb650-6db5-49d6-b4a2-0eee9a090207</recordHistoryGUID></MISubstanceReference><Name>Lead oxide</Name></Substance></Substances></Part><Part><Quantity Unit=\"Each\">1</Quantity><MassPerUom Unit=\"kg/Part\">2</MassPerUom><PartNumber>3333</PartNumber><Name>Part Two</Name><Materials><Material><Percentage>80</Percentage><MIMaterialReference><dbKey xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey><recordGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">3df206df-9fc8-4859-90d4-3519764f8b55</recordGUID><recordHistoryGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">b8e22139-81c5-4097-b2ec-718aa05dca04</recordHistoryGUID></MIMaterialReference></Material></Materials></Part></Components></Part></Components><Notes><Notes>Part with substance</Notes><ProductName>Part with substance</ProductName></Notes></PartsEco>","Indicators":[{"Name":"Indicator 1","LegislationIds":["SINList"],"DefaultThresholdPercentage":0.1,"IgnoreExemptions":false,"IgnoreProcessChemicals":false,"Type":"WatchList"},{"Name":"Indicator 2","LegislationIds":["ELV"],"DefaultThresholdPercentage":0.1,"IgnoreExemptions":false,"IgnoreProcessChemicals":false,"Type":"Rohs"}],"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 - "GetComplianceForBom2301Response": r"""{"Parts":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Parts":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Parts":[],"Specifications":[],"Materials":[],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListNotImpacted"},{"Name":"Indicator 2","Flag":"RohsNotImpacted"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":62345}],"ReferenceType":"PartNumber","ReferenceValue":null}],"Specifications":[],"Materials":[],"Substances":[],"ReferenceType":"PartNumber","ReferenceValue":null},{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListHasSubstanceAboveThreshold"},{"Name":"Indicator 2","Flag":"RohsNonCompliant"}],"Parts":[],"Specifications":[],"Materials":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsBelowThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":12345}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":111111}],"Substances":[],"ReferenceType":"PartNumber","ReferenceValue":null}],"LogMessages":[]}""", # noqa: E501 - "GetComplianceForMaterialsRequest": r"""{"Materials":[{"ReferenceType":"MaterialId","ReferenceValue":"S200"},{"ReferenceType":"MiRecordGuid","ReferenceValue":"3df206df-9fc8-4859-90d4-3519764f8b55"}],"Indicators":[{"Name":"Indicator 1","LegislationIds":["SINList"],"DefaultThresholdPercentage":0.1,"IgnoreExemptions":false,"IgnoreProcessChemicals":false,"Type":"WatchList"},{"Name":"Indicator 2","LegislationIds":["ELV"],"DefaultThresholdPercentage":0.1,"IgnoreExemptions":false,"IgnoreProcessChemicals":false,"Type":"Rohs"}],"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 - "GetComplianceForMaterialsResponse": r"""{"Materials":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsBelowThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":12345}],"ReferenceType":"MaterialId","ReferenceValue":"S200"},{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListHasSubstanceAboveThreshold"},{"Name":"Indicator 2","Flag":"RohsNonCompliant"}],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsBelowThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":12345},{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAboveThreshold"},{"Name":"Indicator 2","Flag":"RohsAboveThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":34567}],"ReferenceType":"MiRecordGuid","ReferenceValue":"3df206df-9fc8-4859-90d4-3519764f8b55"}],"LogMessages":[]}""", # noqa: E501 - "GetComplianceForPartsRequest": r"""{"Parts":[{"ReferenceType":"PartNumber","ReferenceValue":"FLRY33"},{"ReferenceType":"MiRecordGuid","ReferenceValue":"f622cc99-158d-43eb-881e-209a08af1108"}],"Indicators":[{"Name":"Indicator 1","LegislationIds":["SINList"],"DefaultThresholdPercentage":0.1,"IgnoreExemptions":false,"IgnoreProcessChemicals":false,"Type":"WatchList"},{"Name":"Indicator 2","LegislationIds":["ELV"],"DefaultThresholdPercentage":0.1,"IgnoreExemptions":false,"IgnoreProcessChemicals":false,"Type":"Rohs"}],"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 - "GetComplianceForPartsResponse": r"""{"Parts":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Parts":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Parts":[],"Specifications":[],"Materials":[],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListNotImpacted"},{"Name":"Indicator 2","Flag":"RohsNotImpacted"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":62345}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":987654}],"Specifications":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Specifications":[],"Coatings":[],"Materials":[],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsBelowThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":12345}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":987654}],"Materials":[],"Substances":[],"ReferenceType":"PartNumber","ReferenceValue":"FLRY33"},{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListHasSubstanceAboveThreshold"},{"Name":"Indicator 2","Flag":"RohsNonCompliant"}],"Parts":[],"Specifications":[],"Materials":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsBelowThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":12345}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":111111},{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListHasSubstanceAboveThreshold"},{"Name":"Indicator 2","Flag":"RohsNonCompliant"}],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsBelowThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":12345},{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAboveThreshold"},{"Name":"Indicator 2","Flag":"RohsAboveThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":34567}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":222222}],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsBelowThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":12345},{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAboveThreshold"},{"Name":"Indicator 2","Flag":"RohsAboveThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":34567}],"ReferenceType":"MiRecordGuid","ReferenceValue":"f622cc99-158d-43eb-881e-209a08af1108"}],"LogMessages":[]}""", # noqa: E501 - "GetComplianceForSpecificationsRequest": r"""{"Specifications":[{"ReferenceType":"SpecificationId","ReferenceValue":"MSP89,TypeI"},{"ReferenceType":"MiRecordGuid","ReferenceValue":"e0f41223-4b6b-40be-8982-39999c68f471"}],"Indicators":[{"Name":"Indicator 1","LegislationIds":["SINList"],"DefaultThresholdPercentage":0.1,"IgnoreExemptions":false,"IgnoreProcessChemicals":false,"Type":"WatchList"},{"Name":"Indicator 2","LegislationIds":["ELV"],"DefaultThresholdPercentage":0.1,"IgnoreExemptions":false,"IgnoreProcessChemicals":false,"Type":"Rohs"}],"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 - "GetComplianceForSpecificationsResponse": r"""{"Specifications":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Specifications":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Specifications":[],"Coatings":[],"Materials":[],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsBelowThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":12345}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":987654}],"Coatings":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListNotImpacted"},{"Name":"Indicator 2","Flag":"RohsNotImpacted"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":62345}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":987654}],"Materials":[],"Substances":[],"ReferenceType":"SpecificationId","ReferenceValue":"MSP89,TypeI"},{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListHasSubstanceAboveThreshold"},{"Name":"Indicator 2","Flag":"RohsNonCompliant"}],"Specifications":[],"Coatings":[],"Materials":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsBelowThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":12345}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":111111},{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListHasSubstanceAboveThreshold"},{"Name":"Indicator 2","Flag":"RohsNonCompliant"}],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsBelowThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":12345},{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAboveThreshold"},{"Name":"Indicator 2","Flag":"RohsAboveThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":34567}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":222222}],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsBelowThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":12345},{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAboveThreshold"},{"Name":"Indicator 2","Flag":"RohsAboveThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":34567}],"ReferenceType":"MiRecordGuid","ReferenceValue":"3df206df-9fc8-4859-90d4-3519764f8b55"}],"LogMessages":[{"Severity":"warning","Message":"Could not determine declaration type for record 'MSP89,TypeI - Vapor Degrease' from table 'Specifications'."},{"Severity":"warning","Message":"Could not determine declaration type for record 'ASTM D4080' from table 'Specifications'."},{"Severity":"warning","Message":"Specification \"ASTM D4080\" with record 'ASTM D4080' from table 'Specifications' has a material row with a missing material link."}]}""", # noqa: E501 - "GetComplianceForSubstancesRequest": r"""{"Substances":[{"PercentageAmount":0.05,"ReferenceType":"CasNumber","ReferenceValue":"50-00-0"},{"PercentageAmount":20,"ReferenceType":"ChemicalName","ReferenceValue":"1,3-Butadiene"}],"Indicators":[{"Name":"Indicator 1","LegislationIds":["SINList"],"DefaultThresholdPercentage":0.1,"IgnoreExemptions":false,"IgnoreProcessChemicals":false,"Type":"WatchList"},{"Name":"Indicator 2","LegislationIds":["ELV"],"DefaultThresholdPercentage":0.1,"IgnoreExemptions":false,"IgnoreProcessChemicals":false,"Type":"Rohs"}],"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 - "GetComplianceForSubstancesResponse": r"""{"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsBelowThreshold"}],"ReferenceType":"CasNumber","ReferenceValue":"50-00-0"},{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAboveThreshold"},{"Name":"Indicator 2","Flag":"RohsAboveThreshold"}],"ReferenceType":"ChemicalName","ReferenceValue":"1,3-Butadiene"}],"LogMessages":[]}""", # noqa: E501 + "GetComplianceForBom2301Response": r"""{"Parts":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Parts":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Parts":[],"Specifications":[],"Materials":[],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListNotImpacted"},{"Name":"Indicator 2","Flag":"RohsNotImpacted"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":62345,"Id":null}],"ReferenceType":null,"ReferenceValue":null,"Id":null}],"Specifications":[],"Materials":[],"Substances":[],"ReferenceType":null,"ReferenceValue":null,"Id":null},{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListHasSubstanceAboveThreshold"},{"Name":"Indicator 2","Flag":"RohsNonCompliant"}],"Parts":[],"Specifications":[],"Materials":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsBelowThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":12345,"Id":null}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":111111,"Id":null}],"Substances":[],"ReferenceType":null,"ReferenceValue":null,"Id":null}],"LogMessages":[]}""", # noqa: E501 + "GetComplianceForMaterialsRequest": r"""{"Materials":[{"ReferenceType":"MaterialId","ReferenceValue":"S200","Id":null},{"ReferenceType":"MiRecordGuid","ReferenceValue":"3df206df-9fc8-4859-90d4-3519764f8b55","Id":null}],"Indicators":[{"Name":"Indicator 1","LegislationIds":["SINList"],"DefaultThresholdPercentage":0.1,"IgnoreExemptions":false,"IgnoreProcessChemicals":false,"Type":"WatchList"},{"Name":"Indicator 2","LegislationIds":["ELV"],"DefaultThresholdPercentage":0.1,"IgnoreExemptions":false,"IgnoreProcessChemicals":false,"Type":"Rohs"}],"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 + "GetComplianceForMaterialsResponse": r"""{"Materials":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsBelowThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":12345,"Id":null}],"ReferenceType":"MaterialId","ReferenceValue":"S200","Id":null},{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListHasSubstanceAboveThreshold"},{"Name":"Indicator 2","Flag":"RohsNonCompliant"}],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsBelowThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":12345,"Id":null},{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAboveThreshold"},{"Name":"Indicator 2","Flag":"RohsAboveThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":34567,"Id":null}],"ReferenceType":"MiRecordGuid","ReferenceValue":"3df206df-9fc8-4859-90d4-3519764f8b55","Id":null}],"LogMessages":[]}""", # noqa: E501 + "GetComplianceForPartsRequest": r"""{"Parts":[{"ReferenceType":"PartNumber","ReferenceValue":"FLRY33","Id":null},{"ReferenceType":"MiRecordGuid","ReferenceValue":"f622cc99-158d-43eb-881e-209a08af1108","Id":null}],"Indicators":[{"Name":"Indicator 1","LegislationIds":["SINList"],"DefaultThresholdPercentage":0.1,"IgnoreExemptions":false,"IgnoreProcessChemicals":false,"Type":"WatchList"},{"Name":"Indicator 2","LegislationIds":["ELV"],"DefaultThresholdPercentage":0.1,"IgnoreExemptions":false,"IgnoreProcessChemicals":false,"Type":"Rohs"}],"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 + "GetComplianceForPartsResponse": r"""{"Parts":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Parts":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Parts":[],"Specifications":[],"Materials":[],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListNotImpacted"},{"Name":"Indicator 2","Flag":"RohsNotImpacted"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":62345,"Id":null}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":987654,"Id":null}],"Specifications":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Specifications":[],"Coatings":[],"Materials":[],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsBelowThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":12345,"Id":null}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":987654,"Id":null}],"Materials":[],"Substances":[],"ReferenceType":"PartNumber","ReferenceValue":"FLRY33","Id":null},{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListHasSubstanceAboveThreshold"},{"Name":"Indicator 2","Flag":"RohsNonCompliant"}],"Parts":[],"Specifications":[],"Materials":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsBelowThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":12345,"Id":null}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":111111,"Id":null},{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListHasSubstanceAboveThreshold"},{"Name":"Indicator 2","Flag":"RohsNonCompliant"}],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsBelowThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":12345,"Id":null},{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAboveThreshold"},{"Name":"Indicator 2","Flag":"RohsAboveThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":34567,"Id":null}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":222222,"Id":null}],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsBelowThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":12345,"Id":null},{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAboveThreshold"},{"Name":"Indicator 2","Flag":"RohsAboveThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":34567,"Id":null}],"ReferenceType":"MiRecordGuid","ReferenceValue":"f622cc99-158d-43eb-881e-209a08af1108","Id":null}],"LogMessages":[]}""", # noqa: E501 + "GetComplianceForSpecificationsRequest": r"""{"Specifications":[{"ReferenceType":"SpecificationId","ReferenceValue":"MSP89,TypeI","Id":null},{"ReferenceType":"MiRecordGuid","ReferenceValue":"e0f41223-4b6b-40be-8982-39999c68f471","Id":null}],"Indicators":[{"Name":"Indicator 1","LegislationIds":["SINList"],"DefaultThresholdPercentage":0.1,"IgnoreExemptions":false,"IgnoreProcessChemicals":false,"Type":"WatchList"},{"Name":"Indicator 2","LegislationIds":["ELV"],"DefaultThresholdPercentage":0.1,"IgnoreExemptions":false,"IgnoreProcessChemicals":false,"Type":"Rohs"}],"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 + "GetComplianceForSpecificationsResponse": r"""{"Specifications":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Specifications":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Specifications":[],"Coatings":[],"Materials":[],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsBelowThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":12345,"Id":null}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":987654,"Id":null}],"Coatings":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListNotImpacted"},{"Name":"Indicator 2","Flag":"RohsNotImpacted"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":62345,"Id":null}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":987654,"Id":null}],"Materials":[],"Substances":[],"ReferenceType":"SpecificationId","ReferenceValue":"MSP89,TypeI","Id":null},{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListHasSubstanceAboveThreshold"},{"Name":"Indicator 2","Flag":"RohsNonCompliant"}],"Specifications":[],"Coatings":[],"Materials":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAllSubstancesBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsCompliant"}],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsBelowThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":12345,"Id":null}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":111111,"Id":null},{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListHasSubstanceAboveThreshold"},{"Name":"Indicator 2","Flag":"RohsNonCompliant"}],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsBelowThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":12345,"Id":null},{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAboveThreshold"},{"Name":"Indicator 2","Flag":"RohsAboveThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":34567,"Id":null}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":222222,"Id":null}],"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsBelowThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":12345,"Id":null},{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAboveThreshold"},{"Name":"Indicator 2","Flag":"RohsAboveThreshold"}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":34567,"Id":null}],"ReferenceType":"MiRecordGuid","ReferenceValue":"3df206df-9fc8-4859-90d4-3519764f8b55","Id":null}],"LogMessages":[{"Severity":"warning","Message":"Could not determine declaration type for record 'MSP89,TypeI - Vapor Degrease' from table 'Specifications'."},{"Severity":"warning","Message":"Could not determine declaration type for record 'ASTM D4080' from table 'Specifications'."},{"Severity":"warning","Message":"Specification \"ASTM D4080\" with record 'ASTM D4080' from table 'Specifications' has a material row with a missing material link."}]}""", # noqa: E501 + "GetComplianceForSubstancesRequest": r"""{"Substances":[{"PercentageAmount":0.05,"ReferenceType":"CasNumber","ReferenceValue":"50-00-0","Id":null},{"PercentageAmount":20,"ReferenceType":"ChemicalName","ReferenceValue":"1,3-Butadiene","Id":null}],"Indicators":[{"Name":"Indicator 1","LegislationIds":["SINList"],"DefaultThresholdPercentage":0.1,"IgnoreExemptions":false,"IgnoreProcessChemicals":false,"Type":"WatchList"},{"Name":"Indicator 2","LegislationIds":["ELV"],"DefaultThresholdPercentage":0.1,"IgnoreExemptions":false,"IgnoreProcessChemicals":false,"Type":"Rohs"}],"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 + "GetComplianceForSubstancesResponse": r"""{"Substances":[{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListBelowThreshold"},{"Name":"Indicator 2","Flag":"RohsBelowThreshold"}],"ReferenceType":"CasNumber","ReferenceValue":"50-00-0","Id":null},{"Indicators":[{"Name":"Indicator 1","Flag":"WatchListAboveThreshold"},{"Name":"Indicator 2","Flag":"RohsAboveThreshold"}],"ReferenceType":"ChemicalName","ReferenceValue":"1,3-Butadiene","Id":null}],"LogMessages":[]}""", # noqa: E501 "GetComplianceForSubstancesSubstanceWithAmount": r"""""", # noqa: E501 "GetImpactedSubstancesForBom1711Request": r"""{"BomXml1711":"<PartsEco xmlns=\"http://www.grantadesign.com/17/11/BillOfMaterialsEco\" id=\"B0\"><Components><Part id=\"A0\"><Quantity Unit=\"Each\">2</Quantity><PartNumber>123456789</PartNumber><Name>Part One</Name><Components><Part><Quantity Unit=\"Each\">1</Quantity><MassPerUom Unit=\"kg/Part\">2</MassPerUom><PartNumber>987654321</PartNumber><Name>New Part One</Name><Substances><Substance><Percentage>66</Percentage><MISubstanceReference><dbKey xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey><recordGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">de44a721-14e7-4bd1-b0d1-5e1179d1f5e2</recordGUID><recordHistoryGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">af1cb650-6db5-49d6-b4a2-0eee9a090207</recordHistoryGUID></MISubstanceReference><Name>Lead oxide</Name></Substance></Substances></Part><Part><Quantity Unit=\"Each\">1</Quantity><MassPerUom Unit=\"kg/Part\">2</MassPerUom><PartNumber>3333</PartNumber><Name>Part Two</Name><Materials><Material><Percentage>80</Percentage><MIMaterialReference><dbKey xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey><recordGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">3df206df-9fc8-4859-90d4-3519764f8b55</recordGUID><recordHistoryGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">b8e22139-81c5-4097-b2ec-718aa05dca04</recordHistoryGUID></MIMaterialReference></Material></Materials></Part></Components></Part></Components><Notes><Notes>Part with substance</Notes><ProductName>Part with substance</ProductName></Notes></PartsEco>","LegislationIds":["SINList"],"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 "GetImpactedSubstancesForBom1711Response": r"""{"Legislations":[{"LegislationId":"SINList","ImpactedSubstances":[{"SubstanceName":"1,3-Butadiene","CasNumber":"106-99-0","EcNumber":"203-450-8","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1},{"SubstanceName":"Butylated hydroxytoluene [BAN:NF]","CasNumber":"128-37-0","EcNumber":"204-881-4","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1}]}],"LogMessages":[]}""", # noqa: E501 "GetImpactedSubstancesForBom2301Request": r"""{"BomXml2301":"<PartsEco xmlns=\"http://www.grantadesign.com/23/01/BillOfMaterialsEco\" id=\"B0\"><Components><Part id=\"A0\"><Quantity Unit=\"Each\">2</Quantity><PartNumber>123456789</PartNumber><Name>Part One</Name><Components><Part><Quantity Unit=\"Each\">1</Quantity><MassPerUom Unit=\"kg/Part\">2</MassPerUom><PartNumber>987654321</PartNumber><Name>New Part One</Name><Substances><Substance><Percentage>66</Percentage><MISubstanceReference><dbKey xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey><recordGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">de44a721-14e7-4bd1-b0d1-5e1179d1f5e2</recordGUID><recordHistoryGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">af1cb650-6db5-49d6-b4a2-0eee9a090207</recordHistoryGUID></MISubstanceReference><Name>Lead oxide</Name></Substance></Substances></Part><Part><Quantity Unit=\"Each\">1</Quantity><MassPerUom Unit=\"kg/Part\">2</MassPerUom><PartNumber>3333</PartNumber><Name>Part Two</Name><Materials><Material><Percentage>80</Percentage><MIMaterialReference><dbKey xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey><recordGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">3df206df-9fc8-4859-90d4-3519764f8b55</recordGUID><recordHistoryGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">b8e22139-81c5-4097-b2ec-718aa05dca04</recordHistoryGUID></MIMaterialReference></Material></Materials></Part></Components></Part></Components><Notes><Notes>Part with substance</Notes><ProductName>Part with substance</ProductName></Notes></PartsEco>","LegislationIds":["SINList"],"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 "GetImpactedSubstancesForBom2301Response": r"""{"Legislations":[{"LegislationId":"SINList","ImpactedSubstances":[{"SubstanceName":"1,3-Butadiene","CasNumber":"106-99-0","EcNumber":"203-450-8","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1},{"SubstanceName":"Butylated hydroxytoluene [BAN:NF]","CasNumber":"128-37-0","EcNumber":"204-881-4","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1}]}],"LogMessages":[]}""", # noqa: E501 "GetImpactedSubstancesForMaterialsMaterial": r"""""", # noqa: E501 - "GetImpactedSubstancesForMaterialsRequest": r"""{"Materials":[{"ReferenceType":"MaterialId","ReferenceValue":"elastomer-butadienerubber"}],"LegislationIds":["SINList"],"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 - "GetImpactedSubstancesForMaterialsResponse": r"""{"Materials":[{"Legislations":[{"LegislationId":"SINList","ImpactedSubstances":[{"SubstanceName":"1,3-Butadiene","CasNumber":"106-99-0","EcNumber":"203-450-8","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1},{"SubstanceName":"Butylated hydroxytoluene [BAN:NF]","CasNumber":"128-37-0","EcNumber":"204-881-4","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1}]}],"ReferenceType":"MaterialId","ReferenceValue":"elastomer-butadienerubber"}],"LogMessages":[]}""", # noqa: E501 + "GetImpactedSubstancesForMaterialsRequest": r"""{"Materials":[{"ReferenceType":"MaterialId","ReferenceValue":"elastomer-butadienerubber","Id":null}],"LegislationIds":["SINList"],"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 + "GetImpactedSubstancesForMaterialsResponse": r"""{"Materials":[{"Legislations":[{"LegislationId":"SINList","ImpactedSubstances":[{"SubstanceName":"1,3-Butadiene","CasNumber":"106-99-0","EcNumber":"203-450-8","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1},{"SubstanceName":"Butylated hydroxytoluene [BAN:NF]","CasNumber":"128-37-0","EcNumber":"204-881-4","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1}]}],"ReferenceType":"MaterialId","ReferenceValue":"elastomer-butadienerubber","Id":null}],"LogMessages":[]}""", # noqa: E501 "GetImpactedSubstancesForPartsPart": r"""""", # noqa: E501 - "GetImpactedSubstancesForPartsRequest": r"""{"Parts":[{"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":565024},{"ReferenceType":"PartNumber","ReferenceValue":"FLRY33"}],"LegislationIds":["SINList"],"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 - "GetImpactedSubstancesForPartsResponse": r"""{"Parts":[{"Legislations":[{"LegislationId":"SINList","ImpactedSubstances":[{"SubstanceName":"1,3-Butadiene","CasNumber":"106-99-0","EcNumber":"203-450-8","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1},{"SubstanceName":"Butylated hydroxytoluene [BAN:NF]","CasNumber":"128-37-0","EcNumber":"204-881-4","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1}]}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":565024},{"Legislations":[{"LegislationId":"SINList","ImpactedSubstances":[{"SubstanceName":"Benzophenone","CasNumber":"119-61-9","EcNumber":"204-337-6","MaxPercentageAmountInMaterial":1,"LegislationThreshold":0.1},{"SubstanceName":"2,4-Dihydroxybenzophenon","CasNumber":"131-56-6","EcNumber":"205-029-4","MaxPercentageAmountInMaterial":1,"LegislationThreshold":0.1}]}],"ReferenceType":"PartNumber","ReferenceValue":"FLRY33"}],"LogMessages":[]}""", # noqa: E501 - "GetImpactedSubstancesForSpecificationsRequest": r"""{"Specifications":[{"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":545019},{"ReferenceType":"SpecificationId","ReferenceValue":"AMS03-27"}],"LegislationIds":["SINList"],"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 - "GetImpactedSubstancesForSpecificationsResponse": r"""{"Specifications":[{"Legislations":[{"LegislationId":"SINList","ImpactedSubstances":[{"SubstanceName":"1,3-Butadiene","CasNumber":"106-99-0","EcNumber":"203-450-8","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1},{"SubstanceName":"Butylated hydroxytoluene [BAN:NF]","CasNumber":"128-37-0","EcNumber":"204-881-4","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1}]}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":545019},{"Legislations":[{"LegislationId":"SINList","ImpactedSubstances":[{"SubstanceName":"Benzophenone","CasNumber":"119-61-9","EcNumber":"204-337-6","MaxPercentageAmountInMaterial":1,"LegislationThreshold":0.1},{"SubstanceName":"2,4-Dihydroxybenzophenon","CasNumber":"131-56-6","EcNumber":"205-029-4","MaxPercentageAmountInMaterial":1,"LegislationThreshold":0.1}]}],"ReferenceType":"SpecificationId","ReferenceValue":"AMS03-27"}],"LogMessages":[]}""", # noqa: E501 + "GetImpactedSubstancesForPartsRequest": r"""{"Parts":[{"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":565024,"Id":null},{"ReferenceType":"PartNumber","ReferenceValue":"FLRY33","Id":null}],"LegislationIds":["SINList"],"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 + "GetImpactedSubstancesForPartsResponse": r"""{"Parts":[{"Legislations":[{"LegislationId":"SINList","ImpactedSubstances":[{"SubstanceName":"1,3-Butadiene","CasNumber":"106-99-0","EcNumber":"203-450-8","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1},{"SubstanceName":"Butylated hydroxytoluene [BAN:NF]","CasNumber":"128-37-0","EcNumber":"204-881-4","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1}]}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":565024,"Id":null},{"Legislations":[{"LegislationId":"SINList","ImpactedSubstances":[{"SubstanceName":"Benzophenone","CasNumber":"119-61-9","EcNumber":"204-337-6","MaxPercentageAmountInMaterial":1,"LegislationThreshold":0.1},{"SubstanceName":"2,4-Dihydroxybenzophenon","CasNumber":"131-56-6","EcNumber":"205-029-4","MaxPercentageAmountInMaterial":1,"LegislationThreshold":0.1}]}],"ReferenceType":"PartNumber","ReferenceValue":"FLRY33","Id":null}],"LogMessages":[]}""", # noqa: E501 + "GetImpactedSubstancesForSpecificationsRequest": r"""{"Specifications":[{"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":545019,"Id":null},{"ReferenceType":"SpecificationId","ReferenceValue":"AMS03-27","Id":null}],"LegislationIds":["SINList"],"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 + "GetImpactedSubstancesForSpecificationsResponse": r"""{"Specifications":[{"Legislations":[{"LegislationId":"SINList","ImpactedSubstances":[{"SubstanceName":"1,3-Butadiene","CasNumber":"106-99-0","EcNumber":"203-450-8","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1},{"SubstanceName":"Butylated hydroxytoluene [BAN:NF]","CasNumber":"128-37-0","EcNumber":"204-881-4","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1}]}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":545019,"Id":null},{"Legislations":[{"LegislationId":"SINList","ImpactedSubstances":[{"SubstanceName":"Benzophenone","CasNumber":"119-61-9","EcNumber":"204-337-6","MaxPercentageAmountInMaterial":1,"LegislationThreshold":0.1},{"SubstanceName":"2,4-Dihydroxybenzophenon","CasNumber":"131-56-6","EcNumber":"205-029-4","MaxPercentageAmountInMaterial":1,"LegislationThreshold":0.1}]}],"ReferenceType":"SpecificationId","ReferenceValue":"AMS03-27","Id":null}],"LogMessages":[]}""", # noqa: E501 "GetImpactedSubstancesForSpecificationsSpecification": r"""""", # noqa: E501 "GetSustainabilityForBom2301Request": r"""{"BomXml2301":"<?xml version= \"1.0\"?><PartsEco xmlns:xsd= \"http://www.w3.org/2001/XMLSchema\" xmlns:xsi= \"http://www.w3.org/2001/XMLSchema-instance\" xmlns= \"http://www.grantadesign.com/23/01/BillOfMaterialsEco\"><Components><Part><Quantity Unit= \"Each\">1</Quantity><PartNumber>PartOne</PartNumber><Name>PartOne</Name><ExternalIdentity>1686152405220|5</ExternalIdentity><Components><Part><Quantity Unit= \"Each\">1</Quantity><MassPerUom Unit= \"kg/Part\">2</MassPerUom><PartNumber>PartTwo</PartNumber><Name>PartTwo</Name><ExternalIdentity>1686152405220|16</ExternalIdentity><Materials><Material><Mass Unit= \"kg\">2</Mass><MIMaterialReference><dbKey xmlns= \"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey><recordGUID xmlns= \"http://www.grantadesign.com/12/05/GrantaBaseTypes\">8dc38bb5-eff9-4c60-9233-271a3c8f6270</recordGUID></MIMaterialReference><Identity>steel-kovar-annealed</Identity><Name>High alloy steel, Kovar, annealed</Name><ExternalIdentity>1686152405220|14</ExternalIdentity><Processes><Process><MIProcessReference><dbKey xmlns= \"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey><recordHistoryGUID xmlns= \"http://www.grantadesign.com/12/05/GrantaBaseTypes\">d986c90a-2835-45f3-8b69-d6d662dcf53a</recordHistoryGUID></MIProcessReference><Identity>Coarse Machining</Identity><Name>Coarse Machining</Name><ExternalIdentity>1977190729730|4</ExternalIdentity><DimensionType>MassRemoved</DimensionType><Quantity Unit= \"kg\">0.05</Quantity></Process></Processes></Material></Materials></Part></Components></Part></Components><Notes><ProductName>Example</ProductName></Notes></PartsEco>","PreferredUnits":null,"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 - "GetSustainabilityForBom2301Response": r"""{"Parts":[{"Parts":[{"Parts":[],"Materials":[{"Processes":[{"EmbodiedEnergy":{"Value":0.09,"Unit":"MJ"},"ClimateChange":{"Value":0,"Unit":"kg"},"ReferenceType":"MiRecordHistoryGuid","ReferenceValue":"d986c90a-2835-45f3-8b69-d6d662dcf53a"}],"Substances":[],"EmbodiedEnergy":{"Value":441.1,"Unit":"MJ"},"ClimateChange":{"Value":14.9,"Unit":"kg"},"Recyclable":true,"Biodegradable":false,"FunctionalRecycle":true,"ReportedMass":{"Value":2,"Unit":"kg"},"ReferenceType":"MiRecordGuid","ReferenceValue":"8dc38bb5-eff9-4c60-9233-271a3c8f6270"}],"Processes":[],"Substances":[],"Specifications":[],"EmbodiedEnergy":{"Value":441.2,"Unit":"MJ"},"ClimateChange":{"Value":14.2,"Unit":"kg"},"ReportedMass":{"Value":2,"Unit":"kg"},"ReferenceType":"PartNumber","ReferenceValue":null}],"Materials":[],"Processes":[],"Substances":[],"Specifications":[],"EmbodiedEnergy":{"Value":441.2,"Unit":"MJ"},"ClimateChange":{"Value":14.2,"Unit":"kg"},"ReportedMass":{"Value":2,"Unit":"kg"},"ReferenceType":"PartNumber","ReferenceValue":null}],"TransportStages":[],"LogMessages":[]}""", # noqa: E501 + "GetSustainabilityForBom2301Response": r"""{"Parts":[{"Parts":[{"Parts":[],"Materials":[{"Processes":[{"EmbodiedEnergy":{"Value":0.09,"Unit":"MJ"},"ClimateChange":{"Value":0,"Unit":"kg"},"ReferenceType":"MiRecordHistoryGuid","ReferenceValue":"d986c90a-2835-45f3-8b69-d6d662dcf53a","Id":null}],"Substances":[],"EmbodiedEnergy":{"Value":441.1,"Unit":"MJ"},"ClimateChange":{"Value":14.9,"Unit":"kg"},"Recyclable":true,"Biodegradable":false,"FunctionalRecycle":true,"ReportedMass":{"Value":2,"Unit":"kg"},"ReferenceType":"MiRecordGuid","ReferenceValue":"8dc38bb5-eff9-4c60-9233-271a3c8f6270","Id":null}],"Processes":[],"Substances":[],"Specifications":[],"EmbodiedEnergy":{"Value":441.2,"Unit":"MJ"},"ClimateChange":{"Value":14.2,"Unit":"kg"},"ReportedMass":{"Value":2,"Unit":"kg"},"ReferenceType":null,"ReferenceValue":null,"Id":null}],"Materials":[],"Processes":[],"Substances":[],"Specifications":[],"EmbodiedEnergy":{"Value":441.2,"Unit":"MJ"},"ClimateChange":{"Value":14.2,"Unit":"kg"},"ReportedMass":{"Value":2,"Unit":"kg"},"ReferenceType":null,"ReferenceValue":null,"Id":null}],"TransportStages":[],"LogMessages":[]}""", # noqa: E501 "GetSustainabilitySummaryForBom2301Request": r"""{"BomXml2301":"<?xml version=\"1.0\"?><PartsEco xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://www.grantadesign.com/23/01/BillOfMaterialsEco\"> <Components> <Part> <Quantity Unit=\"Each\">1</Quantity> <PartNumber>PartOne</PartNumber> <ExternalIdentity>47</ExternalIdentity> <Components> <Part> <Quantity Unit=\"Each\">1</Quantity> <PartNumber>PartTwo</PartNumber> <Name /> <ExternalIdentity>50</ExternalIdentity> <Materials> <Material> <Mass Unit=\"kg\">0.5</Mass> <MIMaterialReference> <dbKey xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey> <recordGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">8dc38bb5-eff9-4c60-9233-271a3c8f6270</recordGUID> </MIMaterialReference> <Identity>steel-kovar-annealed</Identity> <Name>High alloy steel, Kovar, annealed</Name> <ExternalIdentity>5777</ExternalIdentity> <Processes> <Process> <MIProcessReference> <dbKey xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey> <recordGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">baa6c95b-ff0e-4811-9120-92717ee15bda</recordGUID> </MIProcessReference> <Identity /> <Name>Metal casting</Name> <ExternalIdentity>5821</ExternalIdentity> <DimensionType>Mass</DimensionType> <Percentage>100</Percentage> </Process> <Process> <MIProcessReference> <dbKey xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey> <recordGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">907bda29-e800-44f6-b7ea-4eb8e7cff375</recordGUID> </MIProcessReference> <Identity /> <Name>Machining, coarse</Name> <ExternalIdentity>5801</ExternalIdentity> <DimensionType>MassRemoved</DimensionType> <Percentage>20</Percentage> </Process> </Processes> </Material> </Materials> </Part> </Components> </Part> </Components> <Notes> <ProductName>Example</ProductName> </Notes></PartsEco>","PreferredUnits":null,"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 - "GetSustainabilitySummaryForBom2301Response": r"""{"MaterialSummary":{"Summary":[{"Identity":"steel-kovar-annealed","RecordReference":{"ReferenceType":"MiRecordGuid","ReferenceValue":"8dc38bb5-eff9-4c60-9233-271a3c8f6270"},"EmbodiedEnergy":{"Value":134.482549067761,"Unit":"MJ"},"EmbodiedEnergyPercentage":100,"ClimateChange":{"Value":4.3276934674222,"Unit":"kg"},"ClimateChangePercentage":100,"MassBeforeProcessing":{"Value":0.625,"Unit":"kg"},"MassAfterProcessing":{"Value":0.5,"Unit":"kg"},"LargestContributors":[{"ComponentName":"","RecordReference":{"ReferenceType":"PartNumber","ReferenceValue":null},"MaterialMassBeforeProcessing":{"Value":0.625,"Unit":"kg"}}]}],"PhaseSummary":{"Phase":"Material","EmbodiedEnergy":{"Value":134.482549067761,"Unit":"MJ"},"EmbodiedEnergyPercentage":95.1957177924867,"ClimateChange":{"Value":4.3276934674222,"Unit":"kg"},"ClimateChangePercentage":93.623465310322}},"ProcessSummary":{"PrimaryProcesses":[{"ProcessName":"Metal casting","ProcessRecordReference":{"ReferenceType":"MiRecordGuid","ReferenceValue":"baa6c95b-ff0e-4811-9120-92717ee15bda"},"MaterialRecordReference":{"ReferenceType":"MiRecordGuid","ReferenceValue":"8dc38bb5-eff9-4c60-9233-271a3c8f6270"},"MaterialIdentity":"High alloy steel, Kovar, annealed","EmbodiedEnergy":{"Value":6.55438765769984,"Unit":"MJ"},"EmbodiedEnergyPercentage":100,"ClimateChange":{"Value":0.283705040845716,"Unit":"kg"},"ClimateChangePercentage":100}],"SecondaryProcesses":[{"ProcessName":"Machining, coarse","ProcessRecordReference":{"ReferenceType":"MiRecordGuid","ReferenceValue":"907bda29-e800-44f6-b7ea-4eb8e7cff375"},"MaterialRecordReference":{"ReferenceType":"MiRecordGuid","ReferenceValue":"8dc38bb5-eff9-4c60-9233-271a3c8f6270"},"MaterialIdentity":"High alloy steel, Kovar, annealed","EmbodiedEnergy":{"Value":0.232599537624153,"Unit":"MJ"},"EmbodiedEnergyPercentage":100,"ClimateChange":{"Value":0.0110467869128737,"Unit":"kg"},"ClimateChangePercentage":100}],"JoiningAndFinishingProcesses":[],"PhaseSummary":{"Phase":"Processes","EmbodiedEnergy":{"Value":6.78698719532399,"Unit":"MJ"},"EmbodiedEnergyPercentage":4.80428220751333,"ClimateChange":{"Value":0.29475182775859,"Unit":"kg"},"ClimateChangePercentage":6.37653468967796}},"TransportSummary":{"Summary":[],"PhaseSummary":{"Phase":"Transport","EmbodiedEnergy":{"Value":0,"Unit":"MJ"},"EmbodiedEnergyPercentage":0,"ClimateChange":{"Value":0,"Unit":"kg"},"ClimateChangePercentage":0}},"LogMessages":[]}""", # noqa: E501 + "GetSustainabilitySummaryForBom2301Response": r"""{"MaterialSummary":{"Summary":[{"Identity":"steel-kovar-annealed","RecordReference":{"ReferenceType":"MiRecordGuid","ReferenceValue":"8dc38bb5-eff9-4c60-9233-271a3c8f6270","Id":null},"EmbodiedEnergy":{"Value":134.482549067761,"Unit":"MJ"},"EmbodiedEnergyPercentage":100,"ClimateChange":{"Value":4.3276934674222,"Unit":"kg"},"ClimateChangePercentage":100,"MassBeforeProcessing":{"Value":0.625,"Unit":"kg"},"MassAfterProcessing":{"Value":0.5,"Unit":"kg"},"LargestContributors":[{"ComponentName":"","RecordReference":{"ReferenceType":null,"ReferenceValue":null,"Id":null},"MaterialMassBeforeProcessing":{"Value":0.625,"Unit":"kg"}}]}],"PhaseSummary":{"Phase":"Material","EmbodiedEnergy":{"Value":134.482549067761,"Unit":"MJ"},"EmbodiedEnergyPercentage":95.1957177924867,"ClimateChange":{"Value":4.3276934674222,"Unit":"kg"},"ClimateChangePercentage":93.623465310322}},"ProcessSummary":{"PrimaryProcesses":[{"ProcessName":"Metal casting","ProcessRecordReference":{"ReferenceType":"MiRecordGuid","ReferenceValue":"baa6c95b-ff0e-4811-9120-92717ee15bda","Id":null},"MaterialRecordReference":{"ReferenceType":"MiRecordGuid","ReferenceValue":"8dc38bb5-eff9-4c60-9233-271a3c8f6270","Id":null},"MaterialIdentity":"High alloy steel, Kovar, annealed","EmbodiedEnergy":{"Value":6.55438765769984,"Unit":"MJ"},"EmbodiedEnergyPercentage":100,"ClimateChange":{"Value":0.283705040845716,"Unit":"kg"},"ClimateChangePercentage":100}],"SecondaryProcesses":[{"ProcessName":"Machining, coarse","ProcessRecordReference":{"ReferenceType":"MiRecordGuid","ReferenceValue":"907bda29-e800-44f6-b7ea-4eb8e7cff375","Id":null},"MaterialRecordReference":{"ReferenceType":"MiRecordGuid","ReferenceValue":"8dc38bb5-eff9-4c60-9233-271a3c8f6270","Id":null},"MaterialIdentity":"High alloy steel, Kovar, annealed","EmbodiedEnergy":{"Value":0.232599537624153,"Unit":"MJ"},"EmbodiedEnergyPercentage":100,"ClimateChange":{"Value":0.0110467869128737,"Unit":"kg"},"ClimateChangePercentage":100}],"JoiningAndFinishingProcesses":[],"PhaseSummary":{"Phase":"Processes","EmbodiedEnergy":{"Value":6.78698719532399,"Unit":"MJ"},"EmbodiedEnergyPercentage":4.80428220751333,"ClimateChange":{"Value":0.29475182775859,"Unit":"kg"},"ClimateChangePercentage":6.37653468967796}},"TransportSummary":{"Summary":[],"PhaseSummary":{"Phase":"Transport","EmbodiedEnergy":{"Value":0,"Unit":"MJ"},"EmbodiedEnergyPercentage":0,"ClimateChange":{"Value":0,"Unit":"kg"},"ClimateChangePercentage":0}},"LogMessages":[]}""", # noqa: E501 } examples_as_strings = {k: html.unescape(v) for k, v in _example_dict_raw.items() if v} From 48429fe18ec33e8adc0b7326243c3e8846547cae Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Fri, 29 Sep 2023 10:56:54 +0200 Subject: [PATCH 079/275] Use references in results --- .../bomanalytics/_item_definitions.py | 4 +-- .../grantami/bomanalytics/_item_results.py | 25 ++++++++----------- 2 files changed, 13 insertions(+), 16 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/_item_definitions.py b/src/ansys/grantami/bomanalytics/_item_definitions.py index 378d9a88..d73ed78e 100644 --- a/src/ansys/grantami/bomanalytics/_item_definitions.py +++ b/src/ansys/grantami/bomanalytics/_item_definitions.py @@ -196,7 +196,7 @@ def _definition(self) -> models.CommonSpecificationReference: return result -class BaseSubstanceReference(RecordReference, ABC): +class SubstanceReference(RecordReference, ABC): """Represents a reference to a substance record from the abstract ``RecordReference`` subclass. This class extends the base constructor to also support CAS numbers, EC numbers, and chemical names. @@ -228,7 +228,7 @@ def chemical_name(self) -> Optional[str]: return None -class SubstanceDefinition(RecordDefinition, BaseSubstanceReference): +class SubstanceDefinition(RecordDefinition, SubstanceReference): """Represents the definition of a substance as supplied to a compliance query from the concrete ``Substance`` subclass. diff --git a/src/ansys/grantami/bomanalytics/_item_results.py b/src/ansys/grantami/bomanalytics/_item_results.py index bf7962bf..977e6b27 100644 --- a/src/ansys/grantami/bomanalytics/_item_results.py +++ b/src/ansys/grantami/bomanalytics/_item_results.py @@ -21,17 +21,14 @@ from ansys.grantami.bomanalytics_openapi import models # type: ignore[import] from ._item_definitions import ( - BaseSubstanceReference, CoatingReference, - MaterialDefinition, MaterialReference, - PartDefinition, PartReference, ProcessReference, RecordReference, ReferenceType, - SpecificationDefinition, SpecificationReference, + SubstanceReference, TransportReference, ) from .indicators import RoHSIndicator, WatchListIndicator @@ -599,7 +596,7 @@ def create_process_summary(cls, result: models.CommonSustainabilityProcessSummar """ return ProcessSummaryResult( material_identity=result.material_identity, - material_reference=MaterialDefinition( + material_reference=MaterialReference( reference_type=cls.parse_reference_type(result.material_record_reference.reference_type), reference_value=result.material_record_reference.reference_value, ), @@ -649,7 +646,7 @@ def create_licensing_result(result: models.GetAvailableLicensesResponse) -> "Lic ) -class ImpactedSubstance(BaseSubstanceReference): +class ImpactedSubstance(SubstanceReference): """Represents a substance impacted by a legislation. This object includes two categories of attributes: @@ -810,7 +807,7 @@ def __repr__(self) -> str: @ItemResultFactory.register("MaterialWithImpactedSubstances") -class MaterialWithImpactedSubstancesResult(RecordWithImpactedSubstancesResultMixin, MaterialDefinition): +class MaterialWithImpactedSubstancesResult(RecordWithImpactedSubstancesResultMixin, MaterialReference): """Retrieves an individual material that is included as part of an impacted substances query result. This object includes two categories of attributes: @@ -841,7 +838,7 @@ class MaterialWithImpactedSubstancesResult(RecordWithImpactedSubstancesResultMix @ItemResultFactory.register("PartWithImpactedSubstances") -class PartWithImpactedSubstancesResult(RecordWithImpactedSubstancesResultMixin, PartDefinition): +class PartWithImpactedSubstancesResult(RecordWithImpactedSubstancesResultMixin, PartReference): """Retrieves an individual part included as part of an impacted substances query result. This object includes two categories of attributes: @@ -872,7 +869,7 @@ class PartWithImpactedSubstancesResult(RecordWithImpactedSubstancesResultMixin, @ItemResultFactory.register("SpecificationWithImpactedSubstances") -class SpecificationWithImpactedSubstancesResult(RecordWithImpactedSubstancesResultMixin, SpecificationDefinition): +class SpecificationWithImpactedSubstancesResult(RecordWithImpactedSubstancesResultMixin, SpecificationReference): """Retrieves an individual specification included as part of an impacted substances query result. This object includes two categories of attributes: @@ -1246,7 +1243,7 @@ def _add_child_coatings( @ItemResultFactory.register("SubstanceWithCompliance") -class SubstanceWithComplianceResult(ComplianceResultMixin, BaseSubstanceReference): +class SubstanceWithComplianceResult(ComplianceResultMixin, SubstanceReference): """Retrieves an individual substance included as part of a compliance query result. This object includes two categories of attributes: @@ -1263,7 +1260,7 @@ class SubstanceWithComplianceResult(ComplianceResultMixin, BaseSubstanceReferenc @ItemResultFactory.register("MaterialWithCompliance") -class MaterialWithComplianceResult(ChildSubstanceWithComplianceMixin, ComplianceResultMixin, MaterialDefinition): +class MaterialWithComplianceResult(ChildSubstanceWithComplianceMixin, ComplianceResultMixin, MaterialReference): """Retrieves an individual material included as part of a compliance query result. This object includes three categories of attributes: @@ -1289,7 +1286,7 @@ class PartWithComplianceResult( ChildSpecificationWithComplianceMixin, ChildPartWithComplianceMixin, ComplianceResultMixin, - PartDefinition, + PartReference, ): """Retrieves an individual part included as part of a compliance query result. This object includes three categories of attributes: @@ -1316,7 +1313,7 @@ class SpecificationWithComplianceResult( ChildMaterialWithComplianceMixin, ChildSpecificationWithComplianceMixin, ComplianceResultMixin, - SpecificationDefinition, + SpecificationReference, ): """Retrieves an individual specification included as part of a compliance query result. This object includes three categories of attributes: @@ -1841,7 +1838,7 @@ class SpecificationWithSustainabilityResult( """ -class SubstanceResult(BaseSubstanceReference): +class SubstanceResult(SubstanceReference): """Describes an individual specification included as part of a sustainability query result. This object includes only includes the reference to the part in Granta MI (if the substance references a record). From d4d406af612b5e1398e3b07ef0f5dc8bd92ba009 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Mon, 2 Oct 2023 11:09:01 +0200 Subject: [PATCH 080/275] Add identifiers to sustainability results --- .../bomanalytics/_item_definitions.py | 73 +++++++++++++++++-- .../grantami/bomanalytics/_item_results.py | 39 ++++++++-- tests/test_integration_tests.py | 1 + tests/test_item_results.py | 31 ++++++++ 4 files changed, 132 insertions(+), 12 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/_item_definitions.py b/src/ansys/grantami/bomanalytics/_item_definitions.py index d73ed78e..123dc486 100644 --- a/src/ansys/grantami/bomanalytics/_item_definitions.py +++ b/src/ansys/grantami/bomanalytics/_item_definitions.py @@ -7,7 +7,7 @@ from abc import ABC, abstractmethod from enum import Enum, auto import numbers -from typing import Dict, Optional, Union, cast +from typing import Any, Dict, Optional, Union, cast from ansys.grantami.bomanalytics_openapi import models # type: ignore[import] @@ -29,6 +29,34 @@ class ReferenceType(Enum): EcNumber = auto() +class IdentifierMixin(ABC): + def __init__(self, identity: Optional[str] = None, **kwargs: Any) -> None: + super().__init__(**kwargs) + self._identity: Optional[str] = identity + + @property + def identity(self) -> Optional[str]: + """Item identity.""" + return self._identity + + +class CommonIdentifiersMixin(IdentifierMixin, ABC): + def __init__(self, external_identity: Optional[str] = None, name: Optional[str] = None, **kwargs: Any) -> None: + super().__init__(**kwargs) + self._external_identity: Optional[str] = external_identity + self._name: Optional[str] = name + + @property + def external_identity(self) -> Optional[str]: + """Item external identity.""" + return self._external_identity + + @property + def name(self) -> Optional[str]: + """Item name.""" + return self._name + + class RecordReference(ABC): """Provides all references to records in Granta MI. @@ -119,6 +147,17 @@ def part_number(self) -> Optional[str]: return None +class PartReferenceWithIdentifiers(CommonIdentifiersMixin, PartReference): + def __init__(self, input_part_number: Optional[str] = None, **kwargs: Any): + super().__init__(**kwargs) + self._input_part_number: Optional[str] = input_part_number + + @property + def input_part_number(self) -> Optional[str]: + """Input part number.""" + return self._input_part_number + + class PartDefinition(RecordDefinition, PartReference): """Represents a part record from the concrete :class:`RecordDefinition` subclass.""" @@ -150,6 +189,10 @@ def material_id(self) -> Optional[str]: return None +class MaterialReferenceWithIdentifiers(CommonIdentifiersMixin, MaterialReference): + pass + + class MaterialDefinition(RecordDefinition, MaterialReference): """Represents a material record from the concrete :class:`RecordDefinition` subclass.""" @@ -180,6 +223,10 @@ def specification_id(self) -> Optional[str]: return None +class SpecificationReferenceWithIdentifiers(CommonIdentifiersMixin, SpecificationReference): + pass + + class SpecificationDefinition(RecordDefinition, SpecificationReference): """Represents a specification record from the concrete :class:`RecordDefinition` subclass.""" @@ -196,7 +243,7 @@ def _definition(self) -> models.CommonSpecificationReference: return result -class SubstanceReference(RecordReference, ABC): +class SubstanceReference(RecordReference): """Represents a reference to a substance record from the abstract ``RecordReference`` subclass. This class extends the base constructor to also support CAS numbers, EC numbers, and chemical names. @@ -228,6 +275,10 @@ def chemical_name(self) -> Optional[str]: return None +class SubstanceReferenceWithIdentifiers(CommonIdentifiersMixin, SubstanceReference): + pass + + class SubstanceDefinition(RecordDefinition, SubstanceReference): """Represents the definition of a substance as supplied to a compliance query from the concrete ``Substance`` subclass. @@ -303,20 +354,32 @@ def _definition(self) -> models.GetComplianceForSubstancesSubstanceWithAmount: return definition -class CoatingReference(RecordReference, ABC): +class CoatingReference(RecordReference): """Extends RecordReference without changes, to re-define the class name, because it appears in the repr.""" -class ProcessReference(RecordReference, ABC): +class CoatingReferenceWithIdentifier(IdentifierMixin, CoatingReference): + pass + + +class ProcessReference(RecordReference): # Because of ProcessSummaryResult, this is publicly documented. # Extends RecordReference without changes, to re-define the class name, because it appears in the repr. """Represents a reference to a Process record.""" -class TransportReference(RecordReference, ABC): +class ProcessReferenceWithIdentifiers(CommonIdentifiersMixin, ProcessReference): + pass + + +class TransportReference(RecordReference): """Extends RecordReference without changes, to re-define the class name, because it appears in the repr.""" +class TransportReferenceWithIdentifier(IdentifierMixin, TransportReference): + pass + + class BomItemDefinitionFactory(ABC): """Creates a specific definition object. This base factory class applies to definitions based on records only. diff --git a/src/ansys/grantami/bomanalytics/_item_results.py b/src/ansys/grantami/bomanalytics/_item_results.py index 977e6b27..2f8272d7 100644 --- a/src/ansys/grantami/bomanalytics/_item_results.py +++ b/src/ansys/grantami/bomanalytics/_item_results.py @@ -22,14 +22,21 @@ from ._item_definitions import ( CoatingReference, + CoatingReferenceWithIdentifier, MaterialReference, + MaterialReferenceWithIdentifiers, PartReference, + PartReferenceWithIdentifiers, ProcessReference, + ProcessReferenceWithIdentifiers, RecordReference, ReferenceType, SpecificationReference, + SpecificationReferenceWithIdentifiers, SubstanceReference, + SubstanceReferenceWithIdentifiers, TransportReference, + TransportReferenceWithIdentifier, ) from .indicators import RoHSIndicator, WatchListIndicator @@ -287,6 +294,10 @@ def create_part_with_sustainability( embodied_energy=cls.create_unitted_value(result_with_sustainability.embodied_energy), climate_change=cls.create_unitted_value(result_with_sustainability.climate_change), reported_mass=cls.create_unitted_value(result_with_sustainability.reported_mass), + identity=result_with_sustainability.id, + external_identity=result_with_sustainability.external_identity, + name=result_with_sustainability.name, + input_part_number=result_with_sustainability.input_part_number, ) part_with_sustainability._add_child_parts(result_with_sustainability.parts) part_with_sustainability._add_child_materials(result_with_sustainability.materials) @@ -318,6 +329,9 @@ def create_process_with_sustainability( reference_value=result_with_sustainability.reference_value, embodied_energy=cls.create_unitted_value(result_with_sustainability.embodied_energy), climate_change=cls.create_unitted_value(result_with_sustainability.climate_change), + identity=result_with_sustainability.id, + external_identity=result_with_sustainability.external_identity, + name=result_with_sustainability.name, ) return process_with_sustainability @@ -348,6 +362,9 @@ def create_material_with_sustainability( recyclable=result_with_sustainability.recyclable, biodegradable=result_with_sustainability.biodegradable, functional_recycle=result_with_sustainability.functional_recycle, + identity=result_with_sustainability.id, + external_identity=result_with_sustainability.external_identity, + name=result_with_sustainability.name, ) material_with_sustainability._add_child_processes(result_with_sustainability.processes) material_with_sustainability._add_child_substances(result_with_sustainability.substances) @@ -377,6 +394,9 @@ def create_specification_with_sustainability( embodied_energy=cls.create_unitted_value(result_with_sustainability.embodied_energy), climate_change=cls.create_unitted_value(result_with_sustainability.climate_change), reported_mass=cls.create_unitted_value(result_with_sustainability.reported_mass), + identity=result_with_sustainability.id, + external_identity=result_with_sustainability.external_identity, + name=result_with_sustainability.name, ) specification_with_sustainability._add_child_specifications(result_with_sustainability.specifications) specification_with_sustainability._add_child_materials(result_with_sustainability.materials) @@ -405,6 +425,9 @@ def create_substance_result( substance = SubstanceResult( reference_type=reference_type, reference_value=result.reference_value, + identity=result.id, + external_identity=result.external_identity, + name=result.name, ) return substance @@ -429,6 +452,7 @@ def create_coating_result( coating = CoatingResult( reference_type=reference_type, reference_value=result.reference_value, + identity=result.id, ) return coating @@ -455,6 +479,7 @@ def create_transport_with_sustainability( reference_value=result_with_sustainability.reference_value, embodied_energy=cls.create_unitted_value(result_with_sustainability.embodied_energy), climate_change=cls.create_unitted_value(result_with_sustainability.climate_change), + identity=result_with_sustainability.id, ) return transport_with_sustainability @@ -1763,7 +1788,7 @@ class MaterialWithSustainabilityResult( SustainabilityResultMixin, ReusabilityResultMixin, MassResultMixin, - MaterialReference, + MaterialReferenceWithIdentifiers, ): """Describes an individual material included as part of a sustainability query result. This object includes three categories of attributes: @@ -1791,7 +1816,7 @@ class PartWithSustainabilityResult( ChildPartWithSustainabilityMixin, SustainabilityResultMixin, MassResultMixin, - PartReference, + PartReferenceWithIdentifiers, ): """Describes an individual part included as part of a sustainability query result. This object includes three categories of attributes: @@ -1818,7 +1843,7 @@ class SpecificationWithSustainabilityResult( ChildSpecificationWithSustainabilityMixin, SustainabilityResultMixin, MassResultMixin, - SpecificationReference, + SpecificationReferenceWithIdentifiers, ): """Describes an individual specification included as part of a sustainability query result. This object includes three categories of attributes: @@ -1838,7 +1863,7 @@ class SpecificationWithSustainabilityResult( """ -class SubstanceResult(SubstanceReference): +class SubstanceResult(SubstanceReferenceWithIdentifiers): """Describes an individual specification included as part of a sustainability query result. This object includes only includes the reference to the part in Granta MI (if the substance references a record). @@ -1854,7 +1879,7 @@ class SubstanceResult(SubstanceReference): # TODO: Consider documenting CoatingReference/SubstanceReference directly, since Material and PartRef need to be added # anyway. Although having the result class means it can be extended in the future without qualifying as breaking # changes. -class CoatingResult(CoatingReference): +class CoatingResult(CoatingReferenceWithIdentifier): """Provides an individual coating included as part of a sustainability query result. This object includes only includes the reference to the coating in Granta MI. @@ -1868,7 +1893,7 @@ class CoatingResult(CoatingReference): class ProcessWithSustainabilityResult( SustainabilityResultMixin, - ProcessReference, + ProcessReferenceWithIdentifiers, ): """Describes a process included as part of a sustainability query result. This object includes two categories of attributes: @@ -1887,7 +1912,7 @@ class ProcessWithSustainabilityResult( class TransportWithSustainabilityResult( SustainabilityResultMixin, - TransportReference, + TransportReferenceWithIdentifier, ): """Describes a transport stage included as part of a sustainability query result. This object includes two categories of attributes: diff --git a/tests/test_integration_tests.py b/tests/test_integration_tests.py index 264167a0..921b6f1e 100644 --- a/tests/test_integration_tests.py +++ b/tests/test_integration_tests.py @@ -219,3 +219,4 @@ def test_sustainability_query(self, connection): query = queries.BomSustainabilityQuery() query.with_bom(sample_bom_2301_complex) response = connection.run(query) + p = 1 diff --git a/tests/test_item_results.py b/tests/test_item_results.py index 3a221f58..4e041327 100644 --- a/tests/test_item_results.py +++ b/tests/test_item_results.py @@ -198,11 +198,18 @@ class TestSustainabilityResultsRepr: "embodied_energy": models.CommonValueWithUnit(value=2.3, unit="KJ"), "climate_change": models.CommonValueWithUnit(value=5.1, unit="KJ"), } + _id = {"id": "TEST_ID"} + _identifiers = { + "id": "TEST_ID", + "external_identity": "TEST_EXT_ID", + "name": "TEST_NAME", + } def test_transport_result_repr(self): model = models.CommonSustainabilityTransportWithSustainability( **self._eco_metrics, **self._rec_ref_kwargs, + **self._id, ) result = ItemResultFactory.create_transport_with_sustainability(model) expected = ( @@ -214,6 +221,8 @@ def test_part_result_repr(self): model = models.CommonSustainabilityPartWithSustainability( **self._eco_metrics, **self._rec_ref_kwargs, + **self._identifiers, + input_part_number="TEST_PN", materials=[], substances=[], specifications=[], @@ -229,6 +238,7 @@ def test_material_result_repr(self): model = models.CommonSustainabilityMaterialWithSustainability( **self._eco_metrics, **self._rec_ref_kwargs, + **self._identifiers, biodegradable=True, functional_recycle=True, recyclable=True, @@ -246,6 +256,7 @@ def test_process_result_repr(self): model = models.CommonSustainabilityProcessWithSustainability( **self._eco_metrics, **self._rec_ref_kwargs, + **self._identifiers, ) result = ItemResultFactory.create_process_with_sustainability(model) expected = ( @@ -256,6 +267,7 @@ def test_process_result_repr(self): def test_coating_result_repr(self): model = models.CommonCoatingReference( **self._rec_ref_kwargs, + **self._id, ) result = ItemResultFactory.create_coating_result(model) expected = "" @@ -264,11 +276,30 @@ def test_coating_result_repr(self): def test_substance_result_repr(self): model = models.CommonSubstanceReference( **self._rec_ref_kwargs, + **self._identifiers, ) result = ItemResultFactory.create_substance_result(model) expected = "" assert repr(result) == expected + def test_specification_result_repr(self): + model = models.CommonSustainabilitySpecificationWithSustainability( + **self._rec_ref_kwargs, + **self._eco_metrics, + **self._identifiers, + reported_mass=models.CommonValueWithUnit(value=45, unit="kg"), + specifications=[], + materials=[], + substances=[], + coatings=[], + ) + result = ItemResultFactory.create_specification_with_sustainability(model) + expected = ( + "" + ) + assert repr(result) == expected + class TestLicensing: @pytest.mark.parametrize("restricted_substances", [True, False]) From 90b0da3ccd4506416a2490dee330ce302418c9ad Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Mon, 2 Oct 2023 13:50:30 +0200 Subject: [PATCH 081/275] Add identifiers to impacted substances results --- .../grantami/bomanalytics/_item_results.py | 142 +++++++++++------- .../grantami/bomanalytics/_query_results.py | 37 ++--- tests/test_item_results.py | 85 +++++++---- 3 files changed, 161 insertions(+), 103 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/_item_results.py b/src/ansys/grantami/bomanalytics/_item_results.py index 2f8272d7..c072f38f 100644 --- a/src/ansys/grantami/bomanalytics/_item_results.py +++ b/src/ansys/grantami/bomanalytics/_item_results.py @@ -111,70 +111,108 @@ def inner(result_class: Item_Result) -> Item_Result: return inner @classmethod - @overload - def create_impacted_substances_result( - cls, result_type_name: str, result_with_impacted_substances: Result_Model_Material + def create_material_impacted_substances_result( + cls, result_with_impacted_substances: models.GetImpactedSubstancesForMaterialsMaterial ) -> "MaterialWithImpactedSubstancesResult": - ... + """ + Return a material impacted substances result. + + Parameters + ---------- + result_with_impacted_substances + Result from the REST API describing the impacted substances for a material. + + Returns + ------- + MaterialWithImpactedSubstancesResult + An object that describes the substances that impacted a material. Substances are grouped by legislation. + """ + reference_type = cls.parse_reference_type(result_with_impacted_substances.reference_type) + item_result = MaterialWithImpactedSubstancesResult( + reference_type=reference_type, + reference_value=result_with_impacted_substances.reference_value, + legislations=result_with_impacted_substances.legislations, + identity=result_with_impacted_substances.id, + external_identity=result_with_impacted_substances.external_identity, + name=result_with_impacted_substances.name, + ) + return item_result @classmethod - @overload - def create_impacted_substances_result( # type: ignore[misc] - cls, result_type_name: str, result_with_impacted_substances: Result_Model_Part + def create_part_impacted_substances_result( + cls, result_with_impacted_substances: models.GetImpactedSubstancesForPartsPart ) -> "PartWithImpactedSubstancesResult": - ... + """ + Return a part impacted substances result. - @classmethod - @overload - def create_impacted_substances_result( # type: ignore[misc] - cls, result_type_name: str, result_with_impacted_substances: Result_Model_Specification - ) -> "SpecificationWithImpactedSubstancesResult": - ... + Parameters + ---------- + result_with_impacted_substances + Result from the REST API describing the impacted substances for a part. - @classmethod - @overload - def create_impacted_substances_result( # type: ignore[misc] - cls, result_type_name: str, result_with_impacted_substances: Result_Model_Bom - ) -> "BoM1711WithImpactedSubstancesResult": - ... + Returns + ------- + PartWithImpactedSubstancesResult + An object that describes the substances that impacted a part. Substances are grouped by legislation. + """ + reference_type = cls.parse_reference_type(result_with_impacted_substances.reference_type) + item_result = PartWithImpactedSubstancesResult( + reference_type=reference_type, + reference_value=result_with_impacted_substances.reference_value, + legislations=result_with_impacted_substances.legislations, + identity=result_with_impacted_substances.id, + external_identity=result_with_impacted_substances.external_identity, + name=result_with_impacted_substances.name, + input_part_number=result_with_impacted_substances.input_part_number, + ) + return item_result @classmethod - def create_impacted_substances_result( - cls, result_type_name: str, result_with_impacted_substances: Result_Model_Any - ) -> "ImpactedSubstancesResultMixin": - """Return a specific impacted substances result. + def create_specification_impacted_substances_result( + cls, result_with_impacted_substances: models.GetImpactedSubstancesForSpecificationsSpecification + ) -> "SpecificationWithImpactedSubstancesResult": + """ + Return a specification impacted substances result. Parameters ---------- - result_type_name - Name of the result for which an object is needed. result_with_impacted_substances - Result from the REST API describing the impacted substances for this item. + Result from the REST API describing the impacted substances for a specification. Returns ------- - Impacted Substances Item Result - An object that describes the substances that impacted a material, part, specification, or BoM. Substances - are grouped by legislation. + SpecificationWithImpactedSubstancesResult + An object that describes the substances that impacted a specification. Substances are grouped by legislation. + """ + reference_type = cls.parse_reference_type(result_with_impacted_substances.reference_type) + item_result = SpecificationWithImpactedSubstancesResult( + reference_type=reference_type, + reference_value=result_with_impacted_substances.reference_value, + legislations=result_with_impacted_substances.legislations, + identity=result_with_impacted_substances.id, + external_identity=result_with_impacted_substances.external_identity, + name=result_with_impacted_substances.name, + ) + return item_result - Raises - ------ - RuntimeError - Error raised if a query type is not registered to any factory. + @classmethod + def create_bom_impacted_substances_result( + cls, result_with_impacted_substances: models.GetImpactedSubstancesForBom1711Response + ) -> "BoM1711WithImpactedSubstancesResult": """ + Return a bom impacted substances result. - item_result_class = cls.registry[result_type_name] - assert issubclass(item_result_class, ImpactedSubstancesResultMixin) - try: - reference_type = cls.parse_reference_type(result_with_impacted_substances.reference_type) - item_result = item_result_class( - reference_type=reference_type, - reference_value=result_with_impacted_substances.reference_value, - legislations=result_with_impacted_substances.legislations, - ) - except AttributeError: - # This is a BoM-type query result, and has no record reference - item_result = item_result_class(legislations=result_with_impacted_substances.legislations) + Parameters + ---------- + result_with_impacted_substances + Result from the REST API describing the impacted substances for a bom. + + Returns + ------- + BoM1711WithImpactedSubstancesResult + An object that describes the substances that impacted a bom. Substances are grouped by legislation. + """ + item_result = BoM1711WithImpactedSubstancesResult(legislations=result_with_impacted_substances.legislations) return item_result @classmethod @@ -831,8 +869,7 @@ def __repr__(self) -> str: ) -@ItemResultFactory.register("MaterialWithImpactedSubstances") -class MaterialWithImpactedSubstancesResult(RecordWithImpactedSubstancesResultMixin, MaterialReference): +class MaterialWithImpactedSubstancesResult(RecordWithImpactedSubstancesResultMixin, MaterialReferenceWithIdentifiers): """Retrieves an individual material that is included as part of an impacted substances query result. This object includes two categories of attributes: @@ -862,8 +899,7 @@ class MaterialWithImpactedSubstancesResult(RecordWithImpactedSubstancesResultMix """ -@ItemResultFactory.register("PartWithImpactedSubstances") -class PartWithImpactedSubstancesResult(RecordWithImpactedSubstancesResultMixin, PartReference): +class PartWithImpactedSubstancesResult(RecordWithImpactedSubstancesResultMixin, PartReferenceWithIdentifiers): """Retrieves an individual part included as part of an impacted substances query result. This object includes two categories of attributes: @@ -893,8 +929,9 @@ class PartWithImpactedSubstancesResult(RecordWithImpactedSubstancesResultMixin, """ -@ItemResultFactory.register("SpecificationWithImpactedSubstances") -class SpecificationWithImpactedSubstancesResult(RecordWithImpactedSubstancesResultMixin, SpecificationReference): +class SpecificationWithImpactedSubstancesResult( + RecordWithImpactedSubstancesResultMixin, SpecificationReferenceWithIdentifiers +): """Retrieves an individual specification included as part of an impacted substances query result. This object includes two categories of attributes: @@ -926,7 +963,6 @@ class SpecificationWithImpactedSubstancesResult(RecordWithImpactedSubstancesResu pass -@ItemResultFactory.register("BomWithImpactedSubstances") class BoM1711WithImpactedSubstancesResult(ImpactedSubstancesResultMixin): """This class is instantiated, but since a BoM query can only return a single impacted substances result, this type is hidden and never seen by the user. As a result it is not documented. diff --git a/src/ansys/grantami/bomanalytics/_query_results.py b/src/ansys/grantami/bomanalytics/_query_results.py index 299847d9..77a5014b 100644 --- a/src/ansys/grantami/bomanalytics/_query_results.py +++ b/src/ansys/grantami/bomanalytics/_query_results.py @@ -145,11 +145,6 @@ class ImpactedSubstancesBaseClass(ResultBaseClass): """ _results: List - _result_type_name: str - - def __repr__(self) -> str: - result = f"<{self.__class__.__name__}: {len(self._results)} " f"{self._result_type_name} results>" - return result @property def impacted_substances_by_legislation(self) -> Dict[str, List["ImpactedSubstance"]]: @@ -287,10 +282,8 @@ def __init__( super().__init__(messages) self._results = [] - self._result_type_name = "MaterialWithImpactedSubstances" for result in results: - material_with_impacted_substances = ItemResultFactory.create_impacted_substances_result( - result_type_name=self._result_type_name, + material_with_impacted_substances = ItemResultFactory.create_material_impacted_substances_result( result_with_impacted_substances=result, ) self._results.append(material_with_impacted_substances) @@ -313,6 +306,10 @@ def impacted_substances_by_material(self) -> List["MaterialWithImpactedSubstance return self._results + def __repr__(self) -> str: + result = f"<{self.__class__.__name__}: {len(self._results)} MaterialWithImpactedSubstances results>" + return result + @QueryResultFactory.register(models.CommonMaterialWithCompliance) class MaterialComplianceQueryResult(ComplianceBaseClass): @@ -403,10 +400,8 @@ def __init__( super().__init__(messages) self._results = [] - self._result_type_name = "PartWithImpactedSubstances" for result in results: - part_with_impacted_substances = ItemResultFactory.create_impacted_substances_result( - result_type_name=self._result_type_name, + part_with_impacted_substances = ItemResultFactory.create_part_impacted_substances_result( result_with_impacted_substances=result, ) self._results.append(part_with_impacted_substances) @@ -430,6 +425,10 @@ def impacted_substances_by_part(self) -> List["PartWithImpactedSubstancesResult" return self._results + def __repr__(self) -> str: + result = f"<{self.__class__.__name__}: {len(self._results)} PartWithImpactedSubstances results>" + return result + @QueryResultFactory.register(models.CommonPartWithCompliance) class PartComplianceQueryResult(ComplianceBaseClass): @@ -521,10 +520,8 @@ def __init__( super().__init__(messages) self._results = [] - self._result_type_name = "SpecificationWithImpactedSubstances" for result in results: - specification_with_impacted_substances = ItemResultFactory.create_impacted_substances_result( - result_type_name=self._result_type_name, + specification_with_impacted_substances = ItemResultFactory.create_specification_impacted_substances_result( result_with_impacted_substances=result, ) self._results.append(specification_with_impacted_substances) @@ -551,6 +548,10 @@ def impacted_substances_by_specification( return self._results + def __repr__(self) -> str: + result = f"<{self.__class__.__name__}: {len(self._results)} SpecificationWithImpactedSubstances results>" + return result + @QueryResultFactory.register(models.CommonSpecificationWithCompliance) class SpecificationComplianceQueryResult(ComplianceBaseClass): @@ -701,13 +702,15 @@ def __init__( """ super().__init__(messages) - self._result_type_name = "BomWithImpactedSubstances" - bom_with_impacted_substances = ItemResultFactory.create_impacted_substances_result( - result_type_name=self._result_type_name, + bom_with_impacted_substances = ItemResultFactory.create_bom_impacted_substances_result( result_with_impacted_substances=results[0], ) self._results = [bom_with_impacted_substances] + def __repr__(self) -> str: + result = f"<{self.__class__.__name__}: {len(self._results)} BomWithImpactedSubstances results>" + return result + @QueryResultFactory.register(models.GetComplianceForBom1711Response) class BomComplianceQueryResult(ComplianceBaseClass): diff --git a/tests/test_item_results.py b/tests/test_item_results.py index 4e041327..d51adffd 100644 --- a/tests/test_item_results.py +++ b/tests/test_item_results.py @@ -61,43 +61,62 @@ def test_impacted_substance_repr(): assert repr(impacted_substance) == f'' -@pytest.mark.parametrize( - "result_type", - ["MaterialWithImpactedSubstances", "PartWithImpactedSubstances", "SpecificationWithImpactedSubstances"], -) -def test_impacted_substances_item_repr(result_type): - query_result = RecordSubstanceResultMock( - reference_type="MiRecordGuid", reference_value="TEST_GUID", legislations=legislation_results - ) - result = ItemResultFactory.create_impacted_substances_result(result_type, query_result) - assert ( - repr(result) == f"<{result_type}Result({{'reference_type': 'MiRecordGuid', " - f"'reference_value': 'TEST_GUID'}}), {len(legislation_results)} legislations>" - ) - assert ( - repr(result.substances) == '[, ' - ', ' - ']' - ) +class TestImpactedSubstancesResultsRepr: + def _check_properties_repr(self, result): + assert ( + repr(result.substances) == '[, ' + ', ' + ']' + ) - for legislation in legislation_results: - assert legislation.legislation_id in repr(result.substances_by_legislation) - assert "ImpactedSubstance" in repr(result.substances_by_legislation) + for legislation in legislation_results: + assert legislation.legislation_id in repr(result.substances_by_legislation) + assert "ImpactedSubstance" in repr(result.substances_by_legislation) + def test_specification_impacted_substances_item_repr(self): + query_result = models.GetImpactedSubstancesForSpecificationsSpecification( + reference_type="MiRecordGuid", reference_value="TEST_GUID", legislations=legislation_results + ) + result = ItemResultFactory.create_specification_impacted_substances_result(query_result) + assert ( + repr(result) == f"" + ) + self._check_properties_repr(result) -def test_impacted_substances_bom_repr(): - query_result = BomSubstanceResultMock(legislations=legislation_results) - result = ItemResultFactory.create_impacted_substances_result("BomWithImpactedSubstances", query_result) - assert repr(result) == f"" - assert ( - repr(result.substances) == '[, ' - ', ' - ']' - ) + def test_material_impacted_substances_item_repr(self): + query_result = models.GetImpactedSubstancesForMaterialsMaterial( + reference_type="MiRecordGuid", reference_value="TEST_GUID", legislations=legislation_results + ) + result = ItemResultFactory.create_material_impacted_substances_result(query_result) + assert ( + repr(result) == f"" + ) + self._check_properties_repr(result) + + def test_part_impacted_substances_item_repr( + self, + ): + query_result = models.GetImpactedSubstancesForPartsPart( + reference_type="MiRecordGuid", reference_value="TEST_GUID", legislations=legislation_results + ) + result = ItemResultFactory.create_part_impacted_substances_result(query_result) + assert ( + repr(result) == f"" + ) + self._check_properties_repr(result) + + def test_impacted_substances_bom_repr(self): + query_result = models.GetImpactedSubstancesForBom1711Response( + legislations=legislation_results, + log_messages=[], + ) + result = ItemResultFactory.create_bom_impacted_substances_result(query_result) - for legislation in legislation_results: - assert legislation.legislation_id in repr(result.substances_by_legislation) - assert "ImpactedSubstance" in repr(result.substances_by_legislation) + assert repr(result) == f"" + self._check_properties_repr(result) @pytest.mark.parametrize( From 48ddd9a29ccba2d16f612410a8c340c15449be86 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Mon, 2 Oct 2023 16:04:05 +0200 Subject: [PATCH 082/275] Add identifiers to compliance results --- .../grantami/bomanalytics/_item_results.py | 256 ++++++++++-------- .../grantami/bomanalytics/_query_results.py | 27 +- tests/test_item_results.py | 56 ++-- 3 files changed, 196 insertions(+), 143 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/_item_results.py b/src/ansys/grantami/bomanalytics/_item_results.py index c072f38f..8e59e14a 100644 --- a/src/ansys/grantami/bomanalytics/_item_results.py +++ b/src/ansys/grantami/bomanalytics/_item_results.py @@ -5,23 +5,11 @@ """ from abc import ABC from copy import deepcopy -from typing import ( - TYPE_CHECKING, - Any, - Callable, - Dict, - List, - Optional, - Type, - TypeVar, - Union, - overload, -) +from typing import TYPE_CHECKING, Any, Dict, List, Optional, Type, TypeVar, Union from ansys.grantami.bomanalytics_openapi import models # type: ignore[import] from ._item_definitions import ( - CoatingReference, CoatingReferenceWithIdentifier, MaterialReference, MaterialReferenceWithIdentifiers, @@ -31,7 +19,6 @@ ProcessReferenceWithIdentifiers, RecordReference, ReferenceType, - SpecificationReference, SpecificationReferenceWithIdentifiers, SubstanceReference, SubstanceReferenceWithIdentifiers, @@ -80,35 +67,7 @@ class ItemResultFactory: - """Creates item results for a given type of API query. - - The name of the query class in the ``queries.py``file is key to controlling - which result type is created. - """ - - registry: Dict[str, Item_Result] = {} - """Mapping between an item result class and the query type it supports.""" - - @classmethod - def register(cls, name: str) -> Callable: - """Register a specific item result class with the name of a result type. - - Parameters - ---------- - name - Name of the result type to register. - - Returns - ------- - Callable - Function that's being decorated. - """ - - def inner(result_class: Item_Result) -> Item_Result: - cls.registry[name] = result_class - return result_class - - return inner + """Creates item results for a given type of API query.""" @classmethod def create_material_impacted_substances_result( @@ -216,95 +175,176 @@ def create_bom_impacted_substances_result( return item_result @classmethod - @overload - def create_compliance_result( + def create_material_compliance_result( cls, - result_type_name: str, - result_with_compliance: Result_Model_Material, + result_with_compliance: models.CommonMaterialWithCompliance, indicator_definitions: Dict[str, Union["WatchListIndicator", "RoHSIndicator"]], ) -> "MaterialWithComplianceResult": - ... + """Returns a material compliance result. + + Parameters + ---------- + result_with_compliance + Result from the REST API describing the compliance for this particular material. + indicator_definitions + Definitions of the indicators supplied to the original query. This is required because + the REST API does not provide them in the response. + + Returns + ------- + MaterialWithComplianceResult + An object that describes the compliance of the material. + This object is defined recursively, with each level of the BoM having a reported compliance + status for each indicator. + """ + reference_type = cls.parse_reference_type(result_with_compliance.reference_type) + item_result = MaterialWithComplianceResult( + reference_type=reference_type, + reference_value=result_with_compliance.reference_value, + indicator_results=result_with_compliance.indicators, + indicator_definitions=indicator_definitions, + identity=result_with_compliance.id, + external_identity=result_with_compliance.external_identity, + name=result_with_compliance.name, + ) + return item_result @classmethod - @overload - def create_compliance_result( # type: ignore[misc] + def create_part_compliance_result( cls, - result_type_name: str, - result_with_compliance: Result_Model_Part, + result_with_compliance: models.CommonPartWithCompliance, indicator_definitions: Dict[str, Union["WatchListIndicator", "RoHSIndicator"]], ) -> "PartWithComplianceResult": - ... + """Returns a part compliance result. + + Parameters + ---------- + result_with_compliance + Result from the REST API describing the compliance for this particular part. + indicator_definitions + Definitions of the indicators supplied to the original query. This is required because + the REST API does not provide them in the response. + + Returns + ------- + PartWithComplianceResult + An object that describes the compliance of the part. + This object is defined recursively, with each level of the BoM having a reported compliance + status for each indicator. + """ + reference_type = cls.parse_reference_type(result_with_compliance.reference_type) + item_result = PartWithComplianceResult( + reference_type=reference_type, + reference_value=result_with_compliance.reference_value, + indicator_results=result_with_compliance.indicators, + indicator_definitions=indicator_definitions, + identity=result_with_compliance.id, + external_identity=result_with_compliance.external_identity, + name=result_with_compliance.name, + input_part_number=result_with_compliance.input_part_number, + ) + return item_result @classmethod - @overload - def create_compliance_result( # type: ignore[misc] + def create_specification_compliance_result( cls, - result_type_name: str, - result_with_compliance: Result_Model_Specification, + result_with_compliance: models.CommonSpecificationWithCompliance, indicator_definitions: Dict[str, Union["WatchListIndicator", "RoHSIndicator"]], ) -> "SpecificationWithComplianceResult": - ... + """Returns a specification compliance result. + + Parameters + ---------- + result_with_compliance + Result from the REST API describing the compliance for this particular specification. + indicator_definitions + Definitions of the indicators supplied to the original query. This is required because + the REST API does not provide them in the response. + + Returns + ------- + SpecificationWithComplianceResult + An object that describes the compliance of the specification. + This object is defined recursively, with each level of the BoM having a reported compliance + status for each indicator. + """ + reference_type = cls.parse_reference_type(result_with_compliance.reference_type) + item_result = SpecificationWithComplianceResult( + reference_type=reference_type, + reference_value=result_with_compliance.reference_value, + indicator_results=result_with_compliance.indicators, + indicator_definitions=indicator_definitions, + identity=result_with_compliance.id, + external_identity=result_with_compliance.external_identity, + name=result_with_compliance.name, + ) + return item_result @classmethod - @overload - def create_compliance_result( # type: ignore[misc] + def create_coating_compliance_result( cls, - result_type_name: str, - result_with_compliance: Result_Model_Coating, + result_with_compliance: models.CommonCoatingWithCompliance, indicator_definitions: Dict[str, Union["WatchListIndicator", "RoHSIndicator"]], ) -> "CoatingWithComplianceResult": - ... + """Returns a coating compliance result. - @classmethod - @overload - def create_compliance_result( # type: ignore[misc] - cls, - result_type_name: str, - result_with_compliance: Result_Model_Substance, - indicator_definitions: Dict[str, Union["WatchListIndicator", "RoHSIndicator"]], - ) -> "SubstanceWithComplianceResult": - ... + Parameters + ---------- + result_with_compliance + Result from the REST API describing the compliance for this particular coating. + indicator_definitions + Definitions of the indicators supplied to the original query. This is required because + the REST API does not provide them in the response. + + Returns + ------- + CoatingWithComplianceResult + An object that describes the compliance of the coating. + This object is defined recursively, with each level of the BoM having a reported compliance + status for each indicator. + """ + reference_type = cls.parse_reference_type(result_with_compliance.reference_type) + item_result = CoatingWithComplianceResult( + reference_type=reference_type, + reference_value=result_with_compliance.reference_value, + indicator_results=result_with_compliance.indicators, + indicator_definitions=indicator_definitions, + identity=result_with_compliance.id, + ) + return item_result @classmethod - def create_compliance_result( + def create_substance_compliance_result( cls, - result_type_name: str, - result_with_compliance: Result_Model_Any, + result_with_compliance: models.CommonSubstanceWithCompliance, indicator_definitions: Dict[str, Union["WatchListIndicator", "RoHSIndicator"]], - ) -> "ComplianceResultMixin": - """Returns a specific item result. + ) -> "SubstanceWithComplianceResult": + """Returns a substance compliance result. Parameters ---------- - result_type_name - Name of the result for which an object is needed. result_with_compliance - Result from the REST API describing the compliance for this particular item. + Result from the REST API describing the compliance for this particular substance. indicator_definitions Definitions of the indicators supplied to the original query. This is required because the REST API does not provide them in the response. Returns ------- - Compliance Item Result - An object that describes the compliance of a substance, material, part, specification, or BoM. + SubstanceWithComplianceResult + An object that describes the compliance of the substance. This object is defined recursively, with each level of the BoM having a reported compliance status for each indicator. - - Raises - ------ - RuntimeError - Error raised if a query type is not registered to any factory. """ - reference_type = cls.parse_reference_type(result_with_compliance.reference_type) - item_result_class = cls.registry[result_type_name] - assert issubclass(item_result_class, ComplianceResultMixin) - item_result = item_result_class( + item_result = SubstanceWithComplianceResult( reference_type=reference_type, reference_value=result_with_compliance.reference_value, indicator_results=result_with_compliance.indicators, indicator_definitions=indicator_definitions, + identity=result_with_compliance.id, + external_identity=result_with_compliance.external_identity, + name=result_with_compliance.name, ) return item_result @@ -1090,8 +1130,7 @@ def _add_child_substances(self, child_substances: List[models.CommonSubstanceWit """ for child_substance in child_substances: - child_substance_with_compliance = ItemResultFactory.create_compliance_result( - result_type_name="SubstanceWithCompliance", + child_substance_with_compliance = ItemResultFactory.create_substance_compliance_result( result_with_compliance=child_substance, indicator_definitions=self._indicator_definitions, ) @@ -1138,8 +1177,7 @@ def _add_child_materials( """ for child_material in child_materials: - child_material_with_compliance = ItemResultFactory.create_compliance_result( - result_type_name="MaterialWithCompliance", + child_material_with_compliance = ItemResultFactory.create_material_compliance_result( result_with_compliance=child_material, indicator_definitions=self._indicator_definitions, ) @@ -1189,8 +1227,7 @@ def _add_child_specifications( """ for child_specification in child_specifications: - child_specification_with_compliance = ItemResultFactory.create_compliance_result( - result_type_name="SpecificationWithCompliance", + child_specification_with_compliance = ItemResultFactory.create_specification_compliance_result( result_with_compliance=child_specification, indicator_definitions=self._indicator_definitions, ) @@ -1242,8 +1279,7 @@ def _add_child_parts( """ for child_part in child_parts: - child_part_with_compliance = ItemResultFactory.create_compliance_result( - result_type_name="PartWithCompliance", + child_part_with_compliance = ItemResultFactory.create_part_compliance_result( result_with_compliance=child_part, indicator_definitions=self._indicator_definitions, ) @@ -1294,8 +1330,7 @@ def _add_child_coatings( """ for child_coating in child_coatings: - child_coating_with_compliance = ItemResultFactory.create_compliance_result( - result_type_name="CoatingWithCompliance", + child_coating_with_compliance = ItemResultFactory.create_coating_compliance_result( result_with_compliance=child_coating, indicator_definitions=self._indicator_definitions, ) @@ -1303,8 +1338,7 @@ def _add_child_coatings( self._coatings.append(child_coating_with_compliance) -@ItemResultFactory.register("SubstanceWithCompliance") -class SubstanceWithComplianceResult(ComplianceResultMixin, SubstanceReference): +class SubstanceWithComplianceResult(ComplianceResultMixin, SubstanceReferenceWithIdentifiers): """Retrieves an individual substance included as part of a compliance query result. This object includes two categories of attributes: @@ -1320,8 +1354,9 @@ class SubstanceWithComplianceResult(ComplianceResultMixin, SubstanceReference): """ -@ItemResultFactory.register("MaterialWithCompliance") -class MaterialWithComplianceResult(ChildSubstanceWithComplianceMixin, ComplianceResultMixin, MaterialReference): +class MaterialWithComplianceResult( + ChildSubstanceWithComplianceMixin, ComplianceResultMixin, MaterialReferenceWithIdentifiers +): """Retrieves an individual material included as part of a compliance query result. This object includes three categories of attributes: @@ -1340,14 +1375,13 @@ class MaterialWithComplianceResult(ChildSubstanceWithComplianceMixin, Compliance """ -@ItemResultFactory.register("PartWithCompliance") class PartWithComplianceResult( ChildSubstanceWithComplianceMixin, ChildMaterialWithComplianceMixin, ChildSpecificationWithComplianceMixin, ChildPartWithComplianceMixin, ComplianceResultMixin, - PartReference, + PartReferenceWithIdentifiers, ): """Retrieves an individual part included as part of a compliance query result. This object includes three categories of attributes: @@ -1367,14 +1401,13 @@ class PartWithComplianceResult( """ -@ItemResultFactory.register("SpecificationWithCompliance") class SpecificationWithComplianceResult( ChildSubstanceWithComplianceMixin, ChildCoatingWithComplianceMixin, ChildMaterialWithComplianceMixin, ChildSpecificationWithComplianceMixin, ComplianceResultMixin, - SpecificationReference, + SpecificationReferenceWithIdentifiers, ): """Retrieves an individual specification included as part of a compliance query result. This object includes three categories of attributes: @@ -1394,8 +1427,9 @@ class SpecificationWithComplianceResult( """ -@ItemResultFactory.register("CoatingWithCompliance") -class CoatingWithComplianceResult(ChildSubstanceWithComplianceMixin, ComplianceResultMixin, CoatingReference): +class CoatingWithComplianceResult( + ChildSubstanceWithComplianceMixin, ComplianceResultMixin, CoatingReferenceWithIdentifier +): """Provides an individual coating included as part of a compliance query result. This object includes three categories of attributes: diff --git a/src/ansys/grantami/bomanalytics/_query_results.py b/src/ansys/grantami/bomanalytics/_query_results.py index 77a5014b..63c0841a 100644 --- a/src/ansys/grantami/bomanalytics/_query_results.py +++ b/src/ansys/grantami/bomanalytics/_query_results.py @@ -324,6 +324,8 @@ class MaterialComplianceQueryResult(ComplianceBaseClass): directly. """ + _result_type_name = "MaterialWithCompliance" + def __init__( self, results: List[models.CommonMaterialWithCompliance], @@ -342,10 +344,8 @@ def __init__( super().__init__(messages) self._results = [] - self._result_type_name = "MaterialWithCompliance" for result in results: - material_with_compliance = ItemResultFactory.create_compliance_result( - result_type_name=self._result_type_name, + material_with_compliance = ItemResultFactory.create_material_compliance_result( result_with_compliance=result, indicator_definitions=indicator_definitions, ) @@ -443,6 +443,8 @@ class PartComplianceQueryResult(ComplianceBaseClass): directly. """ + _result_type_name = "PartWithCompliance" + def __init__( self, results: List[models.CommonPartWithCompliance], @@ -461,10 +463,8 @@ def __init__( super().__init__(messages) self._results = [] - self._result_type_name = "PartWithCompliance" for result in results: - part_with_compliance = ItemResultFactory.create_compliance_result( - result_type_name=self._result_type_name, + part_with_compliance = ItemResultFactory.create_part_compliance_result( result_with_compliance=result, indicator_definitions=indicator_definitions, ) @@ -566,6 +566,8 @@ class SpecificationComplianceQueryResult(ComplianceBaseClass): directly. """ + _result_type_name = "SpecificationWithCompliance" + def __init__( self, results: List[models.CommonSpecificationWithCompliance], @@ -584,10 +586,8 @@ def __init__( super().__init__(messages) self._results = [] - self._result_type_name = "SpecificationWithCompliance" for result in results: - specification_with_compliance = ItemResultFactory.create_compliance_result( - result_type_name=self._result_type_name, + specification_with_compliance = ItemResultFactory.create_specification_compliance_result( result_with_compliance=result, indicator_definitions=indicator_definitions, ) @@ -651,8 +651,7 @@ def __init__( self._results = [] self._result_type_name = "SubstanceWithCompliance" for result in results: - substance_with_compliance = ItemResultFactory.create_compliance_result( - result_type_name=self._result_type_name, + substance_with_compliance = ItemResultFactory.create_substance_compliance_result( result_with_compliance=result, indicator_definitions=indicator_definitions, ) @@ -725,6 +724,8 @@ class BomComplianceQueryResult(ComplianceBaseClass): directly. """ + _result_type_name = "PartWithCompliance" + def __init__( self, results: List[models.GetComplianceForBom1711Response], @@ -743,11 +744,9 @@ def __init__( super().__init__(messages) self._results = [] - self._result_type_name = "PartWithCompliance" parts: List[models.CommonPartWithCompliance] = results[0].parts for result in parts: - part_with_compliance = ItemResultFactory.create_compliance_result( - result_type_name=self._result_type_name, + part_with_compliance = ItemResultFactory.create_part_compliance_result( result_with_compliance=result, indicator_definitions=indicator_definitions, ) diff --git a/tests/test_item_results.py b/tests/test_item_results.py index d51adffd..caed03a3 100644 --- a/tests/test_item_results.py +++ b/tests/test_item_results.py @@ -119,26 +119,46 @@ def test_impacted_substances_bom_repr(self): self._check_properties_repr(result) -@pytest.mark.parametrize( - "result_type", - [ - "PartWithCompliance", - "MaterialWithCompliance", - "SpecificationWithCompliance", - "SubstanceWithCompliance", - "CoatingWithCompliance", - ], -) -def test_compliance_item_repr(result_type): - indicator_results = [two_legislation_result, one_legislation_result] - query_result = ComplianceResultMock( - reference_type="MiRecordGuid", reference_value="TEST_GUID", indicators=indicator_results +class TestComplianceResultsRepr: + _indicator_results = [two_legislation_result, one_legislation_result] + _default_kwargs = dict( + reference_type="MiRecordGuid", + reference_value="TEST_GUID", + indicators=_indicator_results, ) - result = ItemResultFactory.create_compliance_result(result_type, query_result, INDICATORS) - assert ( - repr(result) == f"<{result_type}Result({{'reference_type': 'MiRecordGuid', " - f"'reference_value': 'TEST_GUID'}}), {len(indicator_results)} indicators>" + + @pytest.mark.parametrize( + ["result_type", "method_name", "input_model"], + [ + ("PartWithCompliance", "create_part_compliance_result", models.CommonPartWithCompliance(**_default_kwargs)), + ( + "MaterialWithCompliance", + "create_material_compliance_result", + models.CommonMaterialWithCompliance(**_default_kwargs), + ), + ( + "SpecificationWithCompliance", + "create_specification_compliance_result", + models.CommonSpecificationWithCompliance(**_default_kwargs), + ), + ( + "SubstanceWithCompliance", + "create_substance_compliance_result", + models.CommonSubstanceWithCompliance(**_default_kwargs), + ), + ( + "CoatingWithCompliance", + "create_coating_compliance_result", + models.CommonCoatingWithCompliance(**_default_kwargs), + ), + ], ) + def test_compliance_item_repr(self, result_type, method_name, input_model): + result = getattr(ItemResultFactory, method_name)(input_model, INDICATORS) + assert ( + repr(result) == f"<{result_type}Result({{'reference_type': 'MiRecordGuid', " + f"'reference_value': 'TEST_GUID'}}), {len(self._indicator_results)} indicators>" + ) class TestSustainabilitySummaryResultsRepr: From 4aac71d2fedd13cbc9ab7a0b74b853161736c710 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Mon, 2 Oct 2023 17:11:02 +0200 Subject: [PATCH 083/275] Remove outdated typevars --- .../grantami/bomanalytics/_item_results.py | 58 ++++--------------- 1 file changed, 12 insertions(+), 46 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/_item_results.py b/src/ansys/grantami/bomanalytics/_item_results.py index 8e59e14a..b2f61c69 100644 --- a/src/ansys/grantami/bomanalytics/_item_results.py +++ b/src/ansys/grantami/bomanalytics/_item_results.py @@ -5,7 +5,7 @@ """ from abc import ABC from copy import deepcopy -from typing import TYPE_CHECKING, Any, Dict, List, Optional, Type, TypeVar, Union +from typing import TYPE_CHECKING, Any, Dict, List, Optional, Union from ansys.grantami.bomanalytics_openapi import models # type: ignore[import] @@ -25,44 +25,10 @@ TransportReference, TransportReferenceWithIdentifier, ) -from .indicators import RoHSIndicator, WatchListIndicator if TYPE_CHECKING: - from ._query_results import MaterialImpactedSubstancesQueryResult # noqa: F401 - -Result_Model_Material = TypeVar( - "Result_Model_Material", - bound=Union[ - models.GetImpactedSubstancesForMaterialsMaterial, - models.CommonMaterialWithCompliance, - ], -) -Result_Model_Part = TypeVar( - "Result_Model_Part", - bound=Union[ - models.GetImpactedSubstancesForPartsPart, - models.CommonPartWithCompliance, - ], -) -Result_Model_Specification = TypeVar( - "Result_Model_Specification", - bound=Union[ - models.GetImpactedSubstancesForSpecificationsSpecification, - models.CommonSpecificationWithCompliance, - ], -) -Result_Model_Substance = TypeVar("Result_Model_Substance", bound=models.CommonSubstanceWithCompliance) -Result_Model_Coating = TypeVar("Result_Model_Coating", bound=models.CommonCoatingWithCompliance) -Result_Model_Bom = TypeVar("Result_Model_Bom", bound=models.GetImpactedSubstancesForBom1711Response) -Result_Model_Any = Union[ - Result_Model_Part, - Result_Model_Material, - Result_Model_Specification, - Result_Model_Coating, - Result_Model_Substance, - Result_Model_Bom, -] -Item_Result = Union[Type["ImpactedSubstancesResultMixin"], Type["ComplianceResultMixin"]] + from .indicators import RoHSIndicator, WatchListIndicator + Indicator_Definitions = Dict[str, Union["WatchListIndicator", "RoHSIndicator"]] @@ -178,7 +144,7 @@ def create_bom_impacted_substances_result( def create_material_compliance_result( cls, result_with_compliance: models.CommonMaterialWithCompliance, - indicator_definitions: Dict[str, Union["WatchListIndicator", "RoHSIndicator"]], + indicator_definitions: Indicator_Definitions, ) -> "MaterialWithComplianceResult": """Returns a material compliance result. @@ -213,7 +179,7 @@ def create_material_compliance_result( def create_part_compliance_result( cls, result_with_compliance: models.CommonPartWithCompliance, - indicator_definitions: Dict[str, Union["WatchListIndicator", "RoHSIndicator"]], + indicator_definitions: Indicator_Definitions, ) -> "PartWithComplianceResult": """Returns a part compliance result. @@ -249,7 +215,7 @@ def create_part_compliance_result( def create_specification_compliance_result( cls, result_with_compliance: models.CommonSpecificationWithCompliance, - indicator_definitions: Dict[str, Union["WatchListIndicator", "RoHSIndicator"]], + indicator_definitions: Indicator_Definitions, ) -> "SpecificationWithComplianceResult": """Returns a specification compliance result. @@ -284,7 +250,7 @@ def create_specification_compliance_result( def create_coating_compliance_result( cls, result_with_compliance: models.CommonCoatingWithCompliance, - indicator_definitions: Dict[str, Union["WatchListIndicator", "RoHSIndicator"]], + indicator_definitions: Indicator_Definitions, ) -> "CoatingWithComplianceResult": """Returns a coating compliance result. @@ -317,7 +283,7 @@ def create_coating_compliance_result( def create_substance_compliance_result( cls, result_with_compliance: models.CommonSubstanceWithCompliance, - indicator_definitions: Dict[str, Union["WatchListIndicator", "RoHSIndicator"]], + indicator_definitions: Indicator_Definitions, ) -> "SubstanceWithComplianceResult": """Returns a substance compliance result. @@ -1024,7 +990,7 @@ def __repr__(self) -> str: class HasIndicators(ABC): """Abstract base class to define the existence of indicator definitions.""" - _indicator_definitions: Dict[str, Union["WatchListIndicator", "RoHSIndicator"]] + _indicator_definitions: Indicator_Definitions class ComplianceResultMixin(HasIndicators, RecordReference): @@ -1076,18 +1042,18 @@ class ComplianceResultMixin(HasIndicators, RecordReference): def __init__( self, indicator_results: List[models.CommonIndicatorResult], - indicator_definitions: Dict[str, Union["WatchListIndicator", "RoHSIndicator"]], + indicator_definitions: Indicator_Definitions, **kwargs: Any, ) -> None: super().__init__(**kwargs) self._indicator_definitions = indicator_definitions - self._indicators: Dict[str, Union["WatchListIndicator", "RoHSIndicator"]] = deepcopy(indicator_definitions) + self._indicators: Indicator_Definitions = deepcopy(indicator_definitions) for indicator_result in indicator_results: self._indicators[indicator_result.name].flag = indicator_result.flag @property - def indicators(self) -> Dict[str, Union["WatchListIndicator", "RoHSIndicator"]]: + def indicators(self) -> Indicator_Definitions: """Compliance status of this item for each indicator included in the original query.""" return self._indicators From 65295545258d78076d79e627321fbcd39b87fa33 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Wed, 4 Oct 2023 18:08:32 +0200 Subject: [PATCH 084/275] Include finishing processes in summary --- .../4-1_BoM_Sustainability_summary.py | 32 ++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/examples/4_Sustainability/4-1_BoM_Sustainability_summary.py b/examples/4_Sustainability/4-1_BoM_Sustainability_summary.py index f4303b55..c5a9ae91 100644 --- a/examples/4_Sustainability/4-1_BoM_Sustainability_summary.py +++ b/examples/4_Sustainability/4-1_BoM_Sustainability_summary.py @@ -281,19 +281,48 @@ def plot_footprint(df, title, textinfo="percent+label", hoverinfo="value+name"): ) # ### Joining and finishing -# If there are no processes in the BoM for a certain process category, the list is empty. +# +# Joining and finishing processes apply to parts or assemblies and therefore don't include a material identity. sustainability_summary.joining_and_finishing_processes_details +joining_and_finishing_processes_df = pd.DataFrame.from_records( + [ + { + "Name": item.process_name, + "EE%": item.embodied_energy_percentage, + EE_HEADER: item.embodied_energy.value, + "CC%": item.climate_change_percentage, + CC_HEADER: item.climate_change.value, + } + for item in sustainability_summary.joining_and_finishing_processes_details + ] +) +joining_and_finishing_processes_df + +plot_footprint( + joining_and_finishing_processes_df, "Aggregated secondary processes footprint", + textinfo="percent", hoverinfo="value+name+label" +) + # ## Hierarchical view # # Finally, aggregate the sustainability summary results into a single `DataFrame` and present it in a hierarchical # chart. This highlights the largest contributors at each level. In this example, two levels are defined: # first the phase and then the contributors in the phase. +# First, rename the processes ``Other`` rows, so that they remain distinguishable after all processes have been +# grouped under a general ``Processes``. +# # Use `assign` to add a `parent` column to each `DataFrame` being concatenated # The `join` argument value `inner` specifies that only columns common to all dataframes are kept in the result +# + +primary_process_df.loc[(primary_process_df["Name"] == "Other - None"), "Name"] = "Other primary processes" +secondary_process_df.loc[(secondary_process_df["Name"] == "Other - None"), "Name"] = "Other secondary processes" +joining_and_finishing_processes_df.loc[ + (joining_and_finishing_processes_df["Name"] == "Other - None"), "Name"] = "Other joining and finishing processes" + summary_df = pd.concat( [ phases_df.assign(Parent=""), @@ -301,6 +330,7 @@ def plot_footprint(df, title, textinfo="percent+label", hoverinfo="value+name"): materials_df.assign(Parent="Material"), primary_process_df.assign(Parent="Processes"), secondary_process_df.assign(Parent="Processes"), + joining_and_finishing_processes_df.assign(Parent="Processes"), ], join="inner", ) From 191a147c8022cd34e8f9a555aefbb7a6912d32ee Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Wed, 4 Oct 2023 18:09:07 +0200 Subject: [PATCH 085/275] Update example BoM --- .../4-1_BoM_Sustainability_summary.py | 4 +- .../supporting-files/bom-2301-assembly.xml | 277 ++++++++++++++++++ .../supporting-files/bom-2301-jack-stand.xml | 180 ------------ 3 files changed, 279 insertions(+), 182 deletions(-) create mode 100644 examples/4_Sustainability/supporting-files/bom-2301-assembly.xml delete mode 100644 examples/4_Sustainability/supporting-files/bom-2301-jack-stand.xml diff --git a/examples/4_Sustainability/4-1_BoM_Sustainability_summary.py b/examples/4_Sustainability/4-1_BoM_Sustainability_summary.py index c5a9ae91..be38a872 100644 --- a/examples/4_Sustainability/4-1_BoM_Sustainability_summary.py +++ b/examples/4_Sustainability/4-1_BoM_Sustainability_summary.py @@ -16,7 +16,7 @@ # # The following supporting files are required for this example: # -# * [bom-2301-jack-stand.xml](supporting-files/bom-2301-jack-stand.xml) +# * [bom-2301-assembly.xml](supporting-files/bom-2301-assembly.xml) # ## Run a BoM sustainability summary query # @@ -33,7 +33,7 @@ # `MJ` for energy, `kg` for mass, and `km` for distance. # + -xml_file_path = "supporting-files/bom-2301-jack-stand.xml" +xml_file_path = "supporting-files/bom-2301-assembly.xml" with open(xml_file_path) as f: bom = f.read() diff --git a/examples/4_Sustainability/supporting-files/bom-2301-assembly.xml b/examples/4_Sustainability/supporting-files/bom-2301-assembly.xml new file mode 100644 index 00000000..a76bfdd4 --- /dev/null +++ b/examples/4_Sustainability/supporting-files/bom-2301-assembly.xml @@ -0,0 +1,277 @@ + + + + + 1 + ProductAssembly + + + + 1 + SubAssembly + + + 1 + 0.925 + SubSubPartA + + + 100 + + MI_Restricted_Substances + 2086f56a-4f4d-4850-9891-3d6ad155d1f9 + + stainless-astm-cn-7ms-cast + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Primary processing, Casting + Mass + 100 + + + + MI_Restricted_Substances + 907bda29-e800-44f6-b7ea-4eb8e7cff375 + + Machining, coarse + MassRemoved + 8.0 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + MassRemoved + 0.5 + + + + + + + 3 + 0.175 + SubSubPartB + + + 100 + + MI_Restricted_Substances + 2086f56a-4f4d-4850-9891-3d6ad155d1f9 + + stainless-astm-cn-7ms-cast + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Primary processing, Casting + Mass + 100 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + MassRemoved + 2.0 + + + + + + + + + + MI_Restricted_Substances + 21941b5e-fdbc-47fe-8180-809bb42e5e0a + + Joining and finishing, Welding, electric + Length + 0.45 + + + + + 1 + 0.610 + SubPartA + + + 100 + + MI_Restricted_Substances + 879f3268-e8b6-48c0-822a-40a010d12911 + + steel-1010-annealed + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Primary processing, Metal extrusion, hot + Mass + 100 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + Machining, fine + MassRemoved + 5.0 + + + + + + + 2 + 0.495 + SubPartB + + + 100 + + MI_Restricted_Substances + 879f3268-e8b6-48c0-822a-40a010d12911 + + steel-1010-annealed + + + + MI_Restricted_Substances + baa6c95b-ff0e-4811-9120-92717ee15bda + + Primary processing, Casting + Mass + 100 + + + + MI_Restricted_Substances + 9b5b1824-f11e-449e-9a3f-f6a75396ac87 + + Secondary processing, Grinding + MassRemoved + 7.6 + + + + + + + 2 + 0.520 + SubPartC + + + 100 + + MI_Restricted_Substances + 879f3268-e8b6-48c0-822a-40a010d12911 + + steel-1010-annealed + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Metal extrusion, hot + Mass + 100 + + + + + + + 2 + 0.012 + SubPartD + + + 100 + + MI_Restricted_Substances + a0adc9d7-69a2-494e-b6da-d588f86cc5ab + + beryllium-beralcast191-cast + + + + MI_Restricted_Substances + 92f90382-610a-4737-a18f-b153ea88e4ad + + Metal extrusion, hot + Mass + 100 + + + + MI_Restricted_Substances + 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 + + Machining, fine + MassRemoved + 11.2 + + + + + + + + + + + + + + Port to airport by truck + + MI_Restricted_Substances + 8d37ee4c-41ca-4cb5-9e8e-264646fcafa8 + + 350 + + + Country 1 to country 2 by air + + MI_Restricted_Substances + 546b90cb-1f8e-423c-a284-a25f731a13e5 + + 1500 + + + Airport to distributor by truck + + MI_Restricted_Substances + 8d37ee4c-41ca-4cb5-9e8e-264646fcafa8 + + 125 + + + + + MI_Restricted_Substances + 345a50ab-3e15-41e7-8653-703f7337e779 + + WholeWorld + + \ No newline at end of file diff --git a/examples/4_Sustainability/supporting-files/bom-2301-jack-stand.xml b/examples/4_Sustainability/supporting-files/bom-2301-jack-stand.xml deleted file mode 100644 index ea0c09ab..00000000 --- a/examples/4_Sustainability/supporting-files/bom-2301-jack-stand.xml +++ /dev/null @@ -1,180 +0,0 @@ - - - - - 1 - Jack Stand_mda320_assy - - - - 1 - 0.548 - Jack Stand_Base - - - 100 - - MI_Restricted_Substances - 879f3268-e8b6-48c0-822a-40a010d12911 - - steel-1010-annealed - - - - - 1 - 0.398 - Jack Stand_Center Pin - - - 100 - - MI_Restricted_Substances - 879f3268-e8b6-48c0-822a-40a010d12911 - - steel-1010-annealed - - - - - 1 - 0.281 - Jack Stand_Top Bracket - - - 100 - - MI_Restricted_Substances - 879f3268-e8b6-48c0-822a-40a010d12911 - - steel-1010-annealed - - - - - 2 - 0.460 - Jack Stand_Lower Hinge - - - 100 - - MI_Restricted_Substances - 879f3268-e8b6-48c0-822a-40a010d12911 - - steel-1010-annealed - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Metal casting - Metal casting - Mass - 100 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - MassRemoved - 36.4 - - - - - - - 2 - 0.451 - Jack Stand_Upper Hinge - - - 100 - - MI_Restricted_Substances - 879f3268-e8b6-48c0-822a-40a010d12911 - - steel-1010-annealed - - - - - 2 - 0.014 - Jack Stand_Slider - - - 100 - - MI_Restricted_Substances - a0adc9d7-69a2-494e-b6da-d588f86cc5ab - - beryllium-beralcast191-cast - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Metal extrusion, hot - Metal extrusion, hot - Mass - 100 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - MassRemoved - 11.2 - - - - - - - - - - - - Port to airport - - MI_Restricted_Substances - c29ab353-2bd5-4964-b577-a0e4cfb4d284 - - 350 - - - Country 1 to country 2 by air - - MI_Restricted_Substances - 546b90cb-1f8e-423c-a284-a25f731a13e5 - - 2000 - - - Airport to distributor - - MI_Restricted_Substances - c29ab353-2bd5-4964-b577-a0e4cfb4d284 - - 125 - - - - - MI_Restricted_Substances - 345a50ab-3e15-41e7-8653-703f7337e779 - - WholeWorld - - \ No newline at end of file From 6d71d0c645ffedda1ac414b12f9b97a5a6861c94 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Wed, 4 Oct 2023 18:25:20 +0200 Subject: [PATCH 086/275] Create 4-2_BoM_Sustainability.py --- .../4-2_BoM_Sustainability.py | 192 ++++++++++++++++++ 1 file changed, 192 insertions(+) create mode 100644 examples/4_Sustainability/4-2_BoM_Sustainability.py diff --git a/examples/4_Sustainability/4-2_BoM_Sustainability.py b/examples/4_Sustainability/4-2_BoM_Sustainability.py new file mode 100644 index 00000000..aa488340 --- /dev/null +++ b/examples/4_Sustainability/4-2_BoM_Sustainability.py @@ -0,0 +1,192 @@ +# --- +# jupyter: +# jupytext: +# text_representation: +# extension: .py +# format_name: light +# format_version: '1.5' +# jupytext_version: 1.15.1 +# kernelspec: +# display_name: Python 3 (ipykernel) +# language: python +# name: python3 +# --- + +# # Perform a BoM sustainability query +# +# The following supporting files are required for this example: +# +# * [bom-2301-assembly.xml](supporting-files/bom-2301-assembly.xml) + +# ## Run a BoM sustainability query +# +# First, connect to Granta MI. + +# + +from ansys.grantami.bomanalytics import Connection + +server_url = "http://my_grantami_server/mi_servicelayer" +cxn = Connection(server_url).with_credentials("user_name", "password").connect() +# - + +# Next, create a sustainability query. The query accepts a single BoM as argument, as well as optional +# configuration for units. If a unit is not specified, the default unit is used. Default units for the analysis are: +# `MJ` for energy, `kg` for mass, and `km` for distance. + +# + +xml_file_path = "supporting-files/bom-2301-assembly.xml" +with open(xml_file_path) as f: + bom = f.read() + +from ansys.grantami.bomanalytics import queries + +query = queries.BomSustainabilityQuery().with_bom(bom) +result = cxn.run(query) + +result +# - + +# ## Sustainability query result +# +# ### Definition +# +# The structure of a BoM sustainabability query result is similar to the input BoM structure. +# +# #### Query result +# +# The ``BomSustainabilityQueryResult`` class defines two properties: +# +# - ``parts``: list of top-level parts of the BoM and their calculated environmental footprint. +# - ``transport_stages``: list of transport stages defined in the BoM and their calculated environmental footprint. +# +# #### Parts +# +# Parts can be of two types: assemblies, or leaf parts. +# +# ##### **Assemblies** +# +# Assemblies are parts that define sub-parts. They do not define materials. +# +# Assemblies include: +# +# - ``parts``: list of sub-parts in the assembly. +# - ``processes``: list of joining and finishing processes applied to the assembly. +# +# The environmental footprint of an assembly describes the sum of all sub-parts and processes applied to the assembly. +# +# ##### **Leaf parts** +# +# Leaf parts are parts which do not include sub-parts. They can define the material they are made of. +# +# Leaf parts can include: +# +# - ``materials``: list of materials that the part is made of. +# - ``processes``: list of joining and finishing processes applied to the part. +# +# The environmental footprint of a leaf part includes the environmental footprint associated with the quantity of +# materials used (see below for details) and processes applied to the part. +# +# #### Materials +# +# Materials can include: +# +# - ``processes``: list of primary and secondary processes applied to the mass of material. +# +# The environmental footprint of a material includes the environmental footprint associated with the mass of material +# used and the environmental footprint of all primary and secondary processes applied. +# +# #### Processes +# +# Processes have no children. +# +# ### Processing +# +# In order to visualize the results using [plotly](https://plotly.com/python/), the results will be loaded into a +# [pandas](https://pandas.pydata.org/) ``DataFrame``. +# +# Methods defined in the following cell help convert the BoM hierarchical structure into a flat list of items, as well +# as converting each item into a dictionary of common values that the ``DataFrame`` will be able to interpret. +# Importantly, each value in the resulting list includes its ``id`` and ``parent_id``, which are critical to preserve a +# sense of hierarchy. The ``identity`` property is used as an identifier as it is unique across all BoM items, and +# populated even if not initially populated on the BoM items. + +# + +def traverse_bom(query_response): + # Identify top-level assembly, which includes transport stages contributions. + top_level_assembly = query_response.parts[0] + top_level_assembly_id = top_level_assembly.identity + yield to_dict(top_level_assembly, "") + for part in top_level_assembly.parts: + yield from traverse_part(part, top_level_assembly_id) + for transport in query_response.transport_stages: + yield to_dict(transport, top_level_assembly_id) + +def traverse_part(part, parent_id): + yield to_dict(part, parent_id) + part_id = part.identity + for child_part in part.parts: + yield from traverse_part(child_part, part_id) + for child_material in part.materials: + yield from traverse_material(child_material, part_id) + for child_process in part.processes: + yield to_dict(child_process, part_id) + +def traverse_material(material, parent_id): + yield to_dict(material, parent_id) + for child_process in material.processes: + yield to_dict(child_process, parent_id) + +from ansys.grantami.bomanalytics._item_results import ( + PartWithSustainabilityResult, + TransportWithSustainabilityResult, + MaterialWithSustainabilityResult, + ProcessWithSustainabilityResult, +) + +def to_dict(item, parent): + record = { + "id": item.identity, + "parent_id": parent, + "embodied energy [MJ]": item.embodied_energy.value, + "climate change [kg CO2-eq]": item.climate_change.value, + } + if isinstance(item, PartWithSustainabilityResult): + record.update({"type": "Part", "name": item.input_part_number}) + elif isinstance(item, TransportWithSustainabilityResult): + record.update({"type": "Transport", "name": item.identity}) + elif isinstance(item, MaterialWithSustainabilityResult): + record.update({"type": "Material", "name": item.name}) + elif isinstance(item, ProcessWithSustainabilityResult): + record.update({"type": "Process", "name": item.name}) + return record + +records = list(traverse_bom(result)) +# - + +import pandas as pd +df = pd.DataFrame.from_records( + records, + columns=["type", "parent_id", "id", "name", "embodied energy [MJ]", "climate change [kg CO2-eq]"], +) +df + +# Finally, visualize the data in a ``sunburst`` hierarchical chart. Colors represent the type of items. Size of +# sections represent the environmental footprint on an item. +# A similar visualization can be performed to represent the climate change property of each item. + +# + +import plotly.express as px + +fig = px.sunburst( + df, + names=df["name"], + ids=df["id"], + parents=df["parent_id"], + values=df["embodied energy [MJ]"], + branchvalues="total", + color=df["type"], + title="Embodied energy [MJ] breakdown", +) +# Disable sorting, so that items appear in the same order as in the BoM. +fig.update_traces(sort=False) +fig.show() \ No newline at end of file From dd9632f4fa191c282a89a8071032220ec86197f3 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Wed, 4 Oct 2023 18:38:00 +0200 Subject: [PATCH 087/275] Add example to docs --- examples/4_Sustainability/index.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/examples/4_Sustainability/index.rst b/examples/4_Sustainability/index.rst index 14d68e6d..f771ed43 100644 --- a/examples/4_Sustainability/index.rst +++ b/examples/4_Sustainability/index.rst @@ -10,3 +10,4 @@ These examples demonstrate how to determinate the environmental footprint for a :maxdepth: 1 4-1_BoM_Sustainability_summary.ipynb + 4-2_BoM_Sustainability.ipynb From 11140539bab95e97718b4b7191153154cfe332fb Mon Sep 17 00:00:00 2001 From: Andy Grigg Date: Wed, 4 Oct 2023 16:04:37 -0400 Subject: [PATCH 088/275] Sustainability example changes --- .../4-2_BoM_Sustainability.py | 149 ++++++++++++------ 1 file changed, 100 insertions(+), 49 deletions(-) diff --git a/examples/4_Sustainability/4-2_BoM_Sustainability.py b/examples/4_Sustainability/4-2_BoM_Sustainability.py index aa488340..6c5cd777 100644 --- a/examples/4_Sustainability/4-2_BoM_Sustainability.py +++ b/examples/4_Sustainability/4-2_BoM_Sustainability.py @@ -25,12 +25,13 @@ # + from ansys.grantami.bomanalytics import Connection -server_url = "http://my_grantami_server/mi_servicelayer" -cxn = Connection(server_url).with_credentials("user_name", "password").connect() +server_url = "http://cdcvdt4intg0002.win.ansys.com/mi_servicelayer" +cxn = Connection(server_url).with_autologon().connect() # - # Next, create a sustainability query. The query accepts a single BoM as argument, as well as optional -# configuration for units. If a unit is not specified, the default unit is used. Default units for the analysis are: +# configuration for units. If a unit is not specified, the default unit is used. Default units for the +# analysis are: # `MJ` for energy, `kg` for mass, and `km` for distance. # + @@ -41,74 +42,106 @@ from ansys.grantami.bomanalytics import queries query = queries.BomSustainabilityQuery().with_bom(bom) +# - + +# Finally, run the query. A `BomSustainabilityQueryResult` object is returned, which contains the +# results of the analysis. + +# + result = cxn.run(query) result # - -# ## Sustainability query result +# ## The ``BomSustainabilityQueryResult`` class # # ### Definition # -# The structure of a BoM sustainabability query result is similar to the input BoM structure. +# The structure of a BoM sustainabability query result mirrors the input BoM structure. However, each +# item in the result objects also includes the results of the sustainability analysis for that item. +# In addition to the properties described below, these objects also contain at least the following +# properties which define the results of the sustainability analysis: # -# #### Query result +# * ``.embodied_energy`` +# * ``.climate_change`` # -# The ``BomSustainabilityQueryResult`` class defines two properties: -# -# - ``parts``: list of top-level parts of the BoM and their calculated environmental footprint. -# - ``transport_stages``: list of transport stages defined in the BoM and their calculated environmental footprint. -# -# #### Parts +# Additional properties are also available for each ``WithSustainabilityResult`` object, +# see the <> for more details. + +# ### The ``BomSustainabilityQueryResult.parts`` property # -# Parts can be of two types: assemblies, or leaf parts. +# The ``BomSustainabilityQueryResult.parts`` property contains the single 'root' part in the input +# BoM. This part in turn also has a ``.parts`` property, which contains the list of +# ``PartWithSustainabilityResult`` objects which are children of the root part. This structure +# continues recursively to define all parts in the input BoM. These parts can be of two types: +# assemblies, or leaf parts. # # ##### **Assemblies** # -# Assemblies are parts that define sub-parts. They do not define materials. +# Assemblies are ``PartWithSustainabilityResult`` objects that contain sub-parts. Assemblies do not +# contain materials directly. # -# Assemblies include: +# Assemblies include the following properties which describe child BoM items: # -# - ``parts``: list of sub-parts in the assembly. -# - ``processes``: list of joining and finishing processes applied to the assembly. +# - ``.parts``: the sub-parts of the assembly, defined as ``PartWithSustainabilityResult`` objects. +# - ``.processes``: the joining and finishing processes applied to the assembly, defined as +# ``ProcessWithSustainabilityResult`` objects. # -# The environmental footprint of an assembly describes the sum of all sub-parts and processes applied to the assembly. +# The environmental footprint of an assembly includes the sum of the environmental footprints of all +# sub-parts and processes applied to the assembly. # # ##### **Leaf parts** # -# Leaf parts are parts which do not include sub-parts. They can define the material they are made of. -# -# Leaf parts can include: +# Leaf parts are ``PartWithSustainabilityResult`` objects that do not include sub-parts. Leaf parts +# can contain the materials they are made of as direct children. # -# - ``materials``: list of materials that the part is made of. -# - ``processes``: list of joining and finishing processes applied to the part. +# Leaf parts include the following properties: # -# The environmental footprint of a leaf part includes the environmental footprint associated with the quantity of -# materials used (see below for details) and processes applied to the part. +# - ``.materials``: the materials that the part is made of, defined as a list +# ``MaterialWithSustainabilityResult`` objects. +# - ``.processes``: the joining and finishing processes applied to the part, defined as a list of +# ``ProcessWithSustainabilityResult`` objects. # +# The environmental footprint of a leaf part includes the sum of the environmental footprints +# associated with the quantity of materials used (see below for details) and processes applied to the +# part. + # #### Materials # -# Materials can include: -# -# - ``processes``: list of primary and secondary processes applied to the mass of material. +# Materials are ``MaterialWithSustainabilityResult`` objects. They include the following properties: # -# The environmental footprint of a material includes the environmental footprint associated with the mass of material -# used and the environmental footprint of all primary and secondary processes applied. +# - ``.processes``: the primary and secondary processes applied to the mass of material, defined as a +# list of ``ProcessWithSustainabilityResult`` objects. # +# The environmental footprint of a material includes the environmental footprint associated with the +# mass of material used and the sum of the environmental footprints of all primary and secondary +# processes applied to the material. + # #### Processes # -# Processes have no children. +# Processes are represented by ``ProcessWithSustainabilityResult`` objects. Processes contain no BoM +# properties. The environmental footprint of a process is just the environmental footprint associated +# with the processes itself. + +# ### The `BomSustainabilityQueryResult.transport` property # -# ### Processing +# The ``BomSustainabilityQueryResult.transport`` property contains the transport stages in the input +# BoM, defined as a list of ``TrasportWithSustainabilityResult`` objects. Transport stages contain no +# BoM properties. The environmental footprint of a traansport stage is just the environmental +# footprint associated with the transport stage itself. + +# ## Process the ``BomSustainabilityQueryResult`` object +# +# In order to visualize the results using [plotly](https://plotly.com/python/), the results will be +# loaded into a [pandas](https://pandas.pydata.org/) ``DataFrame``. # -# In order to visualize the results using [plotly](https://plotly.com/python/), the results will be loaded into a -# [pandas](https://pandas.pydata.org/) ``DataFrame``. +# The following cell defines functions which convert the BoM hierarchical structure into a flat list +# of items. Each function also converts each item into a dictionary of common values that the +# ``DataFrame`` can interpret. # -# Methods defined in the following cell help convert the BoM hierarchical structure into a flat list of items, as well -# as converting each item into a dictionary of common values that the ``DataFrame`` will be able to interpret. -# Importantly, each value in the resulting list includes its ``id`` and ``parent_id``, which are critical to preserve a -# sense of hierarchy. The ``identity`` property is used as an identifier as it is unique across all BoM items, and -# populated even if not initially populated on the BoM items. +# Each row in the DataFrame contains an ``id`` which uniquely identifies the item, and a ``parent_id`` +# which defines the parent item. The ``.identity`` property is used as an identifier as it is unique +# across all BoM items, and populated even if not initially populated on the BoM items. # + def traverse_bom(query_response): @@ -121,6 +154,7 @@ def traverse_bom(query_response): for transport in query_response.transport_stages: yield to_dict(transport, top_level_assembly_id) + def traverse_part(part, parent_id): yield to_dict(part, parent_id) part_id = part.identity @@ -131,11 +165,13 @@ def traverse_part(part, parent_id): for child_process in part.processes: yield to_dict(child_process, part_id) + def traverse_material(material, parent_id): yield to_dict(material, parent_id) for child_process in material.processes: yield to_dict(child_process, parent_id) + from ansys.grantami.bomanalytics._item_results import ( PartWithSustainabilityResult, TransportWithSustainabilityResult, @@ -143,6 +179,7 @@ def traverse_material(material, parent_id): ProcessWithSustainabilityResult, ) + def to_dict(item, parent): record = { "id": item.identity, @@ -160,19 +197,28 @@ def to_dict(item, parent): record.update({"type": "Process", "name": item.name}) return record -records = list(traverse_bom(result)) + # - +# Now call the ``traverse_bom`` function and print the first two dictionaries, representing the root +# part and the first assembly in the BoM. + +records = list(traverse_bom(result)) +records[:2] + +# Now, use the list of dictionaries to create a DataFrame. Display the first five rows of the +# DataFrame with the ``DataFrame.head()`` method. + import pandas as pd -df = pd.DataFrame.from_records( - records, - columns=["type", "parent_id", "id", "name", "embodied energy [MJ]", "climate change [kg CO2-eq]"], -) -df +df = pd.DataFrame.from_records(records) +df.head() -# Finally, visualize the data in a ``sunburst`` hierarchical chart. Colors represent the type of items. Size of -# sections represent the environmental footprint on an item. -# A similar visualization can be performed to represent the climate change property of each item. +# Finally, visualize the data in a ``sunburst`` hierarchical chart: +# +# * The segments are represented hierarchically. The BoM is at the center, and items further down +# the hierarchy are further out in the plot. +# * Item type is represented by color. +# * The size of the segment represents the environmental footprint of that item. # + import plotly.express as px @@ -186,7 +232,12 @@ def to_dict(item, parent): branchvalues="total", color=df["type"], title="Embodied energy [MJ] breakdown", + width=800, + height=800, ) # Disable sorting, so that items appear in the same order as in the BoM. fig.update_traces(sort=False) -fig.show() \ No newline at end of file +fig.show() +# - + + From bc9d467376e9d1d3cdd88156ba8daecd9c45a9f0 Mon Sep 17 00:00:00 2001 From: Andy Grigg Date: Wed, 4 Oct 2023 16:06:07 -0400 Subject: [PATCH 089/275] Fix server name --- examples/4_Sustainability/4-2_BoM_Sustainability.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/examples/4_Sustainability/4-2_BoM_Sustainability.py b/examples/4_Sustainability/4-2_BoM_Sustainability.py index 6c5cd777..e1c2a608 100644 --- a/examples/4_Sustainability/4-2_BoM_Sustainability.py +++ b/examples/4_Sustainability/4-2_BoM_Sustainability.py @@ -25,8 +25,8 @@ # + from ansys.grantami.bomanalytics import Connection -server_url = "http://cdcvdt4intg0002.win.ansys.com/mi_servicelayer" -cxn = Connection(server_url).with_autologon().connect() +server_url = "http://my_grantami_server/mi_servicelayer" +cxn = Connection(server_url).with_credentials("user_name", "password").connect() # - # Next, create a sustainability query. The query accepts a single BoM as argument, as well as optional @@ -238,6 +238,3 @@ def to_dict(item, parent): # Disable sorting, so that items appear in the same order as in the BoM. fig.update_traces(sort=False) fig.show() -# - - - From 0196a5ddaea73bb05cdf5b9d6f4e79781ef9991d Mon Sep 17 00:00:00 2001 From: Andy Grigg Date: Thu, 5 Oct 2023 08:43:54 -0400 Subject: [PATCH 090/275] Tweak working --- examples/4_Sustainability/4-2_BoM_Sustainability.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/examples/4_Sustainability/4-2_BoM_Sustainability.py b/examples/4_Sustainability/4-2_BoM_Sustainability.py index e1c2a608..873ac0cf 100644 --- a/examples/4_Sustainability/4-2_BoM_Sustainability.py +++ b/examples/4_Sustainability/4-2_BoM_Sustainability.py @@ -103,8 +103,8 @@ # ``ProcessWithSustainabilityResult`` objects. # # The environmental footprint of a leaf part includes the sum of the environmental footprints -# associated with the quantity of materials used (see below for details) and processes applied to the -# part. +# associated with the quantity of materials used in the part (see below for details), processes +# applied to the part directly, and processes applied to materials in the part. # #### Materials # @@ -114,8 +114,7 @@ # list of ``ProcessWithSustainabilityResult`` objects. # # The environmental footprint of a material includes the environmental footprint associated with the -# mass of material used and the sum of the environmental footprints of all primary and secondary -# processes applied to the material. +# mass of material used. # #### Processes # From d4d75e482d397c7bc713e60c61af277ed4964b3e Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 5 Oct 2023 15:34:07 +0200 Subject: [PATCH 091/275] Change BoM naming convention --- .../supporting-files/bom-2301-assembly.xml | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/examples/4_Sustainability/supporting-files/bom-2301-assembly.xml b/examples/4_Sustainability/supporting-files/bom-2301-assembly.xml index a76bfdd4..aff71ac2 100644 --- a/examples/4_Sustainability/supporting-files/bom-2301-assembly.xml +++ b/examples/4_Sustainability/supporting-files/bom-2301-assembly.xml @@ -3,17 +3,16 @@ 1 - ProductAssembly - + Part1[ProductAssembly] 1 - SubAssembly + Part1.1[SubAssembly] 1 0.925 - SubSubPartA + Part1.1.A[LeafPart] 100 @@ -57,7 +56,7 @@ 3 0.175 - SubSubPartB + Part1.1.B[LeafPart] 100 @@ -106,7 +105,7 @@ 1 0.610 - SubPartA + Part1.A[LeafPart] 100 @@ -142,7 +141,7 @@ 2 0.495 - SubPartB + Part1.B[LeafPart] 100 @@ -177,7 +176,7 @@ 2 0.520 - SubPartC + Part1.C[LeafPart] 100 @@ -203,7 +202,7 @@ 2 0.012 - SubPartD + Part1.D[LeafPart] 100 @@ -238,9 +237,7 @@ - - Port to airport by truck From ddeba8a3eed0301bc1d5742244a2be8810bd5787 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 5 Oct 2023 15:46:27 +0200 Subject: [PATCH 092/275] Add API link and minor formatting tweaks --- examples/4_Sustainability/4-2_BoM_Sustainability.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/examples/4_Sustainability/4-2_BoM_Sustainability.py b/examples/4_Sustainability/4-2_BoM_Sustainability.py index 873ac0cf..f4f32472 100644 --- a/examples/4_Sustainability/4-2_BoM_Sustainability.py +++ b/examples/4_Sustainability/4-2_BoM_Sustainability.py @@ -66,7 +66,9 @@ # * ``.climate_change`` # # Additional properties are also available for each ``WithSustainabilityResult`` object, -# see the <> for more details. +# see the +# [Sustainability API](https://bomanalytics.grantami.docs.pyansys.com/version/stable/api/sustainability/index.html) for +# more details. # ### The ``BomSustainabilityQueryResult.parts`` property # @@ -76,7 +78,7 @@ # continues recursively to define all parts in the input BoM. These parts can be of two types: # assemblies, or leaf parts. # -# ##### **Assemblies** +# #### **Assemblies** # # Assemblies are ``PartWithSustainabilityResult`` objects that contain sub-parts. Assemblies do not # contain materials directly. @@ -90,7 +92,7 @@ # The environmental footprint of an assembly includes the sum of the environmental footprints of all # sub-parts and processes applied to the assembly. # -# ##### **Leaf parts** +# #### **Leaf parts** # # Leaf parts are ``PartWithSustainabilityResult`` objects that do not include sub-parts. Leaf parts # can contain the materials they are made of as direct children. @@ -106,7 +108,7 @@ # associated with the quantity of materials used in the part (see below for details), processes # applied to the part directly, and processes applied to materials in the part. -# #### Materials +# #### **Materials** # # Materials are ``MaterialWithSustainabilityResult`` objects. They include the following properties: # @@ -116,7 +118,7 @@ # The environmental footprint of a material includes the environmental footprint associated with the # mass of material used. -# #### Processes +# #### **Processes** # # Processes are represented by ``ProcessWithSustainabilityResult`` objects. Processes contain no BoM # properties. The environmental footprint of a process is just the environmental footprint associated From ac4dd2bd658ec2692a04b1cb74c69cc9d6af2ef8 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 5 Oct 2023 15:58:43 +0200 Subject: [PATCH 093/275] Change legend position --- .../4_Sustainability/4-1_BoM_Sustainability_summary.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/examples/4_Sustainability/4-1_BoM_Sustainability_summary.py b/examples/4_Sustainability/4-1_BoM_Sustainability_summary.py index be38a872..41be38c6 100644 --- a/examples/4_Sustainability/4-1_BoM_Sustainability_summary.py +++ b/examples/4_Sustainability/4-1_BoM_Sustainability_summary.py @@ -104,7 +104,7 @@ def plot_footprint(df, title, textinfo="percent+label", hoverinfo="value+name"): ) fig.add_trace(go.Pie(labels=df["Name"], values=df[EE_HEADER], name=ENERGY_UNIT), 1, 1) fig.add_trace(go.Pie(labels=df["Name"], values=df[CC_HEADER], name=MASS_UNIT), 1, 2) - fig.update_layout(title_text=title) + fig.update_layout(title_text=title, legend=dict(orientation="h")) fig.update_traces(textposition="inside", textinfo=textinfo, hoverinfo=hoverinfo) fig.show() @@ -160,7 +160,10 @@ def plot_footprint(df, title, textinfo="percent+label", hoverinfo="value+name"): fig.add_trace( go.Pie(labels=transport_df["Name"], values=transport_df[CC_PER_DISTANCE], name=f"{MASS_UNIT}/{DISTANCE_UNIT}"), 1, 2 ) -fig.update_layout(title_text="Transport stages footprint - Relative to distance travelled") +fig.update_layout( + title_text="Transport stages footprint - Relative to distance travelled", + legend=dict(orientation="h") +) fig.update_traces(textposition="inside", textinfo="percent+label", hoverinfo="value+name") fig.show() @@ -210,6 +213,7 @@ def plot_footprint(df, title, textinfo="percent+label", hoverinfo="value+name"): layout=go.Layout( xaxis=go.layout.XAxis(title="Materials"), yaxis=go.layout.YAxis(title=f"Mass [{MASS_UNIT}]"), + legend=dict(orientation="h") ), ) fig.show() From 2595370929f1dafcbfe27acdd417a10c3a4103fc Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 5 Oct 2023 21:49:21 +0200 Subject: [PATCH 094/275] Uncomment integration tests job --- .github/workflows/ci_cd.yml | 38 ++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/.github/workflows/ci_cd.yml b/.github/workflows/ci_cd.yml index 8b69be2b..01d05ea8 100644 --- a/.github/workflows/ci_cd.yml +++ b/.github/workflows/ci_cd.yml @@ -25,35 +25,35 @@ jobs: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} BOM_OPENAPI_TOKEN: ${{ secrets.BOM_OPENAPI_TOKEN }} -# integration_checks: -# name: Integration checks -# needs: local_checks -# if: ${{ !startsWith( github.event.pull_request.head.ref, 'dependabot/') }} -# uses: ./.github/workflows/server_checks.yml -# secrets: -# AZURE_APP_ID: ${{ secrets.AZURE_APP_ID }} -# AZURE_SECRET: ${{ secrets.AZURE_SECRET }} -# AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }} -# AZURE_RESOURCE_GROUP: ${{ secrets.AZURE_RESOURCE_GROUP }} -# AZURE_VM_NAME: ${{ secrets.AZURE_VM_NAME }} -# TEST_SERVER_URL: ${{ secrets.TEST_SERVER_URL }} -# TEST_SERVER_READ_USER: ${{ secrets.TEST_SERVER_READ_USER }} -# TEST_SERVER_READ_PASS: ${{ secrets.TEST_SERVER_READ_PASS }} -# TEST_SERVER_WRITE_USER: ${{ secrets.TEST_SERVER_WRITE_USER }} -# TEST_SERVER_WRITE_PASS: ${{ secrets.TEST_SERVER_WRITE_PASS }} -# BOM_OPENAPI_TOKEN: ${{ secrets.BOM_OPENAPI_TOKEN }} + integration_checks: + name: Integration checks + needs: local_checks + if: ${{ !startsWith( github.event.pull_request.head.ref, 'dependabot/') }} + uses: ./.github/workflows/server_checks.yml + secrets: + AZURE_APP_ID: ${{ secrets.AZURE_APP_ID }} + AZURE_SECRET: ${{ secrets.AZURE_SECRET }} + AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }} + AZURE_RESOURCE_GROUP: ${{ secrets.AZURE_RESOURCE_GROUP }} + AZURE_VM_NAME: ${{ secrets.AZURE_VM_NAME }} + TEST_SERVER_URL: ${{ secrets.TEST_SERVER_URL }} + TEST_SERVER_READ_USER: ${{ secrets.TEST_SERVER_READ_USER }} + TEST_SERVER_READ_PASS: ${{ secrets.TEST_SERVER_READ_PASS }} + TEST_SERVER_WRITE_USER: ${{ secrets.TEST_SERVER_WRITE_USER }} + TEST_SERVER_WRITE_PASS: ${{ secrets.TEST_SERVER_WRITE_PASS }} + BOM_OPENAPI_TOKEN: ${{ secrets.BOM_OPENAPI_TOKEN }} doc-deploy-dev: name: "Deploy development documentation" runs-on: ubuntu-latest - needs: [ local_checks ] + needs: [ integration_checks ] if: github.event_name == 'push' && !contains(github.ref, 'refs/tags') steps: - uses: ansys/actions/doc-deploy-dev@v4 with: cname: ${{ env.DOCUMENTATION_CNAME }} token: ${{ secrets.GITHUB_TOKEN }} - doc-artifact-name: Documentation-html-no-examples + doc-artifact-name: Documentation-html # Release: # if: contains(github.ref, 'refs/tags') && github.event_name == 'push' From 0de8471179e93048434a6738aacf539684dfcf5f Mon Sep 17 00:00:00 2001 From: Andy Grigg Date: Mon, 9 Oct 2023 17:49:37 -0400 Subject: [PATCH 095/275] Make sure this class isn't collected by pytest --- tests/test_bom_handler.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_bom_handler.py b/tests/test_bom_handler.py index e07e450b..b6f71835 100644 --- a/tests/test_bom_handler.py +++ b/tests/test_bom_handler.py @@ -10,7 +10,7 @@ from ansys.grantami.bomanalytics.bom_types import BaseType, BillOfMaterials -class TestableBoMHandler(BoMHandler): +class _TestableBoMHandler(BoMHandler): def __init__(self, default_namespace: str, namespace_mapping: Dict[str, str]): super().__init__() self._default_namespace = default_namespace @@ -67,7 +67,7 @@ def test_roundtrip(self, bom_filename: str): with open(bom_path, "r", encoding="utf8") as fp: input_bom = fp.read() - bom_handler = TestableBoMHandler( + bom_handler = _TestableBoMHandler( default_namespace=self._default_namespace, namespace_mapping=self._namespace_map ) deserialized_bom = bom_handler.load_bom_from_text(input_bom) From 9803825a560f0d0115cb3f138175d23b2d994e8b Mon Sep 17 00:00:00 2001 From: Andy Grigg Date: Mon, 9 Oct 2023 18:28:02 -0400 Subject: [PATCH 096/275] Rename with_legislations to with_legislation_ids --- .gitignore | 2 ++ README.rst | 2 +- doc/source/api/impacted_substances/bom.rst | 2 +- .../api/impacted_substances/materials.rst | 2 +- doc/source/api/impacted_substances/parts.rst | 2 +- .../api/impacted_substances/specifications.rst | 2 +- doc/source/index/quick_code.rst | 2 +- examples/0_Getting_started.py | 6 +++--- .../1-1_Materials_impacted_substances.py | 2 +- .../1-2_Parts_impacted_substances.py | 2 +- .../3-1_Working_with_XML_BoMs.py | 4 ++-- src/ansys/grantami/bomanalytics/queries.py | 14 +++++++------- tests/test_integration_tests.py | 18 +++++++++--------- tests/test_mocked_responses/test_materials.py | 2 +- tests/test_mocked_responses/test_messages.py | 4 ++-- tests/test_mocked_responses/test_parts.py | 2 +- .../test_specifications.py | 2 +- .../test_query_builders/test_common_queries.py | 8 ++++---- 18 files changed, 40 insertions(+), 38 deletions(-) diff --git a/.gitignore b/.gitignore index c7019750..edb9824c 100644 --- a/.gitignore +++ b/.gitignore @@ -59,3 +59,5 @@ doc/build # Pypi things deps + +venv/ \ No newline at end of file diff --git a/README.rst b/README.rst index 78a7d0b6..7d268e3d 100644 --- a/README.rst +++ b/README.rst @@ -49,7 +49,7 @@ Here's a brief example of how to use PyGranta BoM Analytics: >>> query = ( ... queries.MaterialImpactedSubstancesQuery() ... .with_material_ids(['plastic-abs-pvc-flame']) - ... .with_legislations(['Candidate_AnnexXV']) + ... .with_legislation_ids(['Candidate_AnnexXV']) ... ) # Print out the result from the query. diff --git a/doc/source/api/impacted_substances/bom.rst b/doc/source/api/impacted_substances/bom.rst index ff1bf2f3..533b4bce 100644 --- a/doc/source/api/impacted_substances/bom.rst +++ b/doc/source/api/impacted_substances/bom.rst @@ -11,7 +11,7 @@ Query definition .. autoclass:: ansys.grantami.bomanalytics.queries.BomImpactedSubstancesQuery :members: - .. automethod:: with_legislations + .. automethod:: with_legislation_ids .. automethod:: with_bom .. _ref_grantami_bomanalytics_api_impactedsubstances_bom_queryresult: diff --git a/doc/source/api/impacted_substances/materials.rst b/doc/source/api/impacted_substances/materials.rst index e100b95e..443a688a 100644 --- a/doc/source/api/impacted_substances/materials.rst +++ b/doc/source/api/impacted_substances/materials.rst @@ -14,7 +14,7 @@ Query definition .. automethod:: with_record_history_ids .. automethod:: with_material_ids .. automethod:: with_batch_size - .. automethod:: with_legislations + .. automethod:: with_legislation_ids Query result ~~~~~~~~~~~~ diff --git a/doc/source/api/impacted_substances/parts.rst b/doc/source/api/impacted_substances/parts.rst index 3de4d60d..0dfbfdce 100644 --- a/doc/source/api/impacted_substances/parts.rst +++ b/doc/source/api/impacted_substances/parts.rst @@ -9,7 +9,7 @@ Query definition .. autoclass:: ansys.grantami.bomanalytics.queries.PartImpactedSubstancesQuery :members: - .. automethod:: with_legislations + .. automethod:: with_legislation_ids .. automethod:: with_part_numbers .. automethod:: with_record_guids .. automethod:: with_record_history_guids diff --git a/doc/source/api/impacted_substances/specifications.rst b/doc/source/api/impacted_substances/specifications.rst index c963b52f..fe54bae2 100644 --- a/doc/source/api/impacted_substances/specifications.rst +++ b/doc/source/api/impacted_substances/specifications.rst @@ -9,7 +9,7 @@ Query definition .. autoclass:: ansys.grantami.bomanalytics.queries.SpecificationImpactedSubstancesQuery :members: - .. automethod:: with_legislations + .. automethod:: with_legislation_ids .. automethod:: with_specification_ids .. automethod:: with_record_guids .. automethod:: with_record_history_guids diff --git a/doc/source/index/quick_code.rst b/doc/source/index/quick_code.rst index c6e9e339..e2d53951 100644 --- a/doc/source/index/quick_code.rst +++ b/doc/source/index/quick_code.rst @@ -13,7 +13,7 @@ high concern) in an ABS/PVC blend: >>> query = ( ... queries.MaterialImpactedSubstancesQuery() ... .with_material_ids(['plastic-abs-pvc-flame']) - ... .with_legislations(['EU REACH - The Candidate List']) + ... .with_legislation_ids(['Candidate_AnnexXV']) ... ) >>> result = cxn.run(query) >>> pprint(result.impacted_substances) diff --git a/examples/0_Getting_started.py b/examples/0_Getting_started.py index abad359e..04b73a04 100644 --- a/examples/0_Getting_started.py +++ b/examples/0_Getting_started.py @@ -86,7 +86,7 @@ # ``Candidate_AnnexXV`` is the ID of the ``EU REACH - The Candidate List`` legislation. # + tags=[] -query = query.with_legislations(["Candidate_AnnexXV"]) +query = query.with_legislation_ids(["Candidate_AnnexXV"]) query # - @@ -94,7 +94,7 @@ # consolidate the cells above into a single step: # + tags=[] -query = queries.MaterialImpactedSubstancesQuery().with_material_ids(["plastic-abs-high-impact"]).with_legislations(["Candidate_AnnexXV"]) # noqa: E501 +query = queries.MaterialImpactedSubstancesQuery().with_material_ids(["plastic-abs-high-impact"]).with_legislation_ids(["Candidate_AnnexXV"]) # noqa: E501 query # - @@ -106,7 +106,7 @@ query = ( queries.MaterialImpactedSubstancesQuery() .with_material_ids(["plastic-abs-high-impact"]) - .with_legislations(["Candidate_AnnexXV"]) + .with_legislation_ids(["Candidate_AnnexXV"]) ) query # - diff --git a/examples/1_Impacted_Substances_Queries/1-1_Materials_impacted_substances.py b/examples/1_Impacted_Substances_Queries/1-1_Materials_impacted_substances.py index 4501429a..3cd90f78 100644 --- a/examples/1_Impacted_Substances_Queries/1-1_Materials_impacted_substances.py +++ b/examples/1_Impacted_Substances_Queries/1-1_Materials_impacted_substances.py @@ -54,7 +54,7 @@ mat_query = ( queries.MaterialImpactedSubstancesQuery() .with_material_ids([PPS_ID, PC_ID]) - .with_legislations([REACH, SIN_LIST]) + .with_legislation_ids([REACH, SIN_LIST]) ) # - diff --git a/examples/1_Impacted_Substances_Queries/1-2_Parts_impacted_substances.py b/examples/1_Impacted_Substances_Queries/1-2_Parts_impacted_substances.py index f514aea6..7dd1e3c2 100644 --- a/examples/1_Impacted_Substances_Queries/1-2_Parts_impacted_substances.py +++ b/examples/1_Impacted_Substances_Queries/1-2_Parts_impacted_substances.py @@ -65,7 +65,7 @@ part_query = ( queries.PartImpactedSubstancesQuery() .with_part_numbers([DRILL, WING]) - .with_legislations([SIN_LIST, REACH]) + .with_legislation_ids([SIN_LIST, REACH]) ) # - diff --git a/examples/3_Advanced_Topics/3-1_Working_with_XML_BoMs.py b/examples/3_Advanced_Topics/3-1_Working_with_XML_BoMs.py index ceb015a7..bc20f60e 100644 --- a/examples/3_Advanced_Topics/3-1_Working_with_XML_BoMs.py +++ b/examples/3_Advanced_Topics/3-1_Working_with_XML_BoMs.py @@ -94,7 +94,7 @@ def xml_validator(xml: str, schema_file: str) -> bool: impacted_substances_query = ( queries.BomImpactedSubstancesQuery() .with_bom(valid_xml) - .with_legislations([SIN_LIST]) + .with_legislation_ids([SIN_LIST]) ) # - @@ -162,7 +162,7 @@ def xml_validator(xml: str, schema_file: str) -> bool: broken_query = ( queries.BomImpactedSubstancesQuery() .with_bom(invalid_xml) - .with_legislations([SIN_LIST]) + .with_legislation_ids([SIN_LIST]) ) RUN_QUERY = False diff --git a/src/ansys/grantami/bomanalytics/queries.py b/src/ansys/grantami/bomanalytics/queries.py index cf4494ed..62ff4dcf 100644 --- a/src/ansys/grantami/bomanalytics/queries.py +++ b/src/ansys/grantami/bomanalytics/queries.py @@ -744,14 +744,14 @@ def __repr__(self) -> str: return result @validate_argument_type([str], {str}) - def with_legislations(self: _ImpactedSubstanceQuery, legislation_names: List[str]) -> _ImpactedSubstanceQuery: + def with_legislation_ids(self: _ImpactedSubstanceQuery, legislation_ids: List[str]) -> _ImpactedSubstanceQuery: """Add a list or set of legislations to retrieve the impacted substances for. Legislations are identified based on their ``Legislation ID`` attribute value. Parameters ---------- - legislation_names : list[str] | set[str] + legislation_ids : list[str] | set[str] List or set of legislation ids. Returns @@ -765,7 +765,7 @@ def with_legislations(self: _ImpactedSubstanceQuery, legislation_names: List[str Error to raise if the method is called with values that do not match the types described earlier. """ - self._legislations.extend(legislation_names) + self._legislations.extend(legislation_ids) return self def _run_query(self, api_instance: api.ImpactedSubstancesApi, static_arguments: Dict) -> ResultBaseClass: @@ -912,7 +912,7 @@ class MaterialImpactedSubstancesQuery(_ImpactedSubstanceMixin, _MaterialQueryBui >>> query = ( ... MaterialImpactedSubstancesQuery() ... .with_material_ids(['elastomer-butadienerubber', 'NBR-100']) - ... .with_legislations(["Candidate_AnnexXV"]) + ... .with_legislation_ids(["Candidate_AnnexXV"]) ... ) >>> cxn.run(query) @@ -1018,7 +1018,7 @@ class PartImpactedSubstancesQuery(_ImpactedSubstanceMixin, _PartQueryBuilder): >>> query = ( ... PartImpactedSubstancesQuery() ... .with_part_numbers(['DRILL', 'FLRY34']) - ... .with_legislations(["Candidate_AnnexXV"]) + ... .with_legislation_ids(["Candidate_AnnexXV"]) ... ) >>> cxn.run(query) @@ -1127,7 +1127,7 @@ class SpecificationImpactedSubstancesQuery(_ImpactedSubstanceMixin, _Specificati >>> query = ( ... SpecificationImpactedSubstancesQuery() ... .with_specification_ids(['MIL-A-8625', 'PSP101']) - ... .with_legislations(["Candidate_AnnexXV"]) + ... .with_legislation_ids(["Candidate_AnnexXV"]) ... ) >>> cxn.run(query) >> query = ( ... BomImpactedSubstancesQuery() ... .with_bom(">> cxn.run(query) diff --git a/tests/test_integration_tests.py b/tests/test_integration_tests.py index 921b6f1e..06d908cb 100644 --- a/tests/test_integration_tests.py +++ b/tests/test_integration_tests.py @@ -14,7 +14,7 @@ class TestMaterialQueries: ids = ["plastic-abs-pvc-flame", "plastic-pmma-pc"] def test_impacted_substances(self, connection_with_db_variants): - query = queries.MaterialImpactedSubstancesQuery().with_material_ids(self.ids).with_legislations(LEGISLATIONS) + query = queries.MaterialImpactedSubstancesQuery().with_material_ids(self.ids).with_legislation_ids(LEGISLATIONS) response = connection_with_db_variants.run(query) assert response.impacted_substances assert response.impacted_substances_by_legislation @@ -32,7 +32,7 @@ class TestPartQueries: ids = ["DRILL", "asm_flap_mating"] def test_impacted_substances(self, connection_with_db_variants): - query = queries.PartImpactedSubstancesQuery().with_part_numbers(self.ids).with_legislations(LEGISLATIONS) + query = queries.PartImpactedSubstancesQuery().with_part_numbers(self.ids).with_legislation_ids(LEGISLATIONS) response = connection_with_db_variants.run(query) assert response.impacted_substances @@ -55,7 +55,7 @@ def test_impacted_substances(self, connection_with_db_variants): query = ( queries.SpecificationImpactedSubstancesQuery() .with_specification_ids(self.ids) - .with_legislations(LEGISLATIONS) + .with_legislation_ids(LEGISLATIONS) ) response = connection_with_db_variants.run(query) @@ -95,7 +95,7 @@ def bom(self, connection_with_db_variants): return sample_bom_complex def test_impacted_substances(self, bom, connection_with_db_variants): - query = queries.BomImpactedSubstancesQuery().with_bom(bom).with_legislations(LEGISLATIONS) + query = queries.BomImpactedSubstancesQuery().with_bom(bom).with_legislation_ids(LEGISLATIONS) response = connection_with_db_variants.run(query) assert response.impacted_substances @@ -116,14 +116,14 @@ def connection_missing_db(self, connection): return connection def test_missing_database_raises_grantami_exception(self, connection_missing_db): - query = queries.MaterialImpactedSubstancesQuery().with_material_ids(["mat_id"]).with_legislations(LEGISLATIONS) + query = queries.MaterialImpactedSubstancesQuery().with_material_ids(["mat_id"]).with_legislation_ids(LEGISLATIONS) with pytest.raises(GrantaMIException) as e: connection_missing_db.run(query) assert str(e.value) == "None of the record references resolved to material records in 'MI_Missing_Database'." def test_missing_table_raises_grantami_exception(connection): - query = queries.BomImpactedSubstancesQuery().with_bom(sample_bom_custom_db).with_legislations(LEGISLATIONS) + query = queries.BomImpactedSubstancesQuery().with_bom(sample_bom_custom_db).with_legislation_ids(LEGISLATIONS) with pytest.raises(GrantaMIException) as e: connection.run(query) assert "Table name" in str(e.value) and "not found in database" in str(e.value) @@ -147,7 +147,7 @@ def _run_query(self, connection): mat_query = ( queries.MaterialImpactedSubstancesQuery() .with_material_ids([MATERIAL_ID]) - .with_legislations([LEGISLATION_ID]) + .with_legislation_ids([LEGISLATION_ID]) ) results = connection.run(mat_query) return results @@ -176,7 +176,7 @@ def test_legislation_is_affected_with_link_depth_one(self, connection_custom_db) query = ( queries.SpecificationImpactedSubstancesQuery() .with_specification_ids(self.spec_ids) - .with_legislations(self.legislation_ids) + .with_legislation_ids(self.legislation_ids) ) response = connection_custom_db.run(query) assert len(response.impacted_substances) == 1 @@ -194,7 +194,7 @@ def test_legislation_is_not_affected_with_no_links(self, connection_custom_db): query = ( queries.SpecificationImpactedSubstancesQuery() .with_specification_ids(self.spec_ids) - .with_legislations(self.legislation_ids) + .with_legislation_ids(self.legislation_ids) ) response = connection_custom_db.run(query) assert len(response.impacted_substances) == 0 diff --git a/tests/test_mocked_responses/test_materials.py b/tests/test_mocked_responses/test_materials.py index 6ac7057b..570a1437 100644 --- a/tests/test_mocked_responses/test_materials.py +++ b/tests/test_mocked_responses/test_materials.py @@ -10,7 +10,7 @@ class TestImpactedSubstances(BaseMockTester): query = ( - queries.MaterialImpactedSubstancesQuery().with_legislations(["Fake legislation"]).with_material_ids(["Fake ID"]) + queries.MaterialImpactedSubstancesQuery().with_legislation_ids(["Fake legislation"]).with_material_ids(["Fake ID"]) ) mock_key = GetImpactedSubstancesForMaterialsResponse.__name__ diff --git a/tests/test_mocked_responses/test_messages.py b/tests/test_mocked_responses/test_messages.py index 479fd27b..3ee7ae45 100644 --- a/tests/test_mocked_responses/test_messages.py +++ b/tests/test_mocked_responses/test_messages.py @@ -26,7 +26,7 @@ def test_critical_error_raises_exception(self, mock_connection, caplog): def test_non_critical_error_printed_to_stdout(self, mock_connection, severity, caplog): self.query = ( queries.MaterialImpactedSubstancesQuery() - .with_legislations(["Fake legislation"]) + .with_legislation_ids(["Fake legislation"]) .with_material_ids(["Fake ID"]) ) mock_key = GetImpactedSubstancesForMaterialsResponse.__name__ @@ -45,7 +45,7 @@ def test_non_critical_error_printed_to_stdout(self, mock_connection, severity, c def test_info(self, mock_connection, caplog): self.query = ( queries.MaterialImpactedSubstancesQuery() - .with_legislations(["Fake legislation"]) + .with_legislation_ids(["Fake legislation"]) .with_material_ids(["Fake ID"]) ) mock_key = GetImpactedSubstancesForMaterialsResponse.__name__ diff --git a/tests/test_mocked_responses/test_parts.py b/tests/test_mocked_responses/test_parts.py index 486142dc..2af35c79 100644 --- a/tests/test_mocked_responses/test_parts.py +++ b/tests/test_mocked_responses/test_parts.py @@ -17,7 +17,7 @@ class TestImpactedSubstances(BaseMockTester): query = ( queries.PartImpactedSubstancesQuery() - .with_legislations(["Fake legislation"]) + .with_legislation_ids(["Fake legislation"]) .with_part_numbers(["Fake part number"]) ) mock_key = GetImpactedSubstancesForPartsResponse.__name__ diff --git a/tests/test_mocked_responses/test_specifications.py b/tests/test_mocked_responses/test_specifications.py index b15485eb..d649ef6a 100644 --- a/tests/test_mocked_responses/test_specifications.py +++ b/tests/test_mocked_responses/test_specifications.py @@ -17,7 +17,7 @@ class TestImpactedSubstances(BaseMockTester): query = ( queries.SpecificationImpactedSubstancesQuery() - .with_legislations(["Fake legislation"]) + .with_legislation_ids(["Fake legislation"]) .with_specification_ids(["Fake ID"]) ) mock_key = GetImpactedSubstancesForSpecificationsResponse.__name__ diff --git a/tests/test_query_builders/test_common_queries.py b/tests/test_query_builders/test_common_queries.py index 0545d60a..b0d468f3 100644 --- a/tests/test_query_builders/test_common_queries.py +++ b/tests/test_query_builders/test_common_queries.py @@ -166,7 +166,7 @@ def test_add_indicators_wrong_types_type_error(self, query_type): def test_add_legislations_attribute_error(self, query_type): with pytest.raises(AttributeError): - query_type().with_legislations(LEGISLATIONS) + query_type().with_legislation_ids(LEGISLATIONS) @pytest.mark.parametrize( @@ -180,15 +180,15 @@ def test_add_legislations_attribute_error(self, query_type): ) class TestSubstanceQueries: def test_add_legislations_correct_types(self, query_type): - query = query_type().with_legislations(LEGISLATIONS) + query = query_type().with_legislation_ids(LEGISLATIONS) assert len(query._legislations) == len(LEGISLATIONS) for idx, legislation in enumerate(LEGISLATIONS): assert query._legislations[idx] == legislation def test_add_legislations_wrong_types_type_error(self, query_type): with pytest.raises(TypeError): - query_type().with_legislations(INDICATORS) - query_type().with_legislations(legislations=INDICATORS) + query_type().with_legislation_ids(INDICATORS) + query_type().with_legislation_ids(legislations=INDICATORS) def test_add_indicators_attribute_error(self, query_type): with pytest.raises(AttributeError): From e6bc095113f9a695da24e8dcb6027d3a5db70da6 Mon Sep 17 00:00:00 2001 From: Andy Grigg Date: Mon, 9 Oct 2023 18:34:46 -0400 Subject: [PATCH 097/275] Add trailing space --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index edb9824c..e1cefe01 100644 --- a/.gitignore +++ b/.gitignore @@ -60,4 +60,4 @@ doc/build # Pypi things deps -venv/ \ No newline at end of file +venv/ From e93a33aa7fa2edf75d0aa49ba93fb4b0251667b5 Mon Sep 17 00:00:00 2001 From: Doug Addy Date: Tue, 10 Oct 2023 14:28:03 +0100 Subject: [PATCH 098/275] Rename external_id on part to external_identity --- .../bomanalytics/bom_types/_bom_types.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py b/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py index 89322823..16821877 100644 --- a/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py +++ b/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py @@ -2088,7 +2088,7 @@ class Part(InternalIdentifierMixin, BaseType): ("MIRecordReference", "mi_part_reference", "MIPartReference"), ] - _simple_values = [("part_number", "PartNumber"), ("part_name", "Name"), ("external_id", "ExternalIdentity")] + _simple_values = [("part_number", "PartNumber"), ("part_name", "Name"), ("external_identity", "ExternalIdentity")] _list_props = [ ("Part", "components", "Components", "http://www.grantadesign.com/23/01/BillOfMaterialsEco", "Part"), @@ -2121,7 +2121,7 @@ def __init__( mi_part_reference: Optional[MIRecordReference] = None, non_mi_part_reference: Optional[Union[str, int]] = None, part_name: Optional[str] = None, - external_id: Optional[str] = None, + external_identity: Optional[str] = None, components: Optional[List[Part]] = None, specifications: Optional[List[Specification]] = None, materials: Optional[List[Material]] = None, @@ -2156,7 +2156,7 @@ def __init__( A reference to a part stored in another system, for informational purposes only. part_name: Optional[str] Display name for the part. - external_id: Optional[str] + external_identity: Optional[str] A temporary reference populated and used by applications to refer to the item within the BoM. components: List[Part] List of subcomponents for this part. @@ -2183,7 +2183,7 @@ def __init__( self.non_mi_part_reference = non_mi_part_reference self.part_number = part_number self.part_name = part_name - self.external_id = external_id + self.external_identity = external_identity if components is None: components = [] self.components = components @@ -2350,7 +2350,7 @@ def part_name(self, value: Optional[str]) -> None: self._name = value @property - def external_id(self) -> Optional[str]: + def external_identity(self) -> Optional[str]: """ A temporary reference populated and used by applications to refer to the item within the BoM. @@ -2358,11 +2358,11 @@ def external_id(self) -> Optional[str]: ------- Optional[str] """ - return self._external_id + return self._external_identity - @external_id.setter - def external_id(self, value: Optional[str]) -> None: - self._external_id = value + @external_identity.setter + def external_identity(self, value: Optional[str]) -> None: + self._external_identity = value @property def components(self) -> List[Part]: From 7fd10a610c26a016da530c75a3a614024c76fd69 Mon Sep 17 00:00:00 2001 From: Andy Grigg Date: Tue, 10 Oct 2023 12:54:16 -0400 Subject: [PATCH 099/275] Enforce keywords for indicator constructors --- src/ansys/grantami/bomanalytics/indicators.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/ansys/grantami/bomanalytics/indicators.py b/src/ansys/grantami/bomanalytics/indicators.py index 4e39635f..7e48758d 100644 --- a/src/ansys/grantami/bomanalytics/indicators.py +++ b/src/ansys/grantami/bomanalytics/indicators.py @@ -431,6 +431,7 @@ class RoHSIndicator(_Indicator): def __init__( self, + *, name: str, legislation_ids: List[str], default_threshold_percentage: Optional[float] = None, @@ -526,6 +527,7 @@ class WatchListIndicator(_Indicator): def __init__( self, + *, name: str, legislation_ids: List[str], default_threshold_percentage: Optional[float] = None, From 6d0214b62eae0f297523d00d3dc9eaa41741c922 Mon Sep 17 00:00:00 2001 From: Andy Grigg Date: Tue, 10 Oct 2023 12:57:05 -0400 Subject: [PATCH 100/275] Run black --- tests/test_integration_tests.py | 4 +++- tests/test_mocked_responses/test_materials.py | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/tests/test_integration_tests.py b/tests/test_integration_tests.py index 06d908cb..4e3ec8bb 100644 --- a/tests/test_integration_tests.py +++ b/tests/test_integration_tests.py @@ -116,7 +116,9 @@ def connection_missing_db(self, connection): return connection def test_missing_database_raises_grantami_exception(self, connection_missing_db): - query = queries.MaterialImpactedSubstancesQuery().with_material_ids(["mat_id"]).with_legislation_ids(LEGISLATIONS) + query = ( + queries.MaterialImpactedSubstancesQuery().with_material_ids(["mat_id"]).with_legislation_ids(LEGISLATIONS) + ) with pytest.raises(GrantaMIException) as e: connection_missing_db.run(query) assert str(e.value) == "None of the record references resolved to material records in 'MI_Missing_Database'." diff --git a/tests/test_mocked_responses/test_materials.py b/tests/test_mocked_responses/test_materials.py index 570a1437..5a401942 100644 --- a/tests/test_mocked_responses/test_materials.py +++ b/tests/test_mocked_responses/test_materials.py @@ -10,7 +10,9 @@ class TestImpactedSubstances(BaseMockTester): query = ( - queries.MaterialImpactedSubstancesQuery().with_legislation_ids(["Fake legislation"]).with_material_ids(["Fake ID"]) + queries.MaterialImpactedSubstancesQuery() + .with_legislation_ids(["Fake legislation"]) + .with_material_ids(["Fake ID"]) ) mock_key = GetImpactedSubstancesForMaterialsResponse.__name__ From 716dcfbd2f91b3b6ece7513f24b0b4d4479fa4c3 Mon Sep 17 00:00:00 2001 From: Andy Grigg Date: Tue, 10 Oct 2023 13:41:54 -0400 Subject: [PATCH 101/275] Copy check_server from recordlists --- cicd/check_server.py | 35 +++++++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/cicd/check_server.py b/cicd/check_server.py index 45f03aa6..500035ae 100644 --- a/cicd/check_server.py +++ b/cicd/check_server.py @@ -1,10 +1,12 @@ -import requests -from requests.auth import HTTPBasicAuth -import os -import json -import time from functools import wraps +import json import logging +import os +import platform +import time + +import requests +from requests.auth import HTTPBasicAuth logging.basicConfig(level=logging.INFO) logger = logging.getLogger() @@ -34,12 +36,25 @@ def wrapper(*args, **kwargs): @block_until_server_is_ok def check_status(url: str, auth_header: HTTPBasicAuth) -> bool: + python_implementation = platform.python_implementation() + python_version = platform.python_version() + os_version = platform.platform() + user_agent = f"check_server.py {python_implementation}/{python_version} ({os_version})" + try: - response = requests.get(url + "/Health/v2.svc/", auth=auth_header) - except requests.exceptions.RequestException: - # This generally won't happen in normal operation. But if a RequestException happens we want to make sure we - # handle it and try again. - # If MI isn't running we'll generally get a 5xx status from the gateway instead, which is handled below. + response = requests.get( + url + "/Health/v2.svc/", + auth=auth_header, + headers={ + "User-Agent": user_agent, + }, + ) + except requests.exceptions.RequestException as e: + # This generally won't happen in normal operation. But if a RequestException happens we want + # to make sure we handle it and try again. + # If MI isn't running we'll generally get a 5xx status from the gateway instead, which is + # handled below. + logger.error(e) return False logger.info(f"Received {response.status_code} response.") if response.status_code != 200: From 33acecf275d1bb47c5fac61b1a2a55339e5c81d8 Mon Sep 17 00:00:00 2001 From: Andy Grigg Date: Tue, 10 Oct 2023 13:54:40 -0400 Subject: [PATCH 102/275] Add variable to disable vm state management --- .github/workflows/ci_cd.yml | 15 +++------------ .github/workflows/server_checks.yml | 11 ++++++++++- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/ci_cd.yml b/.github/workflows/ci_cd.yml index 01d05ea8..e442c7e0 100644 --- a/.github/workflows/ci_cd.yml +++ b/.github/workflows/ci_cd.yml @@ -30,18 +30,9 @@ jobs: needs: local_checks if: ${{ !startsWith( github.event.pull_request.head.ref, 'dependabot/') }} uses: ./.github/workflows/server_checks.yml - secrets: - AZURE_APP_ID: ${{ secrets.AZURE_APP_ID }} - AZURE_SECRET: ${{ secrets.AZURE_SECRET }} - AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }} - AZURE_RESOURCE_GROUP: ${{ secrets.AZURE_RESOURCE_GROUP }} - AZURE_VM_NAME: ${{ secrets.AZURE_VM_NAME }} - TEST_SERVER_URL: ${{ secrets.TEST_SERVER_URL }} - TEST_SERVER_READ_USER: ${{ secrets.TEST_SERVER_READ_USER }} - TEST_SERVER_READ_PASS: ${{ secrets.TEST_SERVER_READ_PASS }} - TEST_SERVER_WRITE_USER: ${{ secrets.TEST_SERVER_WRITE_USER }} - TEST_SERVER_WRITE_PASS: ${{ secrets.TEST_SERVER_WRITE_PASS }} - BOM_OPENAPI_TOKEN: ${{ secrets.BOM_OPENAPI_TOKEN }} + with: + skip-vm-management: ${{ vars.SKIP_VM_MANAGEMENT == 'true' }} + secrets: inherit doc-deploy-dev: name: "Deploy development documentation" diff --git a/.github/workflows/server_checks.yml b/.github/workflows/server_checks.yml index be7b6e29..66e946a5 100644 --- a/.github/workflows/server_checks.yml +++ b/.github/workflows/server_checks.yml @@ -1,5 +1,13 @@ on: workflow_call: + inputs: + skip-vm-management: + description: > + Whether to skip or not the start up of the virtual machine. Default + value is ``false``. + required: false + default: false + type: boolean secrets: AZURE_APP_ID: required: true @@ -40,6 +48,7 @@ jobs: - name: Start VM with Azure CLI id: azure_cli uses: azure/CLI@v1 + if: ${{ !(inputs.skip-vm-management)}} with: azcliversion: 2.32.0 inlineScript: | @@ -164,7 +173,7 @@ jobs: name: Stop Azure VM runs-on: ubuntu-latest needs: docs - if: always() + if: ${{ always() && !(inputs.skip-vm-management)}} steps: - name: Stop Azure VM From 606b645134a1c3bc78a4501c0cb7b6f2f9779967 Mon Sep 17 00:00:00 2001 From: Andy Grigg Date: Tue, 10 Oct 2023 15:06:38 -0400 Subject: [PATCH 103/275] Fix error message --- tests/test_integration_tests.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_integration_tests.py b/tests/test_integration_tests.py index 4e3ec8bb..349c6ccb 100644 --- a/tests/test_integration_tests.py +++ b/tests/test_integration_tests.py @@ -121,7 +121,7 @@ def test_missing_database_raises_grantami_exception(self, connection_missing_db) ) with pytest.raises(GrantaMIException) as e: connection_missing_db.run(query) - assert str(e.value) == "None of the record references resolved to material records in 'MI_Missing_Database'." + assert str(e.value) == "DatabaseException encountered: Database with key 'MI_Missing_Database' does not exist." def test_missing_table_raises_grantami_exception(connection): From 47061ad9eabe3d246d2980fa254edd77216dc5d8 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Mon, 9 Oct 2023 15:56:24 +0200 Subject: [PATCH 104/275] Fix typo --- .../3_Advanced_Topics/3-3_Database-specific_configuration.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/3_Advanced_Topics/3-3_Database-specific_configuration.py b/examples/3_Advanced_Topics/3-3_Database-specific_configuration.py index 2d8a2336..9d3e833e 100644 --- a/examples/3_Advanced_Topics/3-3_Database-specific_configuration.py +++ b/examples/3_Advanced_Topics/3-3_Database-specific_configuration.py @@ -21,7 +21,7 @@ # - If the database key or table names have been modified from their default values, these must be set on the # ``Connection`` object. # - If the number of linked records is very large, the batch sizes should be changed for each query. For more -# informatioon, see [Batching requests](../../api/batching.rst). +# information, see [Batching requests](../../api/batching.rst). # ## Specify a custom database key or table name From b0e3c52fc32ae37e2f452fc43745699e43c91bba Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Tue, 10 Oct 2023 15:53:35 +0200 Subject: [PATCH 105/275] Use absolute masses for secondary processes and use floats --- .../supporting-files/bom-2301-assembly.xml | 58 +++++++++---------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/examples/4_Sustainability/supporting-files/bom-2301-assembly.xml b/examples/4_Sustainability/supporting-files/bom-2301-assembly.xml index aff71ac2..8ccfffd9 100644 --- a/examples/4_Sustainability/supporting-files/bom-2301-assembly.xml +++ b/examples/4_Sustainability/supporting-files/bom-2301-assembly.xml @@ -2,20 +2,20 @@ - 1 + 1.0 Part1[ProductAssembly] - 1 + 1.0 Part1.1[SubAssembly] - 1 + 1.0 0.925 Part1.1.A[LeafPart] - 100 + 100.0 MI_Restricted_Substances 2086f56a-4f4d-4850-9891-3d6ad155d1f9 @@ -29,7 +29,7 @@ Primary processing, Casting Mass - 100 + 100.0 @@ -38,7 +38,7 @@ Machining, coarse MassRemoved - 8.0 + 0.0808 @@ -47,19 +47,19 @@ Machining, fine MassRemoved - 0.5 + 0.00465 - 3 + 3.0 0.175 Part1.1.B[LeafPart] - 100 + 100.0 MI_Restricted_Substances 2086f56a-4f4d-4850-9891-3d6ad155d1f9 @@ -73,7 +73,7 @@ Primary processing, Casting Mass - 100 + 100.0 @@ -83,7 +83,7 @@ Machining, fine Machining, fine MassRemoved - 2.0 + 0.0035 @@ -103,12 +103,12 @@ - 1 + 1.0 0.610 Part1.A[LeafPart] - 100 + 100.0 MI_Restricted_Substances 879f3268-e8b6-48c0-822a-40a010d12911 @@ -122,7 +122,7 @@ Primary processing, Metal extrusion, hot Mass - 100 + 100.0 @@ -132,19 +132,19 @@ Machining, fine Machining, fine MassRemoved - 5.0 + 0.0305 - 2 + 2.0 0.495 Part1.B[LeafPart] - 100 + 100.0 MI_Restricted_Substances 879f3268-e8b6-48c0-822a-40a010d12911 @@ -158,7 +158,7 @@ Primary processing, Casting Mass - 100 + 100.0 @@ -167,19 +167,19 @@ Secondary processing, Grinding MassRemoved - 7.6 + 0.03762 - 2 + 2.0 0.520 Part1.C[LeafPart] - 100 + 100.0 MI_Restricted_Substances 879f3268-e8b6-48c0-822a-40a010d12911 @@ -193,19 +193,19 @@ Metal extrusion, hot Mass - 100 + 100.0 - 2 + 2.0 0.012 Part1.D[LeafPart] - 100 + 100.0 MI_Restricted_Substances a0adc9d7-69a2-494e-b6da-d588f86cc5ab @@ -219,7 +219,7 @@ Metal extrusion, hot Mass - 100 + 100.0 @@ -228,7 +228,7 @@ Machining, fine MassRemoved - 11.2 + 0.0015 @@ -245,7 +245,7 @@ MI_Restricted_Substances 8d37ee4c-41ca-4cb5-9e8e-264646fcafa8 - 350 + 350.0 Country 1 to country 2 by air @@ -253,7 +253,7 @@ MI_Restricted_Substances 546b90cb-1f8e-423c-a284-a25f731a13e5 - 1500 + 1500.0 Airport to distributor by truck @@ -261,7 +261,7 @@ MI_Restricted_Substances 8d37ee4c-41ca-4cb5-9e8e-264646fcafa8 - 125 + 125.0 From ee7eb5bbf879a6f218c78a029bf0ad495be422f0 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Tue, 10 Oct 2023 19:01:25 +0200 Subject: [PATCH 106/275] Draft bom builder example --- .../3-5_Using_the_BoM_builder.py | 334 ++++++++++++++++++ .../source_data_sustainability.json | 201 +++++++++++ 2 files changed, 535 insertions(+) create mode 100644 examples/3_Advanced_Topics/3-5_Using_the_BoM_builder.py create mode 100644 examples/3_Advanced_Topics/supporting-files/source_data_sustainability.json diff --git a/examples/3_Advanced_Topics/3-5_Using_the_BoM_builder.py b/examples/3_Advanced_Topics/3-5_Using_the_BoM_builder.py new file mode 100644 index 00000000..30b69fb7 --- /dev/null +++ b/examples/3_Advanced_Topics/3-5_Using_the_BoM_builder.py @@ -0,0 +1,334 @@ +# --- +# jupyter: +# jupytext: +# formats: ipynb,py:light +# text_representation: +# extension: .py +# format_name: light +# format_version: '1.5' +# jupytext_version: 1.15.1 +# kernelspec: +# display_name: Python 3 (ipykernel) +# language: python +# name: python3 +# --- + +# # Using the BoM Builder + +# You might have to deal with BoMs or other data structures stored in third-party systems. This +# example desmonstrates how to use the ``bom_types`` sub-package to create a valid Granta MI XML BoM. + +# Although it is unlikely that the data structures and processing presented here match your +# requirements, this example is intended to demonstrate the principles behind using the BoM +# schema python bindings within your existing processes. It shows how a BoM-like data structure +# can be loaded from a neutral format and converted to the XML format expected by the Granta +# MI BoM Analytics API. The approach is applicable to data in other formats, or data loaded +# from other software platform APIs. + +# You can [download](supporting-files/source_data_sustainability.json) the external data source used in this +# example. +# +# The result of this example is a BoM that is compliant with the XSD XML schema (version 23/01) and that is suitable +# for sustainability analysis with the Granta MI BoM Analytics API. Further information about the expected content of +# XML BoMs can be found on the online Granta MI documentation. + +# ## Load the external data + +# First load the JSON file and use the ``json`` module to convert the text into a hierarchical structure of ``dict`` and +# ``list`` objects. + +# + +import json +from pprint import pprint + +with open("supporting-files/source_data_sustainability.json") as f: + data = json.load(f) +pprint(data[:3]) +# - + +# ## Inspect the external data +# The external data source defines a flat list of items. Each item has a ``type`` field, identifying the type of the +# item, a ``parent_part_identifier`` identifying the parent part in the hierarchy, as well as fields specific to each +# type of items. +# +# ### Components +# The external data source defines multiple types of component: +# +# - a single item of type ``Product``. The external data source describes the bill of materials for this product. All +# other items are expected to be children of this item. +# - items of type ``Assembly``. +# - items of type ``Part``. +# + +source_product = next(item for item in data if item["type"] == "Product") +source_product + +source_assemblies = [item for item in data if item["type"] == "Assembly"] +source_assemblies[0] + +source_parts = [item for item in data if item["type"] == "Part"] +source_parts[0] + + +# ### Materials +# The third party system allows assignment from Granta MI. Materials are therefore described by a unique identifier to +# a Granta MI record (GUID). This ensures that data isn't duplicated: the material data is stored in Granta MI, and +# other systems refer to it by identifiers. +# +# In the external data source, materials are described by a ``name`` and a field that contains the GUID uniquely +# identifying the assigned material. +# The third-party system allows assignment of a single material per part, so there is no quantity associated with the +# material. It is assumed that the part referenced in the material's ``parent_part_identifier`` is made only of this +# material. + +source_materials = [item for item in data if item["type"] == "Material"] +source_materials[0] + +# ### Processes +# There are multiple types of processes described by the external data source: +# +# - ``MaterialFormingStep`` describes a process which formed a mass of material into a shaped component. The third +# party system defines a single forming process for each part. These processes will be mapped to ``Primary processes`` +# in Granta MI Sustainability. +# +# - ``MaterialProcessingStep`` are optional extra processing steps applied after the main forming processing step. +# Given the format of the data exported from the third party system, processing steps include a ``step_order`` field, +# which describes the order in which processing steps are applied to the parent part. Processing steps define a +# ``mass_removed_in_kg`` field, describing the quantity of material removed during the step. These processes will be +# mapped to ``Secondary processes`` in Granta MI Sustainability. +# - ``PartProcessingStep`` are optional processes applied directly to parts. These processes will be mapped to +# ``Joining & Finishing processes`` in Granta MI sustainability. +# +# All processes are described by a human-readable name and include the GUID of the assigned Granta MI Process record. +# Similarly to materials, the third-party system does not store information about the process other than the reference +# to the Granta MI record, which defines the environmental footprint of the process. + +source_primary_processes = [item for item in data if item["type"] == "MaterialFormingStep"] +source_primary_processes[0] + +source_secondary_processes = [item for item in data if item["type"] == "MaterialProcessingStep"] +source_secondary_processes[0] + +source_joining_processes = [item for item in data if item["type"] == "PartProcessingStep"] +source_joining_processes[0] + +# ### Transports +# The external data source defines transport stages. These items of type ``Transport`` define the distance that +# is travelled during the step, and hold a reference to the assigned Granta MI Transport record, which defines the +# environmental footprint per distance for the transportation mode. + +source_transports = [item for item in data if item["type"] == "Transport"] +source_transports[0] + +# ## Build the BillOfMaterials +# +# The PyGranta BoM Analytics package provides a sub-package ``bom_types``, which implement Python bindings for the BoM +# XML schema. It facilitates serialization and deserialization of Granta MI BoMs into and from Python objects. +# This section shows how data from the external data source is processed to create BoM Python objects, which can then +# be used to generate an XML BoM. + +# If you are using a database with custom names, change the database key value in the following cell and refer +# to the [Database specific configuration](../3_Advanced_Topics/3-3_Database-specific_configuration.ipynb) example to +# appropriately configure the connection before running any queries. + +from ansys.grantami.bomanalytics import bom_types +DB_KEY = "MI_Restricted_Substances" + +# ### Components +# +# The third-party system defines a ``part_identifier`` field that uniquely identifies parts. On the other hand, the +# Granta MI BoM schema requires a Part to define a ``Part number``. We will use the external ``part_identifier`` as a +# part number. +# First, create a ``bom_types.Part`` object for every item that maps to a BoM Part, and add it to a mapping indexed +# by the part number. This will later allow to add materials and processes to the parts using the parent part identifier +# as an index. + +# + +components = {} + +# Product +product_id = source_product["part_identifier"] +components[product_id] = bom_types.Part(part_number=product_id, quantity=bom_types.UnittedValue(value=1.0, unit="Each")) + +# Assemblies +for item in source_assemblies: + item_id = item["part_identifier"] + components[item_id] = bom_types.Part( + part_number=item_id, + quantity=bom_types.UnittedValue( + value=item["quantity_in_parent"], + unit="Each", + ) + ) + +# Parts +for item in source_parts: + item_id = item["part_identifier"] + components[item_id] = bom_types.Part( + part_number=item_id, + quantity=bom_types.UnittedValue( + value=item["quantity_in_parent"], + unit="Each", + ), + mass_per_unit_of_measure=bom_types.UnittedValue( + value=item["part_mass_in_kg"], + unit="kg/Each" + ) + ) +# - + +pprint(components) + +# Now that all the parts have been instantiated, the hierarchy can be defined. While the external data source defines +# hierarchy using a field in each item in the falat data structure, a Granta MI BoM represents hierarchy by nesting +# objects. The following cell iterates over all source parts and assemblies again, and append child parts to their +# parents ``components`` property. + +# + +for item in source_assemblies + source_parts: + item_id = item["part_identifier"] + parent_item_id = item["parent_part_identifier"] + item_bom_definition = components[item_id] + parent_item_bom_definition = components[parent_item_id] + parent_item_bom_definition.components.append(item_bom_definition) + +pprint(components) +# - + +# ### Materials +# +# Materials can now be added to parts. In a Granta MI BoM, the structure is hierarchical and each ``Part`` +# defines its material via the ``Part.materials`` property. ``Material`` objects only then need to define the +# reference to the record in Granta MI. +# +# There are multiple possible ways of identifying Granta MI records in the BoM. In this example, the external data +# source holds references to Granta MI records by record GUIDs. The GUIDs will be used to instantiate +# ``MIRecordReference`` objects. + +for item in source_materials: + parent_part_id = item["parent_part_identifier"] + material = bom_types.Material( + mi_material_reference=bom_types.MIRecordReference( + db_key=DB_KEY, + record_guid=item["GRANTA_MI_Record_GUID"] + ), + identity=item["name"], + percentage=100.0, + ) + components[parent_part_id].materials.append(material) + +# ### Processes +# +# Some processes apply directly to parts and can already be added to parts in the hierarchy. +# The order in which processes are applied can be important. The external system defines a ``step_order`` field, which +# represents the order in which processes are applied to the parent part. We first sort the processes by ``step_order`` +# to ensure that they are added to the ``Part`` in the same order as defined by the external data source. +# +# The example external data only includes one type of part processes, which are quantified using a length. The Granta +# MI BoM schema has support for multiple ``DimensionType`` value: this is to represent the impact of a process based +# on its most representative dimension. For example, welding generally is defined by the welding path length, whereas +# a coating operation is best quantified by the affected surface area. +# A simple mapping defines a lookup between the unit found in the external data source and the dimension type used in +# the corresponding ``Process``. + +# + +unit_to_dimension_type = { + "m": bom_types.DimensionType.Length, +} + +# Sort items before iterating +source_joining_processes.sort(key=lambda item: (item["parent_part_identifier"], item["step_order"])) + +for item in source_joining_processes: + parent_part_id = item["parent_part_identifier"] + process = bom_types.Process( + mi_process_reference=bom_types.MIRecordReference( + db_key=DB_KEY, + record_guid=item["GRANTA_MI_Record_GUID"] + ), + identity=item["name"], + dimension_type=unit_to_dimension_type[item["quantity_unit"]], + quantity_affected=bom_types.UnittedValue(value=item["quantity"], unit=item["quantity_unit"]), + ) + components[parent_part_id].processes.append(process) +# - + +# Finally, primary and secondary processes can be added. In the external data source, processes only refer to the +# parent, as it is assumed that there is only a single material per part. +# The Granta MI BoM schema allows multiple materials per part, but sustainability analysis can only be performed on +# BoMs with a single material per part. +# Since there is only one material per part, we can use the ``parent_part_identifier`` of processes to resolve the part +# in the mapping defined earlier, retrieve the single material, and assign the process to the material. +# The single primary process must be the first in the list. Then, secondary processes can be added to the list, in the +# order defined by ``step_order``. +# +# ``MaterialFormingStep`` processes from the external data source are all mapped to ``Process`` with a ``Mass`` +# dimension type. This is the default value for processes whose environmental impact is calculated based on the mass +# of material that goes through the process. This mass is calculated from the final mass of the part and mass removed +# during additional processing steps. See the online Granta MI documentation for more information about mass +# calculations. +# ``MaterialProcessingStep`` processes from the external data source are mapped to ``Process`` with a ``MassRemoved`` +# dimension type. For this type of processes, the environmental impact is calculated from the mass of material removed. + +# + +for item in source_primary_processes: + parent_part_id = item["parent_part_identifier"] + process = bom_types.Process( + mi_process_reference=bom_types.MIRecordReference( + db_key=DB_KEY, + record_guid=item["GRANTA_MI_Record_GUID"] + ), + identity=item["name"], + dimension_type=bom_types.DimensionType.Mass, + percentage_of_part_affected=100.0 + ) + components[parent_part_id].materials[0].processes.append(process) + +source_secondary_processes.sort(key=lambda item: (item["parent_part_identifier"], item["step_order"])) +for item in source_secondary_processes: + parent_part_id = item["parent_part_identifier"] + process = bom_types.Process( + mi_process_reference=bom_types.MIRecordReference( + db_key=DB_KEY, + record_guid=item["GRANTA_MI_Record_GUID"] + ), + identity=item["name"], + dimension_type=bom_types.DimensionType.MassRemoved, + quantity_affected=bom_types.UnittedValue( + value=item["mass_removed_in_kg"], + unit="kg", + ) + ) + components[parent_part_id].materials[0].processes.append(process) +# - + +# ### BillOfMaterials +# +# Now that the all parts, materials, and processes have been processed and redefined in a hierarchical structure, build +# a ``BillOfMaterials`` object, and assign the top-level product as the single component, and add the transport stages, +# which apply to the whole product. + +# + +bom = bom_types.BillOfMaterials(components=[components[product_id]]) + +transports = [ + bom_types.TransportStage( + name=item["name"], + mi_transport_reference=bom_types.MIRecordReference( + db_key=DB_KEY, + record_guid=item["GRANTA_MI_Record_GUID"] + ), + distance=bom_types.UnittedValue(value=item["distance_in_km"], unit="km") + ) + for item in source_transports +] +bom.transport_phase = transports +# - + + +# Use the ``BomHandler`` helper class to serialize the object to XML. The resulting string can be used in a +# sustainability query. See [Sustainability examples](../4_Sustainability/index.rst). + +from ansys.grantami.bomanalytics import BoMHandler +bom_as_xml = BoMHandler().dump_bom(bom) +print(bom_as_xml) diff --git a/examples/3_Advanced_Topics/supporting-files/source_data_sustainability.json b/examples/3_Advanced_Topics/supporting-files/source_data_sustainability.json new file mode 100644 index 00000000..1d543ccf --- /dev/null +++ b/examples/3_Advanced_Topics/supporting-files/source_data_sustainability.json @@ -0,0 +1,201 @@ +[ + { + "type": "Product", + "part_identifier": "Part1[ProductAssembly]" + }, + { + "type": "Assembly", + "parent_part_identifier": "Part1[ProductAssembly]", + "part_identifier": "Part1.1[SubAssembly]", + "quantity_in_parent": 1.0 + }, + { + "type": "Part", + "parent_part_identifier": "Part1.1[SubAssembly]", + "part_identifier": "Part1.1.A[LeafPart]", + "quantity_in_parent": 1.0, + "part_mass_in_kg": 0.925 + }, + { + "type": "Material", + "parent_part_identifier": "Part1.1.A[LeafPart]", + "name": "stainless-astm-cn-7ms-cast", + "GRANTA_MI_Record_GUID": "2086f56a-4f4d-4850-9891-3d6ad155d1f9" + }, + { + "type": "MaterialFormingStep", + "name": "Primary processing, Casting", + "parent_part_identifier": "Part1.1.A[LeafPart]", + "GRANTA_MI_Record_GUID": "baa6c95b-ff0e-4811-9120-92717ee15bda" + }, + { + "type": "MaterialProcessingStep", + "name": "Machining, coarse", + "parent_part_identifier": "Part1.1.A[LeafPart]", + "GRANTA_MI_Record_GUID": "907bda29-e800-44f6-b7ea-4eb8e7cff375", + "step_order": 0, + "mass_removed_in_kg": 0.0808 + }, + { + "type": "MaterialProcessingStep", + "name": "Machining, fine", + "parent_part_identifier": "Part1.1.A[LeafPart]", + "GRANTA_MI_Record_GUID": "03de1a28-7dd7-4354-bbd8-c839cfa00ec7", + "step_order": 1, + "mass_removed_in_kg": 0.00465 + }, + { + "type": "Part", + "parent_part_identifier": "Part1.1[SubAssembly]", + "part_identifier": "Part1.1.B[LeafPart]", + "quantity_in_parent": 3.0, + "part_mass_in_kg": 0.175 + }, + { + "type": "Material", + "parent_part_identifier": "Part1.1.B[LeafPart]", + "name": "stainless-astm-cn-7ms-cast", + "GRANTA_MI_Record_GUID": "2086f56a-4f4d-4850-9891-3d6ad155d1f9" + }, + { + "type": "MaterialFormingStep", + "name": "Primary processing, Casting", + "parent_part_identifier": "Part1.1.B[LeafPart]", + "GRANTA_MI_Record_GUID": "baa6c95b-ff0e-4811-9120-92717ee15bda" + }, + { + "type": "MaterialProcessingStep", + "name": "Machining, fine", + "parent_part_identifier": "Part1.1.B[LeafPart]", + "GRANTA_MI_Record_GUID": "03de1a28-7dd7-4354-bbd8-c839cfa00ec7", + "step_order": 0, + "mass_removed_in_kg": 0.0035 + }, + { + "type": "PartProcessingStep", + "name": "Joining and finishing, Welding, electric", + "parent_part_identifier": "Part1.1[SubAssembly]", + "GRANTA_MI_Record_GUID": "21941b5e-fdbc-47fe-8180-809bb42e5e0a", + "step_order": 0, + "quantity": 0.45, + "quantity_unit": "m" + }, + { + "type": "Part", + "parent_part_identifier": "Part1[ProductAssembly]", + "part_identifier": "Part1.A[LeafPart]", + "quantity_in_parent": 1.0, + "part_mass_in_kg": 0.61 + }, + { + "type": "Material", + "parent_part_identifier": "Part1.A[LeafPart]", + "name": "steel-1010-annealed", + "GRANTA_MI_Record_GUID": "879f3268-e8b6-48c0-822a-40a010d12911" + }, + { + "type": "MaterialFormingStep", + "name": "Primary processing, Metal extrusion, hot", + "parent_part_identifier": "Part1.A[LeafPart]", + "GRANTA_MI_Record_GUID": "92f90382-610a-4737-a18f-b153ea88e4ad" + }, + { + "type": "MaterialProcessingStep", + "name": "Machining, fine", + "parent_part_identifier": "Part1.A[LeafPart]", + "GRANTA_MI_Record_GUID": "03de1a28-7dd7-4354-bbd8-c839cfa00ec7", + "step_order": 0, + "mass_removed_in_kg": 0.0305 + }, + { + "type": "Part", + "parent_part_identifier": "Part1[ProductAssembly]", + "part_identifier": "Part1.B[LeafPart]", + "quantity_in_parent": 2.0, + "part_mass_in_kg": 0.495 + }, + { + "type": "Material", + "parent_part_identifier": "Part1.B[LeafPart]", + "name": "steel-1010-annealed", + "GRANTA_MI_Record_GUID": "879f3268-e8b6-48c0-822a-40a010d12911" + }, + { + "type": "MaterialFormingStep", + "name": "Primary processing, Casting", + "parent_part_identifier": "Part1.B[LeafPart]", + "GRANTA_MI_Record_GUID": "baa6c95b-ff0e-4811-9120-92717ee15bda" + }, + { + "type": "MaterialProcessingStep", + "name": "Secondary processing, Grinding", + "parent_part_identifier": "Part1.B[LeafPart]", + "GRANTA_MI_Record_GUID": "9b5b1824-f11e-449e-9a3f-f6a75396ac87", + "step_order": 0, + "mass_removed_in_kg": 0.03762 + }, + { + "type": "Part", + "parent_part_identifier": "Part1[ProductAssembly]", + "part_identifier": "Part1.C[LeafPart]", + "quantity_in_parent": 2.0, + "part_mass_in_kg": 0.52 + }, + { + "type": "Material", + "parent_part_identifier": "Part1.C[LeafPart]", + "name": "steel-1010-annealed", + "GRANTA_MI_Record_GUID": "879f3268-e8b6-48c0-822a-40a010d12911" + }, + { + "type": "MaterialFormingStep", + "name": "Metal extrusion, hot", + "parent_part_identifier": "Part1.C[LeafPart]", + "GRANTA_MI_Record_GUID": "92f90382-610a-4737-a18f-b153ea88e4ad" + }, + { + "type": "Part", + "parent_part_identifier": "Part1[ProductAssembly]", + "part_identifier": "Part1.D[LeafPart]", + "quantity_in_parent": 2.0, + "part_mass_in_kg": 0.012 + }, + { + "type": "Material", + "parent_part_identifier": "Part1.D[LeafPart]", + "name": "beryllium-beralcast191-cast", + "GRANTA_MI_Record_GUID": "a0adc9d7-69a2-494e-b6da-d588f86cc5ab" + }, + { + "type": "MaterialFormingStep", + "name": "Metal extrusion, hot", + "parent_part_identifier": "Part1.D[LeafPart]", + "GRANTA_MI_Record_GUID": "92f90382-610a-4737-a18f-b153ea88e4ad" + }, + { + "type": "MaterialProcessingStep", + "name": "Machining, fine", + "parent_part_identifier": "Part1.D[LeafPart]", + "GRANTA_MI_Record_GUID": "03de1a28-7dd7-4354-bbd8-c839cfa00ec7", + "step_order": 0, + "mass_removed_in_kg": 0.0015 + }, + { + "type": "Transport", + "name": "Port to airport by truck", + "GRANTA_MI_Record_GUID": "8d37ee4c-41ca-4cb5-9e8e-264646fcafa8", + "distance_in_km": 350.0 + }, + { + "type": "Transport", + "name": "Country 1 to country 2 by air", + "GRANTA_MI_Record_GUID": "546b90cb-1f8e-423c-a284-a25f731a13e5", + "distance_in_km": 1500.0 + }, + { + "type": "Transport", + "name": "Airport to distributor by truck", + "GRANTA_MI_Record_GUID": "8d37ee4c-41ca-4cb5-9e8e-264646fcafa8", + "distance_in_km": 125.0 + } +] \ No newline at end of file From 09e38393ff5cde7c117b5dce2a185595c8ee06e6 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Wed, 11 Oct 2023 13:27:44 +0200 Subject: [PATCH 107/275] Add example to docs --- examples/3_Advanced_Topics/index.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/3_Advanced_Topics/index.rst b/examples/3_Advanced_Topics/index.rst index 3772b27b..4105a37b 100644 --- a/examples/3_Advanced_Topics/index.rst +++ b/examples/3_Advanced_Topics/index.rst @@ -11,4 +11,5 @@ These examples demonstrate various advanced functionalities of Granta MI BoM Ana 3-1_Working_with_XML_BoMs.ipynb 3-2_Dealing_with_external_data_sources.ipynb 3-3_Database-specific_configuration.ipynb - 3-4_Writing_compliance_results_to_a_dataframe.ipynb \ No newline at end of file + 3-4_Writing_compliance_results_to_a_dataframe.ipynb + 3-5_Using_the_BoM_builder.ipynb \ No newline at end of file From 69d5b939e31aa3440e23df2d59068f170bdcb75f Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Wed, 11 Oct 2023 13:52:56 +0200 Subject: [PATCH 108/275] Fix typing --- src/ansys/grantami/bomanalytics/_query_results.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ansys/grantami/bomanalytics/_query_results.py b/src/ansys/grantami/bomanalytics/_query_results.py index 63c0841a..c98864f2 100644 --- a/src/ansys/grantami/bomanalytics/_query_results.py +++ b/src/ansys/grantami/bomanalytics/_query_results.py @@ -120,7 +120,7 @@ def create_result( class ResultBaseClass(ABC): - def __init__(self, log_messages: List[LogMessage]) -> None: + def __init__(self, log_messages: List[models.CommonLogEntry]) -> None: self._messages = [LogMessage(severity=msg.severity, message=msg.message) for msg in log_messages] @property From 69ac314959daea95216683b2705bbf400246355d Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Wed, 11 Oct 2023 16:22:20 +0200 Subject: [PATCH 109/275] Remove some boms --- tests/inputs/__init__.py | 9 +- tests/inputs/bom-2301-complex.xml | 25543 ---------------------------- tests/inputs/bom-2301.xml | 47 - tests/test_bom_handler.py | 2 +- 4 files changed, 5 insertions(+), 25596 deletions(-) delete mode 100644 tests/inputs/bom-2301-complex.xml delete mode 100644 tests/inputs/bom-2301.xml diff --git a/tests/inputs/__init__.py b/tests/inputs/__init__.py index ed214115..e0001dd8 100644 --- a/tests/inputs/__init__.py +++ b/tests/inputs/__init__.py @@ -12,10 +12,9 @@ sample_bom_custom_db = sample_bom_complex.replace("MI_Restricted_Substances", "MI_Restricted_Substances_Custom_Tables") -_bom_2301_path = pathlib.Path(__file__).parent / "bom-2301.xml" + +repository_root = pathlib.Path(__file__).parent.parent.parent + +_bom_2301_path = repository_root / "examples" / "4_Sustainability" / "supporting-files" / "bom-2301-assembly.xml" with open(_bom_2301_path, "r") as f: sample_bom_2301 = f.read() - -_complex_bom_2301_path = pathlib.Path(__file__).parent / "bom-2301-complex.xml" -with open(_complex_bom_2301_path, "r") as f: - sample_bom_2301_complex = f.read() diff --git a/tests/inputs/bom-2301-complex.xml b/tests/inputs/bom-2301-complex.xml deleted file mode 100644 index d5479dec..00000000 --- a/tests/inputs/bom-2301-complex.xml +++ /dev/null @@ -1,25543 +0,0 @@ - - - - 1.0 - 69.51478876 - 2edd8862 - part_2edd8862-ace1-4911-87c8-70c3c78b52d4 - 2edd8862-ace1-4911-87c8-70c3c78b52d4 - - - 9.0 - 99.97526681 - 767e11c2 - part_767e11c2-8ed5-4348-b3a2-3595f3a20fae - 767e11c2-8ed5-4348-b3a2-3595f3a20fae - - - 1.0 - 54.00371134 - a0f7f357 - part_a0f7f357-2e54-4f03-9187-b15cc3836f14 - a0f7f357-2e54-4f03-9187-b15cc3836f14 - - - 8.0 - 5.18495436 - 16b848a3 - part_16b848a3-e1f1-4b92-9532-ba54b8ac2457 - 16b848a3-e1f1-4b92-9532-ba54b8ac2457 - - - 20.92056973 - - MI_Restricted_Substances - 71a3cd24-5128-46e5-8ef8-9ca8b5ed9892 - - 50% glass and mineral filled - PA46 (50% glass and mineral filled) - 064e366e-d6a5-46c9-879f-c9a410ede6dc - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - 10263c71-b6d0-4cbf-b766-87587f080397 - MassRemoved - 10.93788892 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - ffb05405-d056-41b4-a383-b9cce86f751e - Mass - 100.0 - - - - - 9.88492878 - - MI_Restricted_Substances - 1a9ca626-1709-4d7b-954c-65aa69bf6536 - - YS300, cold rolled - High strength low alloy steel, YS300, cold rolled - d0024420-607f-4df3-bc95-a54d8d229458 - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - e2cddf27-4ea2-463e-b282-13eaeca17fbb - Mass - 100.0 - - - - - 9.88492878 - - MI_Restricted_Substances - dce2dc34-54db-4d0a-bab0-85d4e6e08d8e - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 6150, oil quenched & tempered at 650°C - 0765cf01-c96b-45ed-9122-69a5a248d1c2 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - e97413f5-f82c-4427-ba8a-b8b5e88b9ff4 - MassRemoved - 44.45124903 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 9b96d8f5-da0d-4177-9266-1eb3a6d7e3f7 - Mass - 100.0 - - - - - 9.88492878 - - MI_Restricted_Substances - 2b606408-37c3-4801-a307-dda7384ff7cc - - Glass/phenolic honeycomb, 0°/90° fabric (0.072) - Glass/phenolic honeycomb, 0°/90° fabric (0.072), W Direction - ff90d60e-13d4-4c5a-919f-ab1031be0717 - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - d78d10a0-f89a-4089-84e9-d64e97e93e5c - Mass - 100.0 - - - - - 9.88492878 - - MI_Restricted_Substances - e721d8b7-256a-4b7b-af09-6b40d8309979 - - water quenched & tempered at 425°C - Carbon steel, AISI 1040, water quenched & tempered at 425°C - 8d73a9ca-bb77-43e4-8fa4-8946507c3096 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - a341e1db-07ff-416c-a5c6-d24c5a231984 - Mass - 100.0 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - 9c61bce8-ca3e-4abf-9c83-a3f216749256 - Mass - 100.0 - - - - - 9.88492878 - - MI_Restricted_Substances - 5303364c-b06b-40d9-bca9-e0e2cd1d682c - - Normalized - Low alloy steel, AISI 8740, normalized - 6cf0a04f-e4ae-4fca-8562-dc1371963383 - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - 105fe4b9-ad2a-4d32-ab6f-bfa023a68b63 - Mass - 100.0 - - - - - 9.88492878 - - MI_Restricted_Substances - 817b973c-3e12-4b5f-96b3-89b05d14d76c - - ASTM A500 Grade C - Structural steel, ASTM A500 Grade C - f7778c27-d8c0-4a32-b08f-454c5183182a - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 6933fd5a-02a4-4af0-a422-d49aff160f77 - Mass - 100.0 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - c08d5b0f-ccac-498b-b52f-396787c0a6c5 - Mass - 100.0 - - - - - 9.88492878 - - MI_Restricted_Substances - 3f3508d4-1ff6-40ea-a45f-04de1cb740f7 - - 300M (low carbon), quenched & tempered - Low alloy steel, 300M (low carbon), quenched & tempered - a749da65-2c9c-422c-90b7-22ee8412334e - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - 04911b2a-f9e3-494a-bbe0-60c75b8b2d24 - Mass - 100.0 - - - - - 9.88492878 - - MI_Restricted_Substances - a403e867-5052-44f9-b24b-5b11a3860cf4 - - Glass/polyimide honeycomb, ±45° fabric (0.051) - Glass/polyimide honeycomb, ±45° fabric (0.051), W Direction - 91962407-dccf-4f25-a1cd-f0ae3a85a62e - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 54c1f697-44bb-4b4a-a2b2-02864c24a2fe - Mass - 100.0 - - - - - - - 3.0 - 96.1091224 - 72362b93 - part_72362b93-bb7a-40f6-a225-4c78654ccc16 - 72362b93-bb7a-40f6-a225-4c78654ccc16 - - - 74.63770679 - - MI_Restricted_Substances - 93e14fb3-4376-4df5-9d31-299bee56ea49 - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 4340, oil quenched & tempered at 540°C - 3cc47072-1ea4-4d94-94a0-59687596368f - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 2008c572-5a8f-42f2-8aa1-7fe8164b9264 - Area - 75.70770502 - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - b5c8e19d-9b00-4a92-a45a-2a64e07f2ebc - Mass - 100.0 - - - - - 6.3405733 - - MI_Restricted_Substances - b872537b-c0a0-4c3e-8388-e5544183cdd3 - - water quenched & tempered at 425°C - Carbon steel, AISI 1030, water quenched & tempered at 425°C - 81a776a8-6893-44b3-9a12-42398e147b6e - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - 0588f4d7-f328-45b6-bd55-912e0f26452c - Length - 74.04176046 - - - - - 6.3405733 - - MI_Restricted_Substances - a6b1ab49-1d3b-4551-9345-3bf24da33ec1 - - As rolled - Carbon steel, AISI 1144, as rolled - 0559b5da-6817-4676-8058-8375c6a6be10 - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - a2b0bdd8-dd12-4b7f-b778-4e0649297d12 - Mass - 100.0 - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 16b6404c-7eec-40ae-b4f9-3d3c9cd6f5e9 - Mass - 100.0 - - - - - 6.3405733 - - MI_Restricted_Substances - 09469002-6519-4b02-bdd9-f385d0a44d2f - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 9260, oil quenched & tempered at 540°C - 77d49906-e661-4a85-8156-d8f3d73a92dc - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - 46f5cd87-7e01-45cf-b6f5-860967d7589d - MassRemoved - 16.56462676 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 1f8d1845-5df3-44bf-9c93-6537b540b155 - Mass - 100.0 - - - - - 6.3405733 - - MI_Restricted_Substances - e62ec0fe-66ca-4b17-88d1-609c5568e318 - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 4340, oil quenched & tempered at 650°C - 9d559c57-5793-4793-bd28-ed84fb779ea0 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 1bd74c29-bc15-4b36-a47d-8fdb63b109e2 - Mass - 100.0 - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - 317bf483-7b41-4304-9448-09649ebf64f2 - Mass - 100.0 - - - - - - - 5.0 - 81.58610923 - 08d30467 - part_08d30467-d47a-48ad-8369-2ae0fd4a610a - 08d30467-d47a-48ad-8369-2ae0fd4a610a - - - 7.0 - 58.34084728 - 5afcdec3 - part_5afcdec3-66ab-4879-be37-65cdd51b3869 - 5afcdec3-66ab-4879-be37-65cdd51b3869 - - - 6.0 - 77.60876108 - 5df40cce - part_5df40cce-ebd8-405e-87b9-bc32fb7bcb9f - 5df40cce-ebd8-405e-87b9-bc32fb7bcb9f - - - 86.33457021 - - MI_Restricted_Substances - 2017a3b5-88e7-473f-b7c9-1ab8afe722fe - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 5160, oil quenched & tempered at 540°C - 3b23bf68-8640-40ed-a435-afdff06555ec - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - 37108ceb-3daa-40b1-a5b6-569d95423517 - Mass - 100.0 - - - - - 1.95220425 - - MI_Restricted_Substances - 33160988-8422-40e2-93d1-e3e7467eafe9 - - Normalized - Carbon steel, AISI 1030, normalized - f28cde90-f4f6-447e-a172-155b0de30e10 - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - 91fa5230-7620-4fa4-baab-2f5d1c016d8f - Mass - 100.0 - - - - - 1.95220425 - - MI_Restricted_Substances - 5ed89a0b-5f7a-43b7-b9cb-3db4035f942f - - Glass/phenolic honeycomb, 0°/90° fabric (0.072) - Glass/phenolic honeycomb, 0°/90° fabric (0.072), L Direction - 4bde2a84-4758-4c2b-b06d-2c0688011310 - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - 0fa2b71b-f530-4884-a8de-b25713b85054 - MassRemoved - 64.46132248 - - - - - 1.95220425 - - MI_Restricted_Substances - a01be0be-96e7-4123-b061-dfdbba1f1748 - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 4037, oil quenched & tempered at 315°C - 1f200c4e-66c9-41a9-94cc-67a0fac88829 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - 8f8d0342-3ef2-4965-8f76-a154e1a45705 - Mass - 100.0 - - - - - 1.95220425 - - MI_Restricted_Substances - 496cca2a-43ad-4943-9e9b-23076f2e3a5c - - Glass/polyimide honeycomb, ±45° fabric (0.128) - Glass/polyimide honeycomb, ±45° fabric (0.128), L Direction - a386b2fd-bc60-4cdf-a33f-e69c5a75539e - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - e69b87a3-49c0-42e5-81e8-73bc9a5ba208 - Mass - 100.0 - - - - - 1.95220425 - - MI_Restricted_Substances - 3b122722-399e-43ad-bc30-86f556db96e7 - - Stainless steel, terne coated - Coated steel, stainless steel, terne coated - 07d04467-4714-4163-834b-1a149cde2fef - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 5704161a-a022-4303-b808-ab16fba90bdb - Mass - 100.0 - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - b2cda790-0c8a-4dd2-ab76-f0d2540c8cfa - Mass - 72.57710787 - - - - - 1.95220425 - - MI_Restricted_Substances - 2017a3b5-88e7-473f-b7c9-1ab8afe722fe - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 5160, oil quenched & tempered at 540°C - c3a81cf6-3677-4edf-8d88-2da112b80d69 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 99b9a1db-9782-4890-a5b9-bad13fbf8714 - Mass - 100.0 - - - - - 1.95220425 - - MI_Restricted_Substances - b01d2f15-7182-442c-ac97-e7c259e8169d - - Annealed - Low alloy steel, AISI 9310, annealed - bbfa5ab2-b25b-4911-a0be-e0d8e01f1e8e - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - def28e40-fc5e-4ecb-830b-b79d3207a90a - Mass - 100.0 - - - - - - - 2.0 - 74.08976288 - b9eb4836 - part_b9eb4836-f811-41e9-ad40-7f8fcc7c64e1 - b9eb4836-f811-41e9-ad40-7f8fcc7c64e1 - - - 86.28546417 - - MI_Restricted_Substances - 9cae15c6-b5b6-4ab9-9008-d962bee0e662 - - Glass/phenolic honeycomb, 0°/90° fabric (0.128) - Glass/phenolic honeycomb, 0°/90° fabric (0.128), L Direction - 966a9201-5491-4807-9abf-b884b78c31c9 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 96d371e7-648d-4ded-9ba8-ab2ffd4b9f9d - Area - 66.47920388 - - - - - 4.57151194 - - MI_Restricted_Substances - dc5a66d7-3ba8-4879-b455-ac29d54cbf17 - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 5150, oil quenched & tempered at 315°C - 20436c9f-d0c6-47b0-987f-cd98e65dfb36 - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - 2d1baf08-df85-4e41-b6e6-11becfd02d68 - Mass - 91.22655349 - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 19cb429e-34eb-4a9a-b08a-b4dd94736fab - Mass - 100.0 - - - - - 4.57151194 - - MI_Restricted_Substances - 88943d73-219a-4090-93e9-c0454a8b5ad5 - - FR-4.0 (Df < 0.015 at 10GHz), Epoxy/Glass fiber, PCB laminate - FR-4.0 (Df < 0.015 at 10GHz), Epoxy/Glass fiber, PCB laminate - d8fe04e2-9546-49c9-a7a7-363a17eb7c9f - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - 45ca39ef-f00c-4e3c-8624-eb50a185f9f4 - Mass - 100.0 - - - - - 4.57151194 - - MI_Restricted_Substances - b85ebb9e-b198-4497-ae8e-b9b61ecde102 - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 5160, oil quenched & tempered at 315°C - 73bd3313-2941-4b17-a1ea-4f3f91438e52 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 893e1329-2a02-4d98-bc21-9b74ce683a30 - Length - 66.15440159 - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - 9fa58166-cf72-41d9-9a2c-caa998091110 - MassRemoved - 35.58720007 - - - - - - - 3.0 - 29.26936602 - 862f58e7 - part_862f58e7-67aa-42a2-87c3-516640f3d8f3 - 862f58e7-67aa-42a2-87c3-516640f3d8f3 - - - 31.68638699 - - MI_Restricted_Substances - 034898f1-834f-4079-a0d3-65fffc17cb4d - - Silica (quartz fused) - Silica (quartz fused) - a3e3a1db-cb4e-438b-940e-faa5eedb5dda - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - 8af392e4-7d44-4f7d-8842-b4bbafcf94d5 - MassRemoved - 49.64227194 - - - - - 11.38560216 - - MI_Restricted_Substances - 2befe0b1-24d6-401d-9a98-97e6fe8668bb - - Annealed - Low alloy steel, AISI 9255, annealed - 5fb97d30-7560-4200-891e-c5ec639bc300 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 2963e8a2-6456-4d71-bb03-9bca208dcdd9 - Mass - 14.28825152 - - - - - 11.38560216 - - MI_Restricted_Substances - 6d658600-d198-46ed-bcca-cd0e3e2f5f4d - - Oil quenched & tempered at 425°C - Carbon steel, AISI 1060, oil quenched & tempered at 425°C - fdd7f75c-224f-49fd-ae6c-99c47d60353a - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - afc22575-39ad-439f-bd40-0e3f938417fe - Area - 93.19756994 - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - 4b0ec717-4d41-4cc1-a951-c1a8c8f7c068 - Area - 63.14605249 - - - - - 11.38560216 - - MI_Restricted_Substances - 6e6b280b-c24a-40b9-a181-4586c4b341c2 - - SAE 4335M, cast, quenched & tempered - Low alloy steel, SAE 4335M, cast, quenched & tempered - af2d314f-1fb4-41c4-aea0-7d2cf06fc241 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 77617534-de47-403a-80e1-676aff0839f6 - Mass - 100.0 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - b56d23f0-f522-47e7-83af-7d376b81216a - Mass - 100.0 - - - - - 11.38560216 - - MI_Restricted_Substances - 2096ca77-9981-4fd5-9bc6-afe56b3bbbd4 - - Glass/phenolic honeycomb, 0°/90° fabric (0.096) - Glass/phenolic honeycomb, 0°/90° fabric (0.096), W Direction - 1077ef3b-714e-45d4-a5d7-85269fab040b - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - 86ca949d-a134-4ef1-abd8-e2704ae62c38 - Mass - 100.0 - - - - - 11.38560216 - - MI_Restricted_Substances - af0c74e2-f44f-4698-a194-c3f6496a73fa - - Quenched & tempered - Low alloy steel, AISI 4135, air melted, quenched & tempered - 135bdc9a-42cb-4cbb-8904-6663153b3a1d - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - a7e5e15b-2672-4d54-b6a8-e37d01edd6b8 - Length - 92.91450036 - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - 0934bebd-6784-4368-a792-3d6cf632bd1e - MassRemoved - 96.55168596 - - - - - 11.38560216 - - MI_Restricted_Substances - 90514ab4-75b3-48a9-9a07-98eb8f83ef81 - - As rolled - Carbon steel, AISI 1015, as rolled - fef0eedb-3e60-4db6-b002-21aa58a8daf7 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - 87322eda-6234-471b-8bb6-ad0b0223439b - Mass - 100.0 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - e56d3e3a-cbb1-4fe9-8bc8-db7afc99adc6 - Mass - 100.0 - - - - - - - 5.0 - 62.36669503 - fd8d642b - part_fd8d642b-af21-46e6-afc1-f2f8b0e21b43 - fd8d642b-af21-46e6-afc1-f2f8b0e21b43 - - - 45.50164358 - - MI_Restricted_Substances - b3d89bcf-5e9a-4fe8-a953-98ceb384b8a3 - - water quenched & tempered at 650°C - Carbon steel, AISI 1030, water quenched & tempered at 650°C - 9b8384ef-1579-4b88-b189-215e3d38d262 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 8e326262-e605-41e3-87f6-5a0f717e2347 - Mass - 100.0 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - eb1f17a9-42d9-47d6-a277-6d478a4dd7e2 - Length - 18.67924147 - - - - - 18.1661188 - - MI_Restricted_Substances - 55c8dd10-b62f-4136-b1c8-6260fcec05cc - - Annealed - Carbon steel, AISI 1040, annealed - 411ce775-02cf-481d-b199-97032ed29d4f - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 6f9878f7-4b1e-483e-a855-e06ac6b01914 - Area - 70.61582476 - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 14c8e637-d272-4179-bcba-5b835682e9d7 - Mass - 100.0 - - - - - 18.1661188 - - MI_Restricted_Substances - 924b3986-e315-4b28-9daa-56a075aa18e9 - - Annealed - Low alloy steel, AISI 52100, annealed - 431c8143-a497-47c1-85e0-ffffa2053e8b - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - f447c5c2-b1d4-49a9-b6b8-09ad043dfc9e - Area - 37.98598537 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 7e7ae2be-fcf4-4959-b548-d0086e941ca1 - Mass - 100.0 - - - - - 18.1661188 - - MI_Restricted_Substances - 7bb749f5-f155-4528-bd9b-59c2c0796b40 - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 4140, oil quenched & tempered at 650°C - f5eb794e-27b9-4ddc-b870-db994c597db4 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - 60aaea04-97ed-404a-8fbc-38943d3d5474 - Length - 54.64898243 - - - - - - - 7.0 - 2.43501281 - 7975cf31 - part_7975cf31-1767-4df5-9f29-aa34a15f7cce - 7975cf31-1767-4df5-9f29-aa34a15f7cce - - - 55.30402108 - - MI_Restricted_Substances - 190cf17e-dbc1-40c7-a3d1-cc776977cb47 - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 50B46, oil quenched & tempered at 650°C - ba83beb2-043a-40b2-8d3f-d0ae0fec847a - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - 9b19dea1-9ffb-40e5-bba1-982ad7a4bc39 - MassRemoved - 63.36875798 - - - - - 11.17399472 - - MI_Restricted_Substances - daa4f620-4e8c-4670-b517-9cbca2154c44 - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 5130, oil quenched & tempered at 315°C - be7599d8-421d-4054-b5dc-fe7be813aca1 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - c4c67b2f-7b8f-4989-bcd4-ccc2166fd211 - Area - 40.54536532 - - - - - 11.17399472 - - MI_Restricted_Substances - 8ef69f01-44dd-4b96-ac5c-731bff7ceb6c - - Glass ceramic - 9606 - Glass ceramic - 9606 - 966349fa-ddb8-4eea-bae6-e85f731ce179 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - c20a9763-e8a7-46a7-ba02-d7e92f319231 - Mass - 100.0 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - 0ced7fbc-5ef4-409f-822b-08ce98d0dc83 - MassRemoved - 66.84070144 - - - - - 11.17399472 - - MI_Restricted_Substances - 6ee51b17-7fe0-46fd-8e32-a71585a34000 - - 40-45% glass and mineral - PBT (40-45% glass and mineral) - eef55f76-06b8-4345-baaa-b63d6726e571 - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - a7848db7-c57e-4c94-9aa6-3a2916b19738 - Mass - 100.0 - - - - - 11.17399472 - - MI_Restricted_Substances - 0a203f13-4112-4c7b-8d17-bd9ce600f647 - - YS350, cold rolled - Dual phase steel, YS350, cold rolled - f0898add-5dbb-4f37-b205-3d06ebbc5d0b - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - 60a689e4-7b96-4f29-be3e-4a47c344b98b - Mass - 100.0 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 5db7413f-3be8-49db-a34e-5a3270934554 - Mass - 24.11155524 - - - - - - - 2.0 - 0.11838702 - 5bcd7ed0 - part_5bcd7ed0-2e39-42ff-a746-c455faca941d - 5bcd7ed0-2e39-42ff-a746-c455faca941d - - - 31.80981503 - - MI_Restricted_Substances - 9a48479a-292f-4bdd-aab5-0ad0835d7480 - - Oil quenched & tempered at 205°C - Carbon steel, AISI 1095, oil quenched & tempered at 205°C - 9a15c711-a161-42a2-a9b1-b26fe16575a0 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - 8a3a5758-48b7-40d6-818f-703ec1cd289f - MassRemoved - 6.97987405 - - - - - 9.74145499 - - MI_Restricted_Substances - 0a203f13-4112-4c7b-8d17-bd9ce600f647 - - YS350, cold rolled - Dual phase steel, YS350, cold rolled - b35d0c2b-2dc1-44f8-8a66-8dc93bc65bac - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - 900e5516-afde-47e5-a410-07ea20aab158 - Mass - 100.0 - - - - - 9.74145499 - - MI_Restricted_Substances - 2ab1643a-3aff-46c7-a249-21c58b33f214 - - Annealed - Carbon steel, AISI 1144, annealed - 6858c273-5411-40f7-99d5-1fa003402096 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 5611fa6a-e4f6-4072-81b1-78c3440a1324 - Mass - 100.0 - - - - - 9.74145499 - - MI_Restricted_Substances - 29d2e9de-9de0-4ea9-9bff-3a1cee0c26e3 - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 4037, oil quenched & tempered at 205°C - 911ed045-63a1-4f2e-a700-554eadbcc264 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 00fe288c-fad6-4303-a1e5-4f3d065f2d2b - Length - 35.87249803 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - a563c236-fd40-472d-a6d3-81debb12cb46 - Mass - 100.0 - - - - - 9.74145499 - - MI_Restricted_Substances - 80d691ec-471b-4ef6-9060-a0e5cc0c1a91 - - Annealed - Carbon steel, AISI 1340, annealed - 9250893c-69f0-40bb-8668-efba7d2bfe6f - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - b10e57a9-906d-45e7-ad95-31cb30e993a3 - Length - 48.3716971 - - - - - 9.74145499 - - MI_Restricted_Substances - 3e7feb56-09b4-498c-9966-c13b33dedccd - - water quenched & tempered at 205°C - Carbon steel, AISI 1137, water quenched & tempered at 205°C - 064ed8a8-2f06-4180-896d-8d850d1ca883 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - cadc9afd-fe49-4df7-8098-a4ddc0f4be4f - Mass - 100.0 - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - f79dd6d1-4b2c-4708-9b6e-7dd40097d339 - MassRemoved - 42.44372446 - - - - - 9.74145499 - - MI_Restricted_Substances - 9e11a8f7-0b35-4610-aee9-557a236bbe5c - - Soda borosilicate - Soda borosilicate - 40d9f571-bb28-47ec-a850-08b3ecb865ef - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 9ab5e351-8a29-4780-9b16-8c27d5c6fa07 - Mass - 100.0 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - 345503aa-c7f0-4221-9ce8-0eafddd4e4c2 - Length - 97.5973383 - - - - - 9.74145499 - - MI_Restricted_Substances - 9d224642-fb07-41ce-8191-c9b152122364 - - Quenched & tempered - Intermediate alloy, Fe-9Ni-4Co-0.30C steel, quenched & tempered - cb3739a0-3d30-46d6-92f5-084983867378 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 50e8ccbc-6981-4512-a86c-56ac38788a3d - Mass - 100.0 - - - - - - - 9.0 - 49.67689893 - ebb8ffdf - part_ebb8ffdf-686d-41d7-9d9e-e9005283b434 - ebb8ffdf-686d-41d7-9d9e-e9005283b434 - - - 8.75198645 - - MI_Restricted_Substances - 45a257d5-da48-4520-9174-ffe7bbadcd1c - - Glass/phenolic honeycomb, ±45° fabric (0.088) - Glass/phenolic honeycomb, ±45° fabric (0.088), L Direction - f01c60bb-f680-45c1-85cd-acbd6e7c0e95 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - ab126da3-5938-4d75-bd59-964cdca979c8 - Mass - 100.0 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - 4cea0757-a34b-4b3c-aa34-5b0686e2814b - Mass - 100.0 - - - - - 91.24801354 - - MI_Restricted_Substances - 827c892c-b90a-4b05-a8c4-ef1c047d8859 - - Glass/polyimide honeycomb, ±45° fabric (0.112) - Glass/polyimide honeycomb, ±45° fabric (0.112), W Direction - 70910778-cb6b-4d23-baba-c89dbff3ba59 - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - 5aac6bef-0c6b-4d84-bb59-584f21b02395 - Mass - 44.03669207 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 79f9f625-1e57-4d90-b886-ccc120129152 - Mass - 100.0 - - - - - - - 9.0 - 32.16575339 - 1d1de73b - part_1d1de73b-1743-4079-9578-1cf97e7becd8 - 1d1de73b-1743-4079-9578-1cf97e7becd8 - - - 79.60662929 - - MI_Restricted_Substances - b228f0f2-a947-4ee3-bdb9-00fdb153caff - - Glass ceramic (FC) - Glass ceramic (FC) - 8abd286f-4a84-4f43-b1be-46822033789e - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - 5dcdd898-398d-489a-b0a1-c783342ddb2f - Mass - 100.0 - - - - - 2.91333867 - - MI_Restricted_Substances - f8d1136f-3c1a-41e2-8b78-cf5f3965cba2 - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 6150, oil quenched & tempered at 205°C - 3c55eb1b-5950-40e0-bb06-5647255227dc - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - 0a89705d-324f-471c-9755-d476521034ab - Mass - 100.0 - - - - - 2.91333867 - - MI_Restricted_Substances - 827c892c-b90a-4b05-a8c4-ef1c047d8859 - - Glass/polyimide honeycomb, ±45° fabric (0.112) - Glass/polyimide honeycomb, ±45° fabric (0.112), W Direction - 6d01f042-4095-4b85-8eaf-8c8dbfcf8153 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 283d3bd7-bf80-470a-bf3a-cbcff32f7d28 - Area - 43.61133312 - - - - - 2.91333867 - - MI_Restricted_Substances - b879bb01-8648-4b5b-8159-d591cb251ca8 - - Normalized - Carbon steel, AISI 1080, normalized - 1d048369-92f6-44e8-84f2-30278212856b - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - 731a4ba2-d31e-4db1-8793-9324b3e237b7 - Length - 15.02251979 - - - - - 2.91333867 - - MI_Restricted_Substances - ccc92e6a-14f4-4ec6-9c3a-35ef3d6c9d8e - - Annealed - Carbon steel, AISI 1025, annealed - 2b009d89-e163-4adf-9bf9-8afb678c2a48 - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - 62c79bd0-ae11-422c-90f1-fa594571e903 - Mass - 100.0 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - a2fcb803-add8-49a0-900b-3703f84244d9 - Length - 53.29273606 - - - - - 2.91333867 - - MI_Restricted_Substances - 034898f1-834f-4079-a0d3-65fffc17cb4d - - Silica (quartz fused) - Silica (quartz fused) - 835299c6-a6b5-43a8-aa88-f284052171cc - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 855bee01-9184-47d2-8581-76e01886ea0b - Mass - 100.0 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - 12eabb99-224c-43ea-a98d-bb596ecee29f - Length - 16.26422755 - - - - - 2.91333867 - - MI_Restricted_Substances - 4a35d8d1-5fb1-47e9-a669-37204ae732dc - - ASTM A500 Grade A - Structural steel, ASTM A500 Grade A - 638823b6-f9d3-46bb-8a05-0db107889b22 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - 0c0f61c2-70c2-4f98-ac5a-7f9df5ecc483 - Mass - 100.0 - - - - - 2.91333867 - - MI_Restricted_Substances - 55a81649-3016-4213-a621-af408fcdc777 - - Annealed - Carbon steel, AISI 1080, annealed - 1a6d6276-4d4a-427a-a4b4-6f2e620db768 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - 97cbf528-7960-4df3-9374-18f69b658e42 - Mass - 100.0 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 1bc461bc-ed33-486d-a70d-de4a056b9240 - Length - 80.37181858 - - - - - - - 2.0 - 36.11134911 - 8c7e1228 - part_8c7e1228-bf08-4749-97f1-a110415528b4 - 8c7e1228-bf08-4749-97f1-a110415528b4 - - - 84.02418805 - - MI_Restricted_Substances - 92565d61-24fc-4880-9be5-0faeb9a8a3e8 - - Titanium silicate - Titanium silicate - e7ec98ac-e273-46ab-9474-ea04a3890a5e - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 9762f77c-d28f-4826-9540-79879aa0b386 - Mass - 100.0 - - - - - 3.19516238 - - MI_Restricted_Substances - 109eaa8c-e01c-4663-8802-f7dd1f10d61b - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 8630, oil quenched & tempered at 205°C - 9f70bd1c-4fd9-4e12-b6cd-b24ec8e36b3a - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - b3367ef8-54f4-4af1-ae6f-0471c59b1e3f - Mass - 100.0 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 1892cc1f-2ea4-4542-84fa-734a1738d47d - Mass - 32.10523451 - - - - - 3.19516238 - - MI_Restricted_Substances - 9cde0ddf-b39b-4eba-9ca0-333508cee034 - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 86B45, oil quenched & tempered at 540°C - e9a533e7-8687-4edb-8b8c-b598338050b2 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 69388365-f692-4ca3-be8f-c29f6a11512d - Mass - 100.0 - - - - - 3.19516238 - - MI_Restricted_Substances - ae5812e1-18fd-4a4d-aaa2-a04ca5e84b7a - - YS400, hot rolled - Dual phase steel, YS400, hot rolled - 3faedb49-7a6d-4c00-9c9e-39a7ef664e21 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - f210d48f-623d-4898-aa23-ebacd6a343c0 - Mass - 100.0 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - d6908901-bc8f-4702-ba84-a02927d44d92 - Length - 75.51994494 - - - - - 3.19516238 - - MI_Restricted_Substances - e8c6d73a-bd7a-4ef3-ae11-48e45d4a5515 - - Glass, E grade (0.4-12 micron monofilament, f) - Glass, E grade (0.4-12 micron monofilament, f) - ac819a8f-9291-46bd-9a24-39b6ae982568 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 31211b96-96bc-4c45-a8a1-5b02eb5b9885 - Mass - 100.0 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - bbc5fe2a-94ea-40ef-86a7-942a40cc05b2 - MassRemoved - 34.48724203 - - - - - 3.19516238 - - MI_Restricted_Substances - 1d24ecfa-ec45-4a74-9ad7-ceac6eef8ad3 - - Annealed - Low alloy steel, AISI 41L40, annealed - 8ea00983-914a-498b-94fa-1c042eac5ea4 - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - 2b02ebe7-5e6e-491c-a82b-5a11d3505560 - Mass - 100.0 - - - - - - - 9.0 - 9.44912606 - bfd7768c - part_bfd7768c-8123-46d9-ac11-f0c6afcabb52 - bfd7768c-8123-46d9-ac11-f0c6afcabb52 - - - 65.3019523 - - MI_Restricted_Substances - 01f21cc5-bbad-4a5d-875d-c626eabc11c8 - - water quenched & tempered at 425°C - Carbon steel, AISI 1137, water quenched & tempered at 425°C - c320bf61-1e2b-4df3-b206-058e077ab81e - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 20f242e5-4016-4a57-adc9-37f1bf901366 - Mass - 100.0 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - d34384d5-e48e-43bf-8930-94889569b199 - Length - 95.75490853 - - - - - 11.56601589 - - MI_Restricted_Substances - 88943d73-219a-4090-93e9-c0454a8b5ad5 - - FR-4.0 (Df < 0.015 at 10GHz), Epoxy/Glass fiber, PCB laminate - FR-4.0 (Df < 0.015 at 10GHz), Epoxy/Glass fiber, PCB laminate - bf27755b-7cec-4ae3-b621-6d307b6bbf64 - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - 68a06571-548b-4a4a-a436-d8dd70d4df06 - Mass - 100.0 - - - - - 11.56601589 - - MI_Restricted_Substances - ab895171-8c16-4056-9062-78f7516be1b0 - - Borosilicate - 7050 - Borosilicate - 7050 - a08c1674-4940-40a7-94fc-c3d9d183a7f0 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - 7d76a166-c302-4db8-abb1-f8be6336b506 - Area - 75.84649127 - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - 4a1655e1-c1f6-4b1a-96f7-58405a76625b - MassRemoved - 92.34172706 - - - - - 11.56601589 - - MI_Restricted_Substances - a1a73282-61fc-4ecd-9e82-a15e366f99bc - - Low-e glass - Low-e glass - c1bd4e16-ddfd-4e33-9ea0-9f71d3f3fac8 - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - 27d68193-6372-43ef-85c5-2a05dea773bf - Mass - 100.0 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 9185ca4f-d644-478a-b1d3-accea6fd78f8 - Mass - 100.0 - - - - - - - 2.0 - 96.54120388 - d4ad1b0c - part_d4ad1b0c-b83c-4a72-8d37-353582787606 - d4ad1b0c-b83c-4a72-8d37-353582787606 - - - 86.57915442 - - MI_Restricted_Substances - a6078356-e79c-4ddd-86ef-a3f01680dd35 - - As rolled - Carbon steel, AISI 1020, as rolled - 8f185b5c-7663-4004-babc-399eafd054fc - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - a1312113-8da3-4855-9e62-082d236a73e8 - Mass - 3.27874776 - - - - - 6.71042278 - - MI_Restricted_Substances - 52906b79-1e89-49de-b2cf-c09d53f34f92 - - Borosilicate - N16B - Borosilicate - N16B - e9f58e88-6551-4b55-826e-7a6719f7d8c1 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 3b3e32a9-86ca-4102-910a-96fb55997319 - Mass - 100.0 - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - b15c2027-79ed-47aa-b2e3-c4c7c63d4fcb - Mass - 100.0 - - - - - 6.71042278 - - MI_Restricted_Substances - 00268f25-08c7-4add-91f3-3cc4ed1d7e34 - - Oil quenched & tempered at 425°C - Carbon steel, AISI 1141, oil quenched & tempered at 425°C - 9309dcdb-9e9a-476b-af68-bf11e4429595 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - a514f8bf-7700-46fa-b19a-e2847e4bbe19 - Mass - 100.0 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - be8949b8-400f-46e3-ad5b-c128b25d09ae - Mass - 100.0 - - - - - - - 5.0 - 46.46198239 - bec3a206 - part_bec3a206-acc2-47e0-9d06-bef2d678f4b1 - bec3a206-acc2-47e0-9d06-bef2d678f4b1 - - - 66.97789922 - - MI_Restricted_Substances - 8dbb57f2-b225-4f57-9a5a-c25a03292d6e - - Annealed - Low alloy steel, AISI 6150, annealed - 3377d345-91c4-4b3c-aaa0-d63d7218b1ac - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - 3688e835-1b68-4603-b5b9-a819a57502a7 - Mass - 100.0 - - - - - 5.50368346 - - MI_Restricted_Substances - a583e694-02c0-408e-9af4-6fbee856b58f - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 9260, oil quenched & tempered at 650°C - 1abd8f9a-0b92-427e-9717-6c09ce13dc00 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - 2c5d44c6-e3bd-4ec6-ad22-b11d3649ed17 - Mass - 100.0 - - - - - 5.50368346 - - MI_Restricted_Substances - 1d55049a-3c25-4c8c-9125-70fd014c2a1e - - Normalized - Low alloy steel, AISI 8735, normalized - 66c4fad4-af15-4672-9943-9425e4c0e0a8 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 826a9d5a-36ba-4609-b926-7000913958f2 - Mass - 100.0 - - - - - 5.50368346 - - MI_Restricted_Substances - aa4540cb-3277-459f-a69a-ca324ddd0125 - - Glass ceramic (N0) - Glass ceramic (N0) - 06b90bd7-bfac-4f73-824f-f416b61e79b4 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 10cc87fa-8688-4a93-be50-8cb08c6545cf - Mass - 30.99538801 - - - - - 5.50368346 - - MI_Restricted_Substances - 6f7c4754-84f7-46f0-873a-ec2e9f29e345 - - Glass/phenolic honeycomb, ±45° fabric (0.088) - Glass/phenolic honeycomb, ±45° fabric (0.088), W Direction - 5cdefe18-ca24-4c8e-87dd-e422cbafad17 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 3d241091-1a8c-472a-988b-46aff0cc1c3d - Length - 27.58628294 - - - - - 5.50368346 - - MI_Restricted_Substances - ca72e2f5-a1d0-4bb0-b612-ed5bc26a4f70 - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 9255, oil quenched & tempered at 205°C - c32929c3-9ade-4355-892f-28ddb0c5e1f8 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - f1960bc6-4caf-450d-bb34-5f45dbb2034c - Length - 15.925735 - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - 9224038e-b0d7-42bd-9b97-6478c055cc71 - Mass - 100.0 - - - - - 5.50368346 - - MI_Restricted_Substances - 3427457c-2b3d-4a7e-adbc-40fddd4c1f0e - - Normalized - Carbon steel, AISI 1020, normalized - e4212f84-23c9-4e24-86a9-2c480a88575c - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - 6ab49720-c919-4711-9306-ebc18eea494b - Mass - 100.0 - - - - - - - 7.0 - 6.36567981 - - MI_Restricted_Substances - 2fcb534e-37c5-4b25-add8-ff02d2541953 - - 19e9d742 - part_19e9d742-08ce-4539-bce0-4d8df1627884 - 19e9d742-08ce-4539-bce0-4d8df1627884 - - - 4.0 - 14.78572646 - 8274b460 - part_8274b460-c082-4717-ab9e-9920ef0ff3d2 - 8274b460-c082-4717-ab9e-9920ef0ff3d2 - - - 29.59185029 - - MI_Restricted_Substances - 8be87fd7-f406-4a50-9150-2a29e4a26bfa - - Aluminoborosilicate - N51a - Aluminoborosilicate - N51a - 38f43e87-1708-47f1-a30c-59a2cbb7cf94 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 4b410e14-b7b7-4433-857e-8db7dea9b5aa - Mass - 100.0 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - 4488c58c-5812-4e2c-beca-734bdb61837f - Length - 51.94191208 - - - - - 35.20407485 - - MI_Restricted_Substances - cfb19c31-b156-4a8d-854c-f264975539e1 - - water quenched & tempered at 205°C - Carbon steel, AISI 1095, water quenched & tempered at 205°C - 3e49ad92-4885-477d-8acf-bfbc5c7e2611 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 5ec6e628-d313-42c1-a5cd-138d782e3063 - Mass - 100.0 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 877d894a-0761-45cd-b67a-f0a004becbd1 - Mass - 100.0 - - - - - 35.20407485 - - MI_Restricted_Substances - d50d4fb1-e03a-43e7-b96d-6e8947848f36 - - Borosilicate - 7760 - Borosilicate - 7760 - 18d13a6a-8fff-4cd4-9df8-9fcfd052e5f7 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 5538fe15-9297-4520-9024-6283734a17df - Mass - 100.0 - - - - - - - 8.0 - 3.46279093 - 41fcfe96 - part_41fcfe96-0cb7-459b-990e-0a9cf466b84e - 41fcfe96-0cb7-459b-990e-0a9cf466b84e - - - 46.12358559 - - MI_Restricted_Substances - bbe3f98a-e574-482b-99cc-74e13b224dd3 - - Normalized - Low alloy steel, AISI 5160, normalized - 0d3845c5-34d7-400a-bee3-80981f3a9c22 - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - 155c8b69-3aec-488c-9e84-81ec2a967947 - Mass - 100.0 - - - - - 7.69663062 - - MI_Restricted_Substances - d42eaa02-9811-4935-b9cd-652adc845e8c - - Oil quenched & tempered at 650°C - Carbon steel, AISI 1050, oil quenched & tempered at 650°C - 4f4d69c6-1bbc-4f09-ab53-60a95498a714 - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - 1cc110c5-64f2-4880-b63a-3312b46119e4 - Mass - 100.0 - - - - - 7.69663062 - - MI_Restricted_Substances - 90b2285b-4295-429d-beb8-90d9f5df0101 - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 5046, oil quenched & tempered at 315°C - 475c1813-eff4-4d7f-aa34-21a625870575 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 5c3292e1-9cf2-405f-9958-bbbb7740198e - Mass - 100.0 - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - b2a90408-ff4a-4255-a4da-7c2f1daa045c - Mass - 100.0 - - - - - 7.69663062 - - MI_Restricted_Substances - 0ff273b3-9539-465b-9d91-21fc52f8e16c - - Lithium aluminosilicate - Lithium aluminosilicate - 46737ede-6178-4dee-a3a4-e68cffa11485 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - cc4b5ba7-e4ba-4408-a75a-4e70b9a2b97c - Mass - 100.0 - - - - - 7.69663062 - - MI_Restricted_Substances - 9b08ec7e-e481-47fa-a36b-849db7ef2432 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 8640, oil quenched & tempered at 425°C - a7ae4f2b-6b9a-4a32-a9a5-55fb9d080317 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - e05cb907-5ab8-4186-b865-5206ef069385 - Area - 96.17254799 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - 89f28aa9-fc07-4ac9-8788-58ac8ea3c3bc - Length - 70.02312269 - - - - - 7.69663062 - - MI_Restricted_Substances - 2839a622-af73-4a9f-90fa-0f3498243808 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 4042, oil quenched & tempered at 425°C - aeb72541-06c9-445d-a583-d17e4b217af3 - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - 2e21bc42-8482-4b45-8cdf-9cc033838ded - Mass - 100.0 - - - - - 7.69663062 - - MI_Restricted_Substances - 7a62318a-eff2-4f36-9925-ee919c5b4369 - - S235J - Structural steel, S235J - 51fa18b8-ed5b-4e70-9a85-926d20aff4d3 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 599dc39e-fbe9-4918-903c-201f8fafd517 - Mass - 100.0 - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - 444c53a5-922f-42ca-8e27-4250419a6c82 - MassRemoved - 76.33822913 - - - - - 7.69663062 - - MI_Restricted_Substances - 8b442749-964a-49d6-be5c-9a55c81d85f8 - - Annealed - Carbon steel, AISI 1137, annealed - c71f0b62-bad3-4169-b642-97466bac096c - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 5c175ac7-6633-426d-b196-43311b19d2d6 - Mass - 100.0 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - 80d9c995-9272-4b42-bcdb-da53a364eb1e - MassRemoved - 79.85557032 - - - - - - - 5.0 - 42.08067056 - b577fb1d - part_b577fb1d-285b-409e-9c73-c4c67aef072f - b577fb1d-285b-409e-9c73-c4c67aef072f - - - 24.33908322 - - MI_Restricted_Substances - aa963e30-fca0-439d-bee2-ff48daa946f3 - - As rolled - Carbon steel, AISI 1095, as rolled - 18de39e1-efa3-416c-8305-820c511d7755 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - fdc3ff67-af49-4e3f-ab5a-5ae7dbc8aea3 - Length - 34.56840297 - - - - - 18.91522919 - - MI_Restricted_Substances - 33160988-8422-40e2-93d1-e3e7467eafe9 - - Normalized - Carbon steel, AISI 1030, normalized - e6b8c0f4-9881-4c32-b3c1-f2c03707a676 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - b74da865-8a31-4d41-b8a8-8883acb68bf3 - Length - 50.00760795 - - - - - 18.91522919 - - MI_Restricted_Substances - 9966da3f-c3f0-414e-9bce-4211a9eca2c3 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 8650, oil quenched & tempered at 425°C - 51209b86-7420-495a-9ae3-2917c45bb6d5 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - 376fbb2f-af03-4c94-bbdd-fb020dd33243 - Mass - 100.0 - - - - - 18.91522919 - - MI_Restricted_Substances - 0840d007-df07-4e12-bda5-bfc060fb15e6 - - Annealed - Low alloy steel, AISI 4320, annealed - d026b0f7-b323-4658-b701-dd5b9ef0642b - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - b90ce3a2-6d75-4559-9ea6-6d7d03afe3d8 - Mass - 100.0 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - e59147df-ab41-4304-beda-98aa64536cf5 - Mass - 100.0 - - - - - 18.91522919 - - MI_Restricted_Substances - db238d75-fcb8-41f5-9289-83a352fa83a6 - - Annealed - Carbon steel, AISI 1015, annealed - 10de9487-5e02-4fd3-9e50-cf813f9100e3 - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - 4d3e67b7-82de-46e0-9939-d476f85856d6 - Mass - 100.0 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - 4f80d53e-42d7-4017-a30c-e81cb7c4723f - Length - 56.07903206 - - - - - - - 7.0 - 25.02103844 - 98aa21d0 - part_98aa21d0-06fc-44b1-8fe5-2e59b4c5bb01 - 98aa21d0-06fc-44b1-8fe5-2e59b4c5bb01 - - - 82.30747412 - - MI_Restricted_Substances - bbe3f98a-e574-482b-99cc-74e13b224dd3 - - Normalized - Low alloy steel, AISI 5160, normalized - 66055c02-c174-48cf-a93b-b2a1caa95b51 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - d269bdba-90f7-4b96-9e75-6df612bf51a3 - Length - 50.76314683 - - - - - 5.89750862 - - MI_Restricted_Substances - 9ce914d8-75c1-4c5f-8c57-11c0e62b2cfa - - ASTM A299 Grade A - Structural steel, ASTM A299 Grade A - 5f3b5299-698b-4670-9ff2-02b9eb219537 - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - 90dd5b2e-8f4d-46f0-add5-99ff1689d833 - Area - 67.00907785 - - - - - 5.89750862 - - MI_Restricted_Substances - c15a44c3-d8be-4ae8-9a58-281f13b731cd - - YS420, cold rolled - High strength low alloy steel, YS420, cold rolled - a0ee3dee-d81a-48de-b448-54d0cfebab12 - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - 0e1f1be9-bef9-43ba-9414-e54b8d4b254f - Mass - 100.0 - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - 289c98e6-f616-4f8e-9ef9-324927836d0d - Mass - 100.0 - - - - - 5.89750862 - - MI_Restricted_Substances - 55eaa961-cbe2-4f0a-9531-ec40dc32555a - - YS260, cold rolled - Interstitial free steel, YS260, cold rolled - c5ed30f9-03dd-4053-8b5b-c4e1a60cfe8e - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - 70d819c9-38b0-4d64-a6e0-bfd003d04728 - Area - 52.55875673 - - - - - - - 8.0 - 32.50793317 - - MI_Restricted_Substances - 4a2d9161-0f0a-46c5-91c5-ecc05f02ab7d - - 910f76f0 - part_910f76f0-66f9-452f-8090-72c07bb16e3f - 910f76f0-66f9-452f-8090-72c07bb16e3f - - - 3.0 - 67.53728257 - 6c0e2111 - part_6c0e2111-9a45-49b2-89f9-e75b9236807b - 6c0e2111-9a45-49b2-89f9-e75b9236807b - - - 18.61153776 - - MI_Restricted_Substances - 1a2673ec-4671-4e9c-a73b-2fef7045fb02 - - Aluminoborosilicate - G20 - Aluminoborosilicate - G20 - ad5ea6d8-bd5e-4129-8ecf-54d9e5e5f38e - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 73960487-6fc0-4df7-b3e3-7e034b13713c - Mass - 100.0 - - - - - 20.34711555 - - MI_Restricted_Substances - e678781a-1b38-4709-816b-9db609651db6 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 50B60, oil quenched & tempered at 425°C - f6b11b46-7824-436b-bcd0-0c4f7072fcf2 - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - e2857007-525e-42e0-856d-ea8e587e1af9 - Mass - 100.0 - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - 1cd84982-979f-476d-9569-a73014bd478d - Mass - 64.81055634 - - - - - 20.34711555 - - MI_Restricted_Substances - 0ff3d25e-2024-43a5-9654-bb095ad302ce - - YS260, cold rolled - Bake hardening steel, YS260, cold rolled - e1c23815-ad33-4f51-97b0-6f79b533359c - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 0a7ced6d-460a-4301-b350-afa4640aef30 - Area - 88.82514708 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - 59aef919-4ba8-4fad-bc83-f909df5bb444 - Length - 90.45346956 - - - - - 20.34711555 - - MI_Restricted_Substances - 93e14fb3-4376-4df5-9d31-299bee56ea49 - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 4340, oil quenched & tempered at 540°C - 0fc7dbac-bf70-45c7-90e8-3bd27a45fc1f - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - 0c1a5db1-afbb-4a9b-b9da-d5f3c050426d - MassRemoved - 59.38715397 - - - - - 20.34711555 - - MI_Restricted_Substances - 3fd6cebb-a683-45be-b014-7c3fb617c3e7 - - Glass/polyimide honeycomb, ±45° fabric (0.064) - Glass/polyimide honeycomb, ±45° fabric (0.064), L Direction - d5016dee-0d50-4fb4-abc4-ff412b6567a2 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - 8daed5ae-3333-47bf-963f-5693dfe3963e - Mass - 100.0 - - - - - - - 1.0 - 76.9348563 - 637e0437 - part_637e0437-da8d-40d6-b882-cabd56acb117 - 637e0437-da8d-40d6-b882-cabd56acb117 - - - 45.9378408 - - MI_Restricted_Substances - d50d4fb1-e03a-43e7-b96d-6e8947848f36 - - Borosilicate - 7760 - Borosilicate - 7760 - 41aa4011-d38d-40e0-82e6-eefa8d9d6860 - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - 18e019cd-e438-4439-aba5-793bfff432df - Area - 36.64996839 - - - - - 18.02071973 - - MI_Restricted_Substances - 6d658600-d198-46ed-bcca-cd0e3e2f5f4d - - Oil quenched & tempered at 425°C - Carbon steel, AISI 1060, oil quenched & tempered at 425°C - 09dddbfa-2400-4660-93fc-d0c784324731 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 4f40fad3-7ce7-40f8-bd4d-0940db95abc6 - Mass - 67.77865806 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - 52e9ddf8-90c1-4f1b-9003-eb8de3f2a997 - Mass - 100.0 - - - - - 18.02071973 - - MI_Restricted_Substances - 00268f25-08c7-4add-91f3-3cc4ed1d7e34 - - Oil quenched & tempered at 425°C - Carbon steel, AISI 1141, oil quenched & tempered at 425°C - 244a218d-da02-4600-901f-3c795a8ed628 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 0c7a49f5-6aa3-4cf2-9870-f8b97e7d9e9e - Mass - 100.0 - - - - - 18.02071973 - - MI_Restricted_Substances - 034898f1-834f-4079-a0d3-65fffc17cb4d - - Silica (quartz fused) - Silica (quartz fused) - cc1dcc59-58ce-4ad0-b222-a342e392f666 - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - 02a20918-409d-4751-a8c1-d14dafa88081 - Mass - 100.0 - - - - - - - 5.0 - 11.67781735 - f8a14e94 - part_f8a14e94-a386-4489-9648-e6082d18b30c - f8a14e94-a386-4489-9648-e6082d18b30c - - - 13.87572014 - - MI_Restricted_Substances - 0d45da58-d026-4a44-b2b5-3109fe88f824 - - Annealed - Carbon steel, AISI 1022, annealed - 65ec6136-26bc-442d-9570-1ce48f7690c7 - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - bd16cf39-76af-43f8-b198-aeb8ad7be932 - Mass - 59.98469724 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - e6bb7f1e-7071-4e1d-a373-45ffe368eadc - Mass - 100.0 - - - - - 86.12427985 - - MI_Restricted_Substances - c60fa280-eb24-4c9a-b6cf-a8304e0eb1b5 - - YS500, hot rolled - High strength low alloy steel, YS500, hot rolled - 5aa8cb62-04fb-411f-9001-dec103cb7f1f - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - d42f33b8-5c49-477c-af67-ecb132d88eae - Mass - 100.0 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - e4979d16-32cf-4bb4-93a5-fa69b3693f69 - Mass - 100.0 - - - - - - - 6.0 - 86.29580404 - - MI_Restricted_Substances - 022614af-ecf8-4797-af86-25b711d65e30 - - c36583cf - part_c36583cf-709d-4e48-bcfa-afb789e667d9 - c36583cf-709d-4e48-bcfa-afb789e667d9 - - - 6.0 - 67.96339203 - b786aa15 - part_b786aa15-0e95-4b0a-82e6-923db26e9143 - b786aa15-0e95-4b0a-82e6-923db26e9143 - - - 28.16058794 - - MI_Restricted_Substances - 8c7579d0-7b78-40f6-a9e7-d11eea746c1f - - Uncoated - Press hardening steel, 22MnB5, austenized & H20 quenched, uncoated - f0f45be9-288d-4aa4-989b-0e8bfa87419b - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - a485a8f2-d7fc-4bc3-988b-da33a5828f70 - Length - 21.04648902 - - - - - 10.26277315 - - MI_Restricted_Substances - 8643d806-94c5-42f9-9ffc-4c21a6e16bd0 - - Annealed - Carbon steel, AISI 1141, annealed - b5578b36-590a-4ff3-9586-de0bc55d7ca5 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 9c75e21c-d10b-44e9-bfdb-16d235fd0245 - Area - 33.54337766 - - - - - 10.26277315 - - MI_Restricted_Substances - e6b45bea-dec9-4b91-996a-885bb0c31f8d - - Glass, S grade (10 micron monofilament, f) - Glass, S grade (10 micron monofilament, f) - da3524da-b989-495a-80bc-6a03e4dff35a - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 208aabda-3a37-4f4f-9759-695034f23d93 - Mass - 100.0 - - - - - 10.26277315 - - MI_Restricted_Substances - 82880431-c70c-4df9-856a-d5e00671a184 - - Annealed - Carbon steel, AISI 1020, annealed - f5c11d3d-e942-460a-a6e6-88d85c845501 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - bb96f553-a236-4770-9e20-ccbd1709d75c - Length - 16.77892739 - - - - - 10.26277315 - - MI_Restricted_Substances - 9052201a-a41d-4b86-8c7c-2e80163afd47 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 9255, oil quenched & tempered at 425°C - 259dbdfd-48fd-490b-b87e-c1a2e85fc26e - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - a36cc3bf-3a2e-4f6d-92bd-1ce74df99da7 - Length - 13.0660519 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - c12a6707-fd5a-4b34-8443-ab1cd3886c62 - Area - 17.75081242 - - - - - 10.26277315 - - MI_Restricted_Substances - 356303d7-c574-4db7-80f9-427e176a5308 - - 40CrMoV13-9, quenched & tempered - Low alloy steel, 40CrMoV13-9, quenched & tempered - 9f92067c-64e2-43cd-a019-67fcbd40b9d4 - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - c4afe641-9b45-4754-ba04-d0f4d10a862c - Mass - 100.0 - - - - - 10.26277315 - - MI_Restricted_Substances - b85ebb9e-b198-4497-ae8e-b9b61ecde102 - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 5160, oil quenched & tempered at 315°C - ff3c1af1-7726-48cf-9111-2405634e69c8 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 4c4e97c0-8d3f-43e2-b07b-3dc30b243b4b - Mass - 100.0 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - d091f519-b7d6-4d1d-9425-5fc6116d2bcf - Mass - 100.0 - - - - - 10.26277315 - - MI_Restricted_Substances - 30d9edb0-09d2-4270-b4f5-8dceb44a6bd6 - - Oil quenched & tempered at 540°C - Carbon steel, AISI 1137, oil quenched & tempered at 540°C - 5ec4816a-1e17-49e3-87f2-7045ba08b4a6 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - c43d69af-0147-4859-b393-3a06d193be25 - Mass - 100.0 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 9e5c4c82-e18a-4143-b951-79a464daa2ee - Mass - 100.0 - - - - - - - 8.0 - 55.56172149 - 7f1ea467 - part_7f1ea467-91f8-4023-8fd4-a144cdab337e - 7f1ea467-91f8-4023-8fd4-a144cdab337e - - - 54.56153832 - - MI_Restricted_Substances - c87d2bef-0549-4a3b-b699-3ad17b079fa1 - - YS355, hot rolled - High strength low alloy steel, YS355, hot rolled - 7ac8785d-6c83-4f8f-90de-933949972289 - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - 26432953-6f0e-4d93-96c7-bd5fcf6379f2 - Mass - 100.0 - - - - - 9.08769233 - - MI_Restricted_Substances - 21dcdeeb-524a-488e-b332-fcd4e1caf6f7 - - water quenched & tempered at 650°C - Carbon steel, AISI 1095, water quenched & tempered at 650°C - a790407d-9ced-4977-a510-4e069d78d746 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 03eb66c3-f545-462f-9769-f86b3dd6affc - Mass - 100.0 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - b61ec8b9-64a3-446e-b1ca-34ec20bca0ed - Mass - 100.0 - - - - - 9.08769233 - - MI_Restricted_Substances - a8f02f5c-c80e-446f-92f4-0046f3d093fc - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 8630, oil quenched & tempered at 425°C - 07fde33a-6f9f-45f7-a3ea-e654b0ce2405 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - 442eafc3-87b0-40ac-b29e-e5250db24a9e - Length - 51.49531678 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - 2e2d0c69-7030-4356-9abd-21c9a343f13f - Length - 33.97501107 - - - - - 9.08769233 - - MI_Restricted_Substances - af4f67b9-f5a7-4fc3-9f1d-da3309e4b19a - - Solution treated & aged - Iron-base-superalloy, Cr-Ni alloy, A-286, solution treated & aged - 50b835ed-171b-447e-bd43-b8458edb8a36 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - bb3d5628-9b59-4a22-a339-57214c20ae1d - Mass - 100.0 - - - - - 9.08769233 - - MI_Restricted_Substances - 8dbb57f2-b225-4f57-9a5a-c25a03292d6e - - Annealed - Low alloy steel, AISI 6150, annealed - 0f20032f-64dd-4407-a483-f204c69438fb - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - b2907993-60fd-4b39-9d19-a6320539f3ff - Mass - 100.0 - - - - - 9.08769233 - - MI_Restricted_Substances - 9ecfadb9-f61f-48b3-81b1-bcac80eb164f - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 4150, oil quenched & tempered at 315°C - 8a787e70-737e-46e6-8dab-306d179ef24a - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - 203cae3c-c8ea-468a-b0c2-1a2f1dba8083 - Mass - 100.0 - - - - - - - 9.0 - 10.82996819 - f5dacbb9 - part_f5dacbb9-c1f8-419a-9053-2a4d2c9d18a8 - f5dacbb9-c1f8-419a-9053-2a4d2c9d18a8 - - - 39.23288953 - - MI_Restricted_Substances - c62d668e-5411-4845-b19c-3a0c4eedf872 - - 10CrMo9-10, normalized & tempered - Low alloy steel, 10CrMo9-10, normalized & tempered - 33d3df79-d373-4b94-b3a6-660eb38c7e27 - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - 8314c26c-a7ee-4c74-bb24-5fd5a019029a - Mass - 50.22395157 - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - 29e7d889-d958-4cf6-a9e9-4f530b87ea79 - Area - 5.86994639 - - - - - 10.12785174 - - MI_Restricted_Substances - 0afa77bf-df9b-456c-8c48-3c84b1ccd2e0 - - Low density glass-sphere filled - Bisphenol molding compound (low density glass-sphere filled) - 31c5fa38-c9cb-4a05-82b0-b841e128dbcf - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 2f9ef32d-cf41-40d8-b44e-1b8261e8da15 - Mass - 100.0 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - 5fad0148-6141-4b01-bc17-321eb4744943 - MassRemoved - 76.2154308 - - - - - 10.12785174 - - MI_Restricted_Substances - ee5b018e-8d7f-4fb1-bad0-c73e871592bc - - 16Mo3, normalized - Low alloy steel, 16Mo3, normalized - a529dc2e-5812-49a2-95b6-6dd4275ccfaf - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - f7aaf415-d27b-4f53-bb9d-8395e0f29297 - Mass - 100.0 - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - df76aa4d-4723-48c9-a1ae-f9609cf40fa4 - Mass - 100.0 - - - - - 10.12785174 - - MI_Restricted_Substances - a583e694-02c0-408e-9af4-6fbee856b58f - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 9260, oil quenched & tempered at 650°C - a71e7f88-dd9f-4bd5-97c5-ba0e454c8a86 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 25e57cf3-f067-4f6d-8227-81f597c51a51 - Mass - 100.0 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - 60c7a5c7-b458-4867-bc66-6a7b7cf161e4 - MassRemoved - 51.18256791 - - - - - 10.12785174 - - MI_Restricted_Substances - 8ef69f01-44dd-4b96-ac5c-731bff7ceb6c - - Glass ceramic - 9606 - Glass ceramic - 9606 - ac8979df-ffa0-4867-92bd-4f50e905e723 - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - dc7fe693-f05f-4a56-a129-0f668f88f684 - Mass - 100.0 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - d3632ca9-6bb1-4658-a277-3ecec3de1232 - Mass - 100.0 - - - - - 10.12785174 - - MI_Restricted_Substances - a583e694-02c0-408e-9af4-6fbee856b58f - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 9260, oil quenched & tempered at 650°C - beaa77bc-aa95-48b4-a090-f8d2d782206a - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - d42538b4-5ecd-43e4-8fe5-566b54d31b2f - Mass - 100.0 - - - - - 10.12785174 - - MI_Restricted_Substances - bac6ffd4-6d83-432c-90f4-de9606502589 - - Alkali barium glass - Alkali barium glass - c6e0f32c-d30b-482b-ae39-6a157d6c056b - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - c199a1d4-2aa7-4696-b556-67be5a32877e - Mass - 100.0 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 143e76aa-6810-4714-9c4b-0df021ee35c0 - Mass - 100.0 - - - - - - - 8.0 - 56.75165851 - bbcf0cb7 - part_bbcf0cb7-3799-419c-bb91-69efc6a773a2 - bbcf0cb7-3799-419c-bb91-69efc6a773a2 - - - 39.58289531 - - MI_Restricted_Substances - ac1b4f23-a357-459b-bfeb-deabffbc7020 - - Oil quenched & tempered at 315°C - Carbon steel, AISI 1050, oil quenched & tempered at 315°C - 75e963b5-5092-420b-8f67-36bb94675137 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - 25d88b7e-7987-4bcd-9d04-0a59ca932205 - Length - 67.65751534 - - - - - 12.08342093 - - MI_Restricted_Substances - bfd46ac9-4021-49b6-9656-d1e426bd1c79 - - Oil quenched & tempered at 205°C - Carbon steel, AISI 1340, oil quenched & tempered at 205°C - cc19f7cb-4027-4c5e-a5db-2dd7a7559226 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - d7ecc6bf-c407-41c3-8b1a-6ba1b26dd902 - Area - 38.52274936 - - - - - 12.08342093 - - MI_Restricted_Substances - e06fc27c-5e39-4218-a5ca-6927af12a511 - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 4140, oil quenched & tempered at 205°C - 9420bb2f-2d32-4cfe-a1f6-2ee9dc88147e - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - 8baa897b-6b55-43c3-a1bf-76df9b858209 - MassRemoved - 54.65452426 - - - - - 12.08342093 - - MI_Restricted_Substances - d53daeda-87b2-4ade-a7a2-1ebe84e7e3ef - - Annealed - Low alloy steel, AISI 5115, annealed - ba3706f1-d63d-4915-aaf4-64fbbb441514 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - be2a3e2b-dc24-46df-b793-11fdbaf7a046 - Mass - 100.0 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 8992ea99-439f-4945-8d59-7b1da55af53c - Mass - 100.0 - - - - - 12.08342093 - - MI_Restricted_Substances - 6ee51b17-7fe0-46fd-8e32-a71585a34000 - - 40-45% glass and mineral - PBT (40-45% glass and mineral) - c5e03d92-c8bb-4bd6-8807-22324b49bdd8 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - ef746a79-0608-45eb-9625-1009cad3791e - Mass - 100.0 - - - - - 12.08342093 - - MI_Restricted_Substances - f8d1136f-3c1a-41e2-8b78-cf5f3965cba2 - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 6150, oil quenched & tempered at 205°C - 66478372-76a4-407e-b812-4526b76fe9ef - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - e6b23627-745a-46ec-849e-ddfb9fb69ff9 - Mass - 100.0 - - - - - - - 3.0 - 47.09622312 - f6fbbc6b - part_f6fbbc6b-42d8-4d0f-8b82-95595f7cfc97 - f6fbbc6b-42d8-4d0f-8b82-95595f7cfc97 - - - 11.8254642 - - MI_Restricted_Substances - dec2859d-9573-49bd-846a-5e2a288c063f - - Soda barium glass - Soda barium glass - 8d38f1ad-6599-48e2-b23c-68fc43a64acf - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - e4279d68-ed80-4c1b-bd24-575b9cceb825 - Mass - 100.0 - - - - - 22.04363394 - - MI_Restricted_Substances - dec2859d-9573-49bd-846a-5e2a288c063f - - Soda barium glass - Soda barium glass - f0390429-7c94-4cb2-9d6d-61f157e52841 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - c6db4588-d5e0-4219-968b-eed84cd89885 - Length - 4.21755383 - - - - - 22.04363394 - - MI_Restricted_Substances - 6f7c4754-84f7-46f0-873a-ec2e9f29e345 - - Glass/phenolic honeycomb, ±45° fabric (0.088) - Glass/phenolic honeycomb, ±45° fabric (0.088), W Direction - 252842a8-fb2a-4c4f-8d28-41739c6318dc - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - ec951dd2-d457-4e17-8988-b99dc3b2c87d - Mass - 100.0 - - - - - 22.04363394 - - MI_Restricted_Substances - c3e12411-ba5c-485f-b516-f489b95e8233 - - FR-4.1 (Df < 0.005 at 10GHz), Epoxy/Glass fiber, PCB laminate - FR-4.1 (Df < 0.005 at 10GHz), Epoxy/Glass fiber, PCB laminate - b39e6f9f-e41f-4cdd-b189-87298b42a606 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 789840db-daaa-4de1-b9a3-bc19836d8c37 - Mass - 100.0 - - - - - 22.04363394 - - MI_Restricted_Substances - 8245dc6c-3d61-4f18-82c8-6fb946e1582c - - Glass foam (0.13) - Glass foam (0.13) - a9e396af-a85b-416d-a610-0c044c88995e - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - f55d8028-28c0-40be-80f8-3ca1f420e68b - Mass - 100.0 - - - - - - - 6.0 - 55.60882997 - 7d472c22 - part_7d472c22-d1df-40ef-a113-6c4122effb2e - 7d472c22-d1df-40ef-a113-6c4122effb2e - - - 74.36814684 - - MI_Restricted_Substances - afc85ad6-9e99-44a7-a959-f75ddbacff15 - - FR-5, Epoxy/Glass fiber, PCB laminate - FR-5, Epoxy/Glass fiber, PCB laminate - 4bc44872-9a5d-495a-9caf-980d43e66b11 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 21ec7642-fe81-4c1c-a592-fabcaeff2b6b - Mass - 4.40019215 - - - - - 4.27197552 - - MI_Restricted_Substances - 63d5d6b5-3b52-4cd9-a56f-6e7c5c945139 - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 81B45, oil quenched & tempered at 315°C - 74879e4c-7f99-47b3-b943-54b7b54f6222 - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 20c2c644-69b9-4aa2-a360-e60e64f749e6 - Mass - 100.0 - - - - - 4.27197552 - - MI_Restricted_Substances - 00268f25-08c7-4add-91f3-3cc4ed1d7e34 - - Oil quenched & tempered at 425°C - Carbon steel, AISI 1141, oil quenched & tempered at 425°C - d69c5639-1b8b-4737-907f-ed4d5be46e4d - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - 7cec420e-96c3-4ebc-b0da-625f9feb724e - Mass - 100.0 - - - - - 4.27197552 - - MI_Restricted_Substances - 9c1918f9-aa9f-4078-93df-23539c8df8a8 - - Soda-lime - 0091 - Soda-lime - 0091 - 4fa78796-c5a9-46ca-86ce-f88f8a01b793 - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - d3fb1692-a0d2-4ed7-8e3b-4933bb09a70f - Mass - 100.0 - - - - - 4.27197552 - - MI_Restricted_Substances - 8349c912-772a-4fd7-90a5-7d52aa9c9448 - - Oil quenched & tempered at 425°C - Carbon steel, AISI 1137, oil quenched & tempered at 425°C - 1953f7e4-c39f-492a-a1b5-b6ed45c83f9a - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - 91cc33c3-fc0c-480d-a407-b205ddbe1ea2 - Area - 16.66222341 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - a6a67b54-a11a-4abe-b5b1-ea66d74709ca - Mass - 100.0 - - - - - 4.27197552 - - MI_Restricted_Substances - 9cae15c6-b5b6-4ab9-9008-d962bee0e662 - - Glass/phenolic honeycomb, 0°/90° fabric (0.128) - Glass/phenolic honeycomb, 0°/90° fabric (0.128), L Direction - 9b7e2cfc-3307-431d-b34d-7003cac18824 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 73658f79-c750-4cd8-8eef-ee903cddc232 - Mass - 10.39079842 - - - - - 4.27197552 - - MI_Restricted_Substances - a22f3160-83fe-4a55-8459-26e3f8647523 - - 55% glass and mineral filled - PARA (55% glass and mineral filled) - 950e232a-586e-4d42-9a1f-7b9733ef890a - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - 1575dd40-f600-4bc4-a88a-c598678257de - Area - 64.68128173 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 929cc29c-e0e8-4022-b2a6-01a952031a69 - Mass - 100.0 - - - - - - - 2.0 - 14.80806666 - b1cb8514 - part_b1cb8514-070c-4d62-9ef5-4c49c90bc898 - b1cb8514-070c-4d62-9ef5-4c49c90bc898 - - - 97.05102927 - - MI_Restricted_Substances - 8dbb57f2-b225-4f57-9a5a-c25a03292d6e - - Annealed - Low alloy steel, AISI 6150, annealed - 86c67d23-08be-4393-9d92-495098f61f07 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 80c605e4-edf1-4cd5-bf78-a206557fc22f - Mass - 100.0 - - - - - 0.73724268 - - MI_Restricted_Substances - a83cb894-badf-47de-8aff-fe75bbb39ecd - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 81B45, oil quenched & tempered at 540°C - 61cdd020-4268-4783-9885-d40cb0c8d22a - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - a83e56d7-ae09-4e6f-924d-f26157e38358 - Mass - 100.0 - - - - - 0.73724268 - - MI_Restricted_Substances - ecee7ab4-461f-42e0-9b52-d03ea031201c - - Normalized - Carbon steel, AISI 1144, normalized - 06df061e-da0a-4d4c-9d3d-f6e18221e033 - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - eace4d01-c48e-4b1e-8e22-15225c63f9bf - Area - 55.08029659 - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - 41aaa4b3-1aaa-4dc8-9fa7-f19ff45a83ae - Mass - 100.0 - - - - - 0.73724268 - - MI_Restricted_Substances - 66ed26ec-15e8-47d9-a7dc-140271411c07 - - Quenched & tempered - Low alloy steel, AISI 4130, air melted, quenched & tempered - 45b2ca44-3955-48b5-8eac-b98cec5366f3 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 4513f058-b7a2-4702-aa6e-decfec920a1a - Mass - 100.0 - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - a960eb1f-91b4-4d76-af51-3b97a0c3bf8c - Mass - 39.23225702 - - - - - 0.73724268 - - MI_Restricted_Substances - af4f67b9-f5a7-4fc3-9f1d-da3309e4b19a - - Solution treated & aged - Iron-base-superalloy, Cr-Ni alloy, A-286, solution treated & aged - 1916a851-ca70-4761-a100-5a0fd2c7ee5d - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - b3ac55f8-96d0-436e-bd89-27d480e45e0a - Mass - 100.0 - - - - - - - 6.0 - 7.05108042 - b6c22120 - part_b6c22120-5e85-4ed0-92c7-590b9eb9ac7a - b6c22120-5e85-4ed0-92c7-590b9eb9ac7a - - - 92.89500778 - - MI_Restricted_Substances - 81ce98b3-d459-4695-9dd9-d53244be47ed - - Annealed - Carbon steel, SA216 (Type WCC), cast, annealed - 12376dff-8e97-4e2c-9f52-fcca2e966de3 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - 5054c941-f1fc-4991-864b-06f9400d43ae - Area - 43.14095589 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - aeb8805c-e856-4dcb-bbab-e379818c0478 - Length - 35.58356805 - - - - - 2.36833073 - - MI_Restricted_Substances - 00fe5279-94a1-43fd-8b88-d83679a1bdce - - Normalized - Low alloy steel, AISI 8650, normalized - 94527534-0ff8-4ec1-aa02-5fd4dd86cbca - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 79ad3c95-21f4-429e-95e5-8dfa2f5be558 - Mass - 100.0 - - - - - 2.36833073 - - MI_Restricted_Substances - 2fca0cda-4548-4601-ade6-49478da1542f - - Potash soda lead glass - 0120 - Potash soda lead glass - 0120 - eef4536e-0d78-4abf-adbf-f27a06ee9cf7 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 0b44e966-c220-49a6-b05f-8644b6e5bdb5 - Mass - 100.0 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - fdeac97c-9a5b-41d0-baad-81336f423d96 - Area - 77.51804831 - - - - - 2.36833073 - - MI_Restricted_Substances - 4ad00a9e-92b5-4e28-92a0-409da4495c54 - - Oil quenched & tempered at 205°C - Carbon steel, AISI 1060, oil quenched & tempered at 205°C - fafbc500-8dbb-4e8f-af0c-bfc59a8b2bb3 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - 76bb9be2-bf69-4a02-8cb3-42b6d3246859 - Length - 71.41872307 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - f6122a10-907d-4619-a69b-847a1fa3368f - Mass - 100.0 - - - - - - - 3.0 - 13.14036199 - - MI_Restricted_Substances - 0dedeb55-6f6f-42f9-b703-5225f1cab2fb - - f0a7ab1b - part_f0a7ab1b-d6f5-4f47-ad8e-12d3e43d65a5 - f0a7ab1b-d6f5-4f47-ad8e-12d3e43d65a5 - - - 3.0 - 41.4643855 - 2c988253 - part_2c988253-cf8f-45cd-b7c4-cd4903dcd49c - 2c988253-cf8f-45cd-b7c4-cd4903dcd49c - - - 9.23008383 - - MI_Restricted_Substances - 4cea2241-b602-4843-a983-45b33e64af05 - - YS600, cold rolled - Dual phase steel, YS600, cold rolled - 524819a4-baa5-40eb-b5a5-2e131ebfeeee - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - e7708b91-0bf6-46c6-a0f5-a5915cce29ef - Mass - 100.0 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - 3c055067-1d8e-4d09-9eba-aabe150346f3 - Mass - 100.0 - - - - - 30.25663872 - - MI_Restricted_Substances - a89802d6-13c5-496d-b139-57ae43e6591c - - As rolled - Carbon steel, AISI 1022, as rolled - 953dc823-906a-4e1b-af55-24208c11831c - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - 40b06799-47a2-4ac4-a84d-f17e31b3b432 - Mass - 40.87403777 - - - - - 30.25663872 - - MI_Restricted_Substances - 59ed9004-2126-437f-aa61-b8a0189e69d3 - - Oil quenched & tempered at 650°C - Carbon steel, AISI 1095, oil quenched & tempered at 650°C - f496a5a7-129c-4e5d-9a3e-9be489e5d6b0 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - bc3e2ee0-f497-4f79-ac4f-f2f0366a4837 - Mass - 100.0 - - - - - 30.25663872 - - MI_Restricted_Substances - 9e4a9338-5342-488e-ba70-770407c295f3 - - Oil quenched & tempered at 315°C - Carbon steel, AISI 1040, oil quenched & tempered at 315°C - 4d0995c4-f147-4654-acba-39954f9a5d93 - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - 378919a5-f10e-482c-b0bf-3a0f529ee29e - Mass - 100.0 - - - - - - - 5.0 - 28.70503697 - 4bf6e986 - part_4bf6e986-258f-4be2-975a-b61b454fd036 - 4bf6e986-258f-4be2-975a-b61b454fd036 - - - 89.11117119 - - MI_Restricted_Substances - b22c05ba-b0f7-4e07-890d-c5066c0db098 - - 40% glass and mineral - PPA (40% glass and mineral) - d02fd096-bc39-4e63-8595-cabbda073d3f - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - a8915a7a-54fe-4180-9b14-2cd502ef844a - Mass - 100.0 - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - 5e09828c-7dc7-4c3d-a3de-81c97726afa3 - Mass - 100.0 - - - - - 2.7222072 - - MI_Restricted_Substances - aa4ba2ad-ff11-448b-90e3-477f9a5f41fb - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 5150, oil quenched & tempered at 205°C - 8919da4a-bff7-471b-92d4-6e480aedd51b - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - 22a1af61-950f-4631-8e36-09b8b226cfcd - MassRemoved - 76.786467 - - - - - 2.7222072 - - MI_Restricted_Substances - 5b4ea232-c032-4f8d-a633-3b059e93651a - - 36%Co steel - Hard magnetic alloy, 36%Co steel - 937c119a-d8ab-4f2a-bfe6-527ed53f36e4 - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - b5585cab-ca53-42ae-893b-438529c3cc6b - Mass - 100.0 - - - - - 2.7222072 - - MI_Restricted_Substances - 508489f2-cc48-4f0a-a6ee-482bb89a0386 - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 5160, oil quenched & tempered at 205°C - a772bd14-162d-4be6-8c68-3a6257195aa9 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - 2d8ffac5-4ca4-43ff-b862-abe7c992dea2 - Mass - 100.0 - - - - - 2.7222072 - - MI_Restricted_Substances - 439e62b9-4268-44c6-a084-695412628448 - - water quenched & tempered at 425°C - Carbon steel, AISI 1095, water quenched & tempered at 425°C - 23ad95e3-9da9-4b3b-9a12-086d4e3782dc - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - 79ab9f32-6fa4-4744-8404-a78e113343ca - Mass - 100.0 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - 0fb5239f-3ffd-4eff-b115-ae18c7b5476a - Mass - 100.0 - - - - - - - 7.0 - 86.95584078 - 8850405f - part_8850405f-1bc8-4ee1-9e75-adcb828b2794 - 8850405f-1bc8-4ee1-9e75-adcb828b2794 - - - 59.76124473 - - MI_Restricted_Substances - b3c74dfc-9d72-4938-89cb-1a49ce0fdb80 - - Normalized - Carbon steel, AISI 1137, normalized - bef17b43-13e6-42d3-940e-9b453e4a92f6 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - b7684e39-7e3b-4dab-98cd-c9fd75c80e82 - Mass - 100.0 - - - - - 13.41291842 - - MI_Restricted_Substances - c80cfa14-8e35-42c8-a52d-d52864a3e2ea - - water quenched & tempered at 315°C - Carbon steel, AISI 1137, water quenched & tempered at 315°C - 11476ef8-d73f-4799-9563-3adac3b7fcf0 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - 1a829ca7-bbba-41e3-9e71-73e060cff916 - Mass - 100.0 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - 44697ca4-97e9-4840-9a94-831c57ced065 - Mass - 100.0 - - - - - 13.41291842 - - MI_Restricted_Substances - 9baf14a0-efff-4bce-9674-553db30bee1b - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 9255, oil quenched & tempered at 650°C - 070a8f49-a62c-48f5-8327-c2839138305a - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - f859aad7-e597-4c0f-8ee3-dbf8db722210 - Area - 56.93592557 - - - - - 13.41291842 - - MI_Restricted_Substances - d56a3593-45b4-418e-8f28-3fde55e8479f - - Homopolymer, 40% glass and mineral - PP (homopolymer, 40% glass and mineral) - a48ba86f-ca66-471e-99a7-11b96d16d089 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 928af391-7b14-4095-b310-7a0d4fb50d8b - Mass - 100.0 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 94837ed6-4763-4188-bcb2-f9d76fec1148 - Area - 93.14324431 - - - - - - - 5.0 - 58.99342226 - - MI_Restricted_Substances - a78dcd3a-f108-4fdb-857e-e2d00ed319d4 - - 09350fa0 - part_09350fa0-964d-456a-875c-2355638255a2 - 09350fa0-964d-456a-875c-2355638255a2 - - - 2.0 - 26.62218819 - - MI_Restricted_Substances - 3d4d35cd-1db3-477c-8f3f-b90800ea1c4d - - 0d5094b9 - part_0d5094b9-448f-4311-96e4-6355b5ea980e - 0d5094b9-448f-4311-96e4-6355b5ea980e - - - 1.0 - 42.12112396 - 1d364f95 - part_1d364f95-3b32-4f32-aed1-367c536a532f - 1d364f95-3b32-4f32-aed1-367c536a532f - - - 48.23920561 - - MI_Restricted_Substances - 7c0b2792-bc51-4837-a380-6cdb1c2fba31 - - water quenched & tempered at 205°C - Carbon steel, AISI 1030, water quenched & tempered at 205°C - f8179b44-4bf0-491c-876d-0a6302555b8e - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - ae31d735-5ef4-4561-bf00-7c41b089d9dd - Mass - 100.0 - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - cc5b04e5-eddd-4572-abff-9cc328602f24 - MassRemoved - 56.82728684 - - - - - 6.47009929 - - MI_Restricted_Substances - 6ad963b9-76ae-4d8e-be3b-12ec82c47054 - - Normalized - Carbon steel, AISI 1060, normalized - 1b3b78c7-840c-4991-945a-88510fccafa2 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 1a66aa79-8651-4c8e-9c86-a52ef36c31d5 - Mass - 100.0 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - d4f821e2-4a23-4cf2-8926-65786d7012f9 - Length - 55.4947851 - - - - - 6.47009929 - - MI_Restricted_Substances - 3bed321b-712b-4769-ba8b-7297fb3569a7 - - Quenched & tempered - Low alloy steel, AISI 4340, quenched & tempered - 33a3eff2-e1e4-4c21-8ac7-9a905e1e862e - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - 20fe4340-06c7-41b8-81d6-ca1340e1c90a - MassRemoved - 24.66429799 - - - - - 6.47009929 - - MI_Restricted_Substances - eb2b811b-1da6-465a-857f-6d14b372a38b - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 50B60, oil quenched & tempered at 650°C - 68c27c37-385d-499b-930c-b78158169706 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - 3f7cff83-2617-42ca-8868-574296edf06c - MassRemoved - 95.20358554 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 0a3118ff-9aae-4571-8895-a58ba84e33c9 - Length - 23.36205803 - - - - - 6.47009929 - - MI_Restricted_Substances - bbe0765c-012b-434e-878b-b40ad692b373 - - YS550, hot rolled - High strength low alloy steel, YS550, hot rolled - c3492580-102d-4f91-8dfd-26db637181af - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 0c776f58-0051-4cb9-bb26-9be1e376bc3f - Area - 45.54190637 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 58f68306-3ccd-4ebf-b67f-0ae0f313ceec - Length - 40.21596756 - - - - - 6.47009929 - - MI_Restricted_Substances - ee08f647-79af-49f3-98c5-043480a0fed4 - - Quenched & tempered - Low alloy steel, 4330V, quenched & tempered - 99290faa-a92c-4583-9b0d-32539e92b2d6 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - d0100540-dda2-4a97-bd09-1427497475ed - Length - 9.72854658 - - - - - 6.47009929 - - MI_Restricted_Substances - 356303d7-c574-4db7-80f9-427e176a5308 - - 40CrMoV13-9, quenched & tempered - Low alloy steel, 40CrMoV13-9, quenched & tempered - 74840c65-ae0a-441a-b6d8-05e21554527f - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - 66e4f09a-f36b-4510-8f50-40a22c2eb3e7 - Length - 43.41760284 - - - - - 6.47009929 - - MI_Restricted_Substances - bbe3f98a-e574-482b-99cc-74e13b224dd3 - - Normalized - Low alloy steel, AISI 5160, normalized - 4e5bd8ab-b97d-437f-ab80-0c5670286203 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 51a5107c-bc3c-47c7-b6b2-23d2c8dcacec - Mass - 100.0 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 2c1e3bc7-75c6-4638-9130-f90efe2c2d5c - Mass - 100.0 - - - - - 6.47009929 - - MI_Restricted_Substances - 1b3f17f9-2754-4fc4-bfa2-75ff0df55185 - - Polytetrafluoroethylene (PTFE)/Glass fiber, PCB laminate - Polytetrafluoroethylene (PTFE)/Glass fiber, PCB laminate - 4bfe58f3-cbc1-453e-92e9-688613f20f8f - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - c037fd34-47c3-445e-87e8-1c86512d3786 - Mass - 100.0 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 3e213698-14d3-42a2-9989-af8aa3312172 - Mass - 100.0 - - - - - - - 5.0 - 85.95529663 - 7ec3a18c - part_7ec3a18c-ffff-439f-9305-d9748487b66a - 7ec3a18c-ffff-439f-9305-d9748487b66a - - - 33.46548845 - - MI_Restricted_Substances - 9a48479a-292f-4bdd-aab5-0ad0835d7480 - - Oil quenched & tempered at 205°C - Carbon steel, AISI 1095, oil quenched & tempered at 205°C - 643411c0-010a-4d78-907b-49a80a3e41e3 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 7e66d1e3-6dba-410f-aa77-dc1022601c9c - Area - 5.78555348 - - - - - 13.3069023 - - MI_Restricted_Substances - 5dbabc2e-4263-4458-abe1-31a2ece9e122 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 5160, oil quenched & tempered at 425°C - 4a10af13-f6ee-4995-8344-1ce2bad199ca - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 1a8fbc41-1827-4377-bb92-afb85abba9f9 - Length - 69.05896475 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - 488d255d-4e2b-46af-9be2-a1ce70d1e17d - Mass - 100.0 - - - - - 13.3069023 - - MI_Restricted_Substances - ef0841e5-8fb9-46b4-aebb-deda5cb684ec - - SAE 8630, cast, quenched & tempered - Low alloy steel, SAE 8630, cast, quenched & tempered - 56a154cf-def2-47ce-ba1e-484564e1d13b - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - 8935f69d-9e5d-4df9-8a90-62331e6f350c - MassRemoved - 54.87286586 - - - - - 13.3069023 - - MI_Restricted_Substances - 87e1a3cd-fd79-4013-b5f8-56d6f28bef34 - - Oil quenched & tempered at 540°C - Carbon steel, AISI 1144, oil quenched & tempered at 540°C - 426844c2-8310-476f-9003-ddaa939ef946 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - 42356d23-a1bc-4085-918b-bcbb85dac7ce - Area - 52.54359811 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - 0be48a8b-c143-4f2c-bc8a-1758c2e59f2e - Mass - 100.0 - - - - - 13.3069023 - - MI_Restricted_Substances - a22f3160-83fe-4a55-8459-26e3f8647523 - - 55% glass and mineral filled - PARA (55% glass and mineral filled) - c0f5f88d-93d8-43a3-a832-ac7880083a80 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - c53b58fa-c2ae-4d10-ab66-8ab56b237087 - Mass - 100.0 - - - - - 13.3069023 - - MI_Restricted_Substances - 90b2285b-4295-429d-beb8-90d9f5df0101 - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 5046, oil quenched & tempered at 315°C - 0fa102a1-3015-4fd7-b13a-b44d6884f7b5 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 4d590157-848b-4d72-a031-b06cdb939687 - Mass - 100.0 - - - - - - - - - 4.0 - 3.07637099 - 70f8232a - part_70f8232a-26b1-483d-adaf-c07e456b7752 - 70f8232a-26b1-483d-adaf-c07e456b7752 - - - 55.76185623 - - MI_Restricted_Substances - e8c6d73a-bd7a-4ef3-ae11-48e45d4a5515 - - Glass, E grade (0.4-12 micron monofilament, f) - Glass, E grade (0.4-12 micron monofilament, f) - b9ee7aab-1861-48b9-a1a2-1e4bdefc22ec - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 8d8d943a-0d46-40ba-bb6a-93f0a1dd920c - Mass - 100.0 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - e149f253-572a-4bc6-83d2-bf194e5708e1 - Mass - 100.0 - - - - - 8.84762875 - - MI_Restricted_Substances - 5169a157-0d18-4d45-b197-799e06aa00bc - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 9255, oil quenched & tempered at 315°C - a3bb3af9-27e6-46ca-bb64-6a2a0623375e - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 3f5ff23d-4c89-4dab-8f73-bd7fd2175a77 - Mass - 100.0 - - - - - 8.84762875 - - MI_Restricted_Substances - 6fa5237c-2f5c-4220-941e-b19cd18ec544 - - Normalized - Low alloy steel, AISI 6150, normalized - 21276669-329f-4952-91ad-c2f79f3ce717 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - 7c6466b4-6d98-4968-9b81-d26df9d89279 - Length - 0.81775076 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 373fe6b4-5498-48a5-8d41-e8b382c1feb0 - Mass - 100.0 - - - - - 8.84762875 - - MI_Restricted_Substances - b1fc58b3-1acb-4c8b-9974-7c4692ec32d0 - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 8650, oil quenched & tempered at 650°C - 6c87c1c2-8743-45ad-9362-0f5eeac27b1b - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - fe5fb621-4a55-4fcc-80f4-aadc5cfcb7e4 - MassRemoved - 1.94878522 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - b6f0f8ac-a0d0-4381-88f3-1863b47446ca - Mass - 100.0 - - - - - 8.84762875 - - MI_Restricted_Substances - d50ee383-7a44-463f-b42b-c38a6c6bb6d3 - - Oil quenched & tempered at 425°C - Carbon steel, AISI 1040, oil quenched & tempered at 425°C - 1e5cd8b2-d920-4941-8f4e-7b859656f987 - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - 9b183e4f-7788-4a74-a9e0-805a3aa2c821 - Mass - 100.0 - - - - - 8.84762875 - - MI_Restricted_Substances - 6ad310ec-db2b-43b1-afa1-9b6ddae5880c - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 94B30, oil quenched & tempered at 425°C - fcc06535-6584-46b3-85f4-06d2a1ca8b03 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - db527b24-9abe-4698-aae4-4a48e47960da - Mass - 100.0 - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 7b80ef3d-93d3-4c79-a573-357a2a358a6b - Mass - 100.0 - - - - - - - 9.0 - 89.66935052 - 195a024b - part_195a024b-3e4f-4b19-bbad-f089cd62b2bf - 195a024b-3e4f-4b19-bbad-f089cd62b2bf - - - 76.57883007 - - MI_Restricted_Substances - 439e62b9-4268-44c6-a084-695412628448 - - water quenched & tempered at 425°C - Carbon steel, AISI 1095, water quenched & tempered at 425°C - 67b10f59-fbbc-4c3b-8944-0ef9570b59db - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 2d6d5a93-a89c-4d00-b5b8-db49fa9ebc05 - Mass - 100.0 - - - - - 4.68423398 - - MI_Restricted_Substances - ee5b018e-8d7f-4fb1-bad0-c73e871592bc - - 16Mo3, normalized - Low alloy steel, 16Mo3, normalized - 32a07b48-d0be-45e3-8e51-0f34a1c5907e - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 784bc120-d206-407b-b38f-31adfa10df74 - Length - 35.61911575 - - - - - 4.68423398 - - MI_Restricted_Substances - d50ee383-7a44-463f-b42b-c38a6c6bb6d3 - - Oil quenched & tempered at 425°C - Carbon steel, AISI 1040, oil quenched & tempered at 425°C - e39e44b3-6e2f-4be5-ae25-ad420f1a6299 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 3ce2aaba-d58e-48ba-8e89-c26b8897924a - Mass - 100.0 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 9f669457-a33c-4f78-8bb6-1841e5c149d6 - Mass - 57.05650199 - - - - - 4.68423398 - - MI_Restricted_Substances - fef7ffc8-9e47-4d80-abd6-138167e14e08 - - Oil quenched & tempered at 650°C - Carbon steel, AISI 1141, oil quenched & tempered at 650°C - e66aee7e-347b-4988-9e0b-bfcdc3a83dbe - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 27c37fbc-313f-483d-8e63-f496eb533762 - Mass - 100.0 - - - - - 4.68423398 - - MI_Restricted_Substances - ef0841e5-8fb9-46b4-aebb-deda5cb684ec - - SAE 8630, cast, quenched & tempered - Low alloy steel, SAE 8630, cast, quenched & tempered - 7b7fb783-ed2c-4847-b99e-daeb6d988eda - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - c031e592-e0e0-4af9-8fc3-9de1734131b7 - Mass - 18.83856315 - - - - - 4.68423398 - - MI_Restricted_Substances - 30d9edb0-09d2-4270-b4f5-8dceb44a6bd6 - - Oil quenched & tempered at 540°C - Carbon steel, AISI 1137, oil quenched & tempered at 540°C - 20ee1902-c282-4a50-92f6-2c9eacb73737 - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - 7e9cba50-9b50-439e-b58a-a458daa1e0d9 - MassRemoved - 97.32515867 - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - 5aa5f843-256e-4b4f-80aa-dd2b4e23e01a - MassRemoved - 3.2971255 - - - - - - - 6.0 - 23.2413665 - 14f0e1e4 - part_14f0e1e4-6765-4893-b03e-d2d1c17b8c71 - 14f0e1e4-6765-4893-b03e-d2d1c17b8c71 - - - 80.53063656 - - MI_Restricted_Substances - 90514ab4-75b3-48a9-9a07-98eb8f83ef81 - - As rolled - Carbon steel, AISI 1015, as rolled - 8e890dd5-0db6-4029-9435-1419f60aaa4f - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - f503fe00-672f-4ab5-82f5-a2aa8e08a5f9 - Mass - 100.0 - - - - - 2.78133763 - - MI_Restricted_Substances - d02817f7-7500-4fcb-8c34-40927da681a5 - - Quenched & tempered - Carbon steel, SA216 (Type WCC), cast, quenched & tempered - 514c71a8-0111-45cc-bdcc-522dee776a2d - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - f2e8ca05-a474-49f3-a82c-c093fe13ba1b - Mass - 100.0 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 3452d23d-9d95-4467-9863-c68df83acf57 - Mass - 100.0 - - - - - 2.78133763 - - MI_Restricted_Substances - 2a840794-eac4-4f77-90ba-f84bce518c0f - - Glass/phenolic honeycomb, 0°/90° fabric (0.055) - Glass/phenolic honeycomb, 0°/90° fabric (0.055), L Direction - bed81f2c-30e8-4eac-89b1-b4124a045c14 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - a8a45f5a-eead-4c40-b962-b6f711d06505 - Mass - 100.0 - - - - - 2.78133763 - - MI_Restricted_Substances - 853c3077-4ccc-4b2e-a5dd-86833072391f - - Borosilicate - 7040 - Borosilicate - 7040 - 225f24ae-df65-45e5-8d8a-1a0f2838f5e9 - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - 6ebce5ce-d522-424a-9f65-be0123e5b12c - Mass - 100.0 - - - - - 2.78133763 - - MI_Restricted_Substances - db238d75-fcb8-41f5-9289-83a352fa83a6 - - Annealed - Carbon steel, AISI 1015, annealed - b062ad8c-661d-447d-9ae2-5cc335062018 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 7160180b-1ce7-4223-b42c-2ba3efd257a9 - Mass - 100.0 - - - - - 2.78133763 - - MI_Restricted_Substances - fc29cc59-a670-4ad6-85a0-eb07bf011f1a - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 6150, oil quenched & tempered at 425°C - 79c6cff6-2005-4f5e-9970-4ecdabcdba03 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 7fa9eff0-d7d6-4027-8ae5-e9553d3961dc - Mass - 100.0 - - - - - 2.78133763 - - MI_Restricted_Substances - 9966da3f-c3f0-414e-9bce-4211a9eca2c3 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 8650, oil quenched & tempered at 425°C - 432ed0ab-8b6f-4207-855c-18fee527464a - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - c741e169-ad19-4998-9a3d-5b145647b204 - Mass - 100.0 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 47b4f5f2-84cd-4710-af7b-781e8cbb2468 - Mass - 100.0 - - - - - 2.78133763 - - MI_Restricted_Substances - 644fc87d-87f3-468c-9a88-b8e2db43ae6b - - water quenched & tempered at 650°C - Low alloy steel, AISI 4130, water quenched & tempered at 650°C - 183ed598-d9ff-459c-9384-b0d45dd21779 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - a030dd08-4257-44c8-b5bc-ae9bc3d431ca - Mass - 100.0 - - - - - - - 9.0 - 32.96755032 - - MI_Restricted_Substances - d89d67b6-c08f-47cb-b03a-4203cebfdf32 - - 00221385 - part_00221385-b3a7-46f9-aebd-3087369e83b7 - 00221385-b3a7-46f9-aebd-3087369e83b7 - - - 6.0 - 21.74270549 - 6c5f74ba - part_6c5f74ba-0b4a-4905-96ff-2ca89616bb58 - 6c5f74ba-0b4a-4905-96ff-2ca89616bb58 - - - 100.0 - - MI_Restricted_Substances - ddefbfb8-3b97-480b-887d-0ddadf161d95 - - YS350, cold rolled - High strength low alloy steel, YS350, cold rolled - d1fbfd45-2c54-40a3-bc7d-de35f6f526c6 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 49ae8788-cf29-4a3f-a545-16d8ae62529a - Area - 28.95021276 - - - - - - - 9.0 - 75.26814438 - e0926bb0 - part_e0926bb0-dc65-4c45-9456-7801829e6348 - e0926bb0-dc65-4c45-9456-7801829e6348 - - - 8.02956759 - - MI_Restricted_Substances - 29b76cdc-672e-4a1f-8f6e-a5644857c880 - - Normalized - Low alloy steel, AISI 4135, normalized - 0625ef7f-e6ef-4910-9974-14d8e7ffbf87 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - 567d9e98-4502-4648-b8b3-ef082fc0e233 - Length - 55.24514189 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 424ee1ae-6beb-4d22-b51e-e53b6159a395 - Length - 65.763432 - - - - - 91.9704324 - - MI_Restricted_Substances - 7b330562-a44d-4de7-8944-99c0b7b0d3e1 - - Quenched & tempered - Low alloy steel, AISI 8630, air melted, quenched & tempered - ee66e643-60b1-4a36-b83e-c56f8a3ac3b2 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - 361bf8c7-4339-43e9-870e-3f0320c7f1ea - Mass - 100.0 - - - - - - - 4.0 - 25.96684085 - - MI_Restricted_Substances - a0987114-e9d2-4390-9d0f-e47283d2f4d0 - - f45dac5d - part_f45dac5d-02aa-4f5f-bfa7-35598d01e8f9 - f45dac5d-02aa-4f5f-bfa7-35598d01e8f9 - - - 1.0 - 65.16250863 - - MI_Restricted_Substances - 80083213-3621-42c0-9e23-cdaa30c759e6 - - 24a1ba54 - part_24a1ba54-01ac-4d58-936c-e842059a983c - 24a1ba54-01ac-4d58-936c-e842059a983c - - - 7.0 - 53.29895594 - b780524b - part_b780524b-e786-4e66-be8b-6fbbafc3f87a - b780524b-e786-4e66-be8b-6fbbafc3f87a - - - 92.57692377 - - MI_Restricted_Substances - 475d8bcb-500e-44b5-90be-8a095f5ab07a - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 4140, oil quenched & tempered at 425°C - 9d572329-af29-4a6d-ac29-60fa58766512 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - 0a91caa4-8765-4ece-b073-d8f1f6ab1cb1 - Mass - 100.0 - - - - - 3.71153811 - - MI_Restricted_Substances - 1556b3f0-3dc4-44ab-83b2-87712f9bfa12 - - Oil quenched & tempered at 650°C - Carbon steel, AISI 1080, oil quenched & tempered at 650°C - cf52a155-53ef-451c-8360-0d869f854d6e - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - a6929cda-f7db-4523-ac1f-1ddbb79f43a2 - Mass - 100.0 - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 05e0caa4-c084-44cd-be3b-4843a77b771e - Mass - 100.0 - - - - - 3.71153811 - - MI_Restricted_Substances - b10ab099-72fd-4e47-9274-015a08f619c2 - - Annealed - Low alloy steel, AISI 5160, annealed - de9272d8-4023-4cff-ade0-8b878a046467 - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 8f56072b-43c9-400b-8c5b-e67d98543ea7 - Mass - 100.0 - - - - - - - 8.0 - 89.3239689 - e32026d2 - part_e32026d2-7426-453f-9f94-00e6a7129fb9 - e32026d2-7426-453f-9f94-00e6a7129fb9 - - - 63.92372318 - - MI_Restricted_Substances - a7ada434-62e4-411d-9c85-56dd9d44f094 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 4037, oil quenched & tempered at 425°C - 1591d1c1-f69a-4920-b545-e756b25efa02 - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - b4d92019-dff1-4dd2-983f-4245e08b6729 - MassRemoved - 15.28163995 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - 141a817e-ba3d-48a5-a2a1-6b2aeb1dd775 - MassRemoved - 97.20490993 - - - - - 18.0381384 - - MI_Restricted_Substances - 1a53b354-59b1-4129-a78d-0bfe95923541 - - Normalized - Carbon steel, AISI 1117, normalized - 54a22a08-9d3d-41be-a178-7bfea1c0def2 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - a580dffc-d62a-4f65-8eca-1a96dc2bab28 - Mass - 100.0 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - 65585d20-e1c8-4fc2-adb5-23241e9f0c2c - MassRemoved - 75.32668168 - - - - - 18.0381384 - - MI_Restricted_Substances - af4f67b9-f5a7-4fc3-9f1d-da3309e4b19a - - Solution treated & aged - Iron-base-superalloy, Cr-Ni alloy, A-286, solution treated & aged - f7524499-f199-4c35-acee-8b946572cba5 - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - 340f4f86-69e5-4f05-8788-2b0869a01cd2 - Area - 12.00686167 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - 6fef669b-ccb3-43cf-9954-02254a164867 - Mass - 100.0 - - - - - - - 3.0 - 38.09654965 - e9e99fb0 - part_e9e99fb0-50c3-47a8-adb5-23809d70c70d - e9e99fb0-50c3-47a8-adb5-23809d70c70d - - - 87.23260699 - - MI_Restricted_Substances - ca72e2f5-a1d0-4bb0-b612-ed5bc26a4f70 - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 9255, oil quenched & tempered at 205°C - 47e5ed4b-71bd-44d3-b97d-2a1dbe69dfcc - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - e0ef29af-af9e-4bd7-944e-f5b0b133a5a0 - Mass - 100.0 - - - - - 1.82391328 - - MI_Restricted_Substances - ce68d49d-fe57-4723-8f98-557cd3558504 - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 5130, oil quenched & tempered at 205°C - e618c697-f36c-4e11-84d4-e85497c3688c - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - 7e30a310-fa69-4545-ab39-35fc44b41dcd - Mass - 100.0 - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - 8797b082-90f7-4d9e-8019-de8abe847279 - Mass - 100.0 - - - - - 1.82391328 - - MI_Restricted_Substances - a8bcc71d-ff19-40c8-9520-f11553c604d2 - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 5140, oil quenched & tempered at 650°C - c94214b9-09c7-4c4f-b9c4-afe7d09b77e1 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - 874b120c-0b48-493a-b02d-e92c3b98d73b - Mass - 100.0 - - - - - 1.82391328 - - MI_Restricted_Substances - 63d5d6b5-3b52-4cd9-a56f-6e7c5c945139 - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 81B45, oil quenched & tempered at 315°C - e2fe75b0-1acc-4f11-a21b-311175a51273 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - c568c62a-1fec-4afc-b7de-314cd0c0d04a - Area - 57.15980881 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 30220a65-a1b4-4785-b503-01ba788bc54c - Mass - 100.0 - - - - - 1.82391328 - - MI_Restricted_Substances - 00268f25-08c7-4add-91f3-3cc4ed1d7e34 - - Oil quenched & tempered at 425°C - Carbon steel, AISI 1141, oil quenched & tempered at 425°C - 7270e0db-6963-46f6-aa14-2d3bf76e8e14 - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - f85671b9-370d-4034-bc4f-91e9b2645d55 - Mass - 100.0 - - - - - 1.82391328 - - MI_Restricted_Substances - 31098687-aa58-4d56-99a0-f005a0258573 - - Glass/phenolic honeycomb, 0°/90° fabric (0.192) - Glass/phenolic honeycomb, 0°/90° fabric (0.192), L Direction - 458fc706-f4c8-4840-bc3b-a6e5de550e85 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - c838b879-07b5-4680-9e88-603b597a4539 - Mass - 100.0 - - - - - 1.82391328 - - MI_Restricted_Substances - d7980de6-355d-48d2-93d7-471e3ef3b2cf - - Glass/phenolic honeycomb, ±45° fabric (0.032) - Glass/phenolic honeycomb, ±45° fabric (0.032), L Direction - 844def21-3a0f-425a-8e15-cf610855ec9e - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 62e6ab6e-6064-4c9c-ba09-ae7d2b2e3592 - Mass - 100.0 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 34028294-f961-400d-953c-7f2540574fe2 - Length - 76.69111619 - - - - - 1.82391328 - - MI_Restricted_Substances - b4c065d7-6405-44fb-82cf-24ca2072f5c9 - - 300M (high carbon), quenched & tempered - Low alloy steel, 300M (high carbon), quenched & tempered - f1e42820-36e3-45dc-8a88-377a62883605 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 574de17d-5db5-4608-a946-68638b80c028 - Mass - 100.0 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 0506eeaf-1da0-44f5-9afa-4c873de9c3e6 - Length - 27.84875115 - - - - - - - 5.0 - 11.74897929 - 3e10fad4 - part_3e10fad4-becd-452d-847f-d3d359bca87f - 3e10fad4-becd-452d-847f-d3d359bca87f - - - 90.28080966 - - MI_Restricted_Substances - 9d224642-fb07-41ce-8191-c9b152122364 - - Quenched & tempered - Intermediate alloy, Fe-9Ni-4Co-0.30C steel, quenched & tempered - f4e5f17e-5646-404e-8cad-9fb8b98b4b1f - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - b2f45626-87b6-4f1b-b78e-7fe6cd1b992b - Mass - 100.0 - - - - - 3.23973011 - - MI_Restricted_Substances - 8dc38bb5-eff9-4c60-9233-271a3c8f6270 - - Kovar, annealed - High alloy steel, Kovar, annealed - 19f5d901-382d-4eb3-a83e-a22dc1973b31 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - b80711d1-5204-4ad6-8a75-c7faf5917347 - Length - 31.37538751 - - - - - 3.23973011 - - MI_Restricted_Substances - 1d9c8629-4a1d-4aaf-bb7c-ba7a97eef5f5 - - Normalized - Carbon steel, AISI 1340, normalized - e1c1b24a-48a4-4be7-8924-fd96253f0c4f - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - 897bd7db-049a-4516-8474-7114d5eb7c5b - Mass - 100.0 - - - - - 3.23973011 - - MI_Restricted_Substances - b35cf8d2-52a2-4761-b692-efabffabb0a6 - - As rolled - Carbon steel, AISI 12L14, as rolled - b4fc954b-520d-40b3-a2ef-6129530dc340 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 3e166ff8-b82b-45fc-bc26-05adf6858d0c - Mass - 100.0 - - - - - - - 4.0 - 18.43463262 - a493414a - part_a493414a-2c8e-457d-9c57-94cadceaacd5 - a493414a-2c8e-457d-9c57-94cadceaacd5 - - - 21.46049184 - - MI_Restricted_Substances - a01be0be-96e7-4123-b061-dfdbba1f1748 - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 4037, oil quenched & tempered at 315°C - 6f490b8a-1bb1-4ed9-9273-2535d138e992 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - fb0c9722-d432-4d8e-8b46-eeb9a90400ae - Mass - 100.0 - - - - - 39.26975407 - - MI_Restricted_Substances - db7d255c-6269-4097-a5aa-e18a13019915 - - FR-4.0 (Df < 0.01 at 10GHz), Epoxy/Glass fiber, PCB laminate - FR-4.0 (Df < 0.01 at 10GHz), Epoxy/Glass fiber, PCB laminate - 6205bae6-cadd-45e7-aba1-c3f660389d5c - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - 4c328ecd-d9fb-45aa-bff7-f8f8563c873c - Mass - 100.0 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 0da2f37f-a727-4c85-ac8e-52bde6211587 - Mass - 100.0 - - - - - 39.26975407 - - MI_Restricted_Substances - f65c5c4d-fbd1-4a54-8172-d3aba34c4c3a - - Annealed - Low alloy steel, AISI 4340, annealed - a1d20d36-f931-429d-a4f7-9a53c6acfd09 - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - 210b2098-6b44-467e-bb47-1f6d51c42e8b - Mass - 100.0 - - - - - - - 5.0 - 63.5194815 - b74fe856 - part_b74fe856-1cfa-4217-a3ac-a311a27d7aa9 - b74fe856-1cfa-4217-a3ac-a311a27d7aa9 - - - 94.4247669 - - MI_Restricted_Substances - 3e7feb56-09b4-498c-9966-c13b33dedccd - - water quenched & tempered at 205°C - Carbon steel, AISI 1137, water quenched & tempered at 205°C - fdc736a6-eeed-4531-b299-b3286941f188 - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - 49206114-ba04-4d29-9247-c0a62fb3da8b - Mass - 100.0 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - be9698e6-9653-4c5d-a642-b120dd4d8fc2 - Mass - 100.0 - - - - - 1.85841103 - - MI_Restricted_Substances - f65c5c4d-fbd1-4a54-8172-d3aba34c4c3a - - Annealed - Low alloy steel, AISI 4340, annealed - afa33e0e-ea40-434d-9e1e-e027575a3962 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - e8633a1f-f4b1-4273-86a1-c1abfaa2169b - Mass - 100.0 - - - - - 1.85841103 - - MI_Restricted_Substances - 6d658600-d198-46ed-bcca-cd0e3e2f5f4d - - Oil quenched & tempered at 425°C - Carbon steel, AISI 1060, oil quenched & tempered at 425°C - fd950d24-e9d5-49ba-88b2-2eab4f6676fc - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 5200ca4d-b9a1-4b75-b110-d3e6bbcfc2e9 - Mass - 100.0 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 0c8c7d8c-abef-45ba-b45d-9d46600da479 - Area - 4.66323769 - - - - - 1.85841103 - - MI_Restricted_Substances - aec2777b-f126-4f12-b748-b94bf7393f2a - - Oil quenched & tempered at 650°C - Carbon steel, AISI 1060, oil quenched & tempered at 650°C - 79efa484-5232-4d43-89cc-4df07b2f7710 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - f2b9be9c-065a-4cb7-bb3a-91d15c0da6a2 - Mass - 100.0 - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - 59d4441e-0d49-454f-8792-5ed9e1077e55 - Mass - 100.0 - - - - - - - 4.0 - 77.08067888 - e4846aaa - part_e4846aaa-7030-44d8-86a2-6d16f9870dfe - e4846aaa-7030-44d8-86a2-6d16f9870dfe - - - 22.16250864 - - MI_Restricted_Substances - 5dbabc2e-4263-4458-abe1-31a2ece9e122 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 5160, oil quenched & tempered at 425°C - a85e8b0c-629b-492f-9e8f-b722a47356bb - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 468a3b3e-a3a3-4eb3-b340-f061f8c02506 - Area - 97.57666215 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - 29b6840a-3421-4551-a038-0d4c71805cb8 - MassRemoved - 31.97802865 - - - - - 15.56749827 - - MI_Restricted_Substances - 9d224642-fb07-41ce-8191-c9b152122364 - - Quenched & tempered - Intermediate alloy, Fe-9Ni-4Co-0.30C steel, quenched & tempered - 4d3f486c-0f70-4522-9fbe-098b92bb9fbd - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - a54b7ead-0c88-4e24-9b62-d62c7fff051f - Mass - 100.0 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 5c11af00-f631-4998-ba25-9f61da956951 - Mass - 100.0 - - - - - 15.56749827 - - MI_Restricted_Substances - 3427457c-2b3d-4a7e-adbc-40fddd4c1f0e - - Normalized - Carbon steel, AISI 1020, normalized - d8bb7304-72ad-4659-a203-bb9538a5f4c2 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - 4c4b4778-7bc0-4218-a370-1e68bd6124d9 - MassRemoved - 22.08269681 - - - - - 15.56749827 - - MI_Restricted_Substances - ddefbfb8-3b97-480b-887d-0ddadf161d95 - - YS350, cold rolled - High strength low alloy steel, YS350, cold rolled - d97b1f11-dbd3-4d5b-adc3-7a341c0102e2 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - 47bbacde-0746-4420-bcb2-0868ce452618 - Mass - 100.0 - - - - - 15.56749827 - - MI_Restricted_Substances - b0c0246d-7238-46e4-9081-5bad34efbbdb - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 5140, oil quenched & tempered at 205°C - 6286beb2-d177-41cb-ba24-9907a04f02f7 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - eeae8e7f-b263-4993-bace-18b73e205c15 - Mass - 100.0 - - - - - 15.56749827 - - MI_Restricted_Substances - 0c172430-369d-48ad-910e-69fe1451a36e - - Normalized - Carbon steel, AISI 1095, normalized - a73f6675-eaa3-4004-9b77-6c49339c9ff3 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - e81a0263-0def-4aea-a0d6-e90ab2aa8b88 - Mass - 100.0 - - - - - - - 8.0 - 81.06857961 - - MI_Restricted_Substances - 2c677abc-5da2-4b21-9ce7-1d4e1cc0fb1c - - b5bf3503 - part_b5bf3503-c2cb-4a72-9c0f-7376cb2517d4 - b5bf3503-c2cb-4a72-9c0f-7376cb2517d4 - - - 3.0 - 15.70091318 - 8210398c - part_8210398c-aaf0-43f7-a5ff-df80e79cf3ee - 8210398c-aaf0-43f7-a5ff-df80e79cf3ee - - - 69.63297346 - - MI_Restricted_Substances - 546a4247-5e3b-4adb-bc7e-3fc87f992447 - - Glass/phenolic honeycomb, 0°/90° fabric (0.055) - Glass/phenolic honeycomb, 0°/90° fabric (0.055), W Direction - 44a3e2c7-4127-4455-8f81-cde7273288ee - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 77287849-ec77-4920-b347-7256e0fafd43 - Mass - 100.0 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - 5595bcbe-fef5-422e-81b1-22d819f4917e - Mass - 100.0 - - - - - 3.79587831 - - MI_Restricted_Substances - 4b01d1e1-0f4c-4861-a797-7ea504ca38c4 - - Annealed - Low alloy steel, AISI 5150, annealed - 0cbaebc3-d894-4c2c-a8b7-fe3550381f20 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 08103bd5-a39d-4af5-9831-86999d865808 - Mass - 100.0 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - a8f6049b-2e2c-4238-b19a-d60b2fe5cbea - Mass - 100.0 - - - - - 3.79587831 - - MI_Restricted_Substances - 6f9ce415-05a1-4774-bf1d-8952ab0f7306 - - Annealed - Low alloy steel, AISI 3140, annealed - b0d2f6dc-8f7c-4edc-b53f-1b3e2483b7eb - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - 1b54f288-298c-4025-834a-c8f51d922266 - Area - 48.80012136 - - - - - 3.79587831 - - MI_Restricted_Substances - 75a1c963-399c-444d-a38f-1929c00d15b7 - - Normalized - Low alloy steel, AISI 4150, normalized - 6de439af-fed7-4b77-973f-6ea42f142d38 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - a802bf5c-7424-4c38-82ee-265472c023c5 - Mass - 100.0 - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - b84fda56-2306-4a38-96bd-24cce1cc5d42 - Mass - 100.0 - - - - - 3.79587831 - - MI_Restricted_Substances - c2db0402-57c5-422f-b8c1-470fc9c6a9c8 - - Glass/phenolic honeycomb, 0°/90° fabric (0.112) - Glass/phenolic honeycomb, 0°/90° fabric (0.112), W Direction - ecb55168-b41b-43ca-9618-4429d50c25eb - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 469406a2-91cb-4ab4-b28a-c67acccb0730 - Mass - 100.0 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - 8a073186-2e0a-4fe8-9785-facda396fce6 - Area - 11.15003051 - - - - - 3.79587831 - - MI_Restricted_Substances - f931cdfe-568b-40b5-b238-ea22a815f312 - - ASTM A537 Class 1, normalized - Structural steel, ASTM A537 Class 1, normalized - 9adb933b-500f-4d0d-b6a8-36e2d08596a6 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - e4ec61b6-3156-44e2-b462-3b57835e8327 - MassRemoved - 7.83638977 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - bc141ac6-6115-40a5-a0a9-188282d60cd2 - Mass - 100.0 - - - - - 3.79587831 - - MI_Restricted_Substances - 04970b9b-7242-4f31-9a78-dee5e31ed341 - - As rolled - Carbon steel, AISI 1030, as rolled - 088be378-469c-495e-9909-523886534fef - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 21d7fd53-6d96-42d6-84e1-abb6c2c4e829 - Mass - 10.23056977 - - - - - 3.79587831 - - MI_Restricted_Substances - 1a90238a-48c1-429a-83fc-e88d2c04dd94 - - Normalized - Low alloy steel, AISI 4140, normalized - 5048e052-f782-4b3a-b448-7bd7f648ea89 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - e170480f-259c-4407-a309-b0ea170503e1 - Mass - 100.0 - - - - - 3.79587831 - - MI_Restricted_Substances - 79e715fe-fa1c-4bd9-9c99-83e41d74d87d - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 8630, oil quenched & tempered at 650°C - ed498724-7704-41fb-b943-86037c9ed2bb - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 02e846ea-584c-4a29-a82e-9067a7f01c9d - Area - 73.9686128 - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - e46e3ef9-69c9-44a0-bce9-87b1a96ceb91 - Mass - 100.0 - - - - - - - 3.0 - 65.04590705 - a457a7d2 - part_a457a7d2-a39c-4699-b2c4-cbc0fbaef423 - a457a7d2-a39c-4699-b2c4-cbc0fbaef423 - - - 89.82276692 - - MI_Restricted_Substances - 9c05e644-9257-4778-9c68-be0cff6f58b5 - - Annealed - Low alloy steel, AISI 8620, annealed - 94841a1a-6b1f-4db6-89c7-16a566c68bb2 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 7b18f2a9-1949-42ad-9001-8f14be8f579b - Mass - 100.0 - - - - - 2.54430826 - - MI_Restricted_Substances - df40828d-d5c3-4a43-9f00-5de867f4f406 - - Normalized - Low alloy steel, AISI 4320, normalized - c5185d73-1569-4b14-a7f9-fdf4ff504f2b - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 8f29bf51-4fa8-4e4f-bb35-c49d08a40800 - Mass - 100.0 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - a15f246e-0d91-4685-9f92-365acfcd9c75 - Mass - 100.0 - - - - - 2.54430826 - - MI_Restricted_Substances - ef4e19ac-4c9c-4fc1-b971-3ce21de330a2 - - Glass/polyimide honeycomb, ±45° fabric (0.128) - Glass/polyimide honeycomb, ±45° fabric (0.128), W Direction - 1605cb26-7283-4069-a6ac-a5dade1e63ae - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - b5855ad8-769a-40f5-8bba-1ee6824f19a3 - Mass - 100.0 - - - - - 2.54430826 - - MI_Restricted_Substances - a6ee4feb-80c5-43a7-b3ee-a1423218f502 - - AF1410 - High alloy steel, AF1410, solution treated & overaged - 671a69d9-6c2b-409c-8196-30e3e97636d1 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 461f3020-5fe4-4eeb-a2ac-359a8eea06a1 - Mass - 100.0 - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - 75de2e44-2518-4212-b68b-cd5f68eb0842 - Mass - 100.0 - - - - - 2.54430826 - - MI_Restricted_Substances - 33160988-8422-40e2-93d1-e3e7467eafe9 - - Normalized - Carbon steel, AISI 1030, normalized - 65ec1327-8d01-4d68-a55c-a5f04b293114 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 4d03e670-e7b0-4ca6-8f6f-509eb916e02a - Mass - 100.0 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - 5d9e5486-9b0c-460d-8224-e9c25d8a2b17 - Mass - 100.0 - - - - - - - 9.0 - 95.03258797 - c931aa13 - part_c931aa13-732d-4318-bed3-68ce005aee06 - c931aa13-732d-4318-bed3-68ce005aee06 - - - 16.33570683 - - MI_Restricted_Substances - b869cbb1-f68c-4d4a-ba09-c5ac060f1e31 - - Normalized - Low alloy steel, AISI 4620, normalized - ff67b556-303c-40af-a97f-17331d556521 - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - ee824d43-d43c-4944-a23f-5a21aab9e2ca - MassRemoved - 19.78721274 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 07ea8c41-6dc7-427b-929a-e9c0956b9886 - Mass - 100.0 - - - - - 13.94404886 - - MI_Restricted_Substances - aa963e30-fca0-439d-bee2-ff48daa946f3 - - As rolled - Carbon steel, AISI 1095, as rolled - 8016f162-1c68-443a-b881-717f1e33eda2 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - 2d8fc038-9b33-406e-91f0-54703ecdfe0f - Mass - 100.0 - - - - - 13.94404886 - - MI_Restricted_Substances - 7a62318a-eff2-4f36-9925-ee919c5b4369 - - S235J - Structural steel, S235J - ccd91f23-7ae8-4927-be26-8bebe007d4e3 - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - aa58fc1a-fd0d-402f-848b-01fe8c32e24f - Mass - 100.0 - - - - - 13.94404886 - - MI_Restricted_Substances - 3b818b25-e6de-4e5c-b546-e97c68e10225 - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 5046, oil quenched & tempered at 650°C - 43af60f5-260b-44d2-92a1-87f7febe4590 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - e441cf67-84b9-4aa5-9ffa-b4bbd7081a53 - Mass - 100.0 - - - - - 13.94404886 - - MI_Restricted_Substances - c372db87-c3ae-4ef1-a9e5-defa1160f895 - - Glass/phenolic honeycomb, 0°/90° fabric (0.112) - Glass/phenolic honeycomb, 0°/90° fabric (0.112), L Direction - e95ea201-68e6-41af-80fd-7d9a92ae3f6d - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - c2368517-a0cf-417c-b548-107832a0178e - MassRemoved - 7.3714083 - - - - - 13.94404886 - - MI_Restricted_Substances - 3e7feb56-09b4-498c-9966-c13b33dedccd - - water quenched & tempered at 205°C - Carbon steel, AISI 1137, water quenched & tempered at 205°C - 87ec12a7-8cdd-4174-90ae-31a82bfce945 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - bb565928-1afb-49e8-8d4d-ee54fa3bd189 - Mass - 100.0 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - a889bc2d-0015-4165-a4fb-e5d1d837966f - Length - 15.51547218 - - - - - 13.94404886 - - MI_Restricted_Substances - 0840d007-df07-4e12-bda5-bfc060fb15e6 - - Annealed - Low alloy steel, AISI 4320, annealed - e94f9a80-5706-448a-846d-d6055c096ce5 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 5a324b5b-9b75-422b-badd-c6f6addc1fdd - Mass - 100.0 - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - 6456b4f8-63df-4346-b43a-d5904364e259 - Mass - 100.0 - - - - - - - 8.0 - 41.16695194 - - MI_Restricted_Substances - 3d4d35cd-1db3-477c-8f3f-b90800ea1c4d - - d98fa79d - part_d98fa79d-9a65-4010-8c95-627aef9463a7 - d98fa79d-9a65-4010-8c95-627aef9463a7 - - - 9.0 - 45.09621748 - 4c6fcfd8 - part_4c6fcfd8-27aa-418b-bc49-d1829aac31f2 - 4c6fcfd8-27aa-418b-bc49-d1829aac31f2 - - - 33.18648162 - - MI_Restricted_Substances - d7980de6-355d-48d2-93d7-471e3ef3b2cf - - Glass/phenolic honeycomb, ±45° fabric (0.032) - Glass/phenolic honeycomb, ±45° fabric (0.032), L Direction - b921b8b4-2c86-4bee-a0b7-c67d943ab3e9 - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - baa7ae9f-bf5f-4b8d-b3da-a2eb6dabbffb - Mass - 77.40122795 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 8ccf56ed-6624-4eeb-a014-3496d03c4eea - Mass - 39.09439683 - - - - - 9.54478833 - - MI_Restricted_Substances - ab895171-8c16-4056-9062-78f7516be1b0 - - Borosilicate - 7050 - Borosilicate - 7050 - ca2ea373-9e27-4b69-aef4-519281dce6c9 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - f4f5493c-af77-431e-84b8-dc5839542adc - Area - 57.21336759 - - - - - 9.54478833 - - MI_Restricted_Substances - 53268754-75cd-4016-8ed0-2577d32f766e - - As rolled - Carbon steel, AISI 1060, as rolled - 100eb4bb-59fd-4daf-8719-c5616d4e2aa5 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 4687d55a-1e3d-4a18-b3d9-5aa80b0df836 - Mass - 100.0 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - 780cc4b7-361a-46e6-8119-4a016124f789 - Area - 17.55030086 - - - - - 9.54478833 - - MI_Restricted_Substances - a22f3160-83fe-4a55-8459-26e3f8647523 - - 55% glass and mineral filled - PARA (55% glass and mineral filled) - 5f210b37-d70c-42ae-81ef-8eee2decaa73 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 5b2b9ce6-2c6a-4041-904f-9d8860044acd - Mass - 100.0 - - - - - 9.54478833 - - MI_Restricted_Substances - c372db87-c3ae-4ef1-a9e5-defa1160f895 - - Glass/phenolic honeycomb, 0°/90° fabric (0.112) - Glass/phenolic honeycomb, 0°/90° fabric (0.112), L Direction - e0ec696c-370a-4840-b698-797569a24214 - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 12522387-7f5d-429f-b2e3-2800e05fe4f9 - Mass - 100.0 - - - - - 9.54478833 - - MI_Restricted_Substances - f508194e-6de7-4b6d-9f6f-7edb9addb85e - - Normalized - Carbon steel, AISI 1025, normalized - 7d6d4b93-fe09-48f6-90ca-06060782d354 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - 7415b6b0-5d98-44a7-83f1-e6ac5e820c5c - Length - 25.46962444 - - - - - 9.54478833 - - MI_Restricted_Substances - bb5f06fe-89ba-4708-8639-2e15c5c1cc4c - - Glass ceramic - 0330 - Glass ceramic - 0330 - 61a17a52-00f5-49ea-a68c-201eee68b1e8 - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - 4dd9c8a6-a70c-4b6a-a543-ba7104ade0ff - Mass - 100.0 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 75680045-166d-4bf3-8184-e7f46c3f2eb5 - Mass - 100.0 - - - - - 9.54478833 - - MI_Restricted_Substances - f05d84ea-b8e2-46d1-83a4-577038c5ed32 - - As rolled - Carbon steel, AISI 1040, as rolled - c74fc6fa-d1f5-4e4c-9807-045bd5eb53ac - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 726ff067-da3a-4633-83eb-03a663c2431d - Length - 29.97018035 - - - - - - - 1.0 - 94.82192126 - 45c3c5aa - part_45c3c5aa-ca54-4e38-8b94-588d5d0dba7a - 45c3c5aa-ca54-4e38-8b94-588d5d0dba7a - - - 55.93831867 - - MI_Restricted_Substances - b1b14aff-8354-447c-9883-df4969a517a3 - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 86B45, oil quenched & tempered at 315°C - d662fd50-7be2-4186-b04a-5c25a06b3e1f - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - 6a575f86-25e6-4e12-ac46-c5e557ade046 - Mass - 11.8921008 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 06b27a1d-2427-43cd-a637-13aa583eb8f8 - Area - 94.38277752 - - - - - 11.01542033 - - MI_Restricted_Substances - b47d0104-e07a-4ebb-a481-18bc330d2ace - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 4340, oil quenched & tempered at 205°C - 9f48b8cd-31f7-4443-be9d-59b42767a0cf - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - b6d56b98-fc3d-4922-908c-8f0d147ce118 - Mass - 100.0 - - - - - 11.01542033 - - MI_Restricted_Substances - aa4540cb-3277-459f-a69a-ca324ddd0125 - - Glass ceramic (N0) - Glass ceramic (N0) - 700295de-ff35-4c30-8b51-085ebb8b4c7c - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 7febd832-fac7-41a3-9812-b041b38cdbad - Area - 39.83770801 - - - - - 11.01542033 - - MI_Restricted_Substances - a68201e5-218b-4387-9e30-d1332ccfa44f - - Oil quenched & tempered at 315°C - Carbon steel, AISI 1340, oil quenched & tempered at 315°C - baa90fa4-3ffb-45e4-b9f9-237e6a8d2c65 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - 21872dd4-8a64-40a3-931b-85ded9a7a9a7 - Length - 69.83159942 - - - - - 11.01542033 - - MI_Restricted_Substances - 9c05e644-9257-4778-9c68-be0cff6f58b5 - - Annealed - Low alloy steel, AISI 8620, annealed - 23bf3ceb-5f97-4862-bc95-47d220e98e6a - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - e6cce66e-28ef-43e1-88c4-c5573ee824d5 - Mass - 100.0 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - aca5a0a2-aea6-4028-b812-8e0953fad5f7 - MassRemoved - 42.47257478 - - - - - - - 4.0 - 22.14399903 - 36c649b1 - part_36c649b1-a957-4f0a-ba12-f99623733e3b - 36c649b1-a957-4f0a-ba12-f99623733e3b - - - 75.29265711 - - MI_Restricted_Substances - 9ecfadb9-f61f-48b3-81b1-bcac80eb164f - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 4150, oil quenched & tempered at 315°C - 6de93e26-7f8a-4644-9ff1-d3ba8341b247 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - d84d74df-f777-4b5b-834a-08953934bece - Area - 68.68452018 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - 78c6e9f8-ae12-46bf-93bf-b26034c025d5 - MassRemoved - 39.2636717 - - - - - 4.94146857 - - MI_Restricted_Substances - 1851a6ff-c2e6-4bc6-ab7a-a0eae431e281 - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 5140, oil quenched & tempered at 540°C - 9dd9ceb8-e619-481b-8f99-076e8df0fa8f - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 677be290-d4e2-4ccc-b422-8e3e88169e90 - Mass - 100.0 - - - - - 4.94146857 - - MI_Restricted_Substances - 192eb301-460f-4dc8-82ec-d451fef09827 - - Glass/polyimide honeycomb, ±45° fabric (0.064) - Glass/polyimide honeycomb, ±45° fabric (0.064), W Direction - ab9dfcac-de94-44b3-9b12-2a3ef82ccdef - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - 6f8a024d-ef38-4303-b6f9-898348a5e05a - Mass - 100.0 - - - - - 4.94146857 - - MI_Restricted_Substances - 0afa77bf-df9b-456c-8c48-3c84b1ccd2e0 - - Low density glass-sphere filled - Bisphenol molding compound (low density glass-sphere filled) - 4287941f-36b4-4feb-a928-4d8803bacdc4 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - a16d8051-7432-4c1f-92db-6407d3666b77 - Mass - 100.0 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 00e31473-0e80-4da8-98cc-86c07e300c50 - Mass - 100.0 - - - - - 4.94146857 - - MI_Restricted_Substances - 8db72069-1e87-4b0f-84bc-cddf9ad19b4b - - water quenched & tempered at 540°C - Carbon steel, AISI 1050, water quenched & tempered at 540°C - 95c74639-f319-44b9-a88a-f3f6689e01d9 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - df367a5b-4d55-4e42-854c-1713dbee2576 - Area - 84.9771472 - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - d459c727-3664-4f98-be9b-a715dba56277 - Mass - 100.0 - - - - - 4.94146857 - - MI_Restricted_Substances - 2ad846d3-e112-42bc-bee5-4ac11e7492ba - - 250, maraged - Maraging steel, 250, maraged at 482°C - ccb33e25-61bc-43fc-87e2-1f5b739229c5 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - ab68e333-a7ab-46fc-8e66-623bbce05a06 - Mass - 100.0 - - - - - - - 7.0 - 41.74873421 - - MI_Restricted_Substances - 3d4d35cd-1db3-477c-8f3f-b90800ea1c4d - - 412e9d69 - part_412e9d69-8ccd-4db8-8d6e-0a19595b0ff3 - 412e9d69-8ccd-4db8-8d6e-0a19595b0ff3 - - - 1.0 - 11.77719585 - 4e07a4e4 - part_4e07a4e4-4b6b-4ab0-8a9a-85018488472c - 4e07a4e4-4b6b-4ab0-8a9a-85018488472c - - - 12.89145383 - - MI_Restricted_Substances - a83cb894-badf-47de-8aff-fe75bbb39ecd - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 81B45, oil quenched & tempered at 540°C - eada61b3-01ac-4ca6-96e6-99432b545b10 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 6c78e14e-8ba5-42ff-9feb-31af60a6ea6b - Mass - 100.0 - - - - - 87.10854616 - - MI_Restricted_Substances - b10ab099-72fd-4e47-9274-015a08f619c2 - - Annealed - Low alloy steel, AISI 5160, annealed - 9b3c225b-6927-4dab-a909-c0e78ab38bc5 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - 2aafe353-9cdf-4ae7-81e7-c845c22c7730 - Mass - 100.0 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - 7d9c749c-032c-4014-aee3-a19dc9c8a2a1 - Length - 65.22252348 - - - - - - - 7.0 - 65.29806324 - 02b9158f - part_02b9158f-ac57-451b-9ddc-59cd2a3d09f2 - 02b9158f-ac57-451b-9ddc-59cd2a3d09f2 - - - 86.08320112 - - MI_Restricted_Substances - 1f39574e-b571-4f15-b7c2-4e54411e3fb3 - - water quenched & tempered at 650°C - Carbon steel, AISI 1137, water quenched & tempered at 650°C - b2f3992f-70f4-4393-9844-f9be4fcc6328 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - a84924f5-ad44-40e5-a1f3-40b87133ee26 - Mass - 100.0 - - - - - 1.98811412 - - MI_Restricted_Substances - bf6aa85b-3059-4b2c-86af-6bcb1996d5b9 - - Oil quenched & tempered at 540°C - Carbon steel, AISI 1340, oil quenched & tempered at 540°C - 4df2873d-97ea-482c-be3b-979c3995435f - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - 3727beb1-0b8c-4891-af51-a924119ec964 - Mass - 100.0 - - - - - 1.98811412 - - MI_Restricted_Substances - e5cb0b28-b074-4eb6-95ab-12e8692a87ea - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 50B60, oil quenched & tempered at 540°C - d17ef8cd-535b-498b-b313-5cac5ec78787 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - 6c3f805b-239f-4836-a730-a6ce31a6bd49 - Mass - 100.0 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 1bfc3801-dd97-4bdb-bba3-5e0eef8601ab - Mass - 100.0 - - - - - 1.98811412 - - MI_Restricted_Substances - 72799627-a7c0-4df4-8250-e2be8538565f - - Glass ceramic (N11) - Glass ceramic (N11) - 5e286efa-b710-4d5b-b2c2-2f397ab0e46b - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - 51f4a553-0c62-4c9f-9522-dd1f3853dbd4 - Mass - 100.0 - - - - - 1.98811412 - - MI_Restricted_Substances - 8cd50236-3f00-4460-9e77-bc85138f34c4 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 51B60, oil quenched & tempered at 425°C - 32c4e3ad-6c13-40b8-b0cd-bc939c807c5f - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - e4dab1ed-d5a8-43d4-b4a5-f1dbf2d7a376 - Mass - 100.0 - - - - - 1.98811412 - - MI_Restricted_Substances - 8be87fd7-f406-4a50-9150-2a29e4a26bfa - - Aluminoborosilicate - N51a - Aluminoborosilicate - N51a - bfa70fef-d853-42a4-b83d-73289e70c987 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - ce19d434-3eee-4e4b-9a47-ee280c1b7c83 - Mass - 100.0 - - - - - 1.98811412 - - MI_Restricted_Substances - 7c0b2792-bc51-4837-a380-6cdb1c2fba31 - - water quenched & tempered at 205°C - Carbon steel, AISI 1030, water quenched & tempered at 205°C - ad90b266-4478-48aa-88ef-c2693d8d4463 - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - 9281d347-54f6-4ccc-8f00-8f66f263ec35 - Mass - 100.0 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - be1e5cc6-8037-4091-bd75-8fb87907f926 - Mass - 100.0 - - - - - 1.98811412 - - MI_Restricted_Substances - 48753642-e968-4a1f-92a1-c7b2e10c3fa0 - - Oil quenched & tempered at 540°C - Carbon steel, AISI 1060, oil quenched & tempered at 540°C - 8d4bbf76-e11e-42bb-abd5-c589e48cede2 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - 67a63d46-dbdc-4e8a-b57d-9be080e27fca - Mass - 100.0 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 75e4a0db-0f3a-4dc7-b9f7-53c7cf5cf484 - Mass - 3.36374649 - - - - - - - 7.0 - 1.61804971 - 2ccb1d17 - part_2ccb1d17-f935-416e-afca-53702412172d - 2ccb1d17-f935-416e-afca-53702412172d - - - 14.56824173 - - MI_Restricted_Substances - be0bbb94-0c22-4276-9615-902f13ee0363 - - Oil quenched & tempered at 315°C - Carbon steel, AISI 1144, oil quenched & tempered at 315°C - 8ea4c0fd-a002-451c-a6e8-6924341889a3 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - bd3522ba-4106-4b60-8fc3-1abb38df1b09 - Mass - 100.0 - - - - - 85.43175826 - - MI_Restricted_Substances - db238d75-fcb8-41f5-9289-83a352fa83a6 - - Annealed - Carbon steel, AISI 1015, annealed - 6ea66f6d-ac3e-4179-ac62-13ff1764797d - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 33691a0b-11a2-43ee-850e-46683e369779 - Mass - 100.0 - - - - - - - 7.0 - 35.78651623 - adc60ac2 - part_adc60ac2-0b8f-41fa-a011-25ed79762bb7 - adc60ac2-0b8f-41fa-a011-25ed79762bb7 - - - 88.52402683 - - MI_Restricted_Substances - 06a05a3e-1419-430e-bd94-120296b4c49e - - Normalized - Low alloy steel, AISI 9255, normalized - 31740ff9-d5f1-40b6-bfa4-1cda064e0303 - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - e89b9709-f53e-4b57-8f30-b76bbf4bb88b - Mass - 100.0 - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - b6868b7b-8e92-487d-8852-cb0acb2c1eaa - Mass - 100.0 - - - - - 2.29519463 - - MI_Restricted_Substances - a84110a5-15ac-4560-8e1e-642b3441da3c - - water quenched & tempered at 540°C - Low alloy steel, AISI 4130, water quenched & tempered at 540°C - 8e599c94-c6f9-41bf-8f5f-9ce12eec2739 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - a14aadca-2540-42e7-a9c1-6b4591e730cc - Length - 50.14960735 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 50ad3d84-915f-40c0-9339-52ccd33ed213 - Mass - 100.0 - - - - - 2.29519463 - - MI_Restricted_Substances - b4c065d7-6405-44fb-82cf-24ca2072f5c9 - - 300M (high carbon), quenched & tempered - Low alloy steel, 300M (high carbon), quenched & tempered - d5fddba9-d61c-43d2-b3b9-0035f3b78fdd - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 66666fe5-dd7b-44ca-a1b0-4f912f48bc1f - Mass - 100.0 - - - - - 2.29519463 - - MI_Restricted_Substances - fbdbafa4-b1a5-410d-a3f0-0b7077b0d7be - - Glass/polyimide honeycomb, ±45° fabric (0.112) - Glass/polyimide honeycomb, ±45° fabric (0.112), L Direction - 46d7d2d9-5bf6-43e2-ab8f-dd4723f36336 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 8442fdab-d90d-4f7e-833a-62e518b5aff9 - Mass - 100.0 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - fc2508fb-3e4b-4314-92b2-06692e1d2bf2 - MassRemoved - 41.76232178 - - - - - 2.29519463 - - MI_Restricted_Substances - a1ecb25a-cbfa-484f-8221-3c08313c0d09 - - Glass/polyimide honeycomb, ±45° fabric (0.051) - Glass/polyimide honeycomb, ±45° fabric (0.051), L Direction - d3910f5c-5814-4376-90d5-1c3d8bac180e - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - e547c588-2953-4e9d-9329-8c14922fad6d - Mass - 100.0 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 8640ec1e-9f72-483a-85e4-efa340ebc4f3 - Mass - 100.0 - - - - - 2.29519463 - - MI_Restricted_Substances - f7a5d844-1935-486f-adbe-99917b26b44b - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 4340, oil quenched & tempered at 315°C - 48e66c16-d6ab-4b09-9d94-975d8f246d90 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - f5ee22f3-bf2a-4273-ba68-2792bcecd1cf - Mass - 100.0 - - - - - - - 4.0 - 25.26020259 - 26bd8e2c - part_26bd8e2c-1a75-41d0-ac98-46b9b5e34dd5 - 26bd8e2c-1a75-41d0-ac98-46b9b5e34dd5 - - - 94.47049055 - - MI_Restricted_Substances - 6134776a-9764-4c71-b7a7-d2f9b7549541 - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 8650, oil quenched & tempered at 315°C - 26d8597c-d71b-4049-abac-0827d97f1099 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 8a84d84b-218a-424f-99de-bd6715fee8b7 - Mass - 100.0 - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - 8644ce93-7a6d-44b1-90ee-9f78e593fb64 - Mass - 100.0 - - - - - 2.76475472 - - MI_Restricted_Substances - 29b76cdc-672e-4a1f-8f6e-a5644857c880 - - Normalized - Low alloy steel, AISI 4135, normalized - 5c791230-b424-4b95-8e77-433b9965e61e - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 05d2de98-77cd-4e15-8cb2-648e45a14d4b - Mass - 100.0 - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - 2ff312c0-e0fd-4795-9f1b-6adb5f2745e8 - Mass - 100.0 - - - - - 2.76475472 - - MI_Restricted_Substances - 55eaa961-cbe2-4f0a-9531-ec40dc32555a - - YS260, cold rolled - Interstitial free steel, YS260, cold rolled - f5b9069a-21f2-4805-9fa6-10bbfe2d8798 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - e6c4dde9-c580-45a7-940d-64a332b46231 - MassRemoved - 54.09304548 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - f8de7007-93b1-4c16-a4df-9817e25e0d4a - Mass - 100.0 - - - - - - - 9.0 - 71.67762637 - ca19d9ea - part_ca19d9ea-8ca0-484c-81db-f0bd52142b9f - ca19d9ea-8ca0-484c-81db-f0bd52142b9f - - - 59.6904462 - - MI_Restricted_Substances - 1d0ad45b-4da7-4c47-9850-754d0f67c02a - - Glass/polyimide honeycomb, ±45° fabric (0.096) - Glass/polyimide honeycomb, ±45° fabric (0.096), W Direction - 6c8308a1-a083-4648-828d-85cc00bd926f - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - 2805da0d-1cd9-4846-917f-0eeddb1f2eee - Mass - 100.0 - - - - - 5.03869422 - - MI_Restricted_Substances - 87e1a3cd-fd79-4013-b5f8-56d6f28bef34 - - Oil quenched & tempered at 540°C - Carbon steel, AISI 1144, oil quenched & tempered at 540°C - bd45b7c3-53dd-4545-a818-9e8a14433718 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - 829287dd-168b-4894-b384-cf9c564e5eb5 - Mass - 100.0 - - - - - 5.03869422 - - MI_Restricted_Substances - c87d2bef-0549-4a3b-b699-3ad17b079fa1 - - YS355, hot rolled - High strength low alloy steel, YS355, hot rolled - 3f725bb6-02ef-4193-b8d3-3dbc9c54e9ff - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - 6c48f731-cf08-4179-a64a-6bebca0e91e0 - Area - 40.89789201 - - - - - 5.03869422 - - MI_Restricted_Substances - 50342378-5548-45ea-9a21-c0f16c6dcb1a - - Steel, terne coated - Coated steel, steel, terne coated - 0593fce9-6880-4931-804c-66c8741c542b - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - b3d8351c-fed0-4c9d-ae1b-748247fc6a80 - Mass - 100.0 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 411fd344-6411-4706-b6e6-2dcfd232887e - Mass - 100.0 - - - - - 5.03869422 - - MI_Restricted_Substances - f76f3301-2bc9-4ad6-b438-b97cf4ca70b5 - - Silica (96%) - Silica (96%) - 3005609b-3b36-4665-b4c0-91998ffc4396 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - 2ee50bf8-af5f-465c-ae27-71d171943cb4 - Area - 25.51194239 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - 3c3be329-3045-4c83-9708-467b04bf44ac - MassRemoved - 54.94078339 - - - - - 5.03869422 - - MI_Restricted_Substances - 1d24ecfa-ec45-4a74-9ad7-ceac6eef8ad3 - - Annealed - Low alloy steel, AISI 41L40, annealed - e41ace63-fc60-496d-8403-f0dc6caf2b90 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - 112f8740-ae3f-42b5-b224-0cfb3785655d - Area - 52.69927776 - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - 23357b86-0f63-4693-9d68-ca2d8dbaeb0e - MassRemoved - 77.16847699 - - - - - 5.03869422 - - MI_Restricted_Substances - c07a0ada-0510-4f27-be52-15e07d6c70c5 - - Soda-zinc glass - 6720 - Soda-zinc glass - 6720 - 6d479a4a-03a5-4fb8-a01a-7de8b71d93ed - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 5706ab2a-ad0e-401f-962c-8401cf83b454 - Mass - 100.0 - - - - - 5.03869422 - - MI_Restricted_Substances - 91d7e1bd-d353-4eb1-9634-286e8e69d0d5 - - Oil quenched & tempered at 540°C - Carbon steel, AISI 1141, oil quenched & tempered at 540°C - ef0c00a2-9910-468c-abac-f671ea564dea - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - bc86342b-e9e2-4534-86c3-0356f4c8737e - Length - 64.86148255 - - - - - 5.03869422 - - MI_Restricted_Substances - 5d611e30-0b00-4036-a656-f5fdc5bd2a52 - - Glass ceramic - slipcast - Glass ceramic - slipcast - 65a55aa8-7075-4c37-86b9-ad3c62c09b71 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 08cee76c-595b-49ce-8374-ce3d50474ad9 - Mass - 100.0 - - - - - - - 8.0 - 1.59851354 - 1aa2360a - part_1aa2360a-be13-4479-acee-f78fd0ff0a78 - 1aa2360a-be13-4479-acee-f78fd0ff0a78 - - - 91.04807027 - - MI_Restricted_Substances - 0831e2e1-6d31-4532-8a04-eea412061805 - - Annealed - Low alloy steel, AISI 4140, annealed - 35bbc52d-b4ff-48e0-bf2d-8d97aeacfb51 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - ff0b079c-2c49-45c5-90ae-14ed0fd7236e - Mass - 100.0 - - - - - 8.95192972 - - MI_Restricted_Substances - f8d1136f-3c1a-41e2-8b78-cf5f3965cba2 - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 6150, oil quenched & tempered at 205°C - b4b703fb-eb23-4611-a8c2-07bfcf6cad8f - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 338c5266-1ede-466b-914f-711cd2523894 - Mass - 100.0 - - - - - - - 8.0 - 22.37974131 - - MI_Restricted_Substances - a78dcd3a-f108-4fdb-857e-e2d00ed319d4 - - a6821688 - part_a6821688-dd2f-4560-a927-8ce07f150ed2 - a6821688-dd2f-4560-a927-8ce07f150ed2 - - - 9.0 - 76.27539093 - ea0dfdcd - part_ea0dfdcd-e44a-4374-bf87-bc831dc41a05 - ea0dfdcd-e44a-4374-bf87-bc831dc41a05 - - - 80.67020866 - - MI_Restricted_Substances - 9e4c9bc1-b3b6-42dd-a32f-7af4e3190d72 - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 86B45, oil quenched & tempered at 205°C - e21a7caa-7b95-4fd1-9b5c-4ea5de8d25c0 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - 9d6358ac-f6b0-4663-b181-eb854ccee899 - Length - 69.38832084 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - bb16eb8f-75a7-4f24-b751-3fca8fd7b6ce - Mass - 100.0 - - - - - 4.83244783 - - MI_Restricted_Substances - ac1b4f23-a357-459b-bfeb-deabffbc7020 - - Oil quenched & tempered at 315°C - Carbon steel, AISI 1050, oil quenched & tempered at 315°C - b83b515c-473a-4076-96d9-38387cdc136a - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - f513bbeb-274d-4646-b8ed-2147c9592c95 - Area - 83.37214579 - - - - - 4.83244783 - - MI_Restricted_Substances - 8349c912-772a-4fd7-90a5-7d52aa9c9448 - - Oil quenched & tempered at 425°C - Carbon steel, AISI 1137, oil quenched & tempered at 425°C - c0a9996c-0626-44be-b07f-e87b4f93e421 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - d01b9c5e-b734-49c0-841e-3cbfa92433b1 - Length - 69.28241582 - - - - - 4.83244783 - - MI_Restricted_Substances - 2a840794-eac4-4f77-90ba-f84bce518c0f - - Glass/phenolic honeycomb, 0°/90° fabric (0.055) - Glass/phenolic honeycomb, 0°/90° fabric (0.055), L Direction - 110ae29e-9ac2-44f9-aba7-c1ccb4a27438 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - f3372e2c-73c8-42aa-bc02-6572ad5fbc51 - MassRemoved - 43.45452838 - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - c561d0b5-9ee2-4284-bf6a-b46260454e8f - Mass - 100.0 - - - - - 4.83244783 - - MI_Restricted_Substances - b17713f9-59e9-48f4-8bb3-27c72b0884b2 - - water quenched & tempered at 540°C - Carbon steel, AISI 1137, water quenched & tempered at 540°C - a647882e-2b40-4400-943c-0da1d9be57ea - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - 8bbe6b83-92cb-4b0e-b49a-0c797d713f5b - Mass - 100.0 - - - - - - - 9.0 - 82.0234252 - - MI_Restricted_Substances - aeabeea6-e528-4e56-8247-0aeb8841d9de - - 9438eb43 - part_9438eb43-1eee-4cff-9d70-62c5bb89c32a - 9438eb43-1eee-4cff-9d70-62c5bb89c32a - - - 4.0 - 72.35365182 - 184b1ab4 - part_184b1ab4-9f2b-4154-bc06-b8b474d19fd7 - 184b1ab4-9f2b-4154-bc06-b8b474d19fd7 - - - 60.84996595 - - MI_Restricted_Substances - 278c6b66-fb3e-4e2d-b915-df6a231b2342 - - Oil quenched & tempered at 540°C - Carbon steel, AISI 1080, oil quenched & tempered at 540°C - 4f8dabc3-4b4f-4511-a439-029bfedcc353 - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - fee9befe-d44a-4412-bf3b-51a47282a443 - Mass - 100.0 - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - ad08b701-b6a5-48cf-ae9b-b35f7bf697cd - Area - 98.92096472 - - - - - 4.89375425 - - MI_Restricted_Substances - aa963e30-fca0-439d-bee2-ff48daa946f3 - - As rolled - Carbon steel, AISI 1095, as rolled - 7dcd1b01-ad72-4233-bb61-b06115c241bd - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - ad815955-2ea1-4810-bd9f-e0807ef38e3a - Mass - 100.0 - - - - - 4.89375425 - - MI_Restricted_Substances - a403e867-5052-44f9-b24b-5b11a3860cf4 - - Glass/polyimide honeycomb, ±45° fabric (0.051) - Glass/polyimide honeycomb, ±45° fabric (0.051), W Direction - ab7e0983-57d9-4403-87c7-2bba8ff091d3 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - a8d4437c-ca53-49f3-89ab-6f97f764defd - Length - 4.34681913 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - d9034901-0090-4e0a-a31a-bed850729cd0 - Mass - 100.0 - - - - - 4.89375425 - - MI_Restricted_Substances - 109eaa8c-e01c-4663-8802-f7dd1f10d61b - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 8630, oil quenched & tempered at 205°C - 3758b153-7456-4598-b41b-c53921a08384 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 61055064-79d2-46eb-9266-65253cdb2511 - Length - 93.75255689 - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - 772bd1ed-edad-4c73-9949-13006f3b1dcf - Mass - 100.0 - - - - - 4.89375425 - - MI_Restricted_Substances - ee3c0238-df7d-426d-90f6-c073cddea37b - - Oil quenched & tempered at 425°C - Carbon steel, AISI 1340, oil quenched & tempered at 425°C - 3efcc781-9e69-4f6f-82e3-fc6cc6a137d0 - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - ebd5fdc0-5126-4b32-b4ee-23fd2c6147b4 - Area - 16.77749553 - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - 3a6dafa6-ec47-4b1c-a67b-2de364a10ca4 - Mass - 100.0 - - - - - 4.89375425 - - MI_Restricted_Substances - e62ec0fe-66ca-4b17-88d1-609c5568e318 - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 4340, oil quenched & tempered at 650°C - a02fee99-5c91-4df9-a446-8a6da1b9d9db - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 5861f36e-aa3e-4358-b32d-8e558fb5586b - Mass - 100.0 - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - f928ee5f-60be-4f4f-bb08-ad8423b00867 - Mass - 100.0 - - - - - 4.89375425 - - MI_Restricted_Substances - c62d668e-5411-4845-b19c-3a0c4eedf872 - - 10CrMo9-10, normalized & tempered - Low alloy steel, 10CrMo9-10, normalized & tempered - 81e18383-3a45-4ba3-9bfc-7c36e2f23521 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - ef654035-33a9-4daf-8115-2cada5ba7c41 - Length - 25.67262538 - - - - - 4.89375425 - - MI_Restricted_Substances - 8245dc6c-3d61-4f18-82c8-6fb946e1582c - - Glass foam (0.13) - Glass foam (0.13) - 85aa7086-4a24-4732-9d0c-288fae52b970 - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - cdda3e82-ef97-4ea2-a6a4-b4e96d2ff278 - Mass - 100.0 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 4c8fbc06-e918-4dd4-b0f0-40a9f037aa05 - Mass - 100.0 - - - - - 4.89375425 - - MI_Restricted_Substances - 71a3cd24-5128-46e5-8ef8-9ca8b5ed9892 - - 50% glass and mineral filled - PA46 (50% glass and mineral filled) - 066fdc49-0e2a-450e-b40e-f4f71e33a67d - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - 8f98f3c3-3955-4b09-832c-7c8c1eeeb9b3 - Mass - 100.0 - - - - - - - 5.0 - 8.88051279 - 4b2adbeb - part_4b2adbeb-72da-44b5-8bf9-697c3b7db31b - 4b2adbeb-72da-44b5-8bf9-697c3b7db31b - - - 65.33176333 - - MI_Restricted_Substances - 0f2ac0c2-16b0-422e-9f3c-48efb1a11594 - - Hardened and tempered - Low alloy steel, AISI 8620H, hardened and tempered - 966a2d0c-b2a1-4cff-b09e-70af1c7feafa - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - d3f2b6bf-5dc3-4af1-97e4-655b745bec8d - Area - 67.57293262 - - - - - 4.95260523 - - MI_Restricted_Substances - 28d51559-b49b-4a2b-9f09-9a198db03164 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 4340, oil quenched & tempered at 425°C - 0a0484e4-e4d6-46a3-8a89-980d72ee02e1 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - fd9523ae-9d66-44e6-88e5-e699e4bb6710 - Mass - 100.0 - - - - - 4.95260523 - - MI_Restricted_Substances - d53daeda-87b2-4ade-a7a2-1ebe84e7e3ef - - Annealed - Low alloy steel, AISI 5115, annealed - 65f38ac2-4598-4986-a161-fa9d2f9befa8 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 5ebf42e6-45c0-4782-bae6-f26fbb9c608f - Mass - 100.0 - - - - - 4.95260523 - - MI_Restricted_Substances - 50c388cf-bb91-442a-9b62-8d34f7822f13 - - Oil quenched & tempered at 540°C - Carbon steel, AISI 1040, oil quenched & tempered at 540°C - 208eed49-b80a-4f9c-8d52-57ea802dbcfe - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - a3504bc5-92e6-4d45-869d-c64cd77071af - Mass - 100.0 - - - - - 4.95260523 - - MI_Restricted_Substances - a84110a5-15ac-4560-8e1e-642b3441da3c - - water quenched & tempered at 540°C - Low alloy steel, AISI 4130, water quenched & tempered at 540°C - 954b9af8-ad49-400a-ba3d-c054db41c64c - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 46cd55fe-643e-4274-bc72-6eb959283ea8 - Mass - 100.0 - - - - - 4.95260523 - - MI_Restricted_Substances - 5303364c-b06b-40d9-bca9-e0e2cd1d682c - - Normalized - Low alloy steel, AISI 8740, normalized - 39b96e26-6d23-44f6-83b7-884409172eab - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - 6d9de306-4aae-485e-8018-527f177f25c0 - Length - 6.19553518 - - - - - 4.95260523 - - MI_Restricted_Substances - a83cb894-badf-47de-8aff-fe75bbb39ecd - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 81B45, oil quenched & tempered at 540°C - cd5f8484-59ff-40c1-8867-292095d1b9c6 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 75aaabe7-2e82-4bec-b265-80f2beb2a4fe - Mass - 100.0 - - - - - 4.95260523 - - MI_Restricted_Substances - ac1b4f23-a357-459b-bfeb-deabffbc7020 - - Oil quenched & tempered at 315°C - Carbon steel, AISI 1050, oil quenched & tempered at 315°C - d23864dc-a8f2-4660-8e78-9ec574d6be3b - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 612bfbb6-4eb3-4282-8c9d-7332de9801b1 - Length - 92.55119668 - - - - - - - 1.0 - 26.15306024 - 45b2723f - part_45b2723f-b76c-4076-81bb-f3aecd32b356 - 45b2723f-b76c-4076-81bb-f3aecd32b356 - - - 100.0 - - MI_Restricted_Substances - 50ad77de-f231-48a8-a909-3dc689e19ac8 - - YS500, cold rolled - TWIP steel, YS500, cold rolled - cb2f5fa4-88c1-4234-9c99-c073df19e86a - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - 45b62425-e6d6-4621-b79d-16266a05e004 - Mass - 100.0 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - c7722ec0-5403-4eab-9421-4aaf19d9aef2 - Mass - 100.0 - - - - - - - 4.0 - 40.5394382 - bab849e1 - part_bab849e1-aa58-4769-acc9-be284f83a250 - bab849e1-aa58-4769-acc9-be284f83a250 - - - 100.0 - - MI_Restricted_Substances - 48753642-e968-4a1f-92a1-c7b2e10c3fa0 - - Oil quenched & tempered at 540°C - Carbon steel, AISI 1060, oil quenched & tempered at 540°C - e9ca9bfc-2ac6-4e0a-b295-5ffa707baf1a - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - 24532770-7d53-47c3-b1ed-27abd0be182b - Mass - 100.0 - - - - - - - 1.0 - 36.0715503 - 3a1c477f - part_3a1c477f-440a-4b0a-a064-a4487adefde0 - 3a1c477f-440a-4b0a-a064-a4487adefde0 - - - 94.92766801 - - MI_Restricted_Substances - cdb1bf9d-b906-4bef-afbf-7bb9f67e9562 - - Galvanized - Coated steel, steel, galvanized - c245e82a-cc15-44f5-a687-2be0187ef917 - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - 47c269e2-54b2-4e47-a0b5-12bc0cf26ae0 - Area - 39.4279658 - - - - - 1.26808299 - - MI_Restricted_Substances - a89802d6-13c5-496d-b139-57ae43e6591c - - As rolled - Carbon steel, AISI 1022, as rolled - 45169ece-d893-442d-bc03-57139b6d4d7a - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - 3cfa5e61-937e-456d-a331-3e0ced1fae00 - Mass - 100.0 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - 87f279ae-53fb-4ded-9910-3634fe179af4 - MassRemoved - 97.75056256 - - - - - 1.26808299 - - MI_Restricted_Substances - 2ab1643a-3aff-46c7-a249-21c58b33f214 - - Annealed - Carbon steel, AISI 1144, annealed - 2edfdc17-8e02-4060-a0f4-e754d3c2d653 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 684f35b5-f8bb-4a0f-957d-4c58d08c32b2 - Mass - 60.2500608 - - - - - 1.26808299 - - MI_Restricted_Substances - 0e008ce6-63df-4b25-81d6-02398cb9cc62 - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 8660, oil quenched & tempered at 540°C - 68cbe79e-e13e-44d6-9573-7f9e77f22cd1 - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - 8bf277bf-f275-4e32-9bf4-1fe49fafb994 - Mass - 100.0 - - - - - 1.26808299 - - MI_Restricted_Substances - 6134776a-9764-4c71-b7a7-d2f9b7549541 - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 8650, oil quenched & tempered at 315°C - e1b57077-4f40-4da6-977e-c67e9e778639 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 0e3a51c9-09b0-45a2-aedf-34ea1d17a8bd - Length - 40.74240733 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - b729456a-04c5-4c5a-a8d2-3196ce5464f9 - Length - 99.61028662 - - - - - - - 7.0 - 29.03811271 - ac3877a8 - part_ac3877a8-bab4-4a77-9d83-086ae6c8c1be - ac3877a8-bab4-4a77-9d83-086ae6c8c1be - - - 2.88981646 - - MI_Restricted_Substances - 8ef69f01-44dd-4b96-ac5c-731bff7ceb6c - - Glass ceramic - 9606 - Glass ceramic - 9606 - a6ef08ec-0069-4005-bbe1-b41dd44704c0 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 6af6b4b1-5bf5-471c-b6e1-a54b3d4d2085 - Area - 54.02260178 - - - - - 32.37006117 - - MI_Restricted_Substances - 2096ca77-9981-4fd5-9bc6-afe56b3bbbd4 - - Glass/phenolic honeycomb, 0°/90° fabric (0.096) - Glass/phenolic honeycomb, 0°/90° fabric (0.096), W Direction - 9d3b8e4d-c4de-4b15-98cc-e3c0dba146de - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - a680b387-9a93-4d57-bf18-ce9452a624cb - Mass - 100.0 - - - - - 32.37006117 - - MI_Restricted_Substances - 158e73a4-18c6-4e1a-b5d8-57669c377335 - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 8740, oil quenched & tempered at 650°C - c58ebde6-692b-44ad-a160-2185520c1fb7 - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - b6344a2b-56f2-4386-87df-767576302146 - Mass - 100.0 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - 3a0745ff-06f7-4320-9acb-a29e3fe1d090 - Length - 8.73666955 - - - - - 32.37006117 - - MI_Restricted_Substances - fc7fda6b-9d56-4e1f-b472-a664568c1169 - - Annealed - Carbon steel, AISI 1095, annealed - 001626e3-6549-4ddc-8cce-b828f12624fd - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - ffbb984e-4730-4035-9061-803e32f97eb7 - Mass - 100.0 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - 20b0fdd3-f25d-4e84-928a-caa2749e5be5 - Length - 11.59437359 - - - - - - - 8.0 - 92.4757142 - 4a5223eb - part_4a5223eb-b35f-4b2c-bf59-4f7b81e6e11f - 4a5223eb-b35f-4b2c-bf59-4f7b81e6e11f - - - 21.06025252 - - MI_Restricted_Substances - b879bb01-8648-4b5b-8159-d591cb251ca8 - - Normalized - Carbon steel, AISI 1080, normalized - 297897c7-4c4a-45cc-8d61-44600c915c0c - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 0c515822-13ff-4c07-9bb2-de14104f8980 - Mass - 100.0 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - 1d490bb8-6f77-4a2f-b71d-6f3b66e60dc8 - Length - 71.96799226 - - - - - 11.27710678 - - MI_Restricted_Substances - d7980de6-355d-48d2-93d7-471e3ef3b2cf - - Glass/phenolic honeycomb, ±45° fabric (0.032) - Glass/phenolic honeycomb, ±45° fabric (0.032), L Direction - fb82fa0f-c0f9-4569-90b6-a0592ffa029b - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - 54981275-6cda-4f6e-bd84-3d665c863111 - Area - 77.64744571 - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - a9374b93-9dce-47dd-9652-158248388b3c - Mass - 100.0 - - - - - 11.27710678 - - MI_Restricted_Substances - a6ee4feb-80c5-43a7-b3ee-a1423218f502 - - AF1410 - High alloy steel, AF1410, solution treated & overaged - 2edf1e77-1033-4b37-a10a-dd1ca6f9a9c7 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 5f14dda3-a81a-4378-9843-67d10402440b - Length - 11.76017276 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - 2d1547ac-de50-4aa9-a2b7-dbe536b42c1e - Mass - 100.0 - - - - - 11.27710678 - - MI_Restricted_Substances - 82880431-c70c-4df9-856a-d5e00671a184 - - Annealed - Carbon steel, AISI 1020, annealed - 126da0ae-9ad2-4d46-8712-87716360c682 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 4e259791-dfc8-44ff-be04-a437f2945a23 - Mass - 37.620758 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 946d277f-7c61-48a2-a0fa-e4b871588d2d - Mass - 100.0 - - - - - 11.27710678 - - MI_Restricted_Substances - 00cd78de-6c78-46f3-81b3-ec03803fa034 - - Glass/phenolic honeycomb, ±45° fabric (0.048) - Glass/phenolic honeycomb, ±45° fabric (0.048), W Direction - 56afd2d4-eed8-4d8e-ad4e-bd5029463b6a - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - e35e60e0-ca24-4c0a-86ab-29db1b5f185c - Area - 39.506165 - - - - - 11.27710678 - - MI_Restricted_Substances - ab732b70-3546-4a94-b914-643f38c2443f - - 24CrMo13-6, quenched & tempered - Low alloy steel, 24CrMo13-6, quenched & tempered - 40dd174d-6d19-4fd9-abe0-1055299bef5f - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - 3f980ef4-aa91-4002-8694-15f8c4c9caf3 - Mass - 100.0 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - 379bb0ec-69dc-4fec-82c8-a9ffaff56261 - MassRemoved - 27.65735784 - - - - - 11.27710678 - - MI_Restricted_Substances - 496cca2a-43ad-4943-9e9b-23076f2e3a5c - - Glass/polyimide honeycomb, ±45° fabric (0.128) - Glass/polyimide honeycomb, ±45° fabric (0.128), L Direction - 5bfc5037-9bf2-43ba-ab06-5bb5ad11de76 - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - 75945f4f-fdd8-47bb-969c-bc07e382e033 - Mass - 100.0 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 09d7e6b4-4b3c-4784-a62d-908036e510d0 - Mass - 100.0 - - - - - 11.27710678 - - MI_Restricted_Substances - 439e62b9-4268-44c6-a084-695412628448 - - water quenched & tempered at 425°C - Carbon steel, AISI 1095, water quenched & tempered at 425°C - b5a24b72-e09d-4fc4-8bdc-93b928e91fff - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - b173992a-931e-49bb-99cb-284c471d0437 - Mass - 100.0 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - 91e8113c-bb59-487e-97ee-2142e2ec1a71 - MassRemoved - 72.03360654 - - - - - - - 7.0 - 37.36418603 - - MI_Restricted_Substances - 47392269-2164-43ef-9890-518e6ea446fc - - c4b720bf - part_c4b720bf-7152-4199-ba3a-0beb9c811ddc - c4b720bf-7152-4199-ba3a-0beb9c811ddc - - - 1.0 - 75.03948122 - 5d1b372e - part_5d1b372e-556f-4e07-9c99-4d1973e0956b - 5d1b372e-556f-4e07-9c99-4d1973e0956b - - - 38.58242651 - - MI_Restricted_Substances - 190cf17e-dbc1-40c7-a3d1-cc776977cb47 - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 50B46, oil quenched & tempered at 650°C - 6d8ea439-0bcd-4357-bc2c-4f5f7b539cd1 - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - b717c6e1-b356-4193-a09a-779833a5491d - Mass - 100.0 - - - - - 61.41757348 - - MI_Restricted_Substances - 0ff273b3-9539-465b-9d91-21fc52f8e16c - - Lithium aluminosilicate - Lithium aluminosilicate - 968b3dec-5e80-492f-a30d-ecdf1a74c80d - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - c7f0dc2f-fe5e-43de-b9ba-1f0ad322866e - Area - 64.57460185 - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - 00a56e08-69f5-474a-867f-187d3480a611 - Mass - 100.0 - - - - - - - 4.0 - 79.43218409 - 84fa7b6b - part_84fa7b6b-dcb3-42a7-9a11-df90dc8813bd - 84fa7b6b-dcb3-42a7-9a11-df90dc8813bd - - - 100.0 - - MI_Restricted_Substances - 940150b6-2d2e-4762-b1a0-6f354a75d95b - - Potash lead glass - Potash lead glass - 45d577fa-9e98-4254-b369-b09d9ae34dea - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - ddf7abd7-804d-47cd-838b-5d6e5758f5bc - MassRemoved - 41.91323963 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - 5c3ae651-26b4-4c94-a704-c181b75171df - Length - 4.94128288 - - - - - - - 9.0 - 93.35876684 - e72320dd - part_e72320dd-1afd-432f-bd03-eefddd678339 - e72320dd-1afd-432f-bd03-eefddd678339 - - - 80.4446916 - - MI_Restricted_Substances - 3fc5450b-689d-4ced-bf3d-c91f339a95da - - Normalized - Low alloy steel, AISI 5150, normalized - 46179b7b-bc34-4765-88c5-494383858dd6 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 62efad99-f536-4714-be22-b9a5e4462cff - Mass - 31.52474622 - - - - - 2.44441354 - - MI_Restricted_Substances - 408a337f-8eb7-4225-96bd-1225da437143 - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 5140, oil quenched & tempered at 315°C - 1909b1f4-ede3-443c-a8e1-b7df1425057a - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - cc5799ab-1216-495a-964f-ed77c8c9ef20 - Mass - 100.0 - - - - - 2.44441354 - - MI_Restricted_Substances - 75a1c963-399c-444d-a38f-1929c00d15b7 - - Normalized - Low alloy steel, AISI 4150, normalized - e5f13a79-e874-4575-8e7b-0f680c91c464 - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - 4229b4ae-cfe2-42c1-8696-47fe938b7892 - MassRemoved - 46.88324795 - - - - - 2.44441354 - - MI_Restricted_Substances - 158e73a4-18c6-4e1a-b5d8-57669c377335 - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 8740, oil quenched & tempered at 650°C - c8f26e0c-6f90-4518-9399-b2419ed7b03e - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - 3bd0f0cb-124b-4c07-8983-fc20d22303a7 - Mass - 100.0 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 4ac89751-c8c9-44cd-a879-3bd567445c4d - Mass - 100.0 - - - - - 2.44441354 - - MI_Restricted_Substances - 181f9596-7516-43ca-b989-8284ee056051 - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 8630, oil quenched & tempered at 315°C - 824e264c-aa4f-4814-9514-7dbc00187a63 - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - c860ca6f-6794-4288-a09b-6d5b1706b068 - Mass - 100.0 - - - - - 2.44441354 - - MI_Restricted_Substances - 0ff273b3-9539-465b-9d91-21fc52f8e16c - - Lithium aluminosilicate - Lithium aluminosilicate - 4f8c8192-bfd6-420f-9006-52ae67d51144 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - 3f54437c-f9be-482e-ac61-7f158845e71d - MassRemoved - 7.42072305 - - - - - 2.44441354 - - MI_Restricted_Substances - 3fc5450b-689d-4ced-bf3d-c91f339a95da - - Normalized - Low alloy steel, AISI 5150, normalized - e91f49be-553e-44e4-84d6-d794788dd34e - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - ca1138c5-5460-4fec-9558-cb346771a9a6 - Mass - 40.54896614 - - - - - 2.44441354 - - MI_Restricted_Substances - 7c0b2792-bc51-4837-a380-6cdb1c2fba31 - - water quenched & tempered at 205°C - Carbon steel, AISI 1030, water quenched & tempered at 205°C - 009eb512-a2c6-4f54-9d2f-ee7e522cc525 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - 7d963a71-ad65-49d7-87cf-1d526d17ecf8 - Mass - 100.0 - - - - - 2.44441354 - - MI_Restricted_Substances - e9388a2e-df9f-4ef4-8f47-d4cc5a94b8e7 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 50B46, oil quenched & tempered at 425°C - ca917412-77c1-42a2-9559-f5ce8b14380e - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - 9bf7f8ea-70f7-4df8-9d42-cfa787bb92ef - Mass - 58.37243989 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - 11f586e0-0d5a-4108-a4e0-dec1a10ed8f1 - Mass - 100.0 - - - - - - - 6.0 - 98.91081773 - fc8daa76 - part_fc8daa76-313f-4416-91dc-f4184b57ac71 - fc8daa76-313f-4416-91dc-f4184b57ac71 - - - 11.36572142 - - MI_Restricted_Substances - 3fd6cebb-a683-45be-b014-7c3fb617c3e7 - - Glass/polyimide honeycomb, ±45° fabric (0.064) - Glass/polyimide honeycomb, ±45° fabric (0.064), L Direction - 43ac285d-b87c-4460-9c87-ad5dc4611237 - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - 42fca2f6-0417-49d7-a522-c7503940de71 - Mass - 19.47018151 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 1edd567a-b467-4c79-b267-2894398bee56 - Area - 74.24812609 - - - - - 22.15856964 - - MI_Restricted_Substances - 2839a622-af73-4a9f-90fa-0f3498243808 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 4042, oil quenched & tempered at 425°C - 6af79c06-d0e3-46ee-898b-80667674c307 - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - e6f0e479-ca89-431c-b43e-234dc35f3768 - Mass - 100.0 - - - - - 22.15856964 - - MI_Restricted_Substances - 21dcdeeb-524a-488e-b332-fcd4e1caf6f7 - - water quenched & tempered at 650°C - Carbon steel, AISI 1095, water quenched & tempered at 650°C - a74f3555-bdd6-4433-a45b-5e86f7360f81 - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - 813642e4-8307-4b63-9092-bb0ab8d445e1 - Mass - 100.0 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - 60b06372-c082-4197-b40e-a5e7a807c344 - Mass - 100.0 - - - - - 22.15856964 - - MI_Restricted_Substances - f6a8c45a-d545-43b7-acd0-7c51bd97ab52 - - Oil quenched & tempered at 425°C - Carbon steel, AISI 1095, oil quenched & tempered at 425°C - e4530039-6d97-4080-8cff-63281a88347b - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - 9c980678-54cc-479f-b0bb-15463d9b0ad3 - Mass - 100.0 - - - - - 22.15856964 - - MI_Restricted_Substances - 2a821f5c-97b0-4a08-81b1-de3f1543fb44 - - Alkali strontium clear glass - Alkali strontium clear glass - b33a0c52-e5a3-43a3-b80a-eddad97ff6d3 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - 1a071692-299c-4951-9e50-d95e02778526 - Length - 24.53227021 - - - - - - - - - 4.0 - 13.08437921 - eaab6ed5 - part_eaab6ed5-6189-4b0e-9a04-b351346795f9 - eaab6ed5-6189-4b0e-9a04-b351346795f9 - - - 34.27322042 - - MI_Restricted_Substances - 71841c03-2a43-418a-9a04-c18b2b603646 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 4150, oil quenched & tempered at 425°C - ebcdf539-f264-497e-b5eb-9065b8d16cdd - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - 030a4e68-4a19-4d96-bc52-facd972fd523 - Mass - 100.0 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 2138223c-491b-48d7-87f8-4ccd8a89dafa - Mass - 100.0 - - - - - 8.21584744 - - MI_Restricted_Substances - 9cae15c6-b5b6-4ab9-9008-d962bee0e662 - - Glass/phenolic honeycomb, 0°/90° fabric (0.128) - Glass/phenolic honeycomb, 0°/90° fabric (0.128), L Direction - fd0c866c-664b-4ff0-87da-7571eeba3863 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 65c3952e-9995-49f8-b50a-6a6dd8ec1908 - Mass - 37.03002065 - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 290d62f5-bd97-4f1c-b997-bc0ec64fe69a - Mass - 100.0 - - - - - 8.21584744 - - MI_Restricted_Substances - bbe0765c-012b-434e-878b-b40ad692b373 - - YS550, hot rolled - High strength low alloy steel, YS550, hot rolled - 6272492b-6615-4e16-96f1-a7e9a715a3e0 - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - c7a22d3d-5300-416d-be87-a3561d7a3b35 - Mass - 100.0 - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - 289630a9-9b30-4964-af5a-10155a53ad10 - Mass - 100.0 - - - - - 8.21584744 - - MI_Restricted_Substances - 190cf17e-dbc1-40c7-a3d1-cc776977cb47 - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 50B46, oil quenched & tempered at 650°C - 7d1db0cf-3bf8-4194-80e8-b4f4a3816437 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - 13cbdc73-00ac-4995-8aa3-50bee3d6e803 - Mass - 100.0 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - d4a408ae-de74-4866-99cb-31142105ade7 - Mass - 100.0 - - - - - 8.21584744 - - MI_Restricted_Substances - 92565d61-24fc-4880-9be5-0faeb9a8a3e8 - - Titanium silicate - Titanium silicate - 7db8274a-8d36-4fa7-8064-6b2d9f106c3c - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - 986d99e8-9853-4ef3-9e51-88d18f934ec3 - Mass - 37.44622861 - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - b3e68082-8c66-4835-8ed8-225e9e4ceab1 - Mass - 100.0 - - - - - 8.21584744 - - MI_Restricted_Substances - 87e1a3cd-fd79-4013-b5f8-56d6f28bef34 - - Oil quenched & tempered at 540°C - Carbon steel, AISI 1144, oil quenched & tempered at 540°C - fa1e5541-f878-4ae6-87ba-8bea39fb760f - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - 6663a73a-ebb8-4ca5-91e0-49b6cb9fca98 - Mass - 100.0 - - - - - 8.21584744 - - MI_Restricted_Substances - 9df55457-5300-4ddb-b92e-122b5c121621 - - Glass and mineral filled, encapsulation, molding - Novolac (glass and mineral filled, encapsulation, molding) - a9652672-4387-4d33-90dc-797daf6a2247 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 867ce557-1eec-4ea4-ac1e-e6c063117dd5 - Area - 85.99811242 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - f5d984ea-e10a-41b8-b2fc-714f5497cfb8 - MassRemoved - 44.68569762 - - - - - 8.21584744 - - MI_Restricted_Substances - 80d691ec-471b-4ef6-9060-a0e5cc0c1a91 - - Annealed - Carbon steel, AISI 1340, annealed - 740938e5-cbf4-4329-a132-317986c42928 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - a051fd93-c079-4c56-814e-f1a1f06ae422 - Mass - 100.0 - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - 1302c3cc-958c-4115-8576-14da6ff3319b - Mass - 24.24772327 - - - - - 8.21584744 - - MI_Restricted_Substances - 1a7c6e51-066a-4f25-9c48-76ca6fbd8330 - - Glass ceramic - 9658 - Glass ceramic - 9658 - 3e32010b-4f5e-40c0-bd19-89a0a002d4ca - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - 853274a8-e09a-46e7-9fa2-a83c8460da8d - MassRemoved - 64.19419896 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 6c6b7134-8bd3-46d4-bcb9-f1207971edd5 - Mass - 100.0 - - - - - - - 2.0 - 74.93542394 - 600de0c1 - part_600de0c1-269a-4cb5-a3dd-0f06a65e8a04 - 600de0c1-269a-4cb5-a3dd-0f06a65e8a04 - - - 14.67974424 - - MI_Restricted_Substances - b869cbb1-f68c-4d4a-ba09-c5ac060f1e31 - - Normalized - Low alloy steel, AISI 4620, normalized - f06a9b56-aca5-4ff8-abbe-575e72b1f4a6 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - 61a4cbdc-a3f0-45bc-98b6-48e86dbf7d04 - Mass - 100.0 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - e138600b-057c-4217-9d69-d02397975bb1 - MassRemoved - 86.67375188 - - - - - 28.44008525 - - MI_Restricted_Substances - a371ea54-94e0-4a85-9b8a-856cf82f2e1d - - SAE 4130, cast, quenched & tempered - Low alloy steel, SAE 4130, cast, quenched & tempered - 8e5f94e3-ba10-4e42-93d8-bd5830929189 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - 053df7ee-4b20-4403-a01a-1a974af58e88 - MassRemoved - 3.69976507 - - - - - 28.44008525 - - MI_Restricted_Substances - 7c0b2792-bc51-4837-a380-6cdb1c2fba31 - - water quenched & tempered at 205°C - Carbon steel, AISI 1030, water quenched & tempered at 205°C - 0ca4f619-8307-4733-9d1f-b25c1baa17b4 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 26b196c4-c9f8-4937-bf2e-cb1b4cf0a508 - Mass - 100.0 - - - - - 28.44008525 - - MI_Restricted_Substances - 8dd7188c-28e5-44bd-9d82-dc7a3890fe9b - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 8660, oil quenched & tempered at 425°C - f7318ab7-62ca-4424-8c50-9f0a0b9973ac - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - 487d792d-3b4b-4d68-b262-e07419d26ee7 - Mass - 100.0 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - e3f0937a-c3ec-4bb5-a88a-cf06b71192c2 - Mass - 100.0 - - - - - - - 6.0 - 81.2493353 - 69cb5bfe - part_69cb5bfe-9b6e-4526-a72d-355b609a9766 - 69cb5bfe-9b6e-4526-a72d-355b609a9766 - - - 22.13806096 - - MI_Restricted_Substances - 0840d007-df07-4e12-bda5-bfc060fb15e6 - - Annealed - Low alloy steel, AISI 4320, annealed - 9ebb0694-21c8-43a3-9f5c-c85a7a30681f - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 133c245b-aaf6-4ac7-ae8d-cf874add17fe - Mass - 100.0 - - - - - 19.46548475 - - MI_Restricted_Substances - eb2b811b-1da6-465a-857f-6d14b372a38b - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 50B60, oil quenched & tempered at 650°C - 5f7e24e3-0b39-41bc-b5f8-389db535d06d - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 66988dcc-8901-4913-9730-c3a1271333f5 - Mass - 100.0 - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - a2000eb3-8982-4192-9600-2daf6daed5f5 - Mass - 100.0 - - - - - 19.46548475 - - MI_Restricted_Substances - dbf855b9-a140-458a-af71-ee8bc216e050 - - YS140, cold rolled - Drawing quality, YS140, cold rolled - 8752cd77-a987-4ae3-98f4-685752472913 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - 34a218b2-9122-4935-99c5-12ea2f110f66 - MassRemoved - 83.81719658 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - e901dc5d-4eae-4a52-ba77-589ac8e3a737 - Mass - 3.47345965 - - - - - 19.46548475 - - MI_Restricted_Substances - e9388a2e-df9f-4ef4-8f47-d4cc5a94b8e7 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 50B46, oil quenched & tempered at 425°C - 7c8c7a54-e6ed-4e22-8b59-8101d8103a7c - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - ce65f8df-0e6d-4139-b034-106e035ab92f - Mass - 100.0 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - 057914de-e8e5-461c-aa09-5009156e79ad - MassRemoved - 92.89615153 - - - - - 19.46548475 - - MI_Restricted_Substances - 8dc38bb5-eff9-4c60-9233-271a3c8f6270 - - Kovar, annealed - High alloy steel, Kovar, annealed - 608d3663-2d8a-4746-8fdc-171aaef76480 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - de7681c8-627f-4d67-be73-f14fb9a5cb08 - Mass - 100.0 - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - fd0a4cbb-ee32-4ad7-a7b7-dacdd530c9e5 - Mass - 100.0 - - - - - - - 2.0 - 69.54987578 - - MI_Restricted_Substances - 5fd070ef-bb1b-4857-abcf-7eda481ecfbe - - 585c4a04 - part_585c4a04-66ae-4320-ac0b-1862c814961b - 585c4a04-66ae-4320-ac0b-1862c814961b - - - 7.0 - 85.60016159 - 6c61c8d8 - part_6c61c8d8-c73d-4b8d-a826-102684aa9aeb - 6c61c8d8-c73d-4b8d-a826-102684aa9aeb - - - 50.49367232 - - MI_Restricted_Substances - 4ff376ea-25d8-4792-a34f-9bd7b33c210c - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 4150, oil quenched & tempered at 540°C - c8bb3e17-04cf-45a1-bcd7-99d3fb74a16f - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - 34e02d17-c4e5-435b-8ed3-ffb1ef4c9d2a - Mass - 100.0 - - - - - 7.07233252 - - MI_Restricted_Substances - 181b484f-4ada-4e9e-8c47-103ae23d76c3 - - Quenched & tempered - Low alloy steel, AISI 8740, quenched & tempered - 3a92cc02-c44b-44e4-a148-15aea8a90035 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 4e022716-d5fe-4c11-91e5-a62b08090d7e - Length - 3.63263958 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - e8a2af71-51b8-4ef4-8387-739f2b5fe836 - Mass - 100.0 - - - - - 7.07233252 - - MI_Restricted_Substances - a8f02f5c-c80e-446f-92f4-0046f3d093fc - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 8630, oil quenched & tempered at 425°C - a9791003-2e6c-4557-8c19-e80bc23a8e15 - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - cb06c772-3325-4721-809c-aa202f9520a5 - Mass - 100.0 - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - c9e53a39-ce3f-4a5b-8a54-a92185f46219 - Mass - 100.0 - - - - - 7.07233252 - - MI_Restricted_Substances - 81ce98b3-d459-4695-9dd9-d53244be47ed - - Annealed - Carbon steel, SA216 (Type WCC), cast, annealed - 8a55ec37-ad56-4cec-87c9-365c731bfe1b - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - da1a7f41-d844-4f49-afa9-ca6d593638db - MassRemoved - 83.99590267 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 6d7c3052-e17d-473f-afd4-3d90020677be - Mass - 100.0 - - - - - 7.07233252 - - MI_Restricted_Substances - 181b484f-4ada-4e9e-8c47-103ae23d76c3 - - Quenched & tempered - Low alloy steel, AISI 8740, quenched & tempered - 9dad5bd2-58a6-431c-b5cc-59ce56b4bcb3 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - 5a78a2fc-7fe3-419f-a323-3b74619f1bac - MassRemoved - 79.99000604 - - - - - 7.07233252 - - MI_Restricted_Substances - a583e694-02c0-408e-9af4-6fbee856b58f - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 9260, oil quenched & tempered at 650°C - f42679cc-9f4b-4473-95a1-5106c67077d8 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 7db14ace-659a-4a27-960b-2944742fd32a - Mass - 100.0 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 534e9bc3-533d-4407-b6e7-2bd6ab1e33a9 - Mass - 100.0 - - - - - 7.07233252 - - MI_Restricted_Substances - 66ed26ec-15e8-47d9-a7dc-140271411c07 - - Quenched & tempered - Low alloy steel, AISI 4130, air melted, quenched & tempered - 873fb86e-f515-4a35-a234-56f49c739b2c - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - dae4d4ee-2726-4d17-8bff-16ba89e95b77 - Mass - 100.0 - - - - - 7.07233252 - - MI_Restricted_Substances - 9ce914d8-75c1-4c5f-8c57-11c0e62b2cfa - - ASTM A299 Grade A - Structural steel, ASTM A299 Grade A - c8c694d5-afa2-4005-8c11-8825d43bfdb2 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - dd8d3ad7-3f40-4818-946d-86d68c06a83c - Mass - 100.0 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - baa2cf65-ab4e-459d-854a-cf25eaff975e - Mass - 100.0 - - - - - - - 8.0 - 75.95256863 - 76726401 - part_76726401-baa8-44b6-a4e0-e5302dec10f6 - 76726401-baa8-44b6-a4e0-e5302dec10f6 - - - 74.78016115 - - MI_Restricted_Substances - 535f6e21-a16f-4d54-8413-97634da82122 - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 8650, oil quenched & tempered at 205°C - bae80313-e173-4052-b2fa-50a9e2e60960 - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - 492b6ff3-0321-4fcb-aa5e-3158f3e62904 - MassRemoved - 2.25272136 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - f4706c49-7f96-4bca-a23f-206a398e6230 - Mass - 100.0 - - - - - 25.21983884 - - MI_Restricted_Substances - aec2777b-f126-4f12-b748-b94bf7393f2a - - Oil quenched & tempered at 650°C - Carbon steel, AISI 1060, oil quenched & tempered at 650°C - def7eaff-9817-496c-af57-856706c1a06e - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - ace803c1-43fb-4f08-a0c3-cfefe45ce798 - MassRemoved - 87.76722619 - - - - - - - 8.0 - 86.78226018 - - MI_Restricted_Substances - 65d980fe-c0ba-4642-af12-1fcec979852d - - e14a88c7 - part_e14a88c7-45e1-423e-b27e-86babfd9dcf3 - e14a88c7-45e1-423e-b27e-86babfd9dcf3 - - - 1.0 - 38.06979527 - c414229d - part_c414229d-a82c-4aa3-8452-dcb41b67dea2 - c414229d-a82c-4aa3-8452-dcb41b67dea2 - - - 100.0 - - MI_Restricted_Substances - 9124b244-f2f8-44df-b2cf-b05d3406eb9e - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 4042, oil quenched & tempered at 315°C - 124ef859-be1e-4318-a6b3-42da196e9137 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 4d6c7aba-caad-4a94-b180-6d4379626e21 - Mass - 100.0 - - - - - - - 5.0 - 66.07652873 - c781e004 - part_c781e004-6dec-4760-8d43-243728f8e4d5 - c781e004-6dec-4760-8d43-243728f8e4d5 - - - 78.25948799 - - MI_Restricted_Substances - 75a1c963-399c-444d-a38f-1929c00d15b7 - - Normalized - Low alloy steel, AISI 4150, normalized - 8d70de8d-1d0e-4a4b-801f-f95215c3976a - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 5ebcadfc-4777-48c0-8c5a-d9cfbfa16325 - Mass - 100.0 - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - 52139b6c-770b-46c3-9071-80999f8382a7 - Mass - 100.0 - - - - - 3.10578742 - - MI_Restricted_Substances - 1851a6ff-c2e6-4bc6-ab7a-a0eae431e281 - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 5140, oil quenched & tempered at 540°C - c729cdfe-6a51-4370-b488-c287406172e2 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - 34620b10-bb57-496d-8575-9a758f6e5672 - Length - 73.59116839 - - - - - 3.10578742 - - MI_Restricted_Substances - 644fc87d-87f3-468c-9a88-b8e2db43ae6b - - water quenched & tempered at 650°C - Low alloy steel, AISI 4130, water quenched & tempered at 650°C - 658cb1e8-b222-4188-9e64-f4df80338b62 - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - adf2d187-1992-4151-a37c-c2149382bb0b - Mass - 65.68598685 - - - - - 3.10578742 - - MI_Restricted_Substances - c15a44c3-d8be-4ae8-9a58-281f13b731cd - - YS420, cold rolled - High strength low alloy steel, YS420, cold rolled - 75c9a03c-429e-4914-a23d-a4b305f0cf9c - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - 85c5e31f-cc31-485d-a4d5-4f439b884794 - MassRemoved - 23.23303805 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - d4b40bf2-bc76-4582-b25a-b90a0cadcfad - Mass - 100.0 - - - - - 3.10578742 - - MI_Restricted_Substances - 21dcdeeb-524a-488e-b332-fcd4e1caf6f7 - - water quenched & tempered at 650°C - Carbon steel, AISI 1095, water quenched & tempered at 650°C - ae27b040-e52b-4a16-8609-dbbc671c97f3 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - c5a8c571-1e07-406a-b2ef-9e6aa295ea19 - Length - 53.1344684 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 5b8d094f-3398-4ef9-a662-0f4c5ab3a86e - Area - 51.96598491 - - - - - 3.10578742 - - MI_Restricted_Substances - 1b3f17f9-2754-4fc4-bfa2-75ff0df55185 - - Polytetrafluoroethylene (PTFE)/Glass fiber, PCB laminate - Polytetrafluoroethylene (PTFE)/Glass fiber, PCB laminate - 7c1f398f-df49-45f6-b3b6-432c087f268d - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - 537e1811-9212-4162-beab-93f0bf581d6f - Mass - 100.0 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - 4ae4ce1a-50e8-4c13-9b14-b04cdb768561 - Length - 91.35944228 - - - - - 3.10578742 - - MI_Restricted_Substances - 4f35be96-97d7-4cea-bd9a-316ce3dbe46e - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 8740, oil quenched & tempered at 425°C - 711d23f1-e1d1-4071-acc0-a71da961a93e - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - bda1ae1e-2cee-4f9d-a249-608570a13981 - Mass - 100.0 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - 592bba8e-fff8-473e-ae64-fa414716e95c - Area - 94.37330923 - - - - - 3.10578742 - - MI_Restricted_Substances - 2fca0cda-4548-4601-ade6-49478da1542f - - Potash soda lead glass - 0120 - Potash soda lead glass - 0120 - 144549de-c05a-4f1d-ab02-55b3b7864a35 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - cccde058-d3c4-47f6-b3ea-7cd7ecb9738d - Mass - 100.0 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - 21969510-545d-40d2-9285-022e1e4c34b9 - Mass - 100.0 - - - - - - - 4.0 - 34.73992586 - 3faf1c02 - part_3faf1c02-59c7-4ecd-aeee-a7e858166b6e - 3faf1c02-59c7-4ecd-aeee-a7e858166b6e - - - 17.06108847 - - MI_Restricted_Substances - 5b117a10-9c48-4dd0-a869-6eb490031da5 - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 8640, oil quenched & tempered at 315°C - f9f46acf-b949-4c88-a4fc-1fac6b060499 - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - 27bbf502-8873-4da2-a061-5fac31a30463 - Mass - 100.0 - - - - - 11.84841593 - - MI_Restricted_Substances - 0c03540d-4b15-4c02-ac02-22aeb9a026d1 - - As rolled - Carbon steel, AISI 1050, as rolled - 86de2392-1c0c-4669-84e6-e9706904b083 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - d12be22d-c654-43de-a124-dbeb82fe01af - Mass - 100.0 - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - 6262f7bd-bdcc-425a-b0ab-839797dfd342 - Mass - 100.0 - - - - - 11.84841593 - - MI_Restricted_Substances - b0c0246d-7238-46e4-9081-5bad34efbbdb - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 5140, oil quenched & tempered at 205°C - 3670ad3e-b86c-42d6-9369-98cbe97b1784 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - 5751da81-aab6-4ec8-bfa5-3b0fc3aa666f - Mass - 100.0 - - - - - 11.84841593 - - MI_Restricted_Substances - 31491cd8-6f82-4358-a2d6-ef62bfbbfadd - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 4150, oil quenched & tempered at 205°C - 5668f21e-c347-4e6e-8600-007a6685dcf3 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 4576df90-6acf-478e-aa20-3ff3daf41fac - Mass - 100.0 - - - - - 11.84841593 - - MI_Restricted_Substances - 2a821f5c-97b0-4a08-81b1-de3f1543fb44 - - Alkali strontium clear glass - Alkali strontium clear glass - 82762369-e6d6-4208-bc80-ebec9047c104 - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - 5ad105d9-bc68-4a9d-94b1-71fb52ae712b - Mass - 100.0 - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - d3f08ad0-5a6b-4586-858b-f774abfb5e4d - Mass - 100.0 - - - - - 11.84841593 - - MI_Restricted_Substances - e86ced85-7d75-4b62-8f8e-90bd345ae003 - - Normalized - Low alloy steel, AISI 5140, normalized - c62f6af4-a772-4fae-a097-6102d8585d71 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 88628cc8-966c-43a4-bf3f-ae07beb03e30 - Mass - 100.0 - - - - - 11.84841593 - - MI_Restricted_Substances - 1c7183ad-1608-4e9b-8d01-76721872fbf0 - - Glass/polyimide honeycomb, ±45° fabric (0.088) - Glass/polyimide honeycomb, ±45° fabric (0.088), W Direction - 0184e1c1-d32a-4391-bea7-c89d45ca500c - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - a738a823-8f01-4c63-be05-36c7bf87e740 - Mass - 9.08533405 - - - - - 11.84841593 - - MI_Restricted_Substances - c15a44c3-d8be-4ae8-9a58-281f13b731cd - - YS420, cold rolled - High strength low alloy steel, YS420, cold rolled - 068e5759-afc8-4b4b-9ad6-dbe2c9bb6a9e - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - ec0efe92-6a72-4967-84d2-95261d4c6c08 - Length - 75.22197695 - - - - - - - 8.0 - 26.33637097 - 0dbc4bcb - part_0dbc4bcb-7860-4d68-9e1c-2262ae49c643 - 0dbc4bcb-7860-4d68-9e1c-2262ae49c643 - - - 31.87788717 - - MI_Restricted_Substances - 817b973c-3e12-4b5f-96b3-89b05d14d76c - - ASTM A500 Grade C - Structural steel, ASTM A500 Grade C - ebfeefe1-6b1e-4e0c-955f-0fab4f7c9923 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 6f0add2b-811a-4910-bc00-819613f56130 - Mass - 100.0 - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - 9a201574-74b0-4655-afee-b0cde6b6c0ad - Mass - 100.0 - - - - - 68.12211282 - - MI_Restricted_Substances - 9df55457-5300-4ddb-b92e-122b5c121621 - - Glass and mineral filled, encapsulation, molding - Novolac (glass and mineral filled, encapsulation, molding) - a510660d-8847-40e7-9013-1b3a2aa1e846 - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - 721bb10d-40b3-40f8-a442-31329929a99a - Mass - 100.0 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 0dbd4f92-52da-4612-8f9b-445d36bd2baf - Mass - 100.0 - - - - - - - 4.0 - 43.53972908 - 8719cee3 - part_8719cee3-7e5e-419e-82b4-a33ad703e445 - 8719cee3-7e5e-419e-82b4-a33ad703e445 - - - 6.81662909 - - MI_Restricted_Substances - 91d7e1bd-d353-4eb1-9634-286e8e69d0d5 - - Oil quenched & tempered at 540°C - Carbon steel, AISI 1141, oil quenched & tempered at 540°C - 09339501-b90d-4cc7-b6f3-ad949f588d4d - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - 3e935dc2-739a-49b1-9698-176143391e94 - Mass - 44.90814821 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - c343fa32-2b7b-42c9-aee9-0c00bce27843 - Length - 72.75481646 - - - - - 15.53056181 - - MI_Restricted_Substances - 0c03540d-4b15-4c02-ac02-22aeb9a026d1 - - As rolled - Carbon steel, AISI 1050, as rolled - 04b0c57d-d8dd-4273-8532-8996b5b50db9 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - 865313d8-57a7-40af-85b4-929a1aac2fcb - Mass - 100.0 - - - - - 15.53056181 - - MI_Restricted_Substances - bbe0765c-012b-434e-878b-b40ad692b373 - - YS550, hot rolled - High strength low alloy steel, YS550, hot rolled - da34dc54-db5a-40de-a63d-af3f077d3709 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - a3719d7a-5b96-47ca-97a0-bddd60ff8504 - Mass - 100.0 - - - - - 15.53056181 - - MI_Restricted_Substances - 28d51559-b49b-4a2b-9f09-9a198db03164 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 4340, oil quenched & tempered at 425°C - b6f03f03-413a-4337-ba39-05190a7b2dd7 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - 594dabbe-39fd-4dd1-b88e-478b03efea2a - Mass - 100.0 - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - 921a2ff2-aff7-4122-a3e3-1d9b999e2e22 - Mass - 100.0 - - - - - 15.53056181 - - MI_Restricted_Substances - ab895171-8c16-4056-9062-78f7516be1b0 - - Borosilicate - 7050 - Borosilicate - 7050 - 9c05940d-1c2a-4e3d-969c-d01087aaf891 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - bff839a3-d322-4f30-ab57-f2a490f66d3a - MassRemoved - 56.52059859 - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - c29daa43-5f13-4db1-850f-84554bde107e - MassRemoved - 14.1547991 - - - - - 15.53056181 - - MI_Restricted_Substances - 9e11a8f7-0b35-4610-aee9-557a236bbe5c - - Soda borosilicate - Soda borosilicate - 5dc0bd97-c630-46fb-a89e-16a37070be8c - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 2ded6187-797e-46b0-bc88-cd21cb67e9dd - Mass - 100.0 - - - - - 15.53056181 - - MI_Restricted_Substances - 0a203f13-4112-4c7b-8d17-bd9ce600f647 - - YS350, cold rolled - Dual phase steel, YS350, cold rolled - f2dfa513-aae0-4797-beb9-1ed13e79d1d8 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - bf617362-33d0-4391-a330-bb1605b6106a - Mass - 100.0 - - - - - - - 6.0 - 81.78324204 - a0b611b5 - part_a0b611b5-342d-4b79-be32-7c9a076e0e8f - a0b611b5-342d-4b79-be32-7c9a076e0e8f - - - 18.18186031 - - MI_Restricted_Substances - 99d1c1c6-eca3-40ed-a479-6dec902f52da - - YS400, cold rolled - TRIP steel, YS400, cold rolled - f4beeddc-916c-4c6b-b4ef-579374ef198d - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - 5046dd39-4752-4147-877b-f1661f6e3812 - Mass - 23.84798416 - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - 636cacf1-3471-4160-b4da-89d7cb071e26 - Mass - 100.0 - - - - - 20.45453492 - - MI_Restricted_Substances - 59606aaf-e663-4044-b533-b4b8cb684253 - - YS500, cold rolled - Complex phase steel, YS500, cold rolled - e9403f7e-9696-4f1d-a154-714de79d9668 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 730d48fa-c6ef-4824-88ff-55453ba45851 - Mass - 100.0 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - 028e4dc7-f215-4846-9938-98ef924d2a7e - MassRemoved - 83.67520085 - - - - - 20.45453492 - - MI_Restricted_Substances - b44fad5b-b59d-4153-addf-f70a7895947d - - Annealed - Low alloy steel, AISI 4130, annealed - 618cbf4c-398c-4566-ae46-3b02aeea4d07 - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - 5e318605-a8ed-40be-9d53-8871d8887891 - Mass - 100.0 - - - - - 20.45453492 - - MI_Restricted_Substances - dce2dc34-54db-4d0a-bab0-85d4e6e08d8e - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 6150, oil quenched & tempered at 650°C - 7a112c50-ea81-4f06-9f2b-e0bb931100f1 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - be96ad5c-ea44-4e45-a520-83bd94672ada - Area - 0.54022697 - - - - - 20.45453492 - - MI_Restricted_Substances - 0c172430-369d-48ad-910e-69fe1451a36e - - Normalized - Carbon steel, AISI 1095, normalized - e81306d4-b281-4497-ba8a-5b2a664492c7 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - 9803fbe4-2ff3-4ba5-83cd-4ab5cb34d1b7 - Mass - 100.0 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - dab3d543-1214-4a62-b05e-3f3291a45893 - MassRemoved - 36.13248878 - - - - - - - 4.0 - 35.29463202 - 208ce13a - part_208ce13a-b5f1-4feb-a7bd-e85b0bb4a8ad - 208ce13a-b5f1-4feb-a7bd-e85b0bb4a8ad - - - 100.0 - - MI_Restricted_Substances - 046c72ad-662c-4ce8-8132-16d5254188ee - - Heat resistant, molding - PF (glass and/or mineral filled, heat resistant, molding) - 3e668c82-8399-4eb2-b017-b473ff533ac3 - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - 650bd447-3070-4a45-bb76-27c65e9e4ca4 - Area - 96.301162 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 9d95b09b-f3c6-448d-95c8-f6231f465cd3 - Mass - 100.0 - - - - - - - 1.0 - 31.81571887 - - MI_Restricted_Substances - 19db41d7-f431-4cae-8977-8bdab8435374 - - a50db05b - part_a50db05b-55c0-48e8-b262-8bffcfa8738c - a50db05b-55c0-48e8-b262-8bffcfa8738c - - - 9.0 - 67.04694389 - 3a641f16 - part_3a641f16-839e-4d1f-aae2-ee4563f538c1 - 3a641f16-839e-4d1f-aae2-ee4563f538c1 - - - 100.0 - - MI_Restricted_Substances - 72799627-a7c0-4df4-8250-e2be8538565f - - Glass ceramic (N11) - Glass ceramic (N11) - 1f60f091-b4e3-4c58-b54d-61be8f2f0000 - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - c3674baf-8976-4c3f-944b-0c659f07fd2f - Area - 77.09710266 - - - - - - - 2.0 - 39.97497518 - ba8288a7 - part_ba8288a7-5880-41d0-a8bc-4a42f0ee5be7 - ba8288a7-5880-41d0-a8bc-4a42f0ee5be7 - - - 79.03927889 - - MI_Restricted_Substances - fc29cc59-a670-4ad6-85a0-eb07bf011f1a - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 6150, oil quenched & tempered at 425°C - 4e1f456c-0ea0-40ac-bb59-3c78d035d548 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - 27d27927-bd18-4356-bb79-401374ff5801 - MassRemoved - 8.4510101 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 8a6c5514-4b0d-4384-b2fd-1819bdf963aa - Length - 1.72346453 - - - - - 20.9607211 - - MI_Restricted_Substances - 874b8433-2e47-45c3-9c89-226428104214 - - Glass and mineral filled, heat resistant, molding - Novolac (glass and mineral filled, heat resistant, molding) - 7eda1423-f305-4bde-9d90-2e83666732fd - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - dfc3b8b7-afa2-41a4-8e7d-7d8682633f0d - Length - 17.66234227 - - - - - - - 2.0 - 38.25692699 - 19bd4234 - part_19bd4234-39b1-47f8-8eac-af3b32dbf354 - 19bd4234-39b1-47f8-8eac-af3b32dbf354 - - - 60.86265978 - - MI_Restricted_Substances - 67ea6f19-34d5-40af-9b8c-059058fd840a - - Oil quenched & tempered at 205°C - Carbon steel, AISI 1080, oil quenched & tempered at 205°C - cd2796d3-e2ad-4034-bb16-0ed081b6ba85 - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - 6d20e938-760d-4d91-80bb-7ef9c624bdd4 - Mass - 15.57574454 - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - 2dd4aba0-cfb4-40e5-9e8a-6dc04a8ef5b7 - Mass - 100.0 - - - - - 19.5686701 - - MI_Restricted_Substances - ed1b937b-1738-408f-9591-bd3e40cc5e33 - - Quenched & tempered - Low alloy steel, D6AC, quenched & tempered - a2e8261e-5fd8-40b8-b1de-bf192c84f1a6 - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - 4f611131-8c4a-4d39-b8ee-dad994576bb7 - Mass - 100.0 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - 3f84b836-0ee0-4a42-a86f-5367cdc47fb1 - Mass - 100.0 - - - - - 19.5686701 - - MI_Restricted_Substances - 3606ab13-13f3-49fb-bded-2e3470bcf7d9 - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 81B45, oil quenched & tempered at 650°C - 438e3a3e-b57b-4f61-a754-c1a9f8f14655 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - ba4a6d40-3e32-41ca-8396-b53a02414c81 - Length - 53.87500401 - - - - - - - 5.0 - 3.56293544 - 9dd6db59 - part_9dd6db59-314a-44cb-a1f8-80d8fef48bf7 - 9dd6db59-314a-44cb-a1f8-80d8fef48bf7 - - - 20.78174591 - - MI_Restricted_Substances - 0a203f13-4112-4c7b-8d17-bd9ce600f647 - - YS350, cold rolled - Dual phase steel, YS350, cold rolled - 7e1abe58-dc2f-49e9-b7c0-dbc38cbc01d0 - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - 6728f46f-986a-4275-9387-1cc4faa4da0b - Mass - 85.85280691 - - - - - 39.60912704 - - MI_Restricted_Substances - 55c8dd10-b62f-4136-b1c8-6260fcec05cc - - Annealed - Carbon steel, AISI 1040, annealed - a63a43fb-bd3e-4713-9d59-14cd253dcfb8 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - e10732c7-d7d9-40f8-9ce9-834264f73e30 - Mass - 100.0 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 312ad884-6078-48de-ac21-4b1cb4df5195 - Mass - 100.0 - - - - - 39.60912704 - - MI_Restricted_Substances - 9052201a-a41d-4b86-8c7c-2e80163afd47 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 9255, oil quenched & tempered at 425°C - 3f0e83fa-2dc2-40fd-8673-7af055ac9ebb - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - fdd1873a-08e3-49d6-ac02-ac8740413d2f - Mass - 98.71991826 - - - - - - - 2.0 - 65.84238017 - 91357df5 - part_91357df5-a0a9-4613-9e4e-4db5c3dd290a - 91357df5-a0a9-4613-9e4e-4db5c3dd290a - - - 29.54798421 - - MI_Restricted_Substances - c62d668e-5411-4845-b19c-3a0c4eedf872 - - 10CrMo9-10, normalized & tempered - Low alloy steel, 10CrMo9-10, normalized & tempered - 3f3c809b-73b8-49b9-9c0b-bc086b8b39a9 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 3d8df13c-3e9f-4988-bede-97cdbdea9c70 - Mass - 100.0 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - d644e2f7-3fb6-4478-a0e6-492dc9095c10 - Mass - 100.0 - - - - - 10.06457368 - - MI_Restricted_Substances - bf6aa85b-3059-4b2c-86af-6bcb1996d5b9 - - Oil quenched & tempered at 540°C - Carbon steel, AISI 1340, oil quenched & tempered at 540°C - 992bae49-43ed-4d6f-9ab8-9a32662693fe - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - d9c54a78-22a2-4129-8026-e53bf8b5e318 - Area - 24.61552453 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 23cdc31f-0efe-4f13-9490-41453d6a83ed - Mass - 100.0 - - - - - 10.06457368 - - MI_Restricted_Substances - 26c4e2ce-ddb9-499d-bc00-aa0f3bdd9c24 - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 8740, oil quenched & tempered at 540°C - 2ea7361e-06a4-4657-87e0-1c0de2008304 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - 65a19922-4bb3-4ca4-a6a5-69dca645c5ff - Mass - 100.0 - - - - - 10.06457368 - - MI_Restricted_Substances - 7ab4723d-0e73-471b-9be3-18cf27157318 - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 5130, oil quenched & tempered at 540°C - 99975f48-c24c-4386-ba08-6128ca010a84 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 622c3df4-5555-49e5-873b-382ad90ef3ba - Length - 68.23396196 - - - - - 10.06457368 - - MI_Restricted_Substances - 6ad310ec-db2b-43b1-afa1-9b6ddae5880c - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 94B30, oil quenched & tempered at 425°C - 0da179b9-8835-487a-9c7e-dc94a332499c - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - 7567cd31-1442-4f82-b28a-fe35bc1588d2 - Mass - 100.0 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - e7d87153-23d8-4119-8d80-f876d25399c0 - Mass - 100.0 - - - - - 10.06457368 - - MI_Restricted_Substances - 8dbb57f2-b225-4f57-9a5a-c25a03292d6e - - Annealed - Low alloy steel, AISI 6150, annealed - b9be711b-55d6-4195-b9d0-e0a8d321904c - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - 1834584f-afbf-4ab2-bc96-be73a97aa21e - Length - 65.84657596 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 00887d64-3f95-46fc-9953-4f368a07f0eb - Mass - 100.0 - - - - - 10.06457368 - - MI_Restricted_Substances - a43e27db-2962-4e19-aebb-f135744741e3 - - Annealed - Low alloy steel, AISI 5120, annealed - ddf239e2-6149-43a3-8000-236874b5839b - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 0ef4f2b1-4984-4c98-90bd-180542bd7dde - Mass - 100.0 - - - - - 10.06457368 - - MI_Restricted_Substances - 5169a157-0d18-4d45-b197-799e06aa00bc - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 9255, oil quenched & tempered at 315°C - b85fa4ef-7d24-45db-b8ab-89797f8458c2 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 727324d2-de0e-483e-869c-5ce872d30888 - Length - 39.33581776 - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - eef71883-cb51-409a-b7ce-70882f5ef579 - Mass - 100.0 - - - - - - - 3.0 - 19.39443532 - 1ff628be - part_1ff628be-8e3f-4c38-879f-0b4048e9e811 - 1ff628be-8e3f-4c38-879f-0b4048e9e811 - - - 65.88009431 - - MI_Restricted_Substances - b00ee3d8-d653-4c76-8154-c2f07820ceda - - As rolled - Carbon steel, AISI 1080, as rolled - 34f2f2b5-283d-41db-9853-4563182a132c - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - 666ac6f9-c3bc-48e2-bc93-7e95e405309a - Length - 13.83783016 - - - - - 5.68665094 - - MI_Restricted_Substances - dcce1340-a96d-465a-8878-4d8f44c2f7f7 - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 5150, oil quenched & tempered at 540°C - 1f4c5613-0146-4a59-a030-e486677f0f9b - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 1963c1c5-b111-47ea-bb86-1bbde20ee277 - Mass - 100.0 - - - - - 5.68665094 - - MI_Restricted_Substances - b879bb01-8648-4b5b-8159-d591cb251ca8 - - Normalized - Carbon steel, AISI 1080, normalized - a01b000d-fda4-4c5d-8d5d-d69fd0bb5e70 - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - 56e8844a-a9f1-4e73-b34e-8dda8ee558ec - Mass - 100.0 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 578cc726-506b-4075-ad45-8cff91a53ada - Mass - 100.0 - - - - - 5.68665094 - - MI_Restricted_Substances - 2be5267e-fce0-4169-a0fe-d8de913e1d71 - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 8640, oil quenched & tempered at 205°C - f68aa67a-f7f4-489e-9eaa-286340efe2d1 - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - dc22fa7d-7549-4386-8c95-1837f5c128b2 - Mass - 100.0 - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - 530a525e-76b2-4f7f-9788-0e6d257c2238 - Mass - 100.0 - - - - - 5.68665094 - - MI_Restricted_Substances - f95fb065-be79-4298-84c9-9f276ea46e48 - - Glass/polyimide honeycomb, ±45° fabric (0.088) - Glass/polyimide honeycomb, ±45° fabric (0.088), L Direction - 03a3141d-7b1e-4fff-a8a6-37299f364430 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 56360d01-e86f-423e-b37b-9fa3ba08185e - Mass - 59.82428475 - - - - - 5.68665094 - - MI_Restricted_Substances - 2017a3b5-88e7-473f-b7c9-1ab8afe722fe - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 5160, oil quenched & tempered at 540°C - 9904d2c7-5bf9-4f27-8090-81297a499433 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 0b71141e-c7c1-41f5-87e5-badcfc0a5a0c - Length - 67.20160216 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - a22737bb-cc0a-4f41-9a11-64e3af9a7db4 - Area - 42.62708776 - - - - - 5.68665094 - - MI_Restricted_Substances - e678781a-1b38-4709-816b-9db609651db6 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 50B60, oil quenched & tempered at 425°C - e7349359-10ab-4551-be4e-c99c7405dde4 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 93c0653b-b85f-40c7-93ee-3a0d7f16d0a6 - Mass - 100.0 - - - - - - - 9.0 - 66.35584303 - 873e2b55 - part_873e2b55-ef6f-416b-9880-a137f2b762af - 873e2b55-ef6f-416b-9880-a137f2b762af - - - 54.27944718 - - MI_Restricted_Substances - 81ce98b3-d459-4695-9dd9-d53244be47ed - - Annealed - Carbon steel, SA216 (Type WCC), cast, annealed - 023a42db-39d1-420c-bd0c-c50e7ec5d6b3 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 219011eb-716b-4b65-9d55-75b1e95d8541 - Mass - 100.0 - - - - - 45.72055281 - - MI_Restricted_Substances - b872537b-c0a0-4c3e-8388-e5544183cdd3 - - water quenched & tempered at 425°C - Carbon steel, AISI 1030, water quenched & tempered at 425°C - 85907385-a5ab-40fb-a8a1-d2d28034c0eb - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - c35e2aff-f3f8-4e4e-9a92-f70a56d3e198 - Length - 72.00127987 - - - - - - - 8.0 - 25.11062357 - 260376b9 - part_260376b9-7f28-4b9d-ba85-c71529c2e558 - 260376b9-7f28-4b9d-ba85-c71529c2e558 - - - 100.0 - - MI_Restricted_Substances - 2096ca77-9981-4fd5-9bc6-afe56b3bbbd4 - - Glass/phenolic honeycomb, 0°/90° fabric (0.096) - Glass/phenolic honeycomb, 0°/90° fabric (0.096), W Direction - cd0e804b-5055-491c-91bb-f578cd24b402 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - ac430bac-6be6-4ca3-a355-eaf8a392dca2 - Mass - 100.0 - - - - - - - 4.0 - 81.72868759 - 650a75cd - part_650a75cd-cf12-4f02-894a-47b250a8a649 - 650a75cd-cf12-4f02-894a-47b250a8a649 - - - 35.70998717 - - MI_Restricted_Substances - 44a3cdc8-1092-45c0-be37-1802daa92d30 - - Borosilicate - 7052 - Borosilicate - 7052 - 5c6db892-edf7-4a01-891a-62b1a8c3c0b3 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - a27619f0-e851-4da1-a062-7e6c7629df5f - Mass - 100.0 - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - 29cedba9-c8e5-484f-8b1e-1573897b939a - Area - 74.10303394 - - - - - 32.14500641 - - MI_Restricted_Substances - 874b8433-2e47-45c3-9c89-226428104214 - - Glass and mineral filled, heat resistant, molding - Novolac (glass and mineral filled, heat resistant, molding) - 3bd97cc5-55ff-4338-8f5b-868161733ffb - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - d09771bf-6836-4948-99e4-add1146832cc - Mass - 70.76565323 - - - - - 32.14500641 - - MI_Restricted_Substances - bafd43bc-822e-4a22-bbac-ea5d189fb539 - - Glass/phenolic honeycomb, 0°/90° fabric (0.096) - Glass/phenolic honeycomb, 0°/90° fabric (0.096), L Direction - 9adcfe4f-0bcb-4a67-b39a-cb7ce736e73b - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - 3b5ffc91-f48d-403f-ae38-123563087d04 - MassRemoved - 57.18002736 - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - a921ce26-772c-4779-8f41-ef92162af905 - Area - 19.03296742 - - - - - - - 1.0 - 41.88864475 - 9ebdc15a - part_9ebdc15a-d6ae-45be-99de-789d4100ca40 - 9ebdc15a-d6ae-45be-99de-789d4100ca40 - - - 100.0 - - MI_Restricted_Substances - a89802d6-13c5-496d-b139-57ae43e6591c - - As rolled - Carbon steel, AISI 1022, as rolled - 94c367bb-be30-41d7-b198-c89579e1eacd - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - cd0c3208-da44-4c68-bea8-bde114513392 - Mass - 100.0 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - b65d9c76-58c0-4361-9dc0-a64d214066cb - MassRemoved - 76.78188722 - - - - - - - 5.0 - 13.1076233 - b489c8c7 - part_b489c8c7-b4d5-4664-aa4b-bb5250ccf3b2 - b489c8c7-b4d5-4664-aa4b-bb5250ccf3b2 - - - 100.0 - - MI_Restricted_Substances - 23967b46-b6a1-4f82-9a4f-d0ea6e728ece - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 5160, oil quenched & tempered at 650°C - 73ef86b5-6d18-4588-a375-1e5a070886e8 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - fbf0e496-74ad-4a0d-9726-2358bc601732 - Length - 39.46813365 - - - - - - - 4.0 - 96.19634109 - 5b9257d1 - part_5b9257d1-f821-4fff-a137-7e3ee55bfa4e - 5b9257d1-f821-4fff-a137-7e3ee55bfa4e - - - 93.02073823 - - MI_Restricted_Substances - be8a7515-ee24-4272-814c-77d9175f6448 - - As rolled - Carbon steel, AISI 1137, as rolled - 6ea1fac4-fb32-4f3c-af4b-f096113a38dc - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - aa5fbc04-e9e0-454a-bc5d-97ee7d8abd00 - Mass - 100.0 - - - - - 0.99703739 - - MI_Restricted_Substances - 96ffbd8d-b296-4749-a0b0-fc5d243affda - - water quenched & tempered at 540°C - Carbon steel, AISI 1095, water quenched & tempered at 540°C - 156d7400-497b-46ae-b90a-01d15ae3584a - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 52debb42-5c4c-4d64-894a-f848f6076635 - Mass - 100.0 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - 83a1e091-bf83-4510-906d-e127384dbaba - Length - 30.02789147 - - - - - 0.99703739 - - MI_Restricted_Substances - 9e6962c2-d850-4285-97e5-fbb27dbc0447 - - water quenched & tempered at 425°C - Carbon steel, AISI 1050, water quenched & tempered at 425°C - ed8f8b22-77d8-47c4-8445-35f902c2fd70 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - 48d616ec-5d6c-43ef-8222-c9f556facab8 - Area - 36.97503425 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 2598e531-13cd-4f51-924c-73bd3f0cbc5d - Length - 22.49289458 - - - - - 0.99703739 - - MI_Restricted_Substances - 6c7c9029-b53e-45cd-9578-92083101604c - - Glass/phenolic honeycomb, ±45° fabric (0.032) - Glass/phenolic honeycomb, ±45° fabric (0.032), W Direction - fa45dc1e-1853-45e1-83a8-443a15d8245d - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - d9f0a1eb-bbaa-40ee-a757-f8cdedaa53e8 - Mass - 65.56594081 - - - - - 0.99703739 - - MI_Restricted_Substances - f92ff01e-ed35-4c66-96d1-607d9684b44b - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 94B30, oil quenched & tempered at 315°C - 3e210ce1-97e5-430d-803f-b12cade81d95 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 7a24a97b-8f05-466b-918b-4dc2f6c5ed90 - Mass - 100.0 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 60b3d98f-e477-465c-abc1-f70e10b5d9da - Mass - 1.460336 - - - - - 0.99703739 - - MI_Restricted_Substances - 8cd50236-3f00-4460-9e77-bc85138f34c4 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 51B60, oil quenched & tempered at 425°C - fdb12a23-07e4-41ed-a7db-1d63e9dba3dc - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 13e03c77-918f-49ce-823b-98f25145eb80 - Mass - 100.0 - - - - - 0.99703739 - - MI_Restricted_Substances - 6d6a3603-a2a8-4db9-9e7e-ad4fc4f9c724 - - Glass/phenolic honeycomb, ±45° fabric (0.064) - Glass/phenolic honeycomb, ±45° fabric (0.064), W Direction - 642bc4ec-7dc1-4e24-b9de-f50f4971c09c - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - dcf23f35-d5c6-4368-b02e-6c0aa653c3eb - Mass - 100.0 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - 900cce51-db5c-4b9c-b9b4-9a315fb29b16 - MassRemoved - 52.89711791 - - - - - 0.99703739 - - MI_Restricted_Substances - 87e1a3cd-fd79-4013-b5f8-56d6f28bef34 - - Oil quenched & tempered at 540°C - Carbon steel, AISI 1144, oil quenched & tempered at 540°C - 15f2d5f4-0d3f-4dcb-ac36-3502ea6bc955 - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - 63823504-d8fb-4123-933c-f810c438558b - Mass - 18.23167261 - - - - - - - 3.0 - 22.85209881 - 7d1e9930 - part_7d1e9930-f664-42e2-9303-926b6b2461e0 - 7d1e9930-f664-42e2-9303-926b6b2461e0 - - - 70.84336279 - - MI_Restricted_Substances - a6ee4feb-80c5-43a7-b3ee-a1423218f502 - - AF1410 - High alloy steel, AF1410, solution treated & overaged - 2f3e003b-677d-4d37-8f9f-8d1464636002 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - fc55e36d-d625-4e4c-98a3-e04855bb014e - Mass - 100.0 - - - - - 29.1566372 - - MI_Restricted_Substances - d121aded-0a6a-41ae-be9f-f0532fab5cfd - - water quenched & tempered at 540°C - Carbon steel, AISI 1030, water quenched & tempered at 540°C - 8b20fef8-50e4-45ea-8bd2-cca011716365 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - f1eebee2-01d2-4e54-b6c3-d097f4ad32bf - Mass - 100.0 - - - - - - - 3.0 - 95.23446359 - 4023ab0f - part_4023ab0f-9880-418e-8820-5951c5d64aca - 4023ab0f-9880-418e-8820-5951c5d64aca - - - 19.39571714 - - MI_Restricted_Substances - ce76abdf-c476-4643-8436-8e49a2813e39 - - Oil quenched & tempered at 425°C - Carbon steel, AISI 1080, oil quenched & tempered at 425°C - 1bde5ecf-700e-4a11-97af-e0288a8e8c9b - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - d7eafcf8-27cc-4ebe-934c-6d935638c057 - Mass - 46.43484966 - - - - - 80.60428285 - - MI_Restricted_Substances - af4f67b9-f5a7-4fc3-9f1d-da3309e4b19a - - Solution treated & aged - Iron-base-superalloy, Cr-Ni alloy, A-286, solution treated & aged - 98d98926-df80-4f95-9608-402ddc11f352 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - 11ab8d32-b3f3-49f9-9742-57531e3f2a0f - Mass - 100.0 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 9b3018cd-88ea-4707-885d-edf6ad1b12dc - Mass - 100.0 - - - - - - - 3.0 - 31.53040107 - b5828b97 - part_b5828b97-1075-4774-be6c-accf9015044f - b5828b97-1075-4774-be6c-accf9015044f - - - 46.0624912 - - MI_Restricted_Substances - 00fe0155-9aca-4c9d-b0a2-1289f92fa2a0 - - Alkaline earth lead glass - Alkaline earth lead glass - 217f3630-b6ca-496a-9cf2-f3de87d86d02 - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - e032fb18-10f2-491f-b682-593060272c98 - Mass - 100.0 - - - - - 8.98958479 - - MI_Restricted_Substances - fab0ed5a-7494-4bcb-b57a-e0d565751dfe - - Potash soda lead glass - 1990 - Potash soda lead glass - 1990 - 689fa427-652b-49ea-af17-4831b88b7446 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 7e70493a-73d5-40e6-b18d-87553700cf8a - Mass - 100.0 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 7ca68a1c-ff4c-43e4-93f4-8bb83e0f0e75 - Length - 20.89018701 - - - - - 8.98958479 - - MI_Restricted_Substances - a68201e5-218b-4387-9e30-d1332ccfa44f - - Oil quenched & tempered at 315°C - Carbon steel, AISI 1340, oil quenched & tempered at 315°C - 57c62021-7086-4950-a92c-456b85b9e884 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 676d724a-c0d0-49ab-9f89-5b4d9254e89e - Mass - 100.0 - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - d8787978-abf8-42e7-84b8-015687e6c2c7 - Mass - 100.0 - - - - - 8.98958479 - - MI_Restricted_Substances - 1d5dd59c-75a0-4bf2-8862-7d77996aa0be - - Annealed - Low alloy steel, AISI 8650, annealed - c0d00feb-229c-45d8-b780-8d491e068b28 - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - a4a4e099-acc5-405a-8bda-09da836ffc14 - Mass - 100.0 - - - - - 8.98958479 - - MI_Restricted_Substances - ef4e19ac-4c9c-4fc1-b971-3ce21de330a2 - - Glass/polyimide honeycomb, ±45° fabric (0.128) - Glass/polyimide honeycomb, ±45° fabric (0.128), W Direction - d0328aa0-162b-40b6-852c-c3aa591010b9 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 08fbec63-9041-46ca-b103-6b5477c34130 - Mass - 100.0 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 70cf2e8c-ff1b-4eef-81ff-44b95dcc433f - Mass - 100.0 - - - - - 8.98958479 - - MI_Restricted_Substances - 2096ca77-9981-4fd5-9bc6-afe56b3bbbd4 - - Glass/phenolic honeycomb, 0°/90° fabric (0.096) - Glass/phenolic honeycomb, 0°/90° fabric (0.096), W Direction - 9f41888e-8aac-4160-b914-30890b83248c - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 49748196-7cb6-4172-b1da-1f5290340c74 - Length - 5.71025973 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - cc937aff-8c52-4315-b307-e41c7e4ef08c - Mass - 100.0 - - - - - 8.98958479 - - MI_Restricted_Substances - 67cc68ee-c8ab-40bd-bf62-4babd642a1fd - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 81B45, oil quenched & tempered at 425°C - 47a5075d-5e27-4e53-8b2a-eabaec901f1c - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - 4a76f34b-6d55-432e-ad78-60128d843a4f - Mass - 100.0 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - abd73439-a4ae-4ba3-a258-fd5fc322115a - Mass - 100.0 - - - - - - - 4.0 - 23.83217835 - 06628875 - part_06628875-d9ee-4c09-89e7-0f454a13cd45 - 06628875-d9ee-4c09-89e7-0f454a13cd45 - - - 81.65922522 - - MI_Restricted_Substances - ee08f647-79af-49f3-98c5-043480a0fed4 - - Quenched & tempered - Low alloy steel, 4330V, quenched & tempered - 33f6730d-9f32-4321-8418-a3d9a8e4c514 - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - d423ef7a-2f61-4992-9f5f-e4bacf13607b - Mass - 100.0 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - f4171533-291f-4ce9-9087-d31d486f10d0 - Mass - 100.0 - - - - - 18.34077477 - - MI_Restricted_Substances - d411a96b-aa1c-4651-a405-5a2bc5c32dff - - Modified, Grade 91 - Alloy steel, 9Cr-1Mo-V, modified, Grade 91 - a5fa4139-e40c-47fb-a213-a703316d9a57 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - f96af788-4771-487b-a457-aeafa787e071 - Mass - 100.0 - - - - - - - 8.0 - 88.41213844 - - MI_Restricted_Substances - fd7a9f3d-cb52-4422-8ede-c25a48f61056 - - 6795518b - part_6795518b-1296-4afe-b918-433b4c411abc - 6795518b-1296-4afe-b918-433b4c411abc - - - 8.0 - 1.59783889 - - MI_Restricted_Substances - fd7a9f3d-cb52-4422-8ede-c25a48f61056 - - 52486ce9 - part_52486ce9-d674-4917-bb14-f25a244a5a8e - 52486ce9-d674-4917-bb14-f25a244a5a8e - - - 7.0 - 43.84390643 - - MI_Restricted_Substances - 80083213-3621-42c0-9e23-cdaa30c759e6 - - 5392a22c - part_5392a22c-ee32-4fd6-8428-0968c023863e - 5392a22c-ee32-4fd6-8428-0968c023863e - - - 3.0 - 39.93307875 - fd45e442 - part_fd45e442-8f0c-4731-b486-355c460e573f - fd45e442-8f0c-4731-b486-355c460e573f - - - 100.0 - - MI_Restricted_Substances - 90b2285b-4295-429d-beb8-90d9f5df0101 - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 5046, oil quenched & tempered at 315°C - cb7ea85e-72ec-4dee-bee5-f9a93f4ad9ad - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 5b3d7c37-3bb1-41e3-91f3-d37aefcdfd96 - Mass - 100.0 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - f1deacca-1590-431d-b8fc-fe4934ecb0e3 - Mass - 100.0 - - - - - - - 2.0 - 99.16980178 - 76104c26 - part_76104c26-866e-4db9-9d90-7097e3982b3d - 76104c26-866e-4db9-9d90-7097e3982b3d - - - 38.34366339 - - MI_Restricted_Substances - 3cad12a9-0765-402c-a6b1-0be665ecd2e6 - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 4140, oil quenched & tempered at 540°C - fc0e832c-2179-4f80-850a-a311863ffadd - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 89e7a6a4-d35c-4b53-b22a-188467bcd226 - Mass - 100.0 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - 1b37e761-da85-4f06-8215-34330d7f61cf - Mass - 100.0 - - - - - 7.70704207 - - MI_Restricted_Substances - 45a257d5-da48-4520-9174-ffe7bbadcd1c - - Glass/phenolic honeycomb, ±45° fabric (0.088) - Glass/phenolic honeycomb, ±45° fabric (0.088), L Direction - 83e993b0-6437-4eb5-a265-245d967243f1 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - 176aea18-0ec1-4b4f-bceb-bddb9547aebe - Area - 88.5832304 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 93dea267-4bef-403b-a62d-1a8a007593c2 - Mass - 100.0 - - - - - 7.70704207 - - MI_Restricted_Substances - 211ae46e-0827-4d61-af66-5a72c42d0cd8 - - T-glass - T-glass - a9a90986-ee65-4929-a4b6-f935adf547e9 - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - 25b28a90-51c9-4416-9ad3-3fe04a1746e2 - Mass - 100.0 - - - - - 7.70704207 - - MI_Restricted_Substances - 4df9287d-c8fa-47a8-8f7b-218fdc14a141 - - Normalized - Low alloy steel, AISI 4340, normalized - edf4f538-5d79-419b-929f-aaa781ef585d - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 561f8a3b-3a9a-4141-aa92-ecca13669933 - Mass - 100.0 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - 4d917439-f220-47bc-9ed2-cb39bb0b83cd - Mass - 100.0 - - - - - 7.70704207 - - MI_Restricted_Substances - 644fc87d-87f3-468c-9a88-b8e2db43ae6b - - water quenched & tempered at 650°C - Low alloy steel, AISI 4130, water quenched & tempered at 650°C - 3c3474e6-baf8-44fa-b65b-095b10e30b8d - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 2c8a6e29-c719-489c-b5cc-4068a6161ded - Mass - 100.0 - - - - - 7.70704207 - - MI_Restricted_Substances - 9ce914d8-75c1-4c5f-8c57-11c0e62b2cfa - - ASTM A299 Grade A - Structural steel, ASTM A299 Grade A - 48671cfe-bff1-4aef-a9ec-7ca411fb54f1 - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - 5010ab7a-ded4-4271-827c-cd2bfdbc5f4e - MassRemoved - 56.04752011 - - - - - 7.70704207 - - MI_Restricted_Substances - 90b2285b-4295-429d-beb8-90d9f5df0101 - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 5046, oil quenched & tempered at 315°C - 15109e4a-788f-45d7-b307-7eae9067ed3b - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 482c2990-9110-46c6-b63b-1fd1332ec968 - Mass - 100.0 - - - - - 7.70704207 - - MI_Restricted_Substances - 966360b2-fda5-432b-9069-4a9814db3e6b - - YS1200, hot rolled - Martensitic steel, YS1200, hot rolled - 615c2e3c-f676-4a21-8bd3-aa289ab2f97f - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - 1bc2734f-76ea-4eee-ac4e-3d305cac579e - Mass - 100.0 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - ee9438ae-3a81-4135-94df-b9c951d9e3b0 - Mass - 100.0 - - - - - 7.70704207 - - MI_Restricted_Substances - 924b3986-e315-4b28-9daa-56a075aa18e9 - - Annealed - Low alloy steel, AISI 52100, annealed - 70eb3599-7754-404f-bbf4-c843a0d22ab8 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - beff16be-fa66-4825-94ed-f0627705c853 - Mass - 73.71533441 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 95e5da93-2323-4390-9111-995c2f3b4a15 - Mass - 100.0 - - - - - - - 2.0 - 84.14036807 - fa4944fc - part_fa4944fc-c700-4f4f-8520-ba8f7173c98d - fa4944fc-c700-4f4f-8520-ba8f7173c98d - - - 83.08901138 - - MI_Restricted_Substances - 87b588e6-604a-4acb-a651-c882f6211f74 - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 8660, oil quenched & tempered at 650°C - 700b12bc-62b3-4c8d-ae28-a486940d8001 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - 223ffc08-825b-4d8d-9930-631abbb47b36 - MassRemoved - 77.06509645 - - - - - 2.8184981 - - MI_Restricted_Substances - 5169a157-0d18-4d45-b197-799e06aa00bc - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 9255, oil quenched & tempered at 315°C - 0b984f84-b973-4107-b1b6-b17ccefbd7f8 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - 67d84b4a-6da7-4fc2-98cf-e5220310f972 - Mass - 100.0 - - - - - 2.8184981 - - MI_Restricted_Substances - 23967b46-b6a1-4f82-9a4f-d0ea6e728ece - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 5160, oil quenched & tempered at 650°C - 6db0fe77-beeb-4841-b6fb-1ca4e65c1d5d - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - 6d9f7993-fd2d-4dae-949b-77639a6bc6c6 - MassRemoved - 49.375426 - - - - - 2.8184981 - - MI_Restricted_Substances - 619c1e62-d6e1-4a5d-9abc-99a0b6c0ed7e - - Oil quenched & tempered at 315°C - Carbon steel, AISI 1141, oil quenched & tempered at 315°C - bab1cdce-dc22-49ec-bae4-99408792ca79 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - 290a4dc9-7b4c-49b0-97c7-e93b67c2b124 - Mass - 100.0 - - - - - 2.8184981 - - MI_Restricted_Substances - f92ff01e-ed35-4c66-96d1-607d9684b44b - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 94B30, oil quenched & tempered at 315°C - 84013519-f260-4996-8f52-eae2dd77a93d - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - 4c1c16e7-e2d4-4e31-91e1-c17abd37e0fc - Length - 1.58711099 - - - - - 2.8184981 - - MI_Restricted_Substances - fdf47c86-6c5b-4bba-b434-574871039636 - - Glass/phenolic honeycomb, 0°/90° fabric (0.035) - Glass/phenolic honeycomb, 0°/90° fabric (0.035), W Direction - 90bcb052-78bc-4251-85aa-0555a18e93ae - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - 5f85a2cc-06aa-4971-95b2-20133fe72956 - MassRemoved - 75.49642975 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - 13d90310-e45a-4c4d-a6db-66fbe8b84c3e - Mass - 100.0 - - - - - 2.8184981 - - MI_Restricted_Substances - 31491cd8-6f82-4358-a2d6-ef62bfbbfadd - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 4150, oil quenched & tempered at 205°C - b3b3edfa-7cb4-4d3c-8c11-9e0bf7ceb4da - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - aeaa7c7d-552a-45bc-8fee-9369f478869e - Mass - 100.0 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - a7bacc7a-94ee-411a-b005-0a903e9276c8 - Mass - 93.80614892 - - - - - - - 1.0 - 18.80020835 - 3890ee72 - part_3890ee72-ec9e-4a61-956a-2f3bf7cff8f1 - 3890ee72-ec9e-4a61-956a-2f3bf7cff8f1 - - - 35.71945784 - - MI_Restricted_Substances - 1851a6ff-c2e6-4bc6-ab7a-a0eae431e281 - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 5140, oil quenched & tempered at 540°C - 55a1b794-3e9e-4975-a05a-14b7b6e0b6ad - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - 967af45a-0b14-473a-8705-a9e81e9b7dac - Length - 50.22482683 - - - - - 16.07013553 - - MI_Restricted_Substances - 55c8dd10-b62f-4136-b1c8-6260fcec05cc - - Annealed - Carbon steel, AISI 1040, annealed - 1a7dccf4-7487-4ad5-b672-fe8762edc3b9 - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - 8960a5e0-b2ce-4d40-b5b4-acca4e81a78a - MassRemoved - 81.07648467 - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - 13897563-6b51-4c26-8e14-0ecbf4347286 - MassRemoved - 18.30567131 - - - - - 16.07013553 - - MI_Restricted_Substances - ddefbfb8-3b97-480b-887d-0ddadf161d95 - - YS350, cold rolled - High strength low alloy steel, YS350, cold rolled - 609457c6-aebc-4d31-9fa5-b007283c4915 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 74ae08d1-3c4f-4117-867f-fec0de55cb8e - Mass - 100.0 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - b4f9cb90-f827-4693-822e-ac9d8bb3f4d7 - Mass - 100.0 - - - - - 16.07013553 - - MI_Restricted_Substances - 3fd6cebb-a683-45be-b014-7c3fb617c3e7 - - Glass/polyimide honeycomb, ±45° fabric (0.064) - Glass/polyimide honeycomb, ±45° fabric (0.064), L Direction - f7bb6e24-035c-40c0-b457-64f08fb203a7 - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - e79a3e3f-5602-47b6-9d53-51234b906e4c - MassRemoved - 87.74354019 - - - - - 16.07013553 - - MI_Restricted_Substances - aebf8cac-5529-4a72-9e09-71badd344c6a - - Oil quenched & tempered at 315°C - Carbon steel, AISI 1137, oil quenched & tempered at 315°C - 30ec6d3e-5040-4bba-b1a3-ef36ff8e9a06 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - bfdc7b6a-8c3a-4462-a1cf-355129719f80 - Mass - 100.0 - - - - - - - 5.0 - 19.40949811 - 2c40d687 - part_2c40d687-52db-4733-8bc8-39d3e975dedc - 2c40d687-52db-4733-8bc8-39d3e975dedc - - - 25.91772462 - - MI_Restricted_Substances - c19a6c59-b937-499d-ac22-fe742ae42287 - - As rolled - Carbon steel, AISI 1117, as rolled - 682616f3-5dd4-43a6-87bc-b12c7efbebbf - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - 677e0150-2a59-4e0a-a20d-34eb9781a1a0 - Mass - 100.0 - - - - - 10.58318219 - - MI_Restricted_Substances - 6f7c4754-84f7-46f0-873a-ec2e9f29e345 - - Glass/phenolic honeycomb, ±45° fabric (0.088) - Glass/phenolic honeycomb, ±45° fabric (0.088), W Direction - fae5f8c6-be59-4dfc-a8d1-b04ffab08fd6 - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - e3fe3509-873f-49ae-9de5-e767c41476db - MassRemoved - 89.70856405 - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - fbbafbef-49e9-4808-8e0a-7e52fbbc08ea - Mass - 100.0 - - - - - 10.58318219 - - MI_Restricted_Substances - 82eabba3-2697-4f74-a530-ae27f5e33ffe - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 50B46, oil quenched & tempered at 540°C - 676c75ce-1bbe-49fc-8a31-8bfc0946e5a4 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - b1e59de2-5ebd-486d-964a-6e331ee54fde - Mass - 100.0 - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - de5634e0-eadc-4dc3-bf5e-0c1425af3cef - Mass - 100.0 - - - - - 10.58318219 - - MI_Restricted_Substances - ff23c6a6-3046-4f35-b5d2-ca7f0956efc7 - - Oil quenched & tempered at 650°C - Carbon steel, AISI 1144, oil quenched & tempered at 650°C - 89b207c0-acfc-48ec-bca3-5ce2642f0854 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - be06024e-a2c8-4ab6-99cc-72927a9505a0 - Mass - 100.0 - - - - - 10.58318219 - - MI_Restricted_Substances - 874b8433-2e47-45c3-9c89-226428104214 - - Glass and mineral filled, heat resistant, molding - Novolac (glass and mineral filled, heat resistant, molding) - 00a0bfef-99f5-4c56-a026-47749011ab84 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 5bde1064-f66e-4f88-b834-31456faceb1a - Mass - 100.0 - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - d199e4a4-561b-4906-a67a-ca0118ec38bf - Mass - 100.0 - - - - - 10.58318219 - - MI_Restricted_Substances - 644fc87d-87f3-468c-9a88-b8e2db43ae6b - - water quenched & tempered at 650°C - Low alloy steel, AISI 4130, water quenched & tempered at 650°C - 4393fcfb-263c-4a72-837a-a614a9313933 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - cf5779a2-b757-4d07-81c5-42c1bf46b82a - MassRemoved - 20.51839666 - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - 64a74480-f724-4d60-9eed-bac3907ff551 - Mass - 100.0 - - - - - 10.58318219 - - MI_Restricted_Substances - fa4e12fa-2919-41e2-b7ef-1c487def0cd7 - - High ductility - Press hardening steel, 22MnB5, high ductility - 02c244ad-b832-4db8-8ac1-f47b2c6015b3 - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - ad72b93b-2b56-43fa-a98d-988c4912c594 - Mass - 100.0 - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - 2a5f5f25-0e8b-47b6-8c61-fb1eaafcb459 - Mass - 100.0 - - - - - 10.58318219 - - MI_Restricted_Substances - 7468aa92-eb02-4838-8030-fdd8673f2710 - - Oil quenched & tempered at 650°C - Carbon steel, AISI 1137, oil quenched & tempered at 650°C - e4e02809-be4b-4c18-9937-8f69a032d385 - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - cbf6fe52-eb1a-4f99-9fe1-bbb285bc1054 - Mass - 100.0 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - eef076b3-fb93-47b5-b699-9dcc261d1cf7 - Mass - 100.0 - - - - - - - 9.0 - 19.08895583 - 5f1c46ee - part_5f1c46ee-9cad-4e9b-92b3-1713e5f2ff0d - 5f1c46ee-9cad-4e9b-92b3-1713e5f2ff0d - - - 60.5120464 - - MI_Restricted_Substances - cfb19c31-b156-4a8d-854c-f264975539e1 - - water quenched & tempered at 205°C - Carbon steel, AISI 1095, water quenched & tempered at 205°C - 54726a26-d5d1-4891-ac76-39e512bfc31a - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - 93932fda-bdb4-4ba5-92fc-1cf9c0200668 - Mass - 100.0 - - - - - 9.87198839 - - MI_Restricted_Substances - 87e1a3cd-fd79-4013-b5f8-56d6f28bef34 - - Oil quenched & tempered at 540°C - Carbon steel, AISI 1144, oil quenched & tempered at 540°C - ff06982b-3b87-494e-8ea2-2289a468ac8d - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 20a674de-92bb-4885-9b60-ce739490865a - Mass - 38.95966086 - - - - - 9.87198839 - - MI_Restricted_Substances - fc29cc59-a670-4ad6-85a0-eb07bf011f1a - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 6150, oil quenched & tempered at 425°C - 4dfb5330-7d89-4875-9af5-4a1797930125 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - 415b4cf6-8c18-4891-95cc-97c099853f98 - Area - 80.03729389 - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - 48f16f83-03c9-4fad-b00e-e3ad7885ec54 - Mass - 100.0 - - - - - 9.87198839 - - MI_Restricted_Substances - 44a3cdc8-1092-45c0-be37-1802daa92d30 - - Borosilicate - 7052 - Borosilicate - 7052 - f8dbfbcf-67ab-4546-a00f-734231e99272 - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - d6a69287-e598-465d-8afc-8245664c5644 - Mass - 100.0 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - be1875f6-d842-414c-a8b6-517d43e196a0 - Area - 30.76541928 - - - - - 9.87198839 - - MI_Restricted_Substances - 5169a157-0d18-4d45-b197-799e06aa00bc - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 9255, oil quenched & tempered at 315°C - 02d18f6b-77f7-4931-8cfc-8c5052bfffa1 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - d70b65cd-5829-4430-acd0-8cf419f0ad4e - Mass - 100.0 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 769319c4-d5ef-4263-9501-606ae66528f3 - Mass - 100.0 - - - - - - - 9.0 - 74.42964873 - a85dd27e - part_a85dd27e-e8bc-4368-bc9c-215f8fae7541 - a85dd27e-e8bc-4368-bc9c-215f8fae7541 - - - 65.10661908 - - MI_Restricted_Substances - e678781a-1b38-4709-816b-9db609651db6 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 50B60, oil quenched & tempered at 425°C - def1fda8-f648-4965-96ec-26c053b4019b - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - 4b9c70b2-8f84-46ad-83be-e4e9517fc95a - Mass - 100.0 - - - - - 11.63112697 - - MI_Restricted_Substances - e06fc27c-5e39-4218-a5ca-6927af12a511 - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 4140, oil quenched & tempered at 205°C - fb54bac5-2cb9-4c8b-8ab2-5658261a71ef - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - fa81b70f-3425-48de-864b-261523b1dad4 - Mass - 100.0 - - - - - 11.63112697 - - MI_Restricted_Substances - 856cb700-78b1-46a2-8832-739a0d2c9a91 - - SAE 8630, cast, normalized & tempered - Low alloy steel, SAE 8630, cast, normalized & tempered - acf5bbf5-c930-48a5-95ad-dabdfa8dd275 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - cc1543da-80bc-442a-ae0a-d7e2e49140ef - Length - 91.34035612 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 2af08795-9cb2-4853-93cc-1229612571b0 - Mass - 22.86784514 - - - - - 11.63112697 - - MI_Restricted_Substances - 644fc87d-87f3-468c-9a88-b8e2db43ae6b - - water quenched & tempered at 650°C - Low alloy steel, AISI 4130, water quenched & tempered at 650°C - cb8e1ef3-aef0-4756-8c53-1f3e7d54bbbe - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - a48d7d60-3698-445d-9103-c1acecde702d - Mass - 100.0 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - eed8bb55-7968-4bcf-b369-760c417fb0e4 - Mass - 37.4343108 - - - - - - - - - 8.0 - 70.77321525 - d52d6c76 - part_d52d6c76-2b2a-4f0b-972a-46d6f2ad13e3 - d52d6c76-2b2a-4f0b-972a-46d6f2ad13e3 - - - 36.78084655 - - MI_Restricted_Substances - 59ed9004-2126-437f-aa61-b8a0189e69d3 - - Oil quenched & tempered at 650°C - Carbon steel, AISI 1095, oil quenched & tempered at 650°C - 5a9e0bf6-34f8-4139-b5e3-b2f85a89888f - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - fa2f6a0c-db85-48ed-9e55-624d4ae06730 - Mass - 100.0 - - - - - 63.21915344 - - MI_Restricted_Substances - 01ec383d-8c37-48b7-80b4-e1f3106fae04 - - Alumino silicate - 1723 - Alumino silicate - 1723 - f77d4be2-a6df-4143-a55c-c765d5aa7d96 - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - df74fc86-f286-4690-a6d3-ef81470e62b6 - Mass - 100.0 - - - - - - - 8.0 - 66.29342006 - c4c003a6 - part_c4c003a6-872c-405a-b62d-7c6e971b2bb4 - c4c003a6-872c-405a-b62d-7c6e971b2bb4 - - - 73.85304177 - - MI_Restricted_Substances - 9e11a8f7-0b35-4610-aee9-557a236bbe5c - - Soda borosilicate - Soda borosilicate - d4d7ef9d-6f6a-406e-8f9b-caee54055563 - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - c35d914b-a45d-43bd-8841-5445cba2fe5a - Area - 35.21493521 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - f255a03e-041f-4c57-bd65-a4f7852439d0 - Area - 28.65521909 - - - - - 3.26836977 - - MI_Restricted_Substances - c87d2bef-0549-4a3b-b699-3ad17b079fa1 - - YS355, hot rolled - High strength low alloy steel, YS355, hot rolled - 6513bd3c-9be5-4b57-a0dc-278a1a6d1068 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - d4f57470-0eeb-4f6b-832b-a59d8c6a2c95 - Mass - 100.0 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - 2b4f6f8f-6567-4c03-ad95-b732e5e75959 - Length - 39.42506315 - - - - - 3.26836977 - - MI_Restricted_Substances - 78055acc-4fc2-46ae-bba8-f28bda85357e - - Annealed - Carbon steel, AISI 1060, annealed - 0c2e5260-a7bf-4425-b318-aa0ec4f9fa31 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - b165e2f7-b227-4571-9267-40ad9db6956c - MassRemoved - 1.52987744 - - - - - 3.26836977 - - MI_Restricted_Substances - 19b67562-02fa-47ea-8fba-af5b14d1fafa - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 4042, oil quenched & tempered at 650°C - ff1f0f52-3799-424b-beb5-049b2cc99995 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - 64cef77d-ae60-40d0-b1ac-b22fd6abea77 - MassRemoved - 2.81746448 - - - - - 3.26836977 - - MI_Restricted_Substances - d2c2408b-ddaa-4dc0-825b-b2d3ef39767b - - Oil quenched & tempered at 315°C - Carbon steel, AISI 1095, oil quenched & tempered at 315°C - a7f4e72d-87ef-48c6-a86e-712f3d4e2138 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 42f13e55-e7bd-4c7b-b051-d07aa3898add - Mass - 100.0 - - - - - 3.26836977 - - MI_Restricted_Substances - 99d1c1c6-eca3-40ed-a479-6dec902f52da - - YS400, cold rolled - TRIP steel, YS400, cold rolled - 118cc1b4-36aa-4b69-b9d3-32e9790caad1 - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - 8e06e192-0347-43a3-839a-5a71b6c9fcae - Mass - 100.0 - - - - - 3.26836977 - - MI_Restricted_Substances - 21dcdeeb-524a-488e-b332-fcd4e1caf6f7 - - water quenched & tempered at 650°C - Carbon steel, AISI 1095, water quenched & tempered at 650°C - 52ad598e-1416-4dec-b5bd-8aff8208b8db - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - b50aea2b-3688-4402-9914-dddbe738e838 - Mass - 100.0 - - - - - 3.26836977 - - MI_Restricted_Substances - f05d84ea-b8e2-46d1-83a4-577038c5ed32 - - As rolled - Carbon steel, AISI 1040, as rolled - f93339bb-c71d-4b31-a6a9-08cb87199b53 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - d52ddc93-319a-4966-8e46-25012692b1ef - Length - 10.12971983 - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - a57649bf-cd41-44db-a5f7-351790d77ae2 - Mass - 100.0 - - - - - 3.26836977 - - MI_Restricted_Substances - 8d48bb04-5031-4d20-b935-741272060e1d - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 4150, oil quenched & tempered at 650°C - 1233f1ab-df39-45bc-be89-2e26a570ae60 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 4dc61dbb-37e5-4863-bb6c-5e1b2243217e - Mass - 100.0 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - c8a0c32f-758b-4155-9f4e-7641ee45d39e - Mass - 100.0 - - - - - - - 4.0 - 66.63638077 - 03edde95 - part_03edde95-b982-4543-a5df-195356497f8c - 03edde95-b982-4543-a5df-195356497f8c - - - 13.50558084 - - MI_Restricted_Substances - a01be0be-96e7-4123-b061-dfdbba1f1748 - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 4037, oil quenched & tempered at 315°C - 478bbb14-123b-4410-b504-d39ac82c0490 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - ef85d650-06c1-4321-b76e-cd16a7220037 - Mass - 2.3459902 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - afbc9e21-777e-41a0-b763-9b6e2a5653dd - Mass - 100.0 - - - - - 12.35634559 - - MI_Restricted_Substances - e6b45bea-dec9-4b91-996a-885bb0c31f8d - - Glass, S grade (10 micron monofilament, f) - Glass, S grade (10 micron monofilament, f) - 1487a836-de1a-4be0-af28-3db5013290c9 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 5e81e7e7-8422-405a-bc3b-5bd5fe550de4 - Mass - 70.85818674 - - - - - 12.35634559 - - MI_Restricted_Substances - bafce5b8-9e49-4ba7-918f-1ddea11d2a80 - - Glass/phenolic honeycomb, ±45° fabric (0.048) - Glass/phenolic honeycomb, ±45° fabric (0.048), L Direction - 4923b9f5-46ef-4b25-8b0b-c8295e4a7ffa - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - 42a4fe3a-2d8e-4d4d-89db-5392a0361584 - MassRemoved - 16.02738616 - - - - - 12.35634559 - - MI_Restricted_Substances - 7b330562-a44d-4de7-8944-99c0b7b0d3e1 - - Quenched & tempered - Low alloy steel, AISI 8630, air melted, quenched & tempered - d845a77e-1e71-447e-b0ca-a5cf02fd9304 - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - 0757b759-02d5-48d8-b162-b4a4a475414c - Mass - 100.0 - - - - - 12.35634559 - - MI_Restricted_Substances - 302db922-ffc4-4955-9a98-ddaa64c43d26 - - Borosilicate - 7720 - Borosilicate - 7720 - e6cae0a2-d7c1-44f4-9491-ef2d12c258ea - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - 50f44c04-64c2-497d-b596-07591a9ae790 - Mass - 100.0 - - - - - 12.35634559 - - MI_Restricted_Substances - 45a257d5-da48-4520-9174-ffe7bbadcd1c - - Glass/phenolic honeycomb, ±45° fabric (0.088) - Glass/phenolic honeycomb, ±45° fabric (0.088), L Direction - dd89e19a-16eb-4921-b5fa-75ded58ad9c7 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - ecbdce81-bcf2-456b-8658-3568e7d4d22c - Mass - 100.0 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - a547e090-52c3-489f-90a8-ae8cfc4e8c88 - MassRemoved - 91.81918184 - - - - - 12.35634559 - - MI_Restricted_Substances - 4b01d1e1-0f4c-4861-a797-7ea504ca38c4 - - Annealed - Low alloy steel, AISI 5150, annealed - b2289e42-0275-47f1-90dc-b31e07510f54 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 13116d75-e9d8-47c1-822c-bf54a65afa77 - Mass - 100.0 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - 9657051c-e2a1-4316-bca7-d78bb12b9950 - Length - 92.93381711 - - - - - 12.35634559 - - MI_Restricted_Substances - 439e62b9-4268-44c6-a084-695412628448 - - water quenched & tempered at 425°C - Carbon steel, AISI 1095, water quenched & tempered at 425°C - 940ad85c-6e92-46b6-80ce-d10d866d406b - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - f08e98d5-2df7-4e66-aab2-77a852180cf3 - Mass - 100.0 - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - c068ff86-6275-43bc-b654-be85b2356f53 - Mass - 100.0 - - - - - - - 3.0 - 44.30470096 - - MI_Restricted_Substances - 3d4d35cd-1db3-477c-8f3f-b90800ea1c4d - - 2383795b - part_2383795b-301d-446f-a7be-cfa59c010ba5 - 2383795b-301d-446f-a7be-cfa59c010ba5 - - - 8.0 - 93.19904194 - 9bf6b170 - part_9bf6b170-b0fa-45a3-b267-7678a39b64ca - 9bf6b170-b0fa-45a3-b267-7678a39b64ca - - - 15.18438603 - - MI_Restricted_Substances - bea16e1d-784b-41e4-b5f5-e21dd7b27217 - - S275J - Structural steel, S275J - 8fb52277-fcc3-4fd8-8040-c4f8e6ebc609 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - ec9717f3-4f66-4889-a85a-775536fae8d4 - Mass - 100.0 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - ed2e6f3e-6c30-413a-a7cc-dc0d3687f3da - MassRemoved - 55.602397 - - - - - 28.27187132 - - MI_Restricted_Substances - 72799627-a7c0-4df4-8250-e2be8538565f - - Glass ceramic (N11) - Glass ceramic (N11) - ecfa2d96-bb9a-4014-a89b-12157cec2108 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - e282f3d8-ee59-40d9-9d7f-f22de0874625 - Length - 60.69740539 - - - - - 28.27187132 - - MI_Restricted_Substances - dbdb9330-8683-439b-8246-f873ee3ba9ed - - Oil quenched & tempered at 205°C - Carbon steel, AISI 1040, oil quenched & tempered at 205°C - 9d832bea-99e2-4270-a051-3ed24a3eec51 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 0b3796ce-3c68-457b-9897-cab81563639f - Mass - 100.0 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - afd8a295-e9bd-4f8b-b36f-4767fd5fe198 - Mass - 100.0 - - - - - 28.27187132 - - MI_Restricted_Substances - 31098687-aa58-4d56-99a0-f005a0258573 - - Glass/phenolic honeycomb, 0°/90° fabric (0.192) - Glass/phenolic honeycomb, 0°/90° fabric (0.192), L Direction - a9eb6336-e275-4b28-817f-85ed12dc53b7 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - ff831347-4460-4dee-946d-093c1fc16ca4 - Mass - 100.0 - - - - - - - 5.0 - 69.12791899 - 3b713dbf - part_3b713dbf-a4cc-4a3c-b566-00173c57a996 - 3b713dbf-a4cc-4a3c-b566-00173c57a996 - - - 75.65854335 - - MI_Restricted_Substances - dbdb9330-8683-439b-8246-f873ee3ba9ed - - Oil quenched & tempered at 205°C - Carbon steel, AISI 1040, oil quenched & tempered at 205°C - 98c21e49-732c-4212-9e89-f5625f7c0964 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 659a0e9a-ff98-4967-b1ca-617faedb8f55 - Area - 21.06412123 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - e59562de-dfc5-4b15-a7f4-91a0a0d135cf - Mass - 100.0 - - - - - 4.86829132 - - MI_Restricted_Substances - aec3ed84-0fb0-4317-b8b1-9f6714a7a07f - - Normalized - Low alloy steel, AISI 4130, air melted, normalized - 6012ba6b-e23f-40dc-aa54-e131fcda591c - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - 33fb5add-5127-42d3-9bdf-e6e4741cc5fe - Area - 48.93467591 - - - - - 4.86829132 - - MI_Restricted_Substances - c07a0ada-0510-4f27-be52-15e07d6c70c5 - - Soda-zinc glass - 6720 - Soda-zinc glass - 6720 - c7fa3134-6224-400b-9b23-198757dc3820 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - 429d60eb-d5b1-44e5-b153-1f8a74a80ce6 - Mass - 100.0 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 83fbc8e3-74c1-4021-8f20-0e847ae8f35f - Mass - 100.0 - - - - - 4.86829132 - - MI_Restricted_Substances - 78055acc-4fc2-46ae-bba8-f28bda85357e - - Annealed - Carbon steel, AISI 1060, annealed - 399f34bd-bcf3-4cd0-9a54-0bc17d32f3c4 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - 7c597799-6150-4af3-ad3d-231f653568b1 - MassRemoved - 6.99221999 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - bb3a21eb-f858-45d6-be8e-87456d6b6082 - Mass - 100.0 - - - - - 4.86829132 - - MI_Restricted_Substances - aa963e30-fca0-439d-bee2-ff48daa946f3 - - As rolled - Carbon steel, AISI 1095, as rolled - 2ee2ea05-84bc-40c9-b373-30c6e7ae2bc3 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - d877e42f-ade4-4b77-aacb-465ae3cad5a9 - Mass - 100.0 - - - - - 4.86829132 - - MI_Restricted_Substances - 1992b264-49ea-405f-82f9-41dd972b9510 - - FR-4.1 (Df < 0.01 at 10GHz), Epoxy/Glass fiber, PCB laminate - FR-4.1 (Df < 0.01 at 10GHz), Epoxy/Glass fiber, PCB laminate - aa85effd-cd5a-4852-9412-ce1cc988d929 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - a47eb5f5-d295-4709-948e-ecf31a6ef286 - Mass - 100.0 - - - - - - - 1.0 - 89.09261202 - b5fb6cb3 - part_b5fb6cb3-980e-42f7-802c-7d606f5d8526 - b5fb6cb3-980e-42f7-802c-7d606f5d8526 - - - 61.03026613 - - MI_Restricted_Substances - df40828d-d5c3-4a43-9f00-5de867f4f406 - - Normalized - Low alloy steel, AISI 4320, normalized - 472fa5d7-1d4a-4992-a0f6-c72997cae49e - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - daa001ac-b1c2-4169-908b-79616b5cc18c - Area - 92.13713919 - - - - - 19.48486693 - - MI_Restricted_Substances - 278c6b66-fb3e-4e2d-b915-df6a231b2342 - - Oil quenched & tempered at 540°C - Carbon steel, AISI 1080, oil quenched & tempered at 540°C - d3060c58-6ab9-45a4-a1a3-cd528624447f - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - e2046142-3a32-4076-a3de-62d1f1c81fe8 - Mass - 100.0 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - 5256e8bd-15f6-4a3e-b1d3-0a4023e12c36 - Mass - 100.0 - - - - - 19.48486693 - - MI_Restricted_Substances - 4a35d8d1-5fb1-47e9-a669-37204ae732dc - - ASTM A500 Grade A - Structural steel, ASTM A500 Grade A - 76378b6e-199e-40a8-8042-12fe586291fb - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 67a6a904-0a2f-4872-aea6-b42b049a76cb - Mass - 100.0 - - - - - - - 6.0 - 75.06970207 - 8f1805fd - part_8f1805fd-3fd6-446b-8c46-7cc566012579 - 8f1805fd-3fd6-446b-8c46-7cc566012579 - - - 27.98964028 - - MI_Restricted_Substances - b067ed19-a836-41f7-9267-d9b04647d09f - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 5150, oil quenched & tempered at 650°C - 09c973c8-c5de-4ff3-9839-56d08d67fe11 - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 2a7dbbbc-7c8c-47b9-bcd7-769e57644485 - Mass - 100.0 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 60adf4f5-af28-4293-9f07-3c079c8c949d - Length - 37.3779989 - - - - - 14.40207194 - - MI_Restricted_Substances - b82c121d-fcc2-41fa-b7ac-6cddb03c3e4f - - Oil quenched & tempered at 650°C - Carbon steel, AISI 1040, oil quenched & tempered at 650°C - fa156b69-3f5e-48ca-871b-cd8924b9d3c3 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - 1970e7cb-2498-4daa-8eee-92c76dbb076c - MassRemoved - 23.76383744 - - - - - 14.40207194 - - MI_Restricted_Substances - 1d0ad45b-4da7-4c47-9850-754d0f67c02a - - Glass/polyimide honeycomb, ±45° fabric (0.096) - Glass/polyimide honeycomb, ±45° fabric (0.096), W Direction - 7804a639-9401-412f-a1a6-1a80d1ad60aa - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - df4fecc3-1710-423a-9ae0-d3b35be07f09 - Length - 20.41770346 - - - - - 14.40207194 - - MI_Restricted_Substances - 2656c71b-a4ea-4fc6-9139-adc0deae35b1 - - 65wt% glass, biaxial lay-up - Polyester/E-glass fiber, woven fabric, 65wt% glass, biaxial lay-up - 3bd1703e-538f-42db-9a5b-37106e562ff0 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - bc321ce8-99ce-4611-a562-ffb1d707261a - Mass - 100.0 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - e2368259-146c-46ed-8ec4-30e67366455a - Mass - 100.0 - - - - - 14.40207194 - - MI_Restricted_Substances - 1d55049a-3c25-4c8c-9125-70fd014c2a1e - - Normalized - Low alloy steel, AISI 8735, normalized - 7766937f-e107-46aa-a175-3a959b856fc9 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - ae7d75b2-8a65-41ba-8937-dfe5fc9976d3 - Mass - 100.0 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 695d82cd-d142-44b8-9b44-5ec0e5b63ffa - Mass - 100.0 - - - - - 14.40207194 - - MI_Restricted_Substances - 4ad00a9e-92b5-4e28-92a0-409da4495c54 - - Oil quenched & tempered at 205°C - Carbon steel, AISI 1060, oil quenched & tempered at 205°C - ad706008-b329-4fcf-9abf-b2b6deb1535d - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - 977d0b15-5816-4f50-ab12-00bd7e388304 - Mass - 100.0 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 7713104b-4aef-41fd-9f56-d732708449cc - Mass - 100.0 - - - - - - - 5.0 - 10.3096134 - 753acfd6 - part_753acfd6-dc51-4f91-bfa1-38b28336fee8 - 753acfd6-dc51-4f91-bfa1-38b28336fee8 - - - 0.67350398 - - MI_Restricted_Substances - 3cad12a9-0765-402c-a6b1-0be665ecd2e6 - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 4140, oil quenched & tempered at 540°C - e2dfc2fe-532f-4a00-8ff4-6bda6706bfa6 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - af0ae7dd-aee5-4e61-a22f-88ebf0501060 - Mass - 100.0 - - - - - 24.831624 - - MI_Restricted_Substances - 22fec326-b233-4c44-9751-288ad3ccc86c - - Glass/phenolic honeycomb, 0°/90° fabric (0.088) - Glass/phenolic honeycomb, 0°/90° fabric (0.088), L Direction - a683a8ec-a087-4b43-ad85-858f23368bac - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - 9b3f5d71-e1e9-4043-b65b-27d43377df91 - Mass - 100.0 - - - - - 24.831624 - - MI_Restricted_Substances - f8d1136f-3c1a-41e2-8b78-cf5f3965cba2 - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 6150, oil quenched & tempered at 205°C - ed6d5273-fd70-4a69-8437-df4b48b9acb9 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - d98068d6-2777-436f-a3c2-18a9b6232b62 - Mass - 100.0 - - - - - 24.831624 - - MI_Restricted_Substances - ce68d49d-fe57-4723-8f98-557cd3558504 - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 5130, oil quenched & tempered at 205°C - 6a0e39ba-62bb-42b2-8e4d-91b78cb6f061 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - 3dec1b14-9f9d-402f-aa14-373b6c555013 - MassRemoved - 50.49542489 - - - - - 24.831624 - - MI_Restricted_Substances - 5303364c-b06b-40d9-bca9-e0e2cd1d682c - - Normalized - Low alloy steel, AISI 8740, normalized - 336e441c-b20d-4baa-84ca-632e34116c09 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 1ca9c90f-01cb-4a4c-83c2-7fb303f09af7 - Mass - 12.18193625 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - ce16085e-fd9a-4f4d-9613-3250d6096d15 - Mass - 100.0 - - - - - - - 5.0 - 31.83386467 - - MI_Restricted_Substances - a0987114-e9d2-4390-9d0f-e47283d2f4d0 - - 65a6a323 - part_65a6a323-21c5-4cff-aa6d-87714e747f34 - 65a6a323-21c5-4cff-aa6d-87714e747f34 - - - 8.0 - 94.49364277 - 2760b4b9 - part_2760b4b9-8183-455c-9700-3367063c3001 - 2760b4b9-8183-455c-9700-3367063c3001 - - - 86.93995372 - - MI_Restricted_Substances - f7a5d844-1935-486f-adbe-99917b26b44b - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 4340, oil quenched & tempered at 315°C - 4b0c9723-8966-4e2d-b648-eece2a96b763 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - eb8f7ee6-58ee-4336-88f9-7e23d74d556a - Mass - 100.0 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - b563c586-2c48-49d3-8273-093d240d9c80 - Mass - 100.0 - - - - - 1.63250578 - - MI_Restricted_Substances - ee5b018e-8d7f-4fb1-bad0-c73e871592bc - - 16Mo3, normalized - Low alloy steel, 16Mo3, normalized - 44333aa5-f26c-4408-85a3-b6b4a34488de - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - 3f8f3b8d-4b81-4a61-b7f4-cdc435f53801 - Mass - 100.0 - - - - - 1.63250578 - - MI_Restricted_Substances - 8f779b79-a040-48d7-ac26-b9a1edf50ad2 - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 8640, oil quenched & tempered at 650°C - f2cb69f2-0efa-448f-b175-522f45304d2c - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 7d437191-a633-4670-820a-48bae896e2d7 - Mass - 100.0 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 1c8c6369-4064-47e4-8c90-783c0ba053f8 - Mass - 100.0 - - - - - 1.63250578 - - MI_Restricted_Substances - 753c75df-7593-4169-a2e8-9f4c173887ff - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 50B46, oil quenched & tempered at 315°C - 023d3736-3ffc-4020-bebc-dd40856a62d1 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 5f8f5467-95fc-45a1-8f51-8ae537a2c36d - Mass - 100.0 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - c59f2d8d-13ad-45b6-b3a6-02385880f46b - Mass - 100.0 - - - - - 1.63250578 - - MI_Restricted_Substances - 9c1918f9-aa9f-4078-93df-23539c8df8a8 - - Soda-lime - 0091 - Soda-lime - 0091 - 919838b1-8a20-4911-af04-c26dc5afa25d - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - 023b8dd5-5c8e-40bb-ad2d-e608e25ecf13 - Mass - 100.0 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 75ace459-2773-4a33-845c-ee99ce3895c8 - Length - 19.43183276 - - - - - 1.63250578 - - MI_Restricted_Substances - 5d611e30-0b00-4036-a656-f5fdc5bd2a52 - - Glass ceramic - slipcast - Glass ceramic - slipcast - d453edbd-aa0c-4920-a12f-95036ef7681e - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 5f088df8-c4ca-4fd0-88e8-a3cb1205c251 - Length - 30.62488754 - - - - - 1.63250578 - - MI_Restricted_Substances - 2b606408-37c3-4801-a307-dda7384ff7cc - - Glass/phenolic honeycomb, 0°/90° fabric (0.072) - Glass/phenolic honeycomb, 0°/90° fabric (0.072), W Direction - fc9ab45a-15b8-41e8-b533-f6e9218ee2d1 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 50b45eba-cc6e-41d7-ab9d-c1f47d6ec832 - Length - 69.83652392 - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - 2254e39a-2db3-40b2-920c-2fa067c7596b - Mass - 100.0 - - - - - 1.63250578 - - MI_Restricted_Substances - 1345051c-8b29-468f-a10d-37712b50f19a - - Borosilicate - 9741 - Borosilicate - 9741 - 9d243586-11e4-400e-8397-9dfe3923cf14 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - 0c005414-105b-4564-91d9-f6c9f6ef1bee - Mass - 100.0 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 57ff55eb-62d2-4127-b306-401303abac76 - Mass - 100.0 - - - - - 1.63250578 - - MI_Restricted_Substances - 5d611e30-0b00-4036-a656-f5fdc5bd2a52 - - Glass ceramic - slipcast - Glass ceramic - slipcast - 04f7ece0-0796-4c04-85e9-c03cea57ab73 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 4303cb87-26e2-4493-8464-9b1fe77488c6 - Mass - 100.0 - - - - - - - 9.0 - 23.4167242 - 727a37db - part_727a37db-5802-42b7-aff1-af1338dc0857 - 727a37db-5802-42b7-aff1-af1338dc0857 - - - 100.0 - - MI_Restricted_Substances - 7468aa92-eb02-4838-8030-fdd8673f2710 - - Oil quenched & tempered at 650°C - Carbon steel, AISI 1137, oil quenched & tempered at 650°C - 07e14de9-dcb2-478c-afe9-7cb05feba43c - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - 4fe0db44-8ceb-465e-86e2-e83403bcf8c3 - MassRemoved - 13.81023079 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - b3ed2f02-3c2e-4f0f-b2e6-8858eb8f4a71 - Mass - 100.0 - - - - - - - 6.0 - 56.33965244 - 02290f60 - part_02290f60-7fec-49de-a8db-3b8b9f5cf1ef - 02290f60-7fec-49de-a8db-3b8b9f5cf1ef - - - 45.48582068 - - MI_Restricted_Substances - c19a6c59-b937-499d-ac22-fe742ae42287 - - As rolled - Carbon steel, AISI 1117, as rolled - 82ea51af-a3c8-446e-89f0-c514db3c3f55 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - de6608fe-6ca8-49c1-b62f-17e8567b86c0 - Area - 65.49423838 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - 01df642e-3603-4ee3-8bd1-db3793559d46 - Area - 86.31793022 - - - - - 9.08569655 - - MI_Restricted_Substances - 0c172430-369d-48ad-910e-69fe1451a36e - - Normalized - Carbon steel, AISI 1095, normalized - 21c73577-2514-48da-8442-c4256d44afbc - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - 2a04e721-bba3-4dea-961c-c11a93d95acd - Mass - 100.0 - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - 2728a71c-5a18-4c08-a639-4246e0a84aba - Area - 67.07665131 - - - - - 9.08569655 - - MI_Restricted_Substances - 2c2dc98a-ef9d-420d-aa00-25552c8f8bab - - S355J - Structural steel, S355J - 22c4c7c0-6f03-458c-81bd-2083c00a0610 - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - 5e93ffd1-e73e-4fc9-bbd1-813b5f0fc345 - Area - 50.01027619 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 6253fbd0-d1ed-4054-91b2-a35ca93c5e1a - Mass - 79.46226302 - - - - - 9.08569655 - - MI_Restricted_Substances - e721d8b7-256a-4b7b-af09-6b40d8309979 - - water quenched & tempered at 425°C - Carbon steel, AISI 1040, water quenched & tempered at 425°C - 4a8a7f46-5f7d-4c70-b10b-7b4ecb313ec1 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - 9595c1ba-d1bd-4ba0-8515-4aee43bcfb02 - Mass - 100.0 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - 19317cad-3c28-4ba7-9f2e-efd8088d560f - Length - 77.44591365 - - - - - 9.08569655 - - MI_Restricted_Substances - 2cfe1f1b-d831-4f62-acc6-672a44ba9bff - - Silica (fused) - Silica (fused) - 9e31ed64-a69b-4545-91ef-d8e243393777 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - a769d123-75f2-4ff7-bbe7-e386cc2a55f5 - Length - 32.9438076 - - - - - 9.08569655 - - MI_Restricted_Substances - ac443865-33d5-466d-89e2-c3f26e668369 - - Borosilicate - 3320 - Borosilicate - 3320 - 43a53775-5555-48fa-ba6c-e2cbcd629736 - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - 5fc73ba6-1428-4907-b22f-ea5c30f994bd - Mass - 100.0 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - b43eb407-aadd-4762-9fe7-8fdfd3a2505a - Mass - 1.75868868 - - - - - 9.08569655 - - MI_Restricted_Substances - d02817f7-7500-4fcb-8c34-40927da681a5 - - Quenched & tempered - Carbon steel, SA216 (Type WCC), cast, quenched & tempered - b9baa811-cc92-42ce-a230-da12ef580185 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 10d0cd5c-c61e-40a6-b7bc-d27ff514e973 - Mass - 100.0 - - - - - - - 9.0 - 30.28614843 - - MI_Restricted_Substances - 8d808e11-061a-47b9-9f0f-83290dd83a3f - - 9319811e - part_9319811e-87ba-4711-a931-61c2e90125f8 - 9319811e-87ba-4711-a931-61c2e90125f8 - - - 1.0 - 2.1470312 - ee0f57be - part_ee0f57be-f5a6-492d-a77a-53a9b3ef1876 - ee0f57be-f5a6-492d-a77a-53a9b3ef1876 - - - 25.57679616 - - MI_Restricted_Substances - b3c74dfc-9d72-4938-89cb-1a49ce0fdb80 - - Normalized - Carbon steel, AISI 1137, normalized - dde4e29f-f4be-42a5-b2c6-6f26e13a27b2 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 3b6a3762-0a63-4a5a-936f-d3a56d99b7ff - Mass - 100.0 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 59dd2f0e-c97e-4f91-86b0-c5c92c012a6a - Mass - 100.0 - - - - - 74.42320383 - - MI_Restricted_Substances - b17713f9-59e9-48f4-8bb3-27c72b0884b2 - - water quenched & tempered at 540°C - Carbon steel, AISI 1137, water quenched & tempered at 540°C - 6d25a69a-28c7-4838-83f7-695e221c91fd - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 56be02c9-8403-4ba1-aa7c-4485b3d84979 - Mass - 100.0 - - - - - - - 4.0 - 98.69655496 - 9554b085 - part_9554b085-4f0d-4fd8-8f0e-1d5909e3a9ee - 9554b085-4f0d-4fd8-8f0e-1d5909e3a9ee - - - 21.83166487 - - MI_Restricted_Substances - 04970b9b-7242-4f31-9a78-dee5e31ed341 - - As rolled - Carbon steel, AISI 1030, as rolled - 0f9c5716-bde8-4226-9278-7de69c6e3dab - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - b619b686-d734-4353-8871-2f4b05e99430 - Mass - 100.0 - - - - - 39.08416756 - - MI_Restricted_Substances - 5dbabc2e-4263-4458-abe1-31a2ece9e122 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 5160, oil quenched & tempered at 425°C - 065d0b45-fe12-459c-9970-5a4258e6ac61 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - 0a01f3f6-763c-47e8-8b72-b2cb8e7396e9 - Mass - 100.0 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 5676795c-d40c-4d41-98fe-9b61f18b91e8 - Mass - 80.44398076 - - - - - 39.08416756 - - MI_Restricted_Substances - 5169a157-0d18-4d45-b197-799e06aa00bc - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 9255, oil quenched & tempered at 315°C - a643f14c-e497-4667-912a-71cc5729d714 - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - 6510b67c-35e3-4355-9fa6-dcf9494bb9b1 - Mass - 100.0 - - - - - - - 8.0 - 53.01033489 - - MI_Restricted_Substances - 0dedeb55-6f6f-42f9-b703-5225f1cab2fb - - 3ed0a4d7 - part_3ed0a4d7-9196-4cf2-b960-6425844f853f - 3ed0a4d7-9196-4cf2-b960-6425844f853f - - - 1.0 - 73.75903715 - 301f7b0e - part_301f7b0e-dcc1-4414-a23c-42e6856223af - 301f7b0e-dcc1-4414-a23c-42e6856223af - - - 7.27845011 - - MI_Restricted_Substances - 546a4247-5e3b-4adb-bc7e-3fc87f992447 - - Glass/phenolic honeycomb, 0°/90° fabric (0.055) - Glass/phenolic honeycomb, 0°/90° fabric (0.055), W Direction - 3157cd4e-49f4-40af-a349-3a9bc64e52f0 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - f7b0c970-b280-4bf5-8913-c794c228b468 - Length - 4.87922271 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 194e2592-b023-4d9f-94f2-929f1a2fad18 - Mass - 100.0 - - - - - 46.36077494 - - MI_Restricted_Substances - 535f6e21-a16f-4d54-8413-97634da82122 - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 8650, oil quenched & tempered at 205°C - df931ea7-79c2-4a95-80c2-5d594e6d441f - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - 7da753ff-132b-4d27-b3c4-b619ac47c427 - Mass - 100.0 - - - - - 46.36077494 - - MI_Restricted_Substances - 6505c582-906c-4706-a572-efb422916885 - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 4037, oil quenched & tempered at 650°C - 056cb572-28fa-43a9-898b-ff35e53d41c9 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 2088b41e-79c5-4d6b-988a-d8095482c4b1 - Mass - 100.0 - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - 29bb7831-5820-41e0-b925-cc6c9f6efbbe - Mass - 100.0 - - - - - - - 9.0 - 21.36766087 - - MI_Restricted_Substances - d89d67b6-c08f-47cb-b03a-4203cebfdf32 - - c489932b - part_c489932b-a409-4051-9252-48e4425937a6 - c489932b-a409-4051-9252-48e4425937a6 - - - 7.0 - 3.24522191 - 08c9570d - part_08c9570d-8c4e-4846-9efb-2182a4470c17 - 08c9570d-8c4e-4846-9efb-2182a4470c17 - - - 12.41899724 - - MI_Restricted_Substances - 75a1c963-399c-444d-a38f-1929c00d15b7 - - Normalized - Low alloy steel, AISI 4150, normalized - 3adc0016-9664-4e08-bdbf-ea8810efda3e - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - 1764a56c-aae3-4f59-8157-2971fc63fbb5 - Length - 92.12271016 - - - - - 10.94762534 - - MI_Restricted_Substances - c2db0402-57c5-422f-b8c1-470fc9c6a9c8 - - Glass/phenolic honeycomb, 0°/90° fabric (0.112) - Glass/phenolic honeycomb, 0°/90° fabric (0.112), W Direction - 54560eb0-0565-4833-b83c-6d90c0411637 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - 67454c48-015a-40b8-8bef-b833defc2871 - MassRemoved - 60.78682544 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - f23047ce-7be6-49b6-bf91-05b843e0bc48 - Length - 36.9572668 - - - - - 10.94762534 - - MI_Restricted_Substances - ed1b937b-1738-408f-9591-bd3e40cc5e33 - - Quenched & tempered - Low alloy steel, D6AC, quenched & tempered - 3b5a6b78-5fa2-42f4-97a0-0238b84dd118 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 62cebf70-e386-499a-88cf-2bad6945a0d5 - Mass - 100.0 - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - b453695b-b216-4d5c-bfb3-52b1fda5077c - Mass - 100.0 - - - - - 10.94762534 - - MI_Restricted_Substances - 1d9c8629-4a1d-4aaf-bb7c-ba7a97eef5f5 - - Normalized - Carbon steel, AISI 1340, normalized - b237902f-f130-4d97-a358-5f75db3fd7bd - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - d7307d47-47d5-4e58-824b-fdd7aab0e26b - Mass - 100.0 - - - - - 10.94762534 - - MI_Restricted_Substances - 67cc68ee-c8ab-40bd-bf62-4babd642a1fd - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 81B45, oil quenched & tempered at 425°C - aa20df4a-a828-4f26-9da3-b048036c5caf - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - 3b56c56e-2cab-4cb0-ac71-3128598ec5d6 - Mass - 88.48667651 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 7261bef5-9a8e-49cb-9b8e-30ab1515aab8 - Mass - 100.0 - - - - - 10.94762534 - - MI_Restricted_Substances - dfe65b4e-afb8-4397-a303-1266359ccfda - - Quenched & tempered - Low alloy steel, Hy-Tuf, quenched & tempered - b95a75bb-0c0a-43b0-9f59-8443690290f3 - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - ee5a3fce-52cb-4165-9135-20bf1035748c - Area - 4.29945183 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - 34b36de7-62cf-4963-b711-e2a6eb04cd0e - Length - 50.60689833 - - - - - 10.94762534 - - MI_Restricted_Substances - 87e1a3cd-fd79-4013-b5f8-56d6f28bef34 - - Oil quenched & tempered at 540°C - Carbon steel, AISI 1144, oil quenched & tempered at 540°C - aa099eec-229f-4cf2-a849-3f01ada8241a - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 6b15a5cd-a1de-41bd-8fa3-e307e857c1c9 - Mass - 100.0 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - e047ad62-a283-49bd-b6ce-f4bff5177bc2 - Length - 12.75651255 - - - - - 10.94762534 - - MI_Restricted_Substances - 508489f2-cc48-4f0a-a6ee-482bb89a0386 - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 5160, oil quenched & tempered at 205°C - 17511d11-f82e-4ad3-b3c4-99be4f16b7ee - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 5a39fdd0-7032-47f4-a96f-de0cc060177e - Mass - 100.0 - - - - - 10.94762534 - - MI_Restricted_Substances - 8db72069-1e87-4b0f-84bc-cddf9ad19b4b - - water quenched & tempered at 540°C - Carbon steel, AISI 1050, water quenched & tempered at 540°C - f8e918cc-1bab-4412-8b06-656d510582f3 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 9b3a3c87-2cd8-47d2-955a-6d4dcc4b5f2e - Mass - 100.0 - - - - - - - 4.0 - 23.41580783 - 19177595 - part_19177595-0720-4efe-a6b1-7a6c88a6cfd4 - 19177595-0720-4efe-a6b1-7a6c88a6cfd4 - - - 89.14250651 - - MI_Restricted_Substances - fc29cc59-a670-4ad6-85a0-eb07bf011f1a - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 6150, oil quenched & tempered at 425°C - d26c6998-802f-4b07-ba68-b3df6cd5c10c - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 59a6b857-29fa-45b8-832a-2a6b0c49369d - Area - 48.24637111 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 64e0b548-fd4d-4c60-960d-1bdccf33204d - Mass - 100.0 - - - - - 3.61916449 - - MI_Restricted_Substances - 99d1c1c6-eca3-40ed-a479-6dec902f52da - - YS400, cold rolled - TRIP steel, YS400, cold rolled - 0c276c46-13c1-4b9f-ba3c-28896fcdc00e - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 4b0bdd1c-8d70-4292-9c4c-c5b183fe65ac - Mass - 100.0 - - - - - 3.61916449 - - MI_Restricted_Substances - 2b606408-37c3-4801-a307-dda7384ff7cc - - Glass/phenolic honeycomb, 0°/90° fabric (0.072) - Glass/phenolic honeycomb, 0°/90° fabric (0.072), W Direction - 32217508-170e-4abd-82dc-8453a57ce9cc - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 309576da-8c52-4532-b892-294b9d96bbb1 - Mass - 100.0 - - - - - 3.61916449 - - MI_Restricted_Substances - 5b117a10-9c48-4dd0-a869-6eb490031da5 - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 8640, oil quenched & tempered at 315°C - 211278c8-5738-4088-a2ab-3110ba29f0a1 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - bbf8f2a5-4707-434d-906c-2b96b155561c - Mass - 100.0 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - d92145c6-3b71-4f80-aaa0-2da5ea2c3529 - Mass - 100.0 - - - - - - - 8.0 - 70.69363895 - - MI_Restricted_Substances - 2c677abc-5da2-4b21-9ce7-1d4e1cc0fb1c - - 7be3482d - part_7be3482d-71f1-4c23-a257-b65c80c953b5 - 7be3482d-71f1-4c23-a257-b65c80c953b5 - - - 9.0 - 13.07026916 - - MI_Restricted_Substances - b49e47be-bf96-4bf1-9366-5c1b840267d4 - - 6126ed15 - part_6126ed15-1e6c-45e9-9de8-21bf8fa238f1 - 6126ed15-1e6c-45e9-9de8-21bf8fa238f1 - - - 1.0 - 38.22489 - 07cea42e - part_07cea42e-7a03-47e3-8a83-75d43afc0b1c - 07cea42e-7a03-47e3-8a83-75d43afc0b1c - - - 15.62160431 - - MI_Restricted_Substances - a6078356-e79c-4ddd-86ef-a3f01680dd35 - - As rolled - Carbon steel, AISI 1020, as rolled - 9c130994-2b19-4444-bb66-d6a078de87a6 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 945e032d-a8c5-4020-b29a-26f31023a3fd - Mass - 100.0 - - - - - 12.05405652 - - MI_Restricted_Substances - 9124b244-f2f8-44df-b2cf-b05d3406eb9e - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 4042, oil quenched & tempered at 315°C - 6f645f4e-aeb2-493b-a0bd-0f0193d02160 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - 46cb2c29-e3be-4a31-babd-ab7d4c9b0730 - Length - 31.96361303 - - - - - 12.05405652 - - MI_Restricted_Substances - 9c05e644-9257-4778-9c68-be0cff6f58b5 - - Annealed - Low alloy steel, AISI 8620, annealed - 330d4475-b152-4293-9395-d6dc67b6a3db - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 3c21e613-08d7-4dec-84d7-51274ba6f236 - Area - 52.58193502 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - cb618223-8436-4637-8fe0-999bb920c62d - Length - 54.14458846 - - - - - 12.05405652 - - MI_Restricted_Substances - 78055acc-4fc2-46ae-bba8-f28bda85357e - - Annealed - Carbon steel, AISI 1060, annealed - 6aa1cddb-6418-4d38-be7a-61ebed04f993 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 90abe56e-8173-4ec6-9926-97b81934ed90 - Mass - 52.72710009 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - fd69c437-4c7a-4904-9c40-b37ad6996418 - Length - 0.84681157 - - - - - 12.05405652 - - MI_Restricted_Substances - cec978ca-2cf6-489b-a21f-c424c7d49a61 - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 4042, oil quenched & tempered at 540°C - 2cdb3acd-5890-47f2-ac24-51f198b2a0c5 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 551b2060-7f85-47e2-82e4-99ddf3ebb25a - Mass - 100.0 - - - - - 12.05405652 - - MI_Restricted_Substances - 8643d806-94c5-42f9-9ffc-4c21a6e16bd0 - - Annealed - Carbon steel, AISI 1141, annealed - 93db24a2-5c53-4e87-b40b-a91744f8e56a - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - ee620648-3497-4047-9e95-5a53c37f0db8 - Mass - 100.0 - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - ef500286-8392-48ec-9d44-f6e7a8cac39f - Mass - 100.0 - - - - - 12.05405652 - - MI_Restricted_Substances - b076430e-dc1c-4448-86c9-bb8d0b8da741 - - Annealed - Low alloy steel, AISI 4620, annealed - 31314268-e853-4e65-a945-c067ed09df61 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 3626f437-79b1-45f5-b330-2f4a8b9ac615 - Area - 35.59254558 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 41200b68-01de-450c-b044-0134f41415eb - Mass - 100.0 - - - - - 12.05405652 - - MI_Restricted_Substances - 18384726-ca55-4d5f-880a-5a2b8776be3a - - Normalized - Carbon steel, AISI 1022, normalized - d349f636-70d5-4184-a03e-13cad9e80de4 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - ce8185ba-fc9f-48ae-8663-c8202c8cc8ec - Length - 37.24466778 - - - - - - - 5.0 - 21.27724104 - 8c3f38f0 - part_8c3f38f0-6e0b-4aca-b254-4132233af614 - 8c3f38f0-6e0b-4aca-b254-4132233af614 - - - 32.91436877 - - MI_Restricted_Substances - 28d51559-b49b-4a2b-9f09-9a198db03164 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 4340, oil quenched & tempered at 425°C - 34176637-a7e1-440f-be4f-2972da9bb57a - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - c06ac6d4-00cf-4a25-a01b-730c32a82a55 - Mass - 100.0 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - 59f03655-f8fa-427f-9454-81bd9c0e5420 - MassRemoved - 96.73664462 - - - - - 13.41712624 - - MI_Restricted_Substances - dcba95c6-8741-4b93-bb8b-f433a9c39a78 - - 45wt% glass, biaxial lay-up - Polyester/E-glass fiber, woven fabric, 45wt% glass, biaxial lay-up - eca1ba7c-8432-4282-adeb-82fa79e7fd4d - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - be94a6ab-6d58-484f-8898-e1acaf00e506 - Mass - 100.0 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - f34fa341-34b1-4877-b30e-48c14af24bf6 - Area - 61.96187011 - - - - - 13.41712624 - - MI_Restricted_Substances - 6d6a3603-a2a8-4db9-9e7e-ad4fc4f9c724 - - Glass/phenolic honeycomb, ±45° fabric (0.064) - Glass/phenolic honeycomb, ±45° fabric (0.064), W Direction - c9a0792f-5002-423d-a659-e9712ffd763d - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - 364cf3fb-aeb3-49e5-a9c1-d805299db30c - Mass - 100.0 - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - f19ea066-91cd-460d-842a-f32d39a67aea - Area - 21.55190269 - - - - - 13.41712624 - - MI_Restricted_Substances - 3fd6cebb-a683-45be-b014-7c3fb617c3e7 - - Glass/polyimide honeycomb, ±45° fabric (0.064) - Glass/polyimide honeycomb, ±45° fabric (0.064), L Direction - 7a2ba64c-04cc-49e9-bc59-7d536d6f9e28 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - bc944cda-7533-407b-b00d-569eb379a60a - Mass - 100.0 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 6b48f74b-ecf8-4d5f-8092-2d4349c269fd - Mass - 100.0 - - - - - 13.41712624 - - MI_Restricted_Substances - 829ba125-1962-4803-a2ea-acd4eb899642 - - Annealed - Carbon steel, AISI 1030, annealed - 3b8852b5-0a4b-4eb3-945c-02bd69abd718 - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - a1f35a33-91aa-41ff-99a8-4b171149ddaf - Mass - 100.0 - - - - - 13.41712624 - - MI_Restricted_Substances - 3a464919-b1b2-4ce0-88b2-824bc9a81e6b - - Borosilicate - 2405 - Borosilicate - 2405 - c85dd726-02f4-445c-a87a-cbfa7dab58ea - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - 91fa02b9-77b8-4cf5-84d5-8483e0ead798 - Mass - 100.0 - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - f756b894-c24d-4f04-90c7-ed5031cfab0e - Mass - 100.0 - - - - - - - 2.0 - 49.79843937 - - MI_Restricted_Substances - f5833937-26a5-4d36-aaae-722b03f04a3b - - 0fd51798 - part_0fd51798-b2a2-4efb-a0bf-6fa79eea315b - 0fd51798-b2a2-4efb-a0bf-6fa79eea315b - - - 1.0 - 67.43221346 - - MI_Restricted_Substances - 63c278b1-c877-40c9-b18c-e03bc07a1dd1 - - 722e564a - part_722e564a-777e-4f9c-8811-193145d86934 - 722e564a-777e-4f9c-8811-193145d86934 - - - 8.0 - 9.2552918 - 49942221 - part_49942221-0621-4af1-a2fc-0a4093a6d639 - 49942221-0621-4af1-a2fc-0a4093a6d639 - - - 50.88350295 - - MI_Restricted_Substances - b44fad5b-b59d-4153-addf-f70a7895947d - - Annealed - Low alloy steel, AISI 4130, annealed - a4ec8808-b585-496d-a5cc-d59c512f313e - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - 6c81acc0-5663-48a0-80fb-0c2d91b678ad - Length - 25.63330644 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - 11cd72a3-ed84-4616-ac4c-ebaed41492c9 - Length - 21.16212259 - - - - - 7.01664243 - - MI_Restricted_Substances - 8f779b79-a040-48d7-ac26-b9a1edf50ad2 - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 8640, oil quenched & tempered at 650°C - ff9a65cd-ebb1-451d-b40b-6b0647b7f578 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 6bbad37a-8852-47d4-abb8-cc6ffba27678 - Mass - 100.0 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - 8018ee5d-e0de-46af-ae92-55ebdfa74e2b - Mass - 100.0 - - - - - 7.01664243 - - MI_Restricted_Substances - a831e691-2a34-4edf-807f-dfd38c316ef0 - - Borosilicate - 7740 - Borosilicate - 7740 - 2a1d6322-a0ea-436c-9538-cceb38c18a83 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 04a0a0dd-d457-4389-920e-b89aff73af52 - Mass - 100.0 - - - - - 7.01664243 - - MI_Restricted_Substances - 38da30dc-d742-49da-bc7e-998b66397040 - - Oil quenched & tempered at 425°C - Carbon steel, AISI 1144, oil quenched & tempered at 425°C - e5309be8-4142-4935-8a91-72fa921fdf2d - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - efbe77cf-4e96-4bb9-ac92-59e4e213384d - Length - 4.83907233 - - - - - 7.01664243 - - MI_Restricted_Substances - ee5b018e-8d7f-4fb1-bad0-c73e871592bc - - 16Mo3, normalized - Low alloy steel, 16Mo3, normalized - d4294b82-7ffe-47d3-b655-dc8b66bc7020 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - a1b45db5-85b0-4f26-9b01-2968d3776b26 - Length - 4.03067167 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - 477ee7d7-60b9-4ac0-8262-9e93cd7c26d3 - Mass - 100.0 - - - - - 7.01664243 - - MI_Restricted_Substances - 9cae15c6-b5b6-4ab9-9008-d962bee0e662 - - Glass/phenolic honeycomb, 0°/90° fabric (0.128) - Glass/phenolic honeycomb, 0°/90° fabric (0.128), L Direction - 3d11b8af-1fd4-4675-8258-5b3b35f3c032 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 3bfd5fb1-23db-422d-90b3-f1e1a7c8a39a - Area - 5.03000654 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - cbc4230b-cee3-48f8-8712-f8df2c6ba37d - Mass - 100.0 - - - - - 7.01664243 - - MI_Restricted_Substances - 33160988-8422-40e2-93d1-e3e7467eafe9 - - Normalized - Carbon steel, AISI 1030, normalized - 6c76498c-79e8-4812-9fd1-af346f992f7e - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - 359a2740-1b43-4fd0-8d89-4cd4b18d63f0 - Mass - 100.0 - - - - - 7.01664243 - - MI_Restricted_Substances - 72799627-a7c0-4df4-8250-e2be8538565f - - Glass ceramic (N11) - Glass ceramic (N11) - 96182ae5-ac0c-49fa-91bf-c58715109f6f - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - 096e3ee6-8be5-4a27-9e82-195bcd236082 - Mass - 100.0 - - - - - - - 7.0 - 57.22853055 - 0a2f97d7 - part_0a2f97d7-dc23-4588-90f2-3a7dad859ea6 - 0a2f97d7-dc23-4588-90f2-3a7dad859ea6 - - - 49.67143766 - - MI_Restricted_Substances - 75a1c963-399c-444d-a38f-1929c00d15b7 - - Normalized - Low alloy steel, AISI 4150, normalized - 9729d0c1-9bae-49be-b5d5-bad7b0e57c20 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - 3b462f60-aa3a-44b3-91a0-b9584d987069 - Area - 15.34828395 - - - - - 25.16428116 - - MI_Restricted_Substances - d2b08d58-fc58-402d-98a4-6ee646a8fff5 - - Potash soda lead glass - 0010 - Potash soda lead glass - 0010 - 42fe1c07-bf61-43fe-b200-091c0a99d3eb - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 9a3fb36d-fb3b-4899-a6c6-a492e6344ada - Area - 53.44211498 - - - - - 25.16428116 - - MI_Restricted_Substances - 3fd6cebb-a683-45be-b014-7c3fb617c3e7 - - Glass/polyimide honeycomb, ±45° fabric (0.064) - Glass/polyimide honeycomb, ±45° fabric (0.064), L Direction - f31b86d3-3d73-45d7-b335-dc80c6fe3797 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 390fa0ad-01b8-4920-8c1b-cb3b44fc86e3 - Mass - 100.0 - - - - - - - 1.0 - 31.80084909 - 6982cff1 - part_6982cff1-1540-4179-9bfb-6085885c7e80 - 6982cff1-1540-4179-9bfb-6085885c7e80 - - - 42.98512658 - - MI_Restricted_Substances - 3fd6cebb-a683-45be-b014-7c3fb617c3e7 - - Glass/polyimide honeycomb, ±45° fabric (0.064) - Glass/polyimide honeycomb, ±45° fabric (0.064), L Direction - 2f198640-ec20-443e-bce0-aa2480ebc5fa - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - a95b81e7-3165-4c66-b27c-79f80b8a77c1 - Mass - 100.0 - - - - - 28.5074367 - - MI_Restricted_Substances - 405361fd-5b54-4a33-b835-7eb9eee13310 - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 4042, oil quenched & tempered at 205°C - be2142f9-d6ab-490f-97dc-a6a35fae95f0 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - effd4e9c-9b82-4183-b83a-1c7b6373a274 - Mass - 100.0 - - - - - 28.5074367 - - MI_Restricted_Substances - e678781a-1b38-4709-816b-9db609651db6 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 50B60, oil quenched & tempered at 425°C - 9b463961-9e1d-49ac-a291-a22f41835348 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - f9a42968-f583-4ea2-8f08-7abb2b3d7c69 - Area - 15.60010007 - - - - - - - 5.0 - 5.37996604 - c59f3dd3 - part_c59f3dd3-5757-4896-be0f-fe4a52ac813f - c59f3dd3-5757-4896-be0f-fe4a52ac813f - - - 1.00718205 - - MI_Restricted_Substances - ed1b937b-1738-408f-9591-bd3e40cc5e33 - - Quenched & tempered - Low alloy steel, D6AC, quenched & tempered - 52cf4b83-73d4-4df3-8a79-30543a4005bd - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - 85be6d38-4183-4573-a6fe-b2d0883d1e7e - MassRemoved - 42.00388516 - - - - - 49.49640897 - - MI_Restricted_Substances - 99d1c1c6-eca3-40ed-a479-6dec902f52da - - YS400, cold rolled - TRIP steel, YS400, cold rolled - 6795f40a-00cf-4910-81e0-e6bfd760da45 - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - 0c6e3617-bc3c-4f77-9b0b-ce00180df965 - Mass - 52.91374775 - - - - - 49.49640897 - - MI_Restricted_Substances - cc556116-e08b-4aa7-a2f1-af5315cb6a49 - - Annealed - Low alloy steel, AISI 8740, annealed - d2c298de-fc99-4858-a8d0-3ff585bfbee9 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - afb02586-6603-4e8b-9df6-62bdbcfc9562 - Area - 51.58789155 - - - - - - - 9.0 - 29.53131195 - fe91d311 - part_fe91d311-524b-4814-93bc-0e03eec4d4ea - fe91d311-524b-4814-93bc-0e03eec4d4ea - - - 100.0 - - MI_Restricted_Substances - ee08f647-79af-49f3-98c5-043480a0fed4 - - Quenched & tempered - Low alloy steel, 4330V, quenched & tempered - b1170aef-0d45-4706-bf6e-58a6290598f8 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - bc36cb23-5d3d-4152-91e8-94d719fef358 - Mass - 100.0 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 72eb8ad1-7f1d-4ec2-a7f8-c2f2fb390bb5 - Length - 32.9931696 - - - - - - - 4.0 - 81.23109661 - e0e5af0a - part_e0e5af0a-e0c5-4e59-af5b-fb8261eaf757 - e0e5af0a-e0c5-4e59-af5b-fb8261eaf757 - - - 99.8769877 - - MI_Restricted_Substances - 6ad310ec-db2b-43b1-afa1-9b6ddae5880c - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 94B30, oil quenched & tempered at 425°C - 5603f0cd-721c-4d66-97e3-0fae5da13c6e - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - 53e81066-b63d-4911-8057-e3c49aaa7138 - Area - 20.67503361 - - - - - 0.01537653 - - MI_Restricted_Substances - b00ee3d8-d653-4c76-8154-c2f07820ceda - - As rolled - Carbon steel, AISI 1080, as rolled - 9cc836ff-8d2f-41dd-82b9-747946f2675f - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - e2ed0c08-5f2f-48f6-ab7e-e6e6b91f51f5 - Mass - 100.0 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 47ff2e6f-c4fc-481b-ac7a-88e391b3d956 - Length - 20.45801422 - - - - - 0.01537653 - - MI_Restricted_Substances - 00cd78de-6c78-46f3-81b3-ec03803fa034 - - Glass/phenolic honeycomb, ±45° fabric (0.048) - Glass/phenolic honeycomb, ±45° fabric (0.048), W Direction - a3e8d452-f55c-4b4f-afb4-78b5105fab0b - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 83448319-1f36-4f78-b6b2-ddccb968a8d6 - Mass - 100.0 - - - - - 0.01537653 - - MI_Restricted_Substances - 1345051c-8b29-468f-a10d-37712b50f19a - - Borosilicate - 9741 - Borosilicate - 9741 - 34ee0405-4c30-4272-aa74-8cd0006c7cdc - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - e1dad974-b607-47f0-897c-389bce8c3130 - Length - 32.53403102 - - - - - 0.01537653 - - MI_Restricted_Substances - f7146c54-87d0-4395-b57a-86bb0c43716a - - ASTM A106 Grade B - Structural steel, ASTM A106 Grade B - b1097059-ddc7-4042-9c37-ca46873934aa - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - a643177b-46b3-48e6-b617-520aa03a590a - Mass - 100.0 - - - - - 0.01537653 - - MI_Restricted_Substances - bac6ffd4-6d83-432c-90f4-de9606502589 - - Alkali barium glass - Alkali barium glass - 13adc0ad-d341-44b0-bd5a-0e4be59efd3c - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - f1502dd5-5b95-4b45-8d0b-deb5e9a4673d - Mass - 100.0 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - 84af3f8c-8dba-49b4-9c0d-fd2aebc545b2 - Length - 15.25770035 - - - - - 0.01537653 - - MI_Restricted_Substances - 92565d61-24fc-4880-9be5-0faeb9a8a3e8 - - Titanium silicate - Titanium silicate - 969b4e8d-aa09-45d8-b760-9a6d5f39bd17 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - cf49c522-0eee-46ad-b8fb-0bb1617f3b1f - MassRemoved - 71.95374391 - - - - - 0.01537653 - - MI_Restricted_Substances - 90b2285b-4295-429d-beb8-90d9f5df0101 - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 5046, oil quenched & tempered at 315°C - c55b3a48-af24-4adb-8756-73a57c037afd - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - 9de8fabe-f587-4fbf-af1a-0737dbf6e562 - Mass - 100.0 - - - - - 0.01537653 - - MI_Restricted_Substances - 50c388cf-bb91-442a-9b62-8d34f7822f13 - - Oil quenched & tempered at 540°C - Carbon steel, AISI 1040, oil quenched & tempered at 540°C - 85ea47d0-5bbe-4bfa-8dd5-351374048369 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 553326e4-d43e-4a2a-a8a7-e9a26f0a8dcf - Mass - 100.0 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - b5fbf9f0-b92e-477b-9ce7-aa33dddfaa3f - Mass - 28.59695885 - - - - - - - 1.0 - 97.07446372 - 437de059 - part_437de059-b008-4e7c-b520-10a8123000e1 - 437de059-b008-4e7c-b520-10a8123000e1 - - - 63.04823493 - - MI_Restricted_Substances - dce50f42-7360-4343-bf6c-8ed14aa0f092 - - 40% glass and mineral - PA66 (40% glass and mineral) - 701e5165-2c25-4cea-96ed-7750f5f41acc - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 6aa5c7f2-e8e6-41ab-9717-77236751e16f - Mass - 100.0 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - d509c5d2-e8e1-4640-9d90-8b15141ea57f - Mass - 100.0 - - - - - 18.47588253 - - MI_Restricted_Substances - 0c172430-369d-48ad-910e-69fe1451a36e - - Normalized - Carbon steel, AISI 1095, normalized - 1f7e073c-a7eb-49f3-adc0-0417aa2cfa5f - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - c33eccae-1ac4-4d8d-8b3d-a449ae0752dc - Mass - 100.0 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - d71fb4fe-b849-4560-a0e0-68b2e512cc69 - Mass - 100.0 - - - - - 18.47588253 - - MI_Restricted_Substances - 00cd78de-6c78-46f3-81b3-ec03803fa034 - - Glass/phenolic honeycomb, ±45° fabric (0.048) - Glass/phenolic honeycomb, ±45° fabric (0.048), W Direction - e56af113-d40b-42ac-a2df-f2472f70efee - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - ec8a21c1-8d76-4127-a2c3-83673ca72874 - Length - 19.65164175 - - - - - - - 7.0 - 27.13895478 - 04fa7bb4 - part_04fa7bb4-3a59-43c1-a203-6be1b2da9fcf - 04fa7bb4-3a59-43c1-a203-6be1b2da9fcf - - - 22.96900149 - - MI_Restricted_Substances - 7a62318a-eff2-4f36-9925-ee919c5b4369 - - S235J - Structural steel, S235J - b5b0bc54-ff16-4e30-aa8e-1174d01b0db9 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - f7e1d2c7-2fa3-4356-8737-63d41dea09cf - Mass - 100.0 - - - - - 25.6769995 - - MI_Restricted_Substances - 29b76cdc-672e-4a1f-8f6e-a5644857c880 - - Normalized - Low alloy steel, AISI 4135, normalized - 8b2a4aa2-e23e-4c9e-90b7-03a4272434ce - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - b7749878-bcea-4e27-92e1-43cbe27fa037 - Mass - 100.0 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 6006957c-f765-4ba5-bb70-31ffeab91dd8 - Mass - 100.0 - - - - - 25.6769995 - - MI_Restricted_Substances - 72799627-a7c0-4df4-8250-e2be8538565f - - Glass ceramic (N11) - Glass ceramic (N11) - cd3d696d-39e4-4ba2-beb9-220431560555 - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - b84b3ae8-bb31-4e8a-8081-ecf61c235074 - Mass - 100.0 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - 47bae213-7435-4793-96f0-733c137b25a9 - Mass - 100.0 - - - - - 25.6769995 - - MI_Restricted_Substances - aa85aa64-c83c-4dec-afe9-120ed38bfd6b - - Quenched & tempered - Intermediate alloy, Fe-5Cr-Mo-V aircraft steel, quenched & tempered - 82f871e0-b0dc-41a1-85fc-c757560e0d45 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - 443ee55b-1242-420a-b5ef-a1785070b80a - Mass - 100.0 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - df470091-0c62-4e4b-b5cc-ace6fc3bcedc - Mass - 100.0 - - - - - - - 1.0 - 37.72134577 - 5b8a41c6 - part_5b8a41c6-a8e6-44ab-bf66-c6f9793fa82e - 5b8a41c6-a8e6-44ab-bf66-c6f9793fa82e - - - 63.61318345 - - MI_Restricted_Substances - 829ba125-1962-4803-a2ea-acd4eb899642 - - Annealed - Carbon steel, AISI 1030, annealed - 16e80a3f-6e09-41a2-9cf5-4ba5eb4a7e14 - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - 55446e81-a459-4b89-84db-e9afdca8258d - Mass - 100.0 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - e13a47ea-20e1-427d-aa4d-c96d2f032ab5 - Length - 65.5405381 - - - - - 9.09670413 - - MI_Restricted_Substances - 3c7e2f5d-1c0d-4d81-8f90-3aa111fa97ee - - water quenched & tempered at 205°C - Carbon steel, AISI 1040, water quenched & tempered at 205°C - bf017666-33ee-4e9c-a7c7-c79809c76bd5 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - b7d09318-089b-4b93-acb0-da0f87626678 - Mass - 100.0 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 986f836b-cbcf-4eca-a03e-94505ea593da - Mass - 100.0 - - - - - 9.09670413 - - MI_Restricted_Substances - fbdbafa4-b1a5-410d-a3f0-0b7077b0d7be - - Glass/polyimide honeycomb, ±45° fabric (0.112) - Glass/polyimide honeycomb, ±45° fabric (0.112), L Direction - 930d52cf-2cee-4c4b-b1a9-b1d96d3044c9 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 6a48fca9-fbaf-4264-9482-96ab92322e57 - Mass - 100.0 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 72adcdd4-1469-4a17-84e7-9d58cf04a38e - Mass - 100.0 - - - - - 9.09670413 - - MI_Restricted_Substances - 6f9ce415-05a1-4774-bf1d-8952ab0f7306 - - Annealed - Low alloy steel, AISI 3140, annealed - 676c5e9b-ff60-4183-a7a9-9d7fcd32c4ed - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - a0295e52-f3ba-4990-a17d-a6d1be73ff17 - Mass - 100.0 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 6b7c542c-ddd3-4aa2-8c5d-24e74a10c92d - Area - 68.0809364 - - - - - 9.09670413 - - MI_Restricted_Substances - a8bcc71d-ff19-40c8-9520-f11553c604d2 - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 5140, oil quenched & tempered at 650°C - a21a8da1-da97-4c1b-8fbe-4a5aa1a91a46 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - 499b161c-fe41-45c5-a2ad-a21511698d33 - Mass - 100.0 - - - - - - - 5.0 - 45.26277163 - - MI_Restricted_Substances - 5fd070ef-bb1b-4857-abcf-7eda481ecfbe - - c8fe4f3d - part_c8fe4f3d-a700-4d0c-84e3-a14b889a4cc7 - c8fe4f3d-a700-4d0c-84e3-a14b889a4cc7 - - - 5.0 - 24.6692841 - eb2deb8b - part_eb2deb8b-b41d-4c74-8e4b-a7e85b8ec439 - eb2deb8b-b41d-4c74-8e4b-a7e85b8ec439 - - - 11.29350648 - - MI_Restricted_Substances - c95c73c3-4701-4efd-902e-cbf342cdcf96 - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 6150, oil quenched & tempered at 540°C - 745d6d44-8f46-419e-9b32-25bc47eaa59e - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 89f9c223-e5c2-4ebd-9633-4d3e6f846f0a - Mass - 100.0 - - - - - 44.35324675 - - MI_Restricted_Substances - 36e1311d-2e77-4147-8cf3-c4cdce6f6c7f - - Grade F9 - Alloy steel, 9Cr-1Mo, Grade F9 - 9b22d40c-ac77-4697-9810-85b65fe477be - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 08d160c5-0163-43da-9917-db0b516d1d61 - Area - 23.87664328 - - - - - 44.35324675 - - MI_Restricted_Substances - b10ab099-72fd-4e47-9274-015a08f619c2 - - Annealed - Low alloy steel, AISI 5160, annealed - 31356a48-ade5-4b4d-a93b-9808b6383d9e - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - f7533552-c5cd-4a4e-ab60-a532681d340a - Mass - 100.0 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - e3b12039-e222-49f5-8803-779b9f7fd7af - Length - 66.37623024 - - - - - - - 4.0 - 15.26485025 - 7ec1f344 - part_7ec1f344-f8f3-4bb7-a8bb-91fc987da37d - 7ec1f344-f8f3-4bb7-a8bb-91fc987da37d - - - 48.34072363 - - MI_Restricted_Substances - ab895171-8c16-4056-9062-78f7516be1b0 - - Borosilicate - 7050 - Borosilicate - 7050 - 4a413853-4f19-4033-99e9-d2558285fd77 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - b141dd7a-08fe-49c9-9e5e-60c573dff406 - Mass - 100.0 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - ebc20434-b632-4a83-98ce-36397e7cc4b6 - Length - 84.00889559 - - - - - 10.33185527 - - MI_Restricted_Substances - 92565d61-24fc-4880-9be5-0faeb9a8a3e8 - - Titanium silicate - Titanium silicate - e2589441-809a-4632-b5f5-604e86d5df1d - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 49000dd4-39c6-4c0e-91a4-9733e7cdc4cc - Mass - 100.0 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 2a8c198d-6795-43a2-89b0-18d302c51e22 - Mass - 4.02927515 - - - - - 10.33185527 - - MI_Restricted_Substances - d424fe56-b6f6-42c2-99fb-3e92da8ce70b - - Molding, glass filled - DAP (molding, glass filled) - 9f8bae76-87c4-4a92-9d2e-7acd712324b4 - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 5a4e401d-dfcd-43eb-a876-1e11b6606ba3 - Mass - 100.0 - - - - - 10.33185527 - - MI_Restricted_Substances - 0a203f13-4112-4c7b-8d17-bd9ce600f647 - - YS350, cold rolled - Dual phase steel, YS350, cold rolled - c0ce1d7a-cd01-4611-bf88-190e3d52c5c6 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - 4c5daa87-9d94-4e0c-b0ed-f6e29891ec70 - Length - 60.25046709 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - c33605f5-647b-4115-ba26-4220139253f8 - MassRemoved - 19.7739692 - - - - - 10.33185527 - - MI_Restricted_Substances - d56a3593-45b4-418e-8f28-3fde55e8479f - - Homopolymer, 40% glass and mineral - PP (homopolymer, 40% glass and mineral) - 18c72c1f-62dc-424a-b1e3-829ebae03638 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - 39556d21-4b67-439a-ab9a-aa687ff13719 - Length - 88.79933994 - - - - - 10.33185527 - - MI_Restricted_Substances - c62d668e-5411-4845-b19c-3a0c4eedf872 - - 10CrMo9-10, normalized & tempered - Low alloy steel, 10CrMo9-10, normalized & tempered - eb75a1ff-cfed-4cff-9ee0-51b0ae2bff51 - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 97aba755-6d6b-476a-9d91-b4ae031e069d - Mass - 100.0 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - 8d6ff545-b87a-4f86-b87e-b0c67814fc8a - Length - 7.22270105 - - - - - - - 6.0 - 83.81149465 - 82a614ac - part_82a614ac-71f0-43c2-9f05-50d6d6bc5dd7 - 82a614ac-71f0-43c2-9f05-50d6d6bc5dd7 - - - 27.35189331 - - MI_Restricted_Substances - d2c2408b-ddaa-4dc0-825b-b2d3ef39767b - - Oil quenched & tempered at 315°C - Carbon steel, AISI 1095, oil quenched & tempered at 315°C - 6ca8c8cd-314f-49f3-98a2-fe7da413b8dd - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - a37f7e86-aa84-4a27-991a-117d1677ba50 - Length - 56.53616439 - - - - - 18.16202667 - - MI_Restricted_Substances - 8b442749-964a-49d6-be5c-9a55c81d85f8 - - Annealed - Carbon steel, AISI 1137, annealed - c476e626-5152-486e-86db-e1e4879b8322 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - ea5ab7ac-c8d8-4223-b0ed-27111a71e53f - MassRemoved - 32.52559622 - - - - - 18.16202667 - - MI_Restricted_Substances - 81ce98b3-d459-4695-9dd9-d53244be47ed - - Annealed - Carbon steel, SA216 (Type WCC), cast, annealed - 49e350c2-4a76-46dc-91c9-a053293f1246 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - 44afe398-fa7e-4205-b019-ff981c913696 - Mass - 100.0 - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - efd3f567-f565-4c76-bfdd-53016814b06f - Mass - 100.0 - - - - - 18.16202667 - - MI_Restricted_Substances - 158e73a4-18c6-4e1a-b5d8-57669c377335 - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 8740, oil quenched & tempered at 650°C - f67e261d-6a6d-460c-b268-c2d94e6e6095 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - 95f56dd5-b66f-4a7a-bcf5-23248b4bf618 - Mass - 100.0 - - - - - 18.16202667 - - MI_Restricted_Substances - 4b01d1e1-0f4c-4861-a797-7ea504ca38c4 - - Annealed - Low alloy steel, AISI 5150, annealed - 2b4ff675-7d16-452a-aa95-6822f6f80a28 - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - 65d94de4-5ac4-4511-93bd-5c4493f91339 - Mass - 86.86862447 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 1927203e-d336-40f9-9ac8-002e3fb8404f - Mass - 100.0 - - - - - - - 2.0 - 26.22946106 - 8b6c545e - part_8b6c545e-01a8-4124-a864-f4715e58b341 - 8b6c545e-01a8-4124-a864-f4715e58b341 - - - 8.01495947 - - MI_Restricted_Substances - 7c667712-7c0d-46fe-bf29-e73482f1a937 - - Normalized - Carbon steel, AISI 1040, normalized - 436bf9aa-eeaa-43b2-b091-946739429e46 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - b04303aa-fa93-4a4b-b15a-1d399aa6ef2a - Mass - 100.0 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - cc3e31e1-5109-4d2c-89c5-e9afbe14ac07 - Mass - 100.0 - - - - - 91.98504052 - - MI_Restricted_Substances - 879f3268-e8b6-48c0-822a-40a010d12911 - - AISI 1010, annealed - Carbon steel, AISI 1010, annealed - 5b140538-a83a-4932-8530-b6b9b1354b33 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - bd4e9820-9ff3-4955-adf8-a54c1fb91c6f - Mass - 100.0 - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - 21454e66-9f53-46ce-bc28-9eae97e8e2aa - Mass - 100.0 - - - - - - - 5.0 - 68.12259986 - 32a97613 - part_32a97613-8749-4521-911a-dadce88e2fbc - 32a97613-8749-4521-911a-dadce88e2fbc - - - 87.24837297 - - MI_Restricted_Substances - 9124b244-f2f8-44df-b2cf-b05d3406eb9e - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 4042, oil quenched & tempered at 315°C - fb4f654c-e2e5-4e46-82a7-135d9d12e8b8 - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - 899c2231-7fab-4232-9b1b-90460bf58577 - Mass - 100.0 - - - - - 1.59395337 - - MI_Restricted_Substances - 29d2e9de-9de0-4ea9-9bff-3a1cee0c26e3 - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 4037, oil quenched & tempered at 205°C - e3442955-c1af-4772-8b05-38a14c8b56d6 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - 106b9d46-3e65-4149-82ad-e1be183c3aa0 - Mass - 100.0 - - - - - 1.59395337 - - MI_Restricted_Substances - 5dbabc2e-4263-4458-abe1-31a2ece9e122 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 5160, oil quenched & tempered at 425°C - bafe2017-cae7-4cb0-a9a9-a0a07178065f - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - 04dae83c-67b6-4578-88e8-186be8062412 - Mass - 100.0 - - - - - 1.59395337 - - MI_Restricted_Substances - e5cb0b28-b074-4eb6-95ab-12e8692a87ea - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 50B60, oil quenched & tempered at 540°C - ede158ad-d3b7-4822-9c1b-7baa9a4a09ec - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - 3d7da978-b277-4a25-b720-5638eeb242a3 - Mass - 67.53981167 - - - - - 1.59395337 - - MI_Restricted_Substances - d6e501d1-0349-4e73-a9da-d539d7cd5486 - - Normalized & tempered - Carbon steel, SA216 (Type WCC), cast, normalized & tempered - 89b60b9d-50b9-458a-8a79-bc7fabf95943 - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - 22dc52e0-34ca-4412-952e-49bc1bf22f01 - Mass - 100.0 - - - - - 1.59395337 - - MI_Restricted_Substances - 9baf14a0-efff-4bce-9674-553db30bee1b - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 9255, oil quenched & tempered at 650°C - 669c5e9a-c19c-4473-a1d7-4ac59cedb10a - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - dfcbbda8-fb7c-4a18-b4b8-67ce4d0a060e - Length - 10.26537111 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 777fa19d-d738-4b3b-915d-6996371d9079 - Mass - 100.0 - - - - - 1.59395337 - - MI_Restricted_Substances - a1ecb25a-cbfa-484f-8221-3c08313c0d09 - - Glass/polyimide honeycomb, ±45° fabric (0.051) - Glass/polyimide honeycomb, ±45° fabric (0.051), L Direction - 2a239261-e9fa-4492-b6d9-487b94adce00 - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - 3231389f-f837-46b2-ab9f-65bd393369dc - Mass - 3.33598158 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 965ee3ad-4b83-4b1c-aeb6-280f7931ac17 - Mass - 100.0 - - - - - 1.59395337 - - MI_Restricted_Substances - cec978ca-2cf6-489b-a21f-c424c7d49a61 - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 4042, oil quenched & tempered at 540°C - b9ea77fb-a00b-4873-9afe-bebec9745c86 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - a9fc01c6-b5f8-4d21-ab7e-6afa5fb68b26 - Mass - 100.0 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 6a975675-91de-4ed0-a7da-0a74e72c8af0 - Mass - 100.0 - - - - - 1.59395337 - - MI_Restricted_Substances - 940150b6-2d2e-4762-b1a0-6f354a75d95b - - Potash lead glass - Potash lead glass - 6f275f8d-94c9-458c-bf77-a73191c7d328 - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - 8662860d-124e-4acd-987c-ee1d0d4d7046 - MassRemoved - 4.07684855 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 1889b177-f9b6-4429-ad45-cd5dda537c09 - Mass - 100.0 - - - - - - - 8.0 - 52.66540364 - - MI_Restricted_Substances - 19db41d7-f431-4cae-8977-8bdab8435374 - - f45aed28 - part_f45aed28-e2ce-47d9-9f72-262b61b4cf4c - f45aed28-e2ce-47d9-9f72-262b61b4cf4c - - - 5.0 - 67.8095884 - 029eebe4 - part_029eebe4-61d9-4313-8b11-48a3b2ddaa26 - 029eebe4-61d9-4313-8b11-48a3b2ddaa26 - - - 100.0 - - MI_Restricted_Substances - e6ccd83b-bd9f-45c2-a45e-53933b3b3638 - - YS170, hot rolled - Drawing quality, YS170, hot rolled - a1084c64-0392-4ae2-8349-95b72dd23979 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 20e30242-be1b-4382-abb8-ae0a7c43b0b5 - Mass - 100.0 - - - - - - - 9.0 - 72.54869717 - 9d4a9735 - part_9d4a9735-5832-40b9-a0c7-374f7f8ef4eb - 9d4a9735-5832-40b9-a0c7-374f7f8ef4eb - - - 100.0 - - MI_Restricted_Substances - b0c0246d-7238-46e4-9081-5bad34efbbdb - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 5140, oil quenched & tempered at 205°C - 69802d0e-a351-4e61-822e-72bef720e710 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 60c7e574-7a63-4b65-aa28-e295f5d044fe - Mass - 100.0 - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 48ff2572-798d-43a3-937f-b1e0d1412155 - Mass - 100.0 - - - - - - - 5.0 - 45.75240027 - 08e41ceb - part_08e41ceb-09ac-4b39-aec4-13ca0971e3f3 - 08e41ceb-09ac-4b39-aec4-13ca0971e3f3 - - - 19.09781993 - - MI_Restricted_Substances - be0bbb94-0c22-4276-9615-902f13ee0363 - - Oil quenched & tempered at 315°C - Carbon steel, AISI 1144, oil quenched & tempered at 315°C - 562fb1a0-2d01-4d8e-ab17-daed570352ce - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - c7299a56-0153-46d0-a959-7608c0a3e4b8 - Mass - 100.0 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - 1cff8140-3e0c-417e-a513-0dfa93a2efdb - MassRemoved - 2.81782336 - - - - - 16.18043601 - - MI_Restricted_Substances - 00fe5279-94a1-43fd-8b88-d83679a1bdce - - Normalized - Low alloy steel, AISI 8650, normalized - 4d72c6e4-2025-4bcc-9f26-0bd1a1e025f0 - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - b8497ea3-22dd-4402-9297-c567f477f441 - Mass - 100.0 - - - - - 16.18043601 - - MI_Restricted_Substances - 44170b93-ef3d-4d60-848c-1d454eadbd1f - - As rolled - Carbon steel, AISI 1118, as rolled - fab0c294-61a5-4f4e-ba4e-1e003c0add97 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 12c5941f-9f7d-4a7c-a233-d62edcba2b73 - Mass - 100.0 - - - - - 16.18043601 - - MI_Restricted_Substances - 8d11e762-0e0a-4010-873b-28aa9eda77f1 - - water quenched & tempered at 650°C - Carbon steel, AISI 1040, water quenched & tempered at 650°C - 91e457fb-587b-4340-9663-d6588e04a9ef - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - 6d8b3ee0-b47a-45a7-b221-d37c4af789df - Length - 87.83882837 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - c0019e0b-9940-4b0a-8012-bb274efe6a46 - Mass - 100.0 - - - - - 16.18043601 - - MI_Restricted_Substances - ff23c6a6-3046-4f35-b5d2-ca7f0956efc7 - - Oil quenched & tempered at 650°C - Carbon steel, AISI 1144, oil quenched & tempered at 650°C - c1f1d2ae-d067-4cb6-9b97-0cb20f40aebb - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 391d1f1f-4586-47a2-9597-7a988ac7fbab - Area - 9.24836546 - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - 07e2be6c-604c-4c09-b7a1-5f96e5172fbc - Mass - 100.0 - - - - - 16.18043601 - - MI_Restricted_Substances - 3cad12a9-0765-402c-a6b1-0be665ecd2e6 - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 4140, oil quenched & tempered at 540°C - 73da6b78-b8b6-434a-b85c-9f69819556d8 - - - - MI_Restricted_Substances - 614a3c76-be00-4567-883f-a69d5560a85f - - Wire drawing, non-ferrous - Wire drawing, non-ferrous metals - 1fc8a46d-4615-47eb-8e25-3868bcde3026 - Mass - 100.0 - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - 173921f9-7fc6-4d2f-861f-477d238a8158 - Mass - 55.1803645 - - - - - - - 1.0 - 67.48451761 - - MI_Restricted_Substances - a78dcd3a-f108-4fdb-857e-e2d00ed319d4 - - 0aa5949f - part_0aa5949f-02ce-4d0d-8c81-2c420977ba2c - 0aa5949f-02ce-4d0d-8c81-2c420977ba2c - - - 7.0 - 72.33532828 - 14a60b45 - part_14a60b45-ed26-4545-91b1-579cf92fd920 - 14a60b45-ed26-4545-91b1-579cf92fd920 - - - 81.39042341 - - MI_Restricted_Substances - a831e691-2a34-4edf-807f-dfd38c316ef0 - - Borosilicate - 7740 - Borosilicate - 7740 - af47e5bf-dc1e-4631-8029-06abeb8d8aa9 - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - b1dd64a2-c274-46bd-8687-3d33878586b1 - Mass - 100.0 - - - - - 2.32619707 - - MI_Restricted_Substances - ab732b70-3546-4a94-b914-643f38c2443f - - 24CrMo13-6, quenched & tempered - Low alloy steel, 24CrMo13-6, quenched & tempered - 107419cf-caf4-4a12-99ab-00b4a6924134 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 0c3c00cc-917f-4ec7-9aaf-7c89dbfd4515 - Mass - 100.0 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - 64849db1-58f0-4cc6-a61e-19fc913cae47 - Length - 89.79021915 - - - - - 2.32619707 - - MI_Restricted_Substances - 33160988-8422-40e2-93d1-e3e7467eafe9 - - Normalized - Carbon steel, AISI 1030, normalized - 5acf8036-ea0f-4650-bf06-d513c66556d7 - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - 6960e6d3-8999-4b93-8a23-f1254b1b62b8 - Mass - 100.0 - - - - - 2.32619707 - - MI_Restricted_Substances - 52f4bd78-04b3-4f59-ad9d-f4d9e695cec1 - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 8640, oil quenched & tempered at 540°C - 7b765542-1a51-4dd5-84c6-c364df62912c - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - 52723d99-ec82-4965-82a5-fb22addcdd55 - Mass - 100.0 - - - - - 2.32619707 - - MI_Restricted_Substances - b6d7f7bf-6ae9-4782-adb0-3c8684b58ab7 - - water quenched & tempered at 205°C - Low alloy steel, AISI 4130, water quenched & tempered at 205°C - cf75a3bf-9adf-4a7d-8531-24962738c224 - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - 4431c3ad-10d5-40ff-b98f-6b99b8d09273 - Mass - 100.0 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 9c3b4101-5c00-4270-be01-b034398c6850 - Mass - 100.0 - - - - - 2.32619707 - - MI_Restricted_Substances - 63d5d6b5-3b52-4cd9-a56f-6e7c5c945139 - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 81B45, oil quenched & tempered at 315°C - 78d1af3d-f686-40b0-bb54-b1f232113dd9 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 8620f028-3d43-485e-95b8-c002cbbd1e66 - Mass - 100.0 - - - - - 2.32619707 - - MI_Restricted_Substances - b3d89bcf-5e9a-4fe8-a953-98ceb384b8a3 - - water quenched & tempered at 650°C - Carbon steel, AISI 1030, water quenched & tempered at 650°C - 37dddd7a-f7db-44aa-925f-ce0d3b6d2daf - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - b3a173fe-d3fa-4fd1-a112-3526a28e9216 - Mass - 100.0 - - - - - 2.32619707 - - MI_Restricted_Substances - 21dcdeeb-524a-488e-b332-fcd4e1caf6f7 - - water quenched & tempered at 650°C - Carbon steel, AISI 1095, water quenched & tempered at 650°C - 0a9b7806-e04f-42d4-a59e-34cdec3357a3 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - 91eea166-f867-4a19-8026-f9c59a7efbb3 - Area - 51.02855272 - - - - - 2.32619707 - - MI_Restricted_Substances - b7281866-0d52-4e7c-b595-207e18a0a759 - - Glass ceramic (ZD) - Glass ceramic (ZD) - 8c8132bb-5369-4aee-a41b-e9fc45f6bbec - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 8b451d54-b071-44e9-960b-5a76f446e6ad - Mass - 100.0 - - - - - - - - - 4.0 - 94.96250469 - dbd26773 - part_dbd26773-8e8f-4777-ac11-5ae169b0adeb - dbd26773-8e8f-4777-ac11-5ae169b0adeb - - - 76.00599107 - - MI_Restricted_Substances - d42eaa02-9811-4935-b9cd-652adc845e8c - - Oil quenched & tempered at 650°C - Carbon steel, AISI 1050, oil quenched & tempered at 650°C - b664d6da-3d02-4c61-beca-ac15117002b4 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 0c30cc1c-7adb-42ff-9e3c-6df6902dd623 - Mass - 41.3254881 - - - - - 3.42771556 - - MI_Restricted_Substances - 9df55457-5300-4ddb-b92e-122b5c121621 - - Glass and mineral filled, encapsulation, molding - Novolac (glass and mineral filled, encapsulation, molding) - 129b2bc8-e985-4f46-a8e6-9df04926e059 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - 4b3e027e-808e-43e5-9b43-24670aa70a5a - Mass - 100.0 - - - - - 3.42771556 - - MI_Restricted_Substances - 1a9ca626-1709-4d7b-954c-65aa69bf6536 - - YS300, cold rolled - High strength low alloy steel, YS300, cold rolled - 6b2a51a6-4f05-4529-b956-d5f89154aea1 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - 4f7389b7-6ed6-4bde-9a00-47eba952c0cb - Mass - 100.0 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 663bef70-ccb1-4122-bf49-37c1ecdbc270 - Mass - 100.0 - - - - - 3.42771556 - - MI_Restricted_Substances - b067ed19-a836-41f7-9267-d9b04647d09f - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 5150, oil quenched & tempered at 650°C - a6928515-9d7b-425b-87d6-77dd32f92761 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - 9b5e8df2-1fdf-456d-b942-69d71caa3bdb - Mass - 100.0 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - e47e033a-4cbb-4a05-b953-ddd17520582c - Length - 66.68110939 - - - - - 3.42771556 - - MI_Restricted_Substances - 1a9a8159-774b-4fc9-9c09-4bbc5474f364 - - Oil quenched & tempered at 315°C - Carbon steel, AISI 1060, oil quenched & tempered at 315°C - 8fe9ddc8-d93d-4141-b1e6-e6d7c7ca7714 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 14745818-f77a-49c3-8543-cec80704e400 - Length - 63.61059647 - - - - - 3.42771556 - - MI_Restricted_Substances - 8349c912-772a-4fd7-90a5-7d52aa9c9448 - - Oil quenched & tempered at 425°C - Carbon steel, AISI 1137, oil quenched & tempered at 425°C - 45eb05de-7dfa-4c59-8020-7a62fe7ffe9b - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - b92ed420-a919-4d7c-b717-467ed447e789 - Mass - 100.0 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 3e345310-3294-49ec-9563-4a560a1cbd77 - Mass - 100.0 - - - - - 3.42771556 - - MI_Restricted_Substances - 877882c6-9b86-4643-a4a0-363d7d8023fd - - P355N/NH, normalized - High strength low alloy steel, P355N/NH, normalized - f6f762d4-60e6-41df-bd5b-a3c9a913e2a5 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 801772a7-9f20-4d3a-be55-c1d56953929c - Mass - 100.0 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - 9b415600-3892-4880-8548-5d2a1771f6df - Mass - 100.0 - - - - - 3.42771556 - - MI_Restricted_Substances - ae5812e1-18fd-4a4d-aaa2-a04ca5e84b7a - - YS400, hot rolled - Dual phase steel, YS400, hot rolled - 65c218e8-5bf8-4ffe-b06f-33330785a050 - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - de4d8201-fd83-49b7-bdaa-17fe3fc25396 - Mass - 100.0 - - - - - - - 2.0 - 68.68658208 - 3c323160 - part_3c323160-5fd8-44e4-a13d-2b9f8d257e5c - 3c323160-5fd8-44e4-a13d-2b9f8d257e5c - - - 38.65691723 - - MI_Restricted_Substances - 15dcb0d7-3be1-4d92-952e-c80ccbdc6a58 - - Annealed - Carbon steel, AISI 1117, annealed - 495b33c6-6072-4b51-abeb-ea0631bda54a - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - 804ba7d8-7241-430b-a8bd-ffbfd8e9e1e6 - Mass - 97.84621698 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - 4032f224-a752-4e9b-9239-1216ab831a2a - Area - 23.40507229 - - - - - 20.44769425 - - MI_Restricted_Substances - ac443865-33d5-466d-89e2-c3f26e668369 - - Borosilicate - 3320 - Borosilicate - 3320 - 79b889c4-0a6a-43ee-a624-d1edde521eee - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - 2fdcde75-03c6-4ca8-95ee-94c569666985 - Area - 49.369266 - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - 32429d18-f93d-4f9a-8b3b-b2185d113077 - Mass - 100.0 - - - - - 20.44769425 - - MI_Restricted_Substances - 0d45da58-d026-4a44-b2b5-3109fe88f824 - - Annealed - Carbon steel, AISI 1022, annealed - b52b229c-244e-43e4-a7af-d62cf3dcbc7b - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - ead16e14-f3e0-4428-9590-75daef15c905 - MassRemoved - 1.85855818 - - - - - 20.44769425 - - MI_Restricted_Substances - c95c73c3-4701-4efd-902e-cbf342cdcf96 - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 6150, oil quenched & tempered at 540°C - 6ee1f13a-259e-4c0d-808e-8ba5bfaee21a - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - f57655a3-883e-40dd-a093-9964a8356299 - Mass - 100.0 - - - - - - - 8.0 - 54.49852945 - 5dd3822f - part_5dd3822f-b24c-4067-b80a-a757c8cd42af - 5dd3822f-b24c-4067-b80a-a757c8cd42af - - - 9.03867003 - - MI_Restricted_Substances - 90514ab4-75b3-48a9-9a07-98eb8f83ef81 - - As rolled - Carbon steel, AISI 1015, as rolled - 5be59a06-d6b7-41ad-b182-8fde7d1e4ef0 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - a6ec4773-da93-4378-b1ab-ae3501c1c3a3 - Length - 56.50861335 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - 359cb7f8-ca98-47e0-a518-e151f66bb612 - Mass - 100.0 - - - - - 12.9944757 - - MI_Restricted_Substances - b7281866-0d52-4e7c-b595-207e18a0a759 - - Glass ceramic (ZD) - Glass ceramic (ZD) - 08e59c8a-2717-49be-9877-99514a1d892c - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - fb977997-cc93-43b1-97a2-fce283ab53c3 - Mass - 100.0 - - - - - 12.9944757 - - MI_Restricted_Substances - 6d6a3603-a2a8-4db9-9e7e-ad4fc4f9c724 - - Glass/phenolic honeycomb, ±45° fabric (0.064) - Glass/phenolic honeycomb, ±45° fabric (0.064), W Direction - 4d7fbb98-5105-4379-91f3-c0e83a36490f - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - 4f99306f-f5d8-4a01-a9c2-4bec570e02c1 - Mass - 100.0 - - - - - 12.9944757 - - MI_Restricted_Substances - f92ff01e-ed35-4c66-96d1-607d9684b44b - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 94B30, oil quenched & tempered at 315°C - 94ee114f-4921-482e-b6f0-bcf062174668 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 86a3e3ac-e646-4dc8-bd37-31f184e119b8 - Mass - 100.0 - - - - - 12.9944757 - - MI_Restricted_Substances - db238d75-fcb8-41f5-9289-83a352fa83a6 - - Annealed - Carbon steel, AISI 1015, annealed - 4f63a2b4-ca62-458e-a376-2e8c16a35be6 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - bd30ba17-0112-479e-86a4-ed7cd8a7e16d - Length - 32.4986593 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - dd48f4ee-fed1-4743-a078-97593acdbb3d - MassRemoved - 1.45429368 - - - - - 12.9944757 - - MI_Restricted_Substances - a1ecb25a-cbfa-484f-8221-3c08313c0d09 - - Glass/polyimide honeycomb, ±45° fabric (0.051) - Glass/polyimide honeycomb, ±45° fabric (0.051), L Direction - cba81f0c-37ce-4fa0-98eb-cd0f1f202dbc - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - aadbc19e-955c-4d2d-b6d2-eb1c26ba3ac6 - MassRemoved - 22.66693041 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - 76780348-4023-4a50-9c95-d2021dca2c25 - MassRemoved - 18.42039349 - - - - - 12.9944757 - - MI_Restricted_Substances - 87e1a3cd-fd79-4013-b5f8-56d6f28bef34 - - Oil quenched & tempered at 540°C - Carbon steel, AISI 1144, oil quenched & tempered at 540°C - da444f58-762b-4434-a8b4-68e908157cbc - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - 4d5bf7d5-e56b-46dd-93d1-a791d41ebe7e - Mass - 100.0 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - 2f5e2e30-90dc-422e-ad04-7e4a745524ee - Length - 40.70143962 - - - - - 12.9944757 - - MI_Restricted_Substances - ee08f647-79af-49f3-98c5-043480a0fed4 - - Quenched & tempered - Low alloy steel, 4330V, quenched & tempered - 743e0b8f-fc4b-4b51-b429-4add411a3d50 - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - 35b35d9a-b0e3-48ad-842c-7989acce53f7 - Mass - 41.91364391 - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 6a9dcf43-279e-4b1a-b9e6-05b7f00e03df - Mass - 100.0 - - - - - - - 6.0 - 76.82335832 - - MI_Restricted_Substances - 022614af-ecf8-4797-af86-25b711d65e30 - - ede9c4dc - part_ede9c4dc-b959-4cd3-886d-d73c16ba410f - ede9c4dc-b959-4cd3-886d-d73c16ba410f - - - 5.0 - 65.15663776 - c6deee78 - part_c6deee78-ba90-46e1-bf50-943770fe74f5 - c6deee78-ba90-46e1-bf50-943770fe74f5 - - - 59.53503821 - - MI_Restricted_Substances - 5b4ea232-c032-4f8d-a633-3b059e93651a - - 36%Co steel - Hard magnetic alloy, 36%Co steel - a4a505df-4b60-4496-8bca-af20cff0717c - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - ad5e3fec-5699-4265-9bff-4a5337d214e0 - Length - 90.22238789 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 64596daa-99ae-48b6-a37d-f3fa3730f7e4 - Area - 44.09314633 - - - - - 6.74416029 - - MI_Restricted_Substances - e6461f0f-809d-4f17-8ea9-b85d7219639a - - Glass/phenolic honeycomb, ±45° fabric (0.128) - Glass/phenolic honeycomb, ±45° fabric (0.128), L Direction - aa3e1d42-4b4a-4b04-8309-006cc76ba803 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - 5d230694-57bd-43d6-8494-9ab67a963c63 - Length - 58.90132652 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - bfed3d36-890a-457d-ad16-0e33003a5c8e - Length - 66.63448236 - - - - - 6.74416029 - - MI_Restricted_Substances - f17caf23-cca0-47c9-a216-c29c1533ed51 - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 50B60, oil quenched & tempered at 315°C - 576ada76-20e0-4680-8d0d-354906e8d430 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - a086531c-9ed6-445c-8011-ad89a896fb3f - Length - 4.8088964 - - - - - 6.74416029 - - MI_Restricted_Substances - 2a840794-eac4-4f77-90ba-f84bce518c0f - - Glass/phenolic honeycomb, 0°/90° fabric (0.055) - Glass/phenolic honeycomb, 0°/90° fabric (0.055), L Direction - b0d69130-2193-4218-8e43-bdc5990b9811 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 6443405a-6eb7-4cdb-9e03-9151c4d973e5 - Area - 13.54248133 - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - 8ef1914b-82a3-4b4c-8136-82b22c52426d - Mass - 100.0 - - - - - 6.74416029 - - MI_Restricted_Substances - 1d9c8629-4a1d-4aaf-bb7c-ba7a97eef5f5 - - Normalized - Carbon steel, AISI 1340, normalized - 8ac39931-3435-41fe-9cd4-79a44528d043 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 3add1843-5548-42ea-8cd5-a6bc7ab62e06 - Mass - 100.0 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 4f7fb088-a550-4303-8c43-bb2c5f9d463f - Mass - 100.0 - - - - - 6.74416029 - - MI_Restricted_Substances - 2656c71b-a4ea-4fc6-9139-adc0deae35b1 - - 65wt% glass, biaxial lay-up - Polyester/E-glass fiber, woven fabric, 65wt% glass, biaxial lay-up - 205d1b5d-8be2-451c-abd9-7db894c4f25e - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - d8276af2-5e1b-425b-b32e-6a243751c623 - Mass - 100.0 - - - - - 6.74416029 - - MI_Restricted_Substances - d07fe7e1-e745-42a8-9761-6f68c2a7bd1b - - Annealed - Low alloy steel, AISI 4150, annealed - ff18eea8-708c-4a5e-b423-dfd95959a9ec - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 9ef576f6-f156-400a-b8aa-0036675290ba - Mass - 100.0 - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - 392e0c5f-13c3-4c87-bc47-2eb2e6905400 - Mass - 100.0 - - - - - - - 7.0 - 33.03445299 - c4d2141a - part_c4d2141a-9ba8-46ec-9f1b-cd0d9b30cdcf - c4d2141a-9ba8-46ec-9f1b-cd0d9b30cdcf - - - 30.82577219 - - MI_Restricted_Substances - 0afa77bf-df9b-456c-8c48-3c84b1ccd2e0 - - Low density glass-sphere filled - Bisphenol molding compound (low density glass-sphere filled) - cb3eb454-1ec1-4bea-a815-1fb838a21831 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 31e23a0f-0a29-4e65-89b2-d93541db603e - Mass - 100.0 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - bc72ef57-53db-4fe6-aaaa-ad09ba171161 - Area - 92.21714972 - - - - - 23.05807593 - - MI_Restricted_Substances - 50342378-5548-45ea-9a21-c0f16c6dcb1a - - Steel, terne coated - Coated steel, steel, terne coated - 5776bdfe-4912-49c1-85d3-0713d6a6d0fe - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 8fbb6564-41cb-4784-afb4-598244cd31d6 - Mass - 100.0 - - - - - 23.05807593 - - MI_Restricted_Substances - 67ea6f19-34d5-40af-9b8c-059058fd840a - - Oil quenched & tempered at 205°C - Carbon steel, AISI 1080, oil quenched & tempered at 205°C - d8af9b19-e096-4e1d-a96e-77f0e70f87a9 - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - ae9b8fa6-82e4-4518-a408-29804f7900ec - Mass - 100.0 - - - - - 23.05807593 - - MI_Restricted_Substances - e6b45bea-dec9-4b91-996a-885bb0c31f8d - - Glass, S grade (10 micron monofilament, f) - Glass, S grade (10 micron monofilament, f) - e4923503-0e75-4099-909f-cd195156daf8 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 225b44b1-2efa-48de-93d8-03f8ecd7ef75 - Mass - 100.0 - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - 163fc9e0-4602-455c-b0d0-7fa5bffbe4ef - Mass - 100.0 - - - - - - - 9.0 - 28.28983656 - 594a4dd2 - part_594a4dd2-ce0c-4965-9bb3-36af1a32b5a7 - 594a4dd2-ce0c-4965-9bb3-36af1a32b5a7 - - - 44.68628249 - - MI_Restricted_Substances - b1b14aff-8354-447c-9883-df4969a517a3 - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 86B45, oil quenched & tempered at 315°C - 4f79bf51-0531-4f50-bb8a-df6902de48cd - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - bc48191a-0d55-4729-a6db-1bac764cd512 - Mass - 100.0 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - a44b17b1-ae57-4836-ad1a-9d8cb71ad42e - Length - 4.83526955 - - - - - 11.0627435 - - MI_Restricted_Substances - f7146c54-87d0-4395-b57a-86bb0c43716a - - ASTM A106 Grade B - Structural steel, ASTM A106 Grade B - ca1f9eb2-30f5-42c6-937a-3ea2ca2f4d2a - - - - MI_Restricted_Substances - fb6a206e-0007-4ada-82ef-66a3019dcef0 - - Pultrusion - Pultrusion - 0aded0e8-09f1-41e5-b847-8182cf58fed2 - Mass - 100.0 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 6ee5135e-0662-4010-a3a7-be01a3fd96f6 - Mass - 100.0 - - - - - 11.0627435 - - MI_Restricted_Substances - 81ce98b3-d459-4695-9dd9-d53244be47ed - - Annealed - Carbon steel, SA216 (Type WCC), cast, annealed - 3c64a19c-38df-4a75-8dea-04697e832cb8 - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - 29e1accd-4ed8-4250-8ee8-e3f9e5b155af - Mass - 100.0 - - - - - 11.0627435 - - MI_Restricted_Substances - d41a9d62-4a05-4cd7-98ac-f1acb5d39658 - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 9255, oil quenched & tempered at 540°C - b02cf418-c984-4b2d-81f3-c2c6bdc78eb8 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - 1ba1cac9-17cb-4ede-a6f6-18a75f2373ce - Length - 56.16205542 - - - - - 11.0627435 - - MI_Restricted_Substances - 7a62318a-eff2-4f36-9925-ee919c5b4369 - - S235J - Structural steel, S235J - 4afca0bd-8482-4501-b933-c2c4f00a1e43 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - f1346717-38e4-4925-a6b6-0645ca8949e5 - Length - 52.16239427 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 13e8ee9b-153a-4fd9-81dc-cc83a571e7ec - Area - 93.83367411 - - - - - 11.0627435 - - MI_Restricted_Substances - db7d255c-6269-4097-a5aa-e18a13019915 - - FR-4.0 (Df < 0.01 at 10GHz), Epoxy/Glass fiber, PCB laminate - FR-4.0 (Df < 0.01 at 10GHz), Epoxy/Glass fiber, PCB laminate - 00c7da4f-fc24-4233-a13b-93d9b85f404d - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - 94055cf8-2c15-465d-96f8-ce0b25246c07 - Mass - 100.0 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 6138dc7b-3602-45ac-94bd-4847d94d1570 - Mass - 100.0 - - - - - - - 2.0 - 97.77199379 - ac138146 - part_ac138146-5194-40a7-afa3-349c4345f39a - ac138146-5194-40a7-afa3-349c4345f39a - - - 11.77725731 - - MI_Restricted_Substances - afc85ad6-9e99-44a7-a959-f75ddbacff15 - - FR-5, Epoxy/Glass fiber, PCB laminate - FR-5, Epoxy/Glass fiber, PCB laminate - 066fbaf0-5b98-435c-b493-64d5892cadde - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - ad47d1f6-bd11-488e-b825-3147dd8a0b0d - Mass - 100.0 - - - - - 44.11137134 - - MI_Restricted_Substances - 3b818b25-e6de-4e5c-b546-e97c68e10225 - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 5046, oil quenched & tempered at 650°C - 3b208f3b-1113-4f4b-a983-943d22590029 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - ad68552e-cc31-494a-b899-0363e52ff508 - Mass - 100.0 - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - ca93ef19-cf1a-4ea2-8aa5-c7e1207b8901 - MassRemoved - 79.36791855 - - - - - 44.11137134 - - MI_Restricted_Substances - c15a44c3-d8be-4ae8-9a58-281f13b731cd - - YS420, cold rolled - High strength low alloy steel, YS420, cold rolled - cbbd1922-4a1d-4ccd-bb7b-1f6200ea54d2 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - 757d131d-bfd7-4b49-9b42-d0a25856f793 - Mass - 100.0 - - - - - - - 2.0 - 19.66361865 - ee26367d - part_ee26367d-0bcb-470b-a527-67a3b872892d - ee26367d-0bcb-470b-a527-67a3b872892d - - - 100.0 - - MI_Restricted_Substances - ed1b937b-1738-408f-9591-bd3e40cc5e33 - - Quenched & tempered - Low alloy steel, D6AC, quenched & tempered - 8cde10fa-e9a7-4913-b5cc-927b86a872e8 - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - 1947e9d9-a9d2-4f50-8e37-0e15f16f5504 - Mass - 100.0 - - - - - - - 1.0 - 85.83398716 - - MI_Restricted_Substances - 19db41d7-f431-4cae-8977-8bdab8435374 - - 4c8dc587 - part_4c8dc587-a97e-4506-8131-725ceaa59696 - 4c8dc587-a97e-4506-8131-725ceaa59696 - - - 5.0 - 1.96303762 - - MI_Restricted_Substances - 80083213-3621-42c0-9e23-cdaa30c759e6 - - 688d58f6 - part_688d58f6-c50e-49e8-9a82-b2d516050610 - 688d58f6-c50e-49e8-9a82-b2d516050610 - - - 6.0 - 55.04283078 - eeb0858c - part_eeb0858c-7c6f-4c91-b611-86f355ae9e89 - eeb0858c-7c6f-4c91-b611-86f355ae9e89 - - - 100.0 - - MI_Restricted_Substances - 3606ab13-13f3-49fb-bded-2e3470bcf7d9 - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 81B45, oil quenched & tempered at 650°C - a28c71b6-8dc4-4c8d-8b5d-2fbc0092dab9 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 26d4f20b-6511-40ab-befd-fb38f522e745 - Mass - 100.0 - - - - - - - 8.0 - 57.84353444 - 2a3b25e9 - part_2a3b25e9-fca6-4e5f-9b98-fe2ce973810f - 2a3b25e9-fca6-4e5f-9b98-fe2ce973810f - - - 26.93413492 - - MI_Restricted_Substances - 2f1d8340-2d1b-4b7a-b236-f9924123bb33 - - ASTM A36 - Structural steel, ASTM A36 - 6f0f316e-86cd-411c-a55d-2df8bb735b25 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - bea52eff-5ecd-443b-beb2-7d6157ad5338 - Mass - 100.0 - - - - - 18.26646626 - - MI_Restricted_Substances - d02817f7-7500-4fcb-8c34-40927da681a5 - - Quenched & tempered - Carbon steel, SA216 (Type WCC), cast, quenched & tempered - 45174c87-f58a-4227-9e14-2b3b74d04890 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 33219f1e-6ff6-4254-a2d5-02fe3c0ad4c2 - Mass - 100.0 - - - - - 18.26646626 - - MI_Restricted_Substances - 8245dc6c-3d61-4f18-82c8-6fb946e1582c - - Glass foam (0.13) - Glass foam (0.13) - faf424bd-e724-47e9-ad77-070fc9b8c516 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - c79a3353-8f86-4943-bf90-27ce904735ac - Length - 79.64938347 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - e3c506d8-8c0f-4f71-b852-52a049df532c - Mass - 100.0 - - - - - 18.26646626 - - MI_Restricted_Substances - 4ad00a9e-92b5-4e28-92a0-409da4495c54 - - Oil quenched & tempered at 205°C - Carbon steel, AISI 1060, oil quenched & tempered at 205°C - e179e37a-2ffe-48ba-8fd5-38f96742c82c - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - 6fe9513f-2ebb-4255-8b57-5175a2fb5301 - Mass - 100.0 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - c1365da9-9c8e-479a-844d-31329ca62c6f - Mass - 100.0 - - - - - 18.26646626 - - MI_Restricted_Substances - 74efd204-f3f9-4a40-b3a6-0b48295b815b - - Annealed - Low alloy steel, AISI 4820, annealed - 74fbb2dd-5b0b-45a7-8d1a-97f82013df63 - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - 6115d183-bb4f-4295-b816-54a7a78a79b4 - Mass - 47.64945006 - - - - - - - 7.0 - 44.48135161 - 752b9eaf - part_752b9eaf-5396-46c5-bcbc-d117e67e2f96 - 752b9eaf-5396-46c5-bcbc-d117e67e2f96 - - - 22.26366071 - - MI_Restricted_Substances - a7ada434-62e4-411d-9c85-56dd9d44f094 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 4037, oil quenched & tempered at 425°C - 5208a1a6-321f-4a4f-bcbe-15661555a999 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - 9a7ab126-e2ea-4b43-82a2-eca4d9ae391a - MassRemoved - 73.8041939 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - c5f7c1a0-78e3-4e38-9110-c5ffcc28052e - Length - 72.20411038 - - - - - 38.86816964 - - MI_Restricted_Substances - 7b1fcb28-a127-417b-978f-6a5c58305d24 - - Annealed - Carbon steel, AISI 1118, annealed - b0b5ed93-ca11-440d-a2a1-664c6bcac957 - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - 5c79f499-9c93-41ec-bd6d-d37c328af4a8 - Mass - 100.0 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - ad5ae1ba-3a86-473d-9ba7-7c9f207b9d6e - Mass - 100.0 - - - - - 38.86816964 - - MI_Restricted_Substances - 82eabba3-2697-4f74-a530-ae27f5e33ffe - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 50B46, oil quenched & tempered at 540°C - 54555277-80b6-4c9a-8da3-b8e285ae98b2 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - 9ea0a363-7c54-4a24-8b4a-8cbdbe6c35a4 - Length - 23.48583346 - - - - - - - 2.0 - 74.28608186 - 2e0b4bbe - part_2e0b4bbe-5824-4f04-9403-e4f67aec2048 - 2e0b4bbe-5824-4f04-9403-e4f67aec2048 - - - 83.89830113 - - MI_Restricted_Substances - aa4540cb-3277-459f-a69a-ca324ddd0125 - - Glass ceramic (N0) - Glass ceramic (N0) - 549b49a4-59fe-4e55-983e-59f6201188c0 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - b960c1ca-3311-4ced-ab97-6bfb02fd2191 - Mass - 100.0 - - - - - 8.05084943 - - MI_Restricted_Substances - 2c2dc98a-ef9d-420d-aa00-25552c8f8bab - - S355J - Structural steel, S355J - 2a660257-441e-4c57-8125-05d3218ad94e - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 72ef15df-ca91-48a0-bbd7-1ebdfb8bdcd3 - Mass - 100.0 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - 9742cee8-239e-48ac-be60-9892713d4e00 - Mass - 100.0 - - - - - 8.05084943 - - MI_Restricted_Substances - 356303d7-c574-4db7-80f9-427e176a5308 - - 40CrMoV13-9, quenched & tempered - Low alloy steel, 40CrMoV13-9, quenched & tempered - a3459071-3026-41a8-a904-69f211082c8a - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - 7947cbf5-9a0f-4dfd-a747-1febff1d0340 - Mass - 100.0 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - d863c646-cf1e-4b41-82a6-a226ab0dec22 - Mass - 100.0 - - - - - - - 5.0 - 70.40568151 - 8d0be01b - part_8d0be01b-cd46-49cb-81ec-b2b4c50964cf - 8d0be01b-cd46-49cb-81ec-b2b4c50964cf - - - 7.14154662 - - MI_Restricted_Substances - 9ce914d8-75c1-4c5f-8c57-11c0e62b2cfa - - ASTM A299 Grade A - Structural steel, ASTM A299 Grade A - 780ef8f9-0a79-4f8b-94f4-f1d0c4dec462 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 08a232b4-2a98-4633-bbf3-baed71150706 - Mass - 100.0 - - - - - 11.60730667 - - MI_Restricted_Substances - b00ee3d8-d653-4c76-8154-c2f07820ceda - - As rolled - Carbon steel, AISI 1080, as rolled - 8ba7ceb6-645f-4fef-9c4a-c447e49d1da4 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - 01d0d6b3-f68f-416e-b445-f48b3a3ce19e - Length - 72.12147823 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - e1cde062-59c4-42ad-a43b-9c66e8760037 - Mass - 100.0 - - - - - 11.60730667 - - MI_Restricted_Substances - a371ea54-94e0-4a85-9b8a-856cf82f2e1d - - SAE 4130, cast, quenched & tempered - Low alloy steel, SAE 4130, cast, quenched & tempered - ed9f8659-9b73-4ff7-a9ac-e4273cb6ab76 - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - 7092b96c-cefa-4e67-8da6-9c7779335375 - Mass - 100.0 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 8c7953d2-68b5-4d7e-9f01-0d34f54c3fc2 - Mass - 100.0 - - - - - 11.60730667 - - MI_Restricted_Substances - 546a4247-5e3b-4adb-bc7e-3fc87f992447 - - Glass/phenolic honeycomb, 0°/90° fabric (0.055) - Glass/phenolic honeycomb, 0°/90° fabric (0.055), W Direction - f65d11fe-0f04-4ba2-ac2d-5542ec8c2670 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - 7580986d-3ee6-4c6a-9a94-6b99b6ed12f2 - Mass - 100.0 - - - - - 11.60730667 - - MI_Restricted_Substances - 1a53b354-59b1-4129-a78d-0bfe95923541 - - Normalized - Carbon steel, AISI 1117, normalized - 02a05e20-e8b9-4787-aeda-496e299a562e - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 3ec679b8-7a36-46ad-bdd5-4ba75842cb86 - Length - 81.29173921 - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - e29497ec-64a7-44e2-b3a8-b3f770ba7c78 - Area - 57.87178182 - - - - - 11.60730667 - - MI_Restricted_Substances - 54bbb9b3-efe0-473b-ac70-caea9951e470 - - Normalized - Carbon steel, AISI 1015, normalized - 8ad15042-122a-4394-bcb0-2a56ed110de8 - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - 2008b7c6-e12f-4136-9367-de9f2a6d072d - Mass - 100.0 - - - - - 11.60730667 - - MI_Restricted_Substances - 4b01d1e1-0f4c-4861-a797-7ea504ca38c4 - - Annealed - Low alloy steel, AISI 5150, annealed - c366e688-47cf-4eaf-acd3-370c008eea59 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - f616899b-8d17-422b-b9ba-090eb825b8f1 - Mass - 100.0 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 3e713ee4-69e8-40e1-9bd3-a2e20b2b66b0 - Area - 76.45302804 - - - - - 11.60730667 - - MI_Restricted_Substances - 181b484f-4ada-4e9e-8c47-103ae23d76c3 - - Quenched & tempered - Low alloy steel, AISI 8740, quenched & tempered - c5f7e172-3732-466c-8c3a-e6ecc194ca4f - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - fcb2b75a-217b-440e-a1cf-af410418a94e - Mass - 100.0 - - - - - 11.60730667 - - MI_Restricted_Substances - dfe65b4e-afb8-4397-a303-1266359ccfda - - Quenched & tempered - Low alloy steel, Hy-Tuf, quenched & tempered - 8c447b96-27ef-469f-bb52-4c30c221dc6c - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - b61e3ed4-60fa-43e8-8492-b21edf314aad - Mass - 100.0 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 45dd58ca-a1a6-4d56-a27e-39e6e13aab7c - Mass - 100.0 - - - - - - - 6.0 - 87.74853874 - fc816c81 - part_fc816c81-a4dd-4dbd-b057-77d33b2f6164 - fc816c81-a4dd-4dbd-b057-77d33b2f6164 - - - 81.51673291 - - MI_Restricted_Substances - 90514ab4-75b3-48a9-9a07-98eb8f83ef81 - - As rolled - Carbon steel, AISI 1015, as rolled - 19c6e2e4-b12f-4b6c-ab24-9d6ae0efe7a4 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 20d186fd-4564-4e69-be02-a1892a71baf7 - Mass - 100.0 - - - - - 3.69665341 - - MI_Restricted_Substances - 8643d806-94c5-42f9-9ffc-4c21a6e16bd0 - - Annealed - Carbon steel, AISI 1141, annealed - 99975f5e-3441-4c19-abe7-1213b862408f - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - 9adb3451-4da0-4f78-82b2-c2a889364b23 - MassRemoved - 64.34047048 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 08361ab9-fa03-427d-9348-179d5086d15d - Mass - 100.0 - - - - - 3.69665341 - - MI_Restricted_Substances - b067ed19-a836-41f7-9267-d9b04647d09f - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 5150, oil quenched & tempered at 650°C - 9b87de39-67d3-4897-880a-12702f2e28b5 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - 025f356b-b30a-47cf-b1f8-907108147f00 - Length - 59.37782254 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 8113c9c1-0bed-4c38-8ae7-0d1b761e7311 - Mass - 100.0 - - - - - 3.69665341 - - MI_Restricted_Substances - e8c6d73a-bd7a-4ef3-ae11-48e45d4a5515 - - Glass, E grade (0.4-12 micron monofilament, f) - Glass, E grade (0.4-12 micron monofilament, f) - cb5eb97c-7540-4e16-875d-0bb131bb3e50 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 8e626599-1413-442a-a50e-98fc9b5e5328 - Mass - 100.0 - - - - - 3.69665341 - - MI_Restricted_Substances - 53268754-75cd-4016-8ed0-2577d32f766e - - As rolled - Carbon steel, AISI 1060, as rolled - 04d19f03-af42-47d7-8f68-fe846602a7be - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - b2cfdd42-6c18-4810-b594-cf360f47cb55 - Mass - 93.58316324 - - - - - 3.69665341 - - MI_Restricted_Substances - 82eabba3-2697-4f74-a530-ae27f5e33ffe - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 50B46, oil quenched & tempered at 540°C - 10c7c9ea-394a-4280-8af9-bda6bfd5e307 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - 84fa5022-2526-4aa2-9fd1-4b989f0d0b21 - Mass - 100.0 - - - - - - - 3.0 - 75.57531887 - 6f4ea3c5 - part_6f4ea3c5-a560-45f6-85b8-efcc4021f17d - 6f4ea3c5-a560-45f6-85b8-efcc4021f17d - - - 29.57739738 - - MI_Restricted_Substances - f82520a6-b061-4bc7-b873-40211a51aca5 - - Glass/phenolic honeycomb, 0°/90° fabric (0.035) - Glass/phenolic honeycomb, 0°/90° fabric (0.035), L Direction - c60b55d8-4b8d-4131-a9b6-c56872672986 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 947e4440-d7c0-46d4-aa13-288ef2c8111e - Length - 5.59534584 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 7afbe458-61cb-451c-8c13-39a13573658c - Mass - 100.0 - - - - - 70.42260261 - - MI_Restricted_Substances - ae5812e1-18fd-4a4d-aaa2-a04ca5e84b7a - - YS400, hot rolled - Dual phase steel, YS400, hot rolled - 795d3e5d-15f9-4a9f-bea5-e2c87939073d - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - 2a150d7e-f85b-4124-a8f4-740f7c7d4a82 - Length - 35.41476942 - - - - - - - 6.0 - 43.720106 - - MI_Restricted_Substances - 544dcb08-b28a-4b6c-9af7-20182b64b0d5 - - 20e6b945 - part_20e6b945-da4f-4a53-8dff-867f7572e201 - 20e6b945-da4f-4a53-8dff-867f7572e201 - - - 1.0 - 47.33039566 - 70bb5351 - part_70bb5351-c3a4-4d02-8ddd-bab2abc64736 - 70bb5351-c3a4-4d02-8ddd-bab2abc64736 - - - 4.82301297 - - MI_Restricted_Substances - db7d255c-6269-4097-a5aa-e18a13019915 - - FR-4.0 (Df < 0.01 at 10GHz), Epoxy/Glass fiber, PCB laminate - FR-4.0 (Df < 0.01 at 10GHz), Epoxy/Glass fiber, PCB laminate - 8b451981-2b7a-4e40-9ac4-8c12fc1333fc - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - bd408aff-759c-48ed-9276-eadd50a0b216 - Mass - 69.31293316 - - - - - 23.79424675 - - MI_Restricted_Substances - dec2859d-9573-49bd-846a-5e2a288c063f - - Soda barium glass - Soda barium glass - 9f39f2a6-0599-4e0c-824c-79c6f486a44d - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - 53eae939-c16c-4057-8c64-f9c12cb2f5ef - MassRemoved - 45.08855787 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - c27ee4cd-2b72-4c46-b68a-9c1026279818 - Mass - 100.0 - - - - - 23.79424675 - - MI_Restricted_Substances - 6ad310ec-db2b-43b1-afa1-9b6ddae5880c - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 94B30, oil quenched & tempered at 425°C - e82ad814-b0c3-4722-9b6f-71ac40e64ee6 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 6b869a1e-25a3-43f4-bac6-3cff261c374f - Mass - 100.0 - - - - - 23.79424675 - - MI_Restricted_Substances - b4c065d7-6405-44fb-82cf-24ca2072f5c9 - - 300M (high carbon), quenched & tempered - Low alloy steel, 300M (high carbon), quenched & tempered - 4e99b4bd-16c5-4612-91cb-3952e0dc3898 - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - f4876557-b875-4b71-8d35-029df65ce865 - Area - 63.32292662 - - - - - 23.79424675 - - MI_Restricted_Substances - 9df55457-5300-4ddb-b92e-122b5c121621 - - Glass and mineral filled, encapsulation, molding - Novolac (glass and mineral filled, encapsulation, molding) - 3576fa9a-49e7-44f7-a99d-6775a875d4bd - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - d52732f0-161d-4e4c-8463-3a4e85c75d72 - Mass - 100.0 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - b2cb5a54-a8ee-4c3a-9a07-7e083363d2ee - Length - 34.49477727 - - - - - - - 7.0 - 57.09884486 - - MI_Restricted_Substances - 80083213-3621-42c0-9e23-cdaa30c759e6 - - 0fcb7c9e - part_0fcb7c9e-dbdd-4c19-ad50-ddf5a00e01c2 - 0fcb7c9e-dbdd-4c19-ad50-ddf5a00e01c2 - - - 6.0 - 45.43024434 - 0576d8c4 - part_0576d8c4-c39b-4493-b636-374dba713f25 - 0576d8c4-c39b-4493-b636-374dba713f25 - - - 83.05851755 - - MI_Restricted_Substances - 117e786a-5af5-40b0-9511-e7c38ca3cfc8 - - Glass/polyimide honeycomb, ±45° fabric (0.072) - Glass/polyimide honeycomb, ±45° fabric (0.072), W Direction - f8101f90-713a-4793-b01f-ad55639b49cb - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 1c3b25a1-0b5c-4e0e-890c-6563239f6ce2 - Mass - 100.0 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - 56b0591d-04d3-4e8b-b09e-4b9ccad5a5ad - Length - 28.86231715 - - - - - 16.94148244 - - MI_Restricted_Substances - 1d0ad45b-4da7-4c47-9850-754d0f67c02a - - Glass/polyimide honeycomb, ±45° fabric (0.096) - Glass/polyimide honeycomb, ±45° fabric (0.096), W Direction - 42bf9baa-39d4-483b-85de-46e4326430c5 - - - - MI_Restricted_Substances - afc9c377-790c-4e42-890a-aa942f1149fe - - Glass molding - Glass molding - 3faf0869-1db6-47e3-bc34-fc636587259d - Mass - 100.0 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - f16f3737-1e44-4ce0-a379-43b7f3ad7e4c - Mass - 100.0 - - - - - - - 9.0 - 46.75008759 - - MI_Restricted_Substances - a0987114-e9d2-4390-9d0f-e47283d2f4d0 - - c4325510 - part_c4325510-db9e-4f15-9ef8-66a97e028988 - c4325510-db9e-4f15-9ef8-66a97e028988 - - - 5.0 - 18.38959623 - - MI_Restricted_Substances - 544dcb08-b28a-4b6c-9af7-20182b64b0d5 - - 85107a1d - part_85107a1d-27db-4878-a5b4-fc404d4c5668 - 85107a1d-27db-4878-a5b4-fc404d4c5668 - - - 7.0 - 15.80560073 - c75365fa - part_c75365fa-98cf-40aa-9d90-68b2529b0508 - c75365fa-98cf-40aa-9d90-68b2529b0508 - - - 24.24988682 - - MI_Restricted_Substances - 01ec383d-8c37-48b7-80b4-e1f3106fae04 - - Alumino silicate - 1723 - Alumino silicate - 1723 - 0c05f18a-1f67-4ac8-b0da-7c71265eacd5 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 6798addc-42ba-4b2f-a691-c10c0bffb185 - Length - 76.79679294 - - - - - 18.93752829 - - MI_Restricted_Substances - a762be42-466e-4a8e-8819-d5270e44d056 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 5046, oil quenched & tempered at 425°C - ca4c6fb3-b09a-4c8d-9884-cf50c1071638 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - 71abf1c0-362e-4877-8785-be423591c697 - Mass - 100.0 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - 9caa083b-cce8-40d0-ba47-b8bffba47504 - Area - 24.17301532 - - - - - 18.93752829 - - MI_Restricted_Substances - e721d8b7-256a-4b7b-af09-6b40d8309979 - - water quenched & tempered at 425°C - Carbon steel, AISI 1040, water quenched & tempered at 425°C - 1c24ebe1-b57e-4c56-92e1-6df2174a2e0b - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 1675e5e7-c66b-420c-9bf8-e2949d6a1a7f - Mass - 100.0 - - - - - 18.93752829 - - MI_Restricted_Substances - e721d8b7-256a-4b7b-af09-6b40d8309979 - - water quenched & tempered at 425°C - Carbon steel, AISI 1040, water quenched & tempered at 425°C - df500fac-ba7d-42f6-894b-69ff466b31c7 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 6a1a0d20-cecf-47af-92be-015ee0b17539 - Mass - 100.0 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - d8b5098d-8109-4eb3-9ca4-c62419c9ffd3 - Area - 25.70968541 - - - - - 18.93752829 - - MI_Restricted_Substances - 9e6962c2-d850-4285-97e5-fbb27dbc0447 - - water quenched & tempered at 425°C - Carbon steel, AISI 1050, water quenched & tempered at 425°C - 5c28dcb5-193b-4e9c-8623-70f937166824 - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - ce5e29df-02de-4836-a411-8d4e080128c2 - Mass - 100.0 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - 5f382dc7-27c8-42c0-93e9-133ece0d9c5d - Mass - 100.0 - - - - - - - 9.0 - 49.85117011 - afe15050 - part_afe15050-4a7a-48cc-86c0-a34446c4d25e - afe15050-4a7a-48cc-86c0-a34446c4d25e - - - 100.0 - - MI_Restricted_Substances - 817b973c-3e12-4b5f-96b3-89b05d14d76c - - ASTM A500 Grade C - Structural steel, ASTM A500 Grade C - 471ba675-c826-419d-9111-c902a4a1d4cb - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - c3dd28cd-7242-433e-a8b9-f5ec656edb2f - MassRemoved - 74.79596351 - - - - - - - 9.0 - 79.07995198 - - MI_Restricted_Substances - 5fd070ef-bb1b-4857-abcf-7eda481ecfbe - - fd38543e - part_fd38543e-2ac8-46c6-9945-e879f1e6d043 - fd38543e-2ac8-46c6-9945-e879f1e6d043 - - - 4.0 - 91.7718531 - 2fc0eed1 - part_2fc0eed1-9aab-4b0e-8636-67dc838dec78 - 2fc0eed1-9aab-4b0e-8636-67dc838dec78 - - - 47.41551729 - - MI_Restricted_Substances - 06a05a3e-1419-430e-bd94-120296b4c49e - - Normalized - Low alloy steel, AISI 9255, normalized - a67754f0-ea35-42e0-9169-80df7eb59057 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 04f597ff-4d91-4149-8140-e709349f2e3f - Length - 68.8543889 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - e92babea-36ac-4c89-90e2-b88b7b14daee - Mass - 100.0 - - - - - 10.51689654 - - MI_Restricted_Substances - f931cdfe-568b-40b5-b238-ea22a815f312 - - ASTM A537 Class 1, normalized - Structural steel, ASTM A537 Class 1, normalized - 24ff9c57-a699-487d-b778-bc706c394c05 - - - - MI_Restricted_Substances - d47f86ae-f379-4017-8771-97b28590ffdc - - Painting, electrostatic - Painting, electrostatic - 9fed9a45-3a29-4476-805c-6edd642feb3e - Mass - 71.03776506 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 33605c7b-486e-47cd-81f3-681f399de83c - Mass - 100.0 - - - - - 10.51689654 - - MI_Restricted_Substances - 44a3cdc8-1092-45c0-be37-1802daa92d30 - - Borosilicate - 7052 - Borosilicate - 7052 - a8b12cda-618b-44bd-bc34-a9b0333ff458 - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - aa7cf824-fbef-48ca-84c5-ae19e80961ba - Mass - 100.0 - - - - - 10.51689654 - - MI_Restricted_Substances - 36e1311d-2e77-4147-8cf3-c4cdce6f6c7f - - Grade F9 - Alloy steel, 9Cr-1Mo, Grade F9 - 4c8622ed-a969-4911-b5bf-d1ff0098db47 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - c55b65b1-28c1-48ba-a11e-9cae31e736bb - MassRemoved - 9.68416845 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - 01fe6c09-b96c-48cc-9bbb-32ace592981c - Area - 56.775883 - - - - - 10.51689654 - - MI_Restricted_Substances - f0e0782d-fdaa-43d9-ab8f-24d22dc5b6dd - - Glass ceramic - 9608 - Glass ceramic - 9608 - 7bbdc680-6d10-4890-b5bf-03906ee4f30c - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - 0002114a-bdce-4ef1-9acc-ec6dc50574a2 - Area - 51.10335394 - - - - - 10.51689654 - - MI_Restricted_Substances - aec2777b-f126-4f12-b748-b94bf7393f2a - - Oil quenched & tempered at 650°C - Carbon steel, AISI 1060, oil quenched & tempered at 650°C - f1a82f7f-8728-4954-b9fb-caf45531c9f5 - - - - MI_Restricted_Substances - 7025a74a-dac9-42bf-aa0a-44b7ce517ba2 - - Autoclave molding - Autoclave molding - f5295f87-f76e-4f3a-922b-f14f6ec81595 - Mass - 100.0 - - - - - - - 2.0 - 85.74678403 - b1d8c895 - part_b1d8c895-0906-409d-99e6-4c5919fb9b6b - b1d8c895-0906-409d-99e6-4c5919fb9b6b - - - 3.2550883 - - MI_Restricted_Substances - e1d1747e-ff7a-4817-9dcc-e889d45170d7 - - ASTM A500 Grade B - Structural steel, ASTM A500 Grade B - 79f1b5c2-32ef-4860-90e7-30cbe94313be - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 30bb6304-7941-4b04-8e75-0618496f653b - Mass - 100.0 - - - - - 24.18622792 - - MI_Restricted_Substances - 91d7e1bd-d353-4eb1-9634-286e8e69d0d5 - - Oil quenched & tempered at 540°C - Carbon steel, AISI 1141, oil quenched & tempered at 540°C - 4fbd0d4b-53a4-4b73-91a8-783fd0110759 - - - - MI_Restricted_Substances - b2037938-23a3-42bc-a478-565dbd32a185 - - Deep drawing - Deep drawing - d376f895-8b83-43a1-82ff-1c938cb2c6a0 - Mass - 100.0 - - - - - 24.18622792 - - MI_Restricted_Substances - 1a7c6e51-066a-4f25-9c48-76ca6fbd8330 - - Glass ceramic - 9658 - Glass ceramic - 9658 - db2f5774-4815-4522-8fd0-cf95620dee65 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - 695799ab-341b-4eb6-a057-79255d347a9d - Mass - 100.0 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - ee9b5a3d-3387-4007-8c05-5b752e0712c4 - Mass - 100.0 - - - - - 24.18622792 - - MI_Restricted_Substances - 9b08ec7e-e481-47fa-a36b-849db7ef2432 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 8640, oil quenched & tempered at 425°C - 219af804-fba3-4969-95d9-15acd6d89103 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - c8e629d8-7f63-4bf7-a48d-1965f7221999 - Length - 96.11201239 - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 8857c24c-af73-48d3-81f8-550c4aa46582 - Mass - 100.0 - - - - - 24.18622792 - - MI_Restricted_Substances - 385dc8fe-7c8c-4fe3-9382-2a7182e05f0d - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 5130, oil quenched & tempered at 425°C - 7b333b0a-326f-4a21-afec-f792c08d4d8d - - - - MI_Restricted_Substances - 69a383ad-28fa-45ab-a76d-1316e4c1e6ce - - Wire drawing, ferrous - Wire drawing, ferrous metals - 9ffa563d-2079-4734-86f2-dba1ca12318c - Mass - 100.0 - - - - - - - 7.0 - 62.5718958 - - MI_Restricted_Substances - b49e47be-bf96-4bf1-9366-5c1b840267d4 - - 60239b93 - part_60239b93-5be2-4036-967e-2afeb7065fd6 - 60239b93-5be2-4036-967e-2afeb7065fd6 - - - 1.0 - 34.50788 - 5a030026 - part_5a030026-d9e8-4a55-9529-1de2a3eb8198 - 5a030026-d9e8-4a55-9529-1de2a3eb8198 - - - 42.03997028 - - MI_Restricted_Substances - 302db922-ffc4-4955-9a98-ddaa64c43d26 - - Borosilicate - 7720 - Borosilicate - 7720 - 56c9f4c4-33d4-4405-8dfe-36340475ce5f - - - - MI_Restricted_Substances - 41a35958-33c1-47d6-be77-02204fe25f91 - - Filament winding - Filament winding - d96f47c4-59ef-4dad-89d2-c976ed12a1d5 - Mass - 100.0 - - - - - 9.66000495 - - MI_Restricted_Substances - e62ec0fe-66ca-4b17-88d1-609c5568e318 - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 4340, oil quenched & tempered at 650°C - 369ebc5c-f45b-4a95-8dd5-80a361a5c326 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - 40b73cfe-a6a1-424a-9960-11449ecd040f - MassRemoved - 66.54452121 - - - - - 9.66000495 - - MI_Restricted_Substances - 2a821f5c-97b0-4a08-81b1-de3f1543fb44 - - Alkali strontium clear glass - Alkali strontium clear glass - bd589432-665c-4ef9-9d92-66b17a82eab6 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - b9fba68d-8a09-41e0-baab-68cc96db7559 - Mass - 100.0 - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - 9817b026-cd99-4ac4-91aa-7caa79f0c4c6 - MassRemoved - 21.93260529 - - - - - 9.66000495 - - MI_Restricted_Substances - 9e4c9bc1-b3b6-42dd-a32f-7af4e3190d72 - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 86B45, oil quenched & tempered at 205°C - 27d7103f-bcb4-4f37-820f-4a834cab7231 - - - - MI_Restricted_Substances - 407e4a5a-2729-42ed-a4a6-b520aeaa515a - - Prepreg production - Prepreg production - 5d53a7ab-207c-4801-bd76-31d384a9faae - Mass - 100.0 - - - - - 9.66000495 - - MI_Restricted_Substances - 874b8433-2e47-45c3-9c89-226428104214 - - Glass and mineral filled, heat resistant, molding - Novolac (glass and mineral filled, heat resistant, molding) - 6779227e-472b-405d-8086-e00c7a69ad00 - - - - MI_Restricted_Substances - 93b0b05f-5c7a-4d9a-8014-be68df0f3652 - - Machining, laser, YAG - Machining, laser, YAG - 3eca388a-b85a-4678-a38f-2f25f7b98507 - Length - 44.56747772 - - - - - 9.66000495 - - MI_Restricted_Substances - fce75b98-deb8-41ba-b343-cc7385cdac54 - - Normalized - Carbon steel, AISI 1050, normalized - e306def9-6d76-4a97-888f-d39b9974c797 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - 1d8cba15-9394-42a6-a029-556bcffab1f8 - Mass - 100.0 - - - - - 9.66000495 - - MI_Restricted_Substances - 2096ca77-9981-4fd5-9bc6-afe56b3bbbd4 - - Glass/phenolic honeycomb, 0°/90° fabric (0.096) - Glass/phenolic honeycomb, 0°/90° fabric (0.096), W Direction - 5795e66e-2a08-4228-bdb4-92539278f4f7 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - ea5d9b88-8e43-40da-a972-18d6fc15ed98 - Mass - 100.0 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - bbbc7617-982c-43f5-a5db-702f38e7ef69 - Mass - 100.0 - - - - - - - 5.0 - 85.55292356 - bc8e6ffa - part_bc8e6ffa-8b27-4321-8456-10bc4f3e7d19 - bc8e6ffa-8b27-4321-8456-10bc4f3e7d19 - - - 100.0 - - MI_Restricted_Substances - ccc92e6a-14f4-4ec6-9c3a-35ef3d6c9d8e - - Annealed - Carbon steel, AISI 1025, annealed - b64ecb2d-305d-4678-ad0f-08783eb2f374 - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - 5df561aa-20c7-4c4d-88c3-c0dc93b04997 - MassRemoved - 85.51604407 - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - 3f99c16f-500d-4cb8-969f-92035a8e9aae - Mass - 100.0 - - - - - - - 8.0 - 83.62618558 - 6a607cfd - part_6a607cfd-65b1-4917-8374-36d286e28ee4 - 6a607cfd-65b1-4917-8374-36d286e28ee4 - - - 68.80013997 - - MI_Restricted_Substances - bfd46ac9-4021-49b6-9656-d1e426bd1c79 - - Oil quenched & tempered at 205°C - Carbon steel, AISI 1340, oil quenched & tempered at 205°C - a7d39015-8698-4a5b-b3e0-e5b265a71b0e - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - f1f551c9-a71e-442a-b237-1b73837c0ad5 - Mass - 100.0 - - - - - 15.59993001 - - MI_Restricted_Substances - 0ff3d25e-2024-43a5-9654-bb095ad302ce - - YS260, cold rolled - Bake hardening steel, YS260, cold rolled - 08b7b0d1-0161-4afa-818d-142d5257881e - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - f4e8b684-fdbc-440b-bb16-bdd6e5dc66b1 - Mass - 100.0 - - - - MI_Restricted_Substances - 372bd8ce-5a17-4546-ab93-1c2926648012 - - Molding, injection and blow - Polymer molding, injection and blow - a92f3b13-cc3b-4fdd-ac36-a2e4cd214b22 - Mass - 100.0 - - - - - 15.59993001 - - MI_Restricted_Substances - 190cf17e-dbc1-40c7-a3d1-cc776977cb47 - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 50B46, oil quenched & tempered at 650°C - b353e0da-bc65-4e67-8422-3bce015ee9fd - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 995c18cc-f708-4937-b3bc-c4462d7a0f7f - Mass - 100.0 - - - - - - - 7.0 - 87.42586825 - - MI_Restricted_Substances - 2fcb534e-37c5-4b25-add8-ff02d2541953 - - c997a949 - part_c997a949-3734-4f78-9866-a447dfa7aa44 - c997a949-3734-4f78-9866-a447dfa7aa44 - - - 7.0 - 13.38140881 - 8e95a169 - part_8e95a169-d4b7-4e5d-bed6-a39cc76be1a5 - 8e95a169-d4b7-4e5d-bed6-a39cc76be1a5 - - - 32.83274454 - - MI_Restricted_Substances - 5dbabc2e-4263-4458-abe1-31a2ece9e122 - - Oil quenched & tempered at 425°C - Low alloy steel, AISI 5160, oil quenched & tempered at 425°C - 07e936d2-1016-4eb6-871b-573615c7c7c8 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - fd989855-85eb-43ef-93d9-84bc7a9a80dd - MassRemoved - 97.49687067 - - - - - 22.38908515 - - MI_Restricted_Substances - 0e008ce6-63df-4b25-81d6-02398cb9cc62 - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 8660, oil quenched & tempered at 540°C - 3a848f66-c7d2-4da9-80f8-1ed69363c023 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - 31563959-eb4b-46f7-a3d6-8b438a498e2b - Mass - 100.0 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - 1ba4994a-d2f9-4463-a80f-696a35e15e73 - Mass - 100.0 - - - - - 22.38908515 - - MI_Restricted_Substances - 00cd78de-6c78-46f3-81b3-ec03803fa034 - - Glass/phenolic honeycomb, ±45° fabric (0.048) - Glass/phenolic honeycomb, ±45° fabric (0.048), W Direction - 44fa0e99-bc9e-4595-a489-d2e166778188 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - 4337ff91-2af3-40da-a7fa-a67a94a428e9 - Area - 18.06445006 - - - - MI_Restricted_Substances - 8771a19f-4f18-42b8-9f50-db0acdfbc24a - - Powder coating - Powder coating - aff00a81-6a29-423f-95f3-99f6c4b2be77 - Area - 69.01545476 - - - - - 22.38908515 - - MI_Restricted_Substances - 53268754-75cd-4016-8ed0-2577d32f766e - - As rolled - Carbon steel, AISI 1060, as rolled - 6cb131f2-70f7-4b9c-b0b9-d120775abcb9 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - 443eccb7-655d-431a-b524-43bed794f997 - Length - 68.81505705 - - - - - - - 6.0 - 76.04350451 - cae856bf - part_cae856bf-64b8-4a2c-b9ce-63fcd115b52e - cae856bf-64b8-4a2c-b9ce-63fcd115b52e - - - 25.04865025 - - MI_Restricted_Substances - d424fe56-b6f6-42c2-99fb-3e92da8ce70b - - Molding, glass filled - DAP (molding, glass filled) - 223cf977-1df7-49b8-82f4-67945bd2c3d3 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - 668935b6-9930-4325-ad98-0c8a54f077d5 - Mass - 100.0 - - - - - 74.95134974 - - MI_Restricted_Substances - dec7564b-7c27-43fc-9f05-8965e384367a - - Oil quenched & tempered at 540°C - Low alloy steel, AISI 51B60, oil quenched & tempered at 540°C - a6f0b2b1-608e-409c-96fc-733c8873de63 - - - - MI_Restricted_Substances - baa6c95b-ff0e-4811-9120-92717ee15bda - - Casting - Metal casting - 3707a636-2e10-452a-89ec-51b15cb875bc - Mass - 100.0 - - - - - - - 8.0 - 66.34370254 - 56b4f594 - part_56b4f594-a9e8-4e3b-a813-588e42dafa72 - 56b4f594-a9e8-4e3b-a813-588e42dafa72 - - - 0.61400756 - - MI_Restricted_Substances - 211ae46e-0827-4d61-af66-5a72c42d0cd8 - - T-glass - T-glass - 2c65e5f7-741d-487a-869b-1726fa6a37bd - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - d53e38b8-5876-49b8-a484-90c4c6a2a731 - Mass - 100.0 - - - - - 14.19799891 - - MI_Restricted_Substances - 408a337f-8eb7-4225-96bd-1225da437143 - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 5140, oil quenched & tempered at 315°C - be0900d2-62f9-4365-85e4-463b8bd776dd - - - - MI_Restricted_Substances - 409a6c9f-0562-4a32-9b1f-98e1121d670f - - Powder forming - Metal powder forming - 721a16f9-1256-4322-99e8-1774a6202966 - Mass - 100.0 - - - - - 14.19799891 - - MI_Restricted_Substances - 0f82772a-b4f0-4ed3-a8cc-6c721ad4b9ac - - Potash soda zinc - Potash soda zinc - 34bdc8cb-ae4d-4f37-bbf5-dd6894e95004 - - - - MI_Restricted_Substances - 02457dd3-a814-4ea4-93f3-42d66da5182d - - Resin transfer molding (RTM) - Resin transfer molding (RTM) - 644495c6-0047-4cd5-b2a2-748aa6ecdb0d - Mass - 100.0 - - - - - 14.19799891 - - MI_Restricted_Substances - 2096ca77-9981-4fd5-9bc6-afe56b3bbbd4 - - Glass/phenolic honeycomb, 0°/90° fabric (0.096) - Glass/phenolic honeycomb, 0°/90° fabric (0.096), W Direction - cbd9105b-8a92-41b8-8c1e-00601241859a - - - - MI_Restricted_Substances - 6c3d9c10-23c6-411a-9533-f0e06c41875c - - Adhesive - Adhesive - 38a3b737-2b6e-401e-8465-5e1ed7619f2b - Mass - 59.02108599 - - - - MI_Restricted_Substances - b3c0204b-ef92-4262-b5a2-e1e00a7aba9f - - Electroplating - Electroplating - a711d2a6-d325-40d0-8164-b4eeaa30d36b - Area - 55.37040985 - - - - - 14.19799891 - - MI_Restricted_Substances - 1d5dd59c-75a0-4bf2-8862-7d77996aa0be - - Annealed - Low alloy steel, AISI 8650, annealed - 5bb492cb-1d62-4f49-bcdc-a43831448785 - - - - MI_Restricted_Substances - 996579d2-d2b6-420b-bf86-8c6389105dce - - Machining, laser, CO2 - Machining, laser, CO2 - 3b618581-8302-4403-967c-a81638512e9f - Length - 31.76988099 - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - cffc250d-acec-41ed-b562-6c6dddf00ed4 - MassRemoved - 11.27117574 - - - - - 14.19799891 - - MI_Restricted_Substances - 91d7e1bd-d353-4eb1-9634-286e8e69d0d5 - - Oil quenched & tempered at 540°C - Carbon steel, AISI 1141, oil quenched & tempered at 540°C - 019601ba-d111-4682-88b5-004b2a41848e - - - - MI_Restricted_Substances - 907bda29-e800-44f6-b7ea-4eb8e7cff375 - - Machining, coarse - Machining, coarse - 2f0ea54d-7e78-4a80-8655-3b9e1bd1d721 - MassRemoved - 50.96258011 - - - - - 14.19799891 - - MI_Restricted_Substances - d411a96b-aa1c-4651-a405-5a2bc5c32dff - - Modified, Grade 91 - Alloy steel, 9Cr-1Mo-V, modified, Grade 91 - a86b311d-7528-4d4c-b2a3-da67f2e81884 - - - - MI_Restricted_Substances - 712f59e1-e74d-4258-8793-d15305a8ca5f - - Cutting and trimming - Cutting and trimming - 1f845714-341b-442d-aa4a-d1ba844719b5 - Area - 55.85276333 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - 1c595b1c-d4de-4e19-90bd-b8323a12e1e6 - Length - 74.53206976 - - - - - 14.19799891 - - MI_Restricted_Substances - 5169a157-0d18-4d45-b197-799e06aa00bc - - Oil quenched & tempered at 315°C - Low alloy steel, AISI 9255, oil quenched & tempered at 315°C - 3c82221e-f220-447b-8353-fbc156f544ed - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 0e962534-eaab-491a-b461-aff65ecbe25e - Mass - 100.0 - - - - - - - 3.0 - 43.26838475 - 034ae570 - part_034ae570-6b72-4588-8858-d05fe8ec4265 - 034ae570-6b72-4588-8858-d05fe8ec4265 - - - 64.11856034 - - MI_Restricted_Substances - a89802d6-13c5-496d-b139-57ae43e6591c - - As rolled - Carbon steel, AISI 1022, as rolled - 2430abfe-a4d5-450e-b249-b1ff3006f50d - - - - MI_Restricted_Substances - 9b5b1824-f11e-449e-9a3f-f6a75396ac87 - - Machining, grinding - Machining, grinding - ab0dc822-7a2f-4f1d-8319-46a360810b4e - MassRemoved - 97.34478066 - - - - - 7.17628793 - - MI_Restricted_Substances - e86ced85-7d75-4b62-8f8e-90bd345ae003 - - Normalized - Low alloy steel, AISI 5140, normalized - 2aacd7fb-6f52-4112-9e9f-2718f5f9ac37 - - - - MI_Restricted_Substances - 05d6df4a-8519-42ee-91fe-a0d37cba623e - - Resin spray-up - Resin spray-up - 49bc9837-9417-4b98-aec6-9353098a48a1 - Mass - 100.0 - - - - - 7.17628793 - - MI_Restricted_Substances - 021e3fde-941b-4d44-bc55-a1c5a346d6d9 - - Quenched & tempered - Intermediate alloy, Fe-9Ni-4Co-0.20C steel, quenched & tempered - e3d1ac3a-608f-4766-b1ae-c521602c3f52 - - - - MI_Restricted_Substances - 21941b5e-fdbc-47fe-8180-809bb42e5e0a - - Welding, electric - Welding, electric - 6f34c420-447e-43ac-87f4-ebbd6fd1e91d - Length - 18.83378346 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 1945f590-e5fa-461a-884e-e9bf4ca3d301 - Mass - 100.0 - - - - - 7.17628793 - - MI_Restricted_Substances - 19b67562-02fa-47ea-8fba-af5b14d1fafa - - Oil quenched & tempered at 650°C - Low alloy steel, AISI 4042, oil quenched & tempered at 650°C - 584c4675-c341-4e74-a273-9fbaa509f17b - - - - MI_Restricted_Substances - 463cb9d8-1381-4e6e-a2a7-08868e6ff949 - - Chemical vapor deposition (CVD) - Chemical vapor deposition (CVD) - d4c6f167-a12a-4b18-af27-9bb9c9ac9770 - Mass - 100.0 - - - - - 7.17628793 - - MI_Restricted_Substances - 410f0fc7-aeda-4f4e-bb83-0595b7ba09d0 - - Solution treated - Iron-base-superalloy, N-155, solution treated - 85173ead-dc76-4602-9409-e0d379bc5f67 - - - - MI_Restricted_Substances - 2f8fe979-663f-4941-b30f-a7be0d3dd782 - - Welding, gas - Welding, gas - f3ed9441-ef86-45c4-85da-a71c014cdb35 - Length - 0.33939192 - - - - - 7.17628793 - - MI_Restricted_Substances - 7b1fcb28-a127-417b-978f-6a5c58305d24 - - Annealed - Carbon steel, AISI 1118, annealed - 396fd799-d5c0-44ef-85fb-309959f4e4b9 - - - - MI_Restricted_Substances - 021eec1f-0ac8-433b-8cf3-34ecc421624c - - Extrusion - Polymer extrusion - 06fab3de-256c-48f9-93a7-1b2849ca4b4f - Mass - 100.0 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - b85a77bf-b67d-4805-bef6-1176e4ab66c5 - Mass - 100.0 - - - - - - - 9.0 - 9.62305595 - 892d8144 - part_892d8144-5af7-4433-a93d-2c0fd1355046 - 892d8144-5af7-4433-a93d-2c0fd1355046 - - - 9.13059465 - - MI_Restricted_Substances - c19a6c59-b937-499d-ac22-fe742ae42287 - - As rolled - Carbon steel, AISI 1117, as rolled - 5edc8f84-3ef2-456f-8007-b3db426f53c6 - - - - MI_Restricted_Substances - 50da053b-a0d5-4461-af9a-cd0c6670c720 - - Compression molding - Compression molding - 68a418f0-f161-4882-9578-a7e1abef180a - Mass - 100.0 - - - - MI_Restricted_Substances - 03de1a28-7dd7-4354-bbd8-c839cfa00ec7 - - Machining, fine - Machining, fine - 38b2029f-3112-4b68-a716-d1fe6554d580 - MassRemoved - 0.80578122 - - - - - 45.43470267 - - MI_Restricted_Substances - 6e5c3f76-3954-45fb-bd02-a4b4203f29ee - - Normalized - Low alloy steel, AISI 3140, normalized - a59c9c63-bbc8-4b08-874c-432f04b3f67a - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 27435063-ed4f-4b17-9d26-35642427bfdb - Mass - 100.0 - - - - MI_Restricted_Substances - 92f90382-610a-4737-a18f-b153ea88e4ad - - Extrusion, hot - Metal extrusion, hot - 96848ba2-a5ef-4328-afe2-6f8989a9c358 - Mass - 100.0 - - - - - 45.43470267 - - MI_Restricted_Substances - 5e96987a-3cc6-4330-bccc-e8d163c47831 - - Normalized - Low alloy steel, AISI 9310, normalized - 18fd487b-24b7-40be-bb09-bf7e916c2729 - - - - MI_Restricted_Substances - ef4fee98-657d-4be0-bb83-1daaeb844034 - - Vacuum assisted resin infusion (VARI) - Vacuum assisted resin infusion (VARI) - 18cb0958-5b95-4080-992c-80f3553253d3 - Mass - 100.0 - - - - MI_Restricted_Substances - 39dc4cba-6cb3-4d24-bbf9-9c4f7b8cb89a - - Rolling and forging - Metal rolling and forging - 774c39fc-977e-4097-81a8-c5c5cc995da4 - Mass - 100.0 - - - - - - - 6.0 - 9.89473164 - fef19823 - part_fef19823-f258-40d3-b7d7-7d59f9d377cf - fef19823-f258-40d3-b7d7-7d59f9d377cf - - - 100.0 - - MI_Restricted_Substances - 74df2f0b-340a-4267-a759-197069aea298 - - Oil quenched & tempered at 205°C - Low alloy steel, AISI 8740, oil quenched & tempered at 205°C - 044eedee-721e-4717-9291-b816ab286628 - - - - MI_Restricted_Substances - 0a4d9a81-f162-4dce-922d-f93fa16be965 - - Matched die (preform) molding - Matched die (preform) molding - 1751808a-1424-41e4-b362-35afdc7c2003 - Mass - 100.0 - - - - - - - - - - - Factory to port - - MI_Restricted_Substances - c29ab353-2bd5-4964-b577-a0e4cfb4d284 - - 7777000000.0 - - - Port to center - - MI_Restricted_Substances - c29ab353-2bd5-4964-b577-a0e4cfb4d284 - - 9999.0 - - - \ No newline at end of file diff --git a/tests/inputs/bom-2301.xml b/tests/inputs/bom-2301.xml deleted file mode 100644 index a1431ba0..00000000 --- a/tests/inputs/bom-2301.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - 1.0 - PartOne - PartOne - 1686152405220|5 - - - 1.0 - 2.0 - PartTwo - PartTwo - 1686152405220|16 - - - 2.0 - - MI_Restricted_Substances - 8dc38bb5-eff9-4c60-9233-271a3c8f6270 - - steel-kovar-annealed - High alloy steel, Kovar, annealed - 1686152405220|14 - - - - MI_Restricted_Substances - d986c90a-2835-45f3-8b69-d6d662dcf53a - - Coarse Machining - Coarse Machining - 1977190729730|4 - MassRemoved - 0.05 - - - - - - - - - - Example - - \ No newline at end of file diff --git a/tests/test_bom_handler.py b/tests/test_bom_handler.py index b6f71835..3ca026ab 100644 --- a/tests/test_bom_handler.py +++ b/tests/test_bom_handler.py @@ -60,7 +60,7 @@ def _compare_boms(*, source_bom: str, result_bom: str): @pytest.mark.parametrize( "bom_filename", - ["drill.xml", "medium-test-bom.xml", "bom-2301.xml", "bom-2301-complex.xml"], + ["drill.xml", "medium-test-bom.xml"], ) def test_roundtrip(self, bom_filename: str): bom_path = self._bom_location / bom_filename From e6345ab7210c47391873b3009151ecd0f8680e78 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Wed, 11 Oct 2023 16:22:51 +0200 Subject: [PATCH 110/275] Improve sustainability integration tests --- tests/test_integration_tests.py | 207 +++++++++++++++++++++++++++++++- 1 file changed, 202 insertions(+), 5 deletions(-) diff --git a/tests/test_integration_tests.py b/tests/test_integration_tests.py index 4e3ec8bb..4e1866a0 100644 --- a/tests/test_integration_tests.py +++ b/tests/test_integration_tests.py @@ -3,7 +3,7 @@ from ansys.grantami.bomanalytics import GrantaMIException, queries from .common import INDICATORS, LEGISLATIONS -from .inputs import sample_bom_2301_complex, sample_bom_complex, sample_bom_custom_db +from .inputs import sample_bom_2301, sample_bom_complex, sample_bom_custom_db pytestmark = pytest.mark.integration @@ -202,23 +202,220 @@ def test_legislation_is_not_affected_with_no_links(self, connection_custom_db): assert len(response.impacted_substances) == 0 +DEFAULT_TOLERANCE = 0.01 + + # TODO test with custom db? class TestSustainabilityBomQueries: + def _check_percentages_add_up(self, items): + assert sum(item.embodied_energy_percentage for item in items) == pytest.approx(100) + assert sum(item.climate_change_percentage for item in items) == pytest.approx(100) + def test_sustainability_summary_query(self, connection): query = queries.BomSustainabilitySummaryQuery() - query.with_bom(sample_bom_2301_complex) + query.with_bom(sample_bom_2301) response = connection.run(query) + # TODO check no warnings, CR-1388 + # assert not response.messages + assert response.process.name == "Processes" assert response.material.name == "Material" assert response.transport.name == "Transport" assert len(response.phases_summary) == 3 + # Check overall percentages add up + self._check_percentages_add_up(response.phases_summary) + + # Check expected summaries for materials assert len(response.material_details) == 3 - all_others = next(mat for mat in response.material_details if mat.identity == "Other") + material_names = [m.identity for m in response.material_details] + expected_material_names = ["beryllium-beralcast191-cast", "stainless-astm-cn-7ms-cast", "steel-1010-annealed"] + assert all(expected_name in material_names for expected_name in expected_material_names) + self._check_percentages_add_up(response.material_details) + + # Spot check one material summary + beryllium_summary = next(m for m in response.material_details if m.identity == "beryllium-beralcast191-cast") + assert len(beryllium_summary.contributors) == 1 + assert ( + beryllium_summary.contributors[0].name is None + ) # TODO: define names in example bom or create ticket to use part number? + assert beryllium_summary.contributors[0].material_mass_before_processing.value == pytest.approx(0.027027027) + assert beryllium_summary.mass_after_processing.value == pytest.approx(0.024) + assert beryllium_summary.mass_before_processing.value == pytest.approx(0.027027027) + assert beryllium_summary.record_guid is not None + assert beryllium_summary.climate_change.value == pytest.approx(15.52, DEFAULT_TOLERANCE) + assert beryllium_summary.climate_change_percentage == pytest.approx(54.32, DEFAULT_TOLERANCE) + assert beryllium_summary.embodied_energy.value == pytest.approx(117.55, DEFAULT_TOLERANCE) + assert beryllium_summary.embodied_energy_percentage == pytest.approx(41.04, DEFAULT_TOLERANCE) + + # TODO processes aggregation will be updated + # Check expected summaries for primary processes + assert len(response.primary_processes_details) == 4 + expected_primary_processes = [ + ("Primary processing, Casting", "steel-1010-annealed"), + ("Primary processing, Casting", "stainless-astm-cn-7ms-cast"), + ("Primary processing, Casting", "stainless-astm-cn-7ms-cast"), + ("Other", None), + ] + primary_processes = [(p.process_name, p.material_identity) for p in response.primary_processes_details] + assert primary_processes == expected_primary_processes + self._check_percentages_add_up(response.primary_processes_details) + + # Spot check primary process + primary_process = response.primary_processes_details[0] + assert primary_process.climate_change.value == pytest.approx(14.54, DEFAULT_TOLERANCE) + assert primary_process.embodied_energy.value == pytest.approx(210.68, DEFAULT_TOLERANCE) + assert primary_process.climate_change_percentage == pytest.approx(39.40, DEFAULT_TOLERANCE) + assert primary_process.embodied_energy_percentage == pytest.approx(39.22, DEFAULT_TOLERANCE) + assert primary_process.material_reference.record_guid is not None + assert primary_process.process_reference.record_guid is not None + + # Check expected summaries for secondary processes + assert len(response.secondary_processes_details) == 5 + expected_secondary_processes = [ + ("Secondary processing, Grinding", "steel-1010-annealed"), + ("Secondary processing, Machining, coarse (D)", "stainless-astm-cn-7ms-cast"), + ("Machining, fine", "steel-1010-annealed"), + ("Machining, fine", "stainless-astm-cn-7ms-cast"), + ("Other", None), + ] + secondary_processes = [(p.process_name, p.material_identity) for p in response.secondary_processes_details] + assert secondary_processes == expected_secondary_processes + self._check_percentages_add_up(response.secondary_processes_details) + + # Spot check secondary process + secondary_process = response.secondary_processes_details[0] + assert secondary_process.climate_change.value == pytest.approx(0.137, DEFAULT_TOLERANCE) + assert secondary_process.embodied_energy.value == pytest.approx(2.12, DEFAULT_TOLERANCE) + assert secondary_process.climate_change_percentage == pytest.approx(43.15, DEFAULT_TOLERANCE) + assert secondary_process.embodied_energy_percentage == pytest.approx(46.48, DEFAULT_TOLERANCE) + assert secondary_process.material_reference.record_guid is not None + assert secondary_process.process_reference.record_guid is not None + + # Check expected summaries for J&F processes + assert len(response.joining_and_finishing_processes_details) == 1 + jf_process = response.joining_and_finishing_processes_details[0] + + # Spot check one J&F process + assert jf_process.process_name == "Joining and finishing, Welding, electric" + assert jf_process.material_identity is None + assert jf_process.climate_change.value == pytest.approx(0.23, DEFAULT_TOLERANCE) + assert jf_process.embodied_energy.value == pytest.approx(3.21, DEFAULT_TOLERANCE) + assert jf_process.climate_change_percentage == 100.0 + assert jf_process.embodied_energy_percentage == 100.0 + assert jf_process.process_reference.record_guid is not None + + # Check transports + assert len(response.transport_details) == 3 + self._check_percentages_add_up(response.transport_details) + transports = [t.name for t in response.transport_details] + assert transports == [ + "Port to airport by truck", + "Country 1 to country 2 by air", + "Airport to distributor by truck", + ] + + # Spot check one transport + transport = response.transport_details[0] + assert transport.climate_change.value == pytest.approx(0.345, DEFAULT_TOLERANCE) + assert transport.embodied_energy.value == pytest.approx(5.23, DEFAULT_TOLERANCE) + assert transport.climate_change_percentage == pytest.approx(6.44, DEFAULT_TOLERANCE) + assert transport.embodied_energy_percentage == pytest.approx(6.809, DEFAULT_TOLERANCE) + assert transport.distance.value == 350.0 def test_sustainability_query(self, connection): query = queries.BomSustainabilityQuery() - query.with_bom(sample_bom_2301_complex) + query.with_bom(sample_bom_2301) response = connection.run(query) - p = 1 + + # TODO check no warnings, CR-1388 + # assert not response.messages + + # Check hierarchy + assert len(response.parts) == 1 + + # Product + product = response.parts[0] + assert not product.processes + assert not product.materials + assert not product.specifications + assert not product.substances + + assert product.input_part_number == "Part1[ProductAssembly]" + assert product._reference_value is None + assert product.reported_mass.value == pytest.approx(4.114, DEFAULT_TOLERANCE) + assert product.climate_change.value == pytest.approx(71.40, DEFAULT_TOLERANCE) + assert product.embodied_energy.value == pytest.approx(908.04, DEFAULT_TOLERANCE) + + assert len(product.parts) == 5 + + # Subassembly + subassembly = product.parts[0] + assert len(subassembly.parts) == 2 + assert len(subassembly.processes) == 1 + assert not subassembly.materials + assert not subassembly.specifications + assert not subassembly.substances + + assert subassembly.input_part_number == "Part1.1[SubAssembly]" + assert subassembly._reference_value is None + assert subassembly.reported_mass.value == pytest.approx(1.45, DEFAULT_TOLERANCE) + assert subassembly.climate_change.value == pytest.approx(29.996, DEFAULT_TOLERANCE) + assert subassembly.embodied_energy.value == pytest.approx(419.21, DEFAULT_TOLERANCE) + + # JF process + jf_process = subassembly.processes[0] + assert jf_process.climate_change.value == pytest.approx(0.23, DEFAULT_TOLERANCE) + assert jf_process.embodied_energy.value == pytest.approx(3.217, DEFAULT_TOLERANCE) + assert jf_process.record_guid is not None + + # Leaf part + leaf_part = product.parts[1] + + assert not leaf_part.parts + assert not leaf_part.processes + assert len(leaf_part.materials) == 1 + assert not leaf_part.specifications + assert not leaf_part.substances + + assert leaf_part.input_part_number == "Part1.A[LeafPart]" + assert leaf_part._reference_value is None + assert leaf_part.climate_change.value == pytest.approx(1.64, DEFAULT_TOLERANCE) + assert leaf_part.embodied_energy.value == pytest.approx(23.23, DEFAULT_TOLERANCE) + assert leaf_part.reported_mass.value == pytest.approx(0.61, DEFAULT_TOLERANCE) + + # Leaf part -> Material + material = leaf_part.materials[0] + + assert len(material.processes) == 2 + assert not material.substances + + assert material.record_guid is not None + assert material.climate_change.value == pytest.approx(0.939, DEFAULT_TOLERANCE) + assert material.embodied_energy.value == pytest.approx(12.63, DEFAULT_TOLERANCE) + assert material.reported_mass.value == pytest.approx(0.61, DEFAULT_TOLERANCE) + assert material.recyclable is True + assert material.functional_recycle is True + assert material.biodegradable is False + + # Primary process + primary_process = material.processes[0] + assert primary_process.record_guid is not None + assert primary_process.climate_change.value == pytest.approx(0.643, DEFAULT_TOLERANCE) + assert primary_process.embodied_energy.value == pytest.approx(9.908, DEFAULT_TOLERANCE) + + # Secondary process + secondary_process = material.processes[1] + assert secondary_process.record_guid is not None + assert secondary_process.climate_change.value == pytest.approx(0.0597, DEFAULT_TOLERANCE) + assert secondary_process.embodied_energy.value == pytest.approx(0.696, DEFAULT_TOLERANCE) + + # Transports + assert len(response.transport_stages) == 3 + # TODO Check all transport names (CR-1399) + + transport = response.transport_stages[0] + assert transport.climate_change.value == pytest.approx(0.345, DEFAULT_TOLERANCE) + assert transport.embodied_energy.value == pytest.approx(5.23, DEFAULT_TOLERANCE) + assert transport.record_guid is not None From 0cf0fd2d5503ab4c67f50bb9fc95fcd9a8e575dc Mon Sep 17 00:00:00 2001 From: Andy Grigg Date: Wed, 11 Oct 2023 15:24:13 -0400 Subject: [PATCH 111/275] Fix error message --- tests/test_integration_tests.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/test_integration_tests.py b/tests/test_integration_tests.py index 349c6ccb..94b10369 100644 --- a/tests/test_integration_tests.py +++ b/tests/test_integration_tests.py @@ -119,9 +119,8 @@ def test_missing_database_raises_grantami_exception(self, connection_missing_db) query = ( queries.MaterialImpactedSubstancesQuery().with_material_ids(["mat_id"]).with_legislation_ids(LEGISLATIONS) ) - with pytest.raises(GrantaMIException) as e: + with pytest.raises(GrantaMIException, match="Database with key 'MI_Missing_Database' does not exist."): connection_missing_db.run(query) - assert str(e.value) == "DatabaseException encountered: Database with key 'MI_Missing_Database' does not exist." def test_missing_table_raises_grantami_exception(connection): From 3344e4cf74526b78505606f05ab6b245d1185c31 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 12 Oct 2023 10:29:30 +0200 Subject: [PATCH 112/275] PR feedback --- tests/inputs/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/inputs/__init__.py b/tests/inputs/__init__.py index e0001dd8..c1cd59fb 100644 --- a/tests/inputs/__init__.py +++ b/tests/inputs/__init__.py @@ -13,7 +13,7 @@ sample_bom_custom_db = sample_bom_complex.replace("MI_Restricted_Substances", "MI_Restricted_Substances_Custom_Tables") -repository_root = pathlib.Path(__file__).parent.parent.parent +repository_root = pathlib.Path(__file__).parents[2] _bom_2301_path = repository_root / "examples" / "4_Sustainability" / "supporting-files" / "bom-2301-assembly.xml" with open(_bom_2301_path, "r") as f: From 653fa6bd7e8d9d9b56765c062afab0a5349f5be7 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 12 Oct 2023 10:39:28 +0200 Subject: [PATCH 113/275] Apply language suggestions from code review Co-authored-by: Andy Grigg --- .../3-5_Using_the_BoM_builder.py | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/examples/3_Advanced_Topics/3-5_Using_the_BoM_builder.py b/examples/3_Advanced_Topics/3-5_Using_the_BoM_builder.py index 30b69fb7..ddf98c9e 100644 --- a/examples/3_Advanced_Topics/3-5_Using_the_BoM_builder.py +++ b/examples/3_Advanced_Topics/3-5_Using_the_BoM_builder.py @@ -20,7 +20,7 @@ # Although it is unlikely that the data structures and processing presented here match your # requirements, this example is intended to demonstrate the principles behind using the BoM -# schema python bindings within your existing processes. It shows how a BoM-like data structure +# schema Python bindings within your existing processes. It shows how a BoM-like data structure # can be loaded from a neutral format and converted to the XML format expected by the Granta # MI BoM Analytics API. The approach is applicable to data in other formats, or data loaded # from other software platform APIs. @@ -49,15 +49,15 @@ # ## Inspect the external data # The external data source defines a flat list of items. Each item has a ``type`` field, identifying the type of the # item, a ``parent_part_identifier`` identifying the parent part in the hierarchy, as well as fields specific to each -# type of items. +# type of item. # # ### Components # The external data source defines multiple types of component: # -# - a single item of type ``Product``. The external data source describes the bill of materials for this product. All +# - A single item of type ``Product``. The external data source describes the bill of materials for this product. All # other items are expected to be children of this item. -# - items of type ``Assembly``. -# - items of type ``Part``. +# - Items of type ``Assembly``. +# - Items of type ``Part``. # source_product = next(item for item in data if item["type"] == "Product") @@ -123,7 +123,7 @@ # ## Build the BillOfMaterials # # The PyGranta BoM Analytics package provides a sub-package ``bom_types``, which implement Python bindings for the BoM -# XML schema. It facilitates serialization and deserialization of Granta MI BoMs into and from Python objects. +# XML schema. It facilitates serialization and deserialization of Granta MI BoMs to and from Python objects. # This section shows how data from the external data source is processed to create BoM Python objects, which can then # be used to generate an XML BoM. @@ -136,11 +136,11 @@ # ### Components # -# The third-party system defines a ``part_identifier`` field that uniquely identifies parts. On the other hand, the +# The third-party system defines a ``part_identifier`` field that uniquely identifies parts. However, the # Granta MI BoM schema requires a Part to define a ``Part number``. We will use the external ``part_identifier`` as a # part number. -# First, create a ``bom_types.Part`` object for every item that maps to a BoM Part, and add it to a mapping indexed -# by the part number. This will later allow to add materials and processes to the parts using the parent part identifier +# First, create a ``bom_types.Part`` object for every item that maps to a BoM Part, and add it to a mapping indexed +# by the part number. This will allow us to identify the correct parent part to add materials and processes to. # as an index. # + @@ -180,9 +180,9 @@ pprint(components) # Now that all the parts have been instantiated, the hierarchy can be defined. While the external data source defines -# hierarchy using a field in each item in the falat data structure, a Granta MI BoM represents hierarchy by nesting -# objects. The following cell iterates over all source parts and assemblies again, and append child parts to their -# parents ``components`` property. +# the hierarchy using references between objects in a flat data structure, a Granta MI BoM represents the hierarchy by including a child object as an property of the parent. +# object. The following cell iterates over all source parts and assemblies again, and appends child parts to their +# parents' ``components`` property. # + for item in source_assemblies + source_parts: @@ -225,7 +225,7 @@ # to ensure that they are added to the ``Part`` in the same order as defined by the external data source. # # The example external data only includes one type of part processes, which are quantified using a length. The Granta -# MI BoM schema has support for multiple ``DimensionType`` value: this is to represent the impact of a process based +# MI BoM schema has support for different ``DimensionType`` values: this is to represent the impact of a process based # on its most representative dimension. For example, welding generally is defined by the welding path length, whereas # a coating operation is best quantified by the affected surface area. # A simple mapping defines a lookup between the unit found in the external data source and the dimension type used in @@ -305,7 +305,7 @@ # ### BillOfMaterials # # Now that the all parts, materials, and processes have been processed and redefined in a hierarchical structure, build -# a ``BillOfMaterials`` object, and assign the top-level product as the single component, and add the transport stages, +# a ``BillOfMaterials`` object, assign the top-level product as the single component, and add the transport stages, # which apply to the whole product. # + From a9fe4df005523426a2083d576e359bfaf0c5707f Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 12 Oct 2023 10:49:18 +0200 Subject: [PATCH 114/275] Add delimiters and fix comments --- .../3-5_Using_the_BoM_builder.py | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/examples/3_Advanced_Topics/3-5_Using_the_BoM_builder.py b/examples/3_Advanced_Topics/3-5_Using_the_BoM_builder.py index ddf98c9e..e8103687 100644 --- a/examples/3_Advanced_Topics/3-5_Using_the_BoM_builder.py +++ b/examples/3_Advanced_Topics/3-5_Using_the_BoM_builder.py @@ -60,15 +60,20 @@ # - Items of type ``Part``. # +# + source_product = next(item for item in data if item["type"] == "Product") source_product +# - +# + source_assemblies = [item for item in data if item["type"] == "Assembly"] source_assemblies[0] +# - +# + source_parts = [item for item in data if item["type"] == "Part"] source_parts[0] - +# - # ### Materials # The third party system allows assignment from Granta MI. Materials are therefore described by a unique identifier to @@ -81,8 +86,10 @@ # material. It is assumed that the part referenced in the material's ``parent_part_identifier`` is made only of this # material. +# + source_materials = [item for item in data if item["type"] == "Material"] source_materials[0] +# - # ### Processes # There are multiple types of processes described by the external data source: @@ -103,22 +110,30 @@ # Similarly to materials, the third-party system does not store information about the process other than the reference # to the Granta MI record, which defines the environmental footprint of the process. +# + source_primary_processes = [item for item in data if item["type"] == "MaterialFormingStep"] source_primary_processes[0] +# - +# + source_secondary_processes = [item for item in data if item["type"] == "MaterialProcessingStep"] source_secondary_processes[0] +# - +# + source_joining_processes = [item for item in data if item["type"] == "PartProcessingStep"] source_joining_processes[0] +# - # ### Transports # The external data source defines transport stages. These items of type ``Transport`` define the distance that # is travelled during the step, and hold a reference to the assigned Granta MI Transport record, which defines the # environmental footprint per distance for the transportation mode. +# + source_transports = [item for item in data if item["type"] == "Transport"] source_transports[0] +# - # ## Build the BillOfMaterials # @@ -141,7 +156,6 @@ # part number. # First, create a ``bom_types.Part`` object for every item that maps to a BoM Part, and add it to a mapping indexed # by the part number. This will allow us to identify the correct parent part to add materials and processes to. -# as an index. # + components = {} @@ -180,8 +194,9 @@ pprint(components) # Now that all the parts have been instantiated, the hierarchy can be defined. While the external data source defines -# the hierarchy using references between objects in a flat data structure, a Granta MI BoM represents the hierarchy by including a child object as an property of the parent. -# object. The following cell iterates over all source parts and assemblies again, and appends child parts to their +# the hierarchy using references between objects in a flat data structure, a Granta MI BoM represents the hierarchy by +# including a child object as a property of the parent. +# The following cell iterates over all source parts and assemblies again, and appends child parts to their # parents' ``components`` property. # + From f65a4409cc129ace6d4033bc8dd1c5ccb67b75ca Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 12 Oct 2023 10:52:14 +0200 Subject: [PATCH 115/275] Fix GUID field name --- .../3-5_Using_the_BoM_builder.py | 10 ++--- .../source_data_sustainability.json | 44 +++++++++---------- 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/examples/3_Advanced_Topics/3-5_Using_the_BoM_builder.py b/examples/3_Advanced_Topics/3-5_Using_the_BoM_builder.py index e8103687..bebbdf75 100644 --- a/examples/3_Advanced_Topics/3-5_Using_the_BoM_builder.py +++ b/examples/3_Advanced_Topics/3-5_Using_the_BoM_builder.py @@ -225,7 +225,7 @@ material = bom_types.Material( mi_material_reference=bom_types.MIRecordReference( db_key=DB_KEY, - record_guid=item["GRANTA_MI_Record_GUID"] + record_guid=item["Granta_MI_Record_GUID"] ), identity=item["name"], percentage=100.0, @@ -259,7 +259,7 @@ process = bom_types.Process( mi_process_reference=bom_types.MIRecordReference( db_key=DB_KEY, - record_guid=item["GRANTA_MI_Record_GUID"] + record_guid=item["Granta_MI_Record_GUID"] ), identity=item["name"], dimension_type=unit_to_dimension_type[item["quantity_unit"]], @@ -291,7 +291,7 @@ process = bom_types.Process( mi_process_reference=bom_types.MIRecordReference( db_key=DB_KEY, - record_guid=item["GRANTA_MI_Record_GUID"] + record_guid=item["Granta_MI_Record_GUID"] ), identity=item["name"], dimension_type=bom_types.DimensionType.Mass, @@ -305,7 +305,7 @@ process = bom_types.Process( mi_process_reference=bom_types.MIRecordReference( db_key=DB_KEY, - record_guid=item["GRANTA_MI_Record_GUID"] + record_guid=item["Granta_MI_Record_GUID"] ), identity=item["name"], dimension_type=bom_types.DimensionType.MassRemoved, @@ -331,7 +331,7 @@ name=item["name"], mi_transport_reference=bom_types.MIRecordReference( db_key=DB_KEY, - record_guid=item["GRANTA_MI_Record_GUID"] + record_guid=item["Granta_MI_Record_GUID"] ), distance=bom_types.UnittedValue(value=item["distance_in_km"], unit="km") ) diff --git a/examples/3_Advanced_Topics/supporting-files/source_data_sustainability.json b/examples/3_Advanced_Topics/supporting-files/source_data_sustainability.json index 1d543ccf..818a455e 100644 --- a/examples/3_Advanced_Topics/supporting-files/source_data_sustainability.json +++ b/examples/3_Advanced_Topics/supporting-files/source_data_sustainability.json @@ -20,19 +20,19 @@ "type": "Material", "parent_part_identifier": "Part1.1.A[LeafPart]", "name": "stainless-astm-cn-7ms-cast", - "GRANTA_MI_Record_GUID": "2086f56a-4f4d-4850-9891-3d6ad155d1f9" + "Granta_MI_Record_GUID": "2086f56a-4f4d-4850-9891-3d6ad155d1f9" }, { "type": "MaterialFormingStep", "name": "Primary processing, Casting", "parent_part_identifier": "Part1.1.A[LeafPart]", - "GRANTA_MI_Record_GUID": "baa6c95b-ff0e-4811-9120-92717ee15bda" + "Granta_MI_Record_GUID": "baa6c95b-ff0e-4811-9120-92717ee15bda" }, { "type": "MaterialProcessingStep", "name": "Machining, coarse", "parent_part_identifier": "Part1.1.A[LeafPart]", - "GRANTA_MI_Record_GUID": "907bda29-e800-44f6-b7ea-4eb8e7cff375", + "Granta_MI_Record_GUID": "907bda29-e800-44f6-b7ea-4eb8e7cff375", "step_order": 0, "mass_removed_in_kg": 0.0808 }, @@ -40,7 +40,7 @@ "type": "MaterialProcessingStep", "name": "Machining, fine", "parent_part_identifier": "Part1.1.A[LeafPart]", - "GRANTA_MI_Record_GUID": "03de1a28-7dd7-4354-bbd8-c839cfa00ec7", + "Granta_MI_Record_GUID": "03de1a28-7dd7-4354-bbd8-c839cfa00ec7", "step_order": 1, "mass_removed_in_kg": 0.00465 }, @@ -55,19 +55,19 @@ "type": "Material", "parent_part_identifier": "Part1.1.B[LeafPart]", "name": "stainless-astm-cn-7ms-cast", - "GRANTA_MI_Record_GUID": "2086f56a-4f4d-4850-9891-3d6ad155d1f9" + "Granta_MI_Record_GUID": "2086f56a-4f4d-4850-9891-3d6ad155d1f9" }, { "type": "MaterialFormingStep", "name": "Primary processing, Casting", "parent_part_identifier": "Part1.1.B[LeafPart]", - "GRANTA_MI_Record_GUID": "baa6c95b-ff0e-4811-9120-92717ee15bda" + "Granta_MI_Record_GUID": "baa6c95b-ff0e-4811-9120-92717ee15bda" }, { "type": "MaterialProcessingStep", "name": "Machining, fine", "parent_part_identifier": "Part1.1.B[LeafPart]", - "GRANTA_MI_Record_GUID": "03de1a28-7dd7-4354-bbd8-c839cfa00ec7", + "Granta_MI_Record_GUID": "03de1a28-7dd7-4354-bbd8-c839cfa00ec7", "step_order": 0, "mass_removed_in_kg": 0.0035 }, @@ -75,7 +75,7 @@ "type": "PartProcessingStep", "name": "Joining and finishing, Welding, electric", "parent_part_identifier": "Part1.1[SubAssembly]", - "GRANTA_MI_Record_GUID": "21941b5e-fdbc-47fe-8180-809bb42e5e0a", + "Granta_MI_Record_GUID": "21941b5e-fdbc-47fe-8180-809bb42e5e0a", "step_order": 0, "quantity": 0.45, "quantity_unit": "m" @@ -91,19 +91,19 @@ "type": "Material", "parent_part_identifier": "Part1.A[LeafPart]", "name": "steel-1010-annealed", - "GRANTA_MI_Record_GUID": "879f3268-e8b6-48c0-822a-40a010d12911" + "Granta_MI_Record_GUID": "879f3268-e8b6-48c0-822a-40a010d12911" }, { "type": "MaterialFormingStep", "name": "Primary processing, Metal extrusion, hot", "parent_part_identifier": "Part1.A[LeafPart]", - "GRANTA_MI_Record_GUID": "92f90382-610a-4737-a18f-b153ea88e4ad" + "Granta_MI_Record_GUID": "92f90382-610a-4737-a18f-b153ea88e4ad" }, { "type": "MaterialProcessingStep", "name": "Machining, fine", "parent_part_identifier": "Part1.A[LeafPart]", - "GRANTA_MI_Record_GUID": "03de1a28-7dd7-4354-bbd8-c839cfa00ec7", + "Granta_MI_Record_GUID": "03de1a28-7dd7-4354-bbd8-c839cfa00ec7", "step_order": 0, "mass_removed_in_kg": 0.0305 }, @@ -118,19 +118,19 @@ "type": "Material", "parent_part_identifier": "Part1.B[LeafPart]", "name": "steel-1010-annealed", - "GRANTA_MI_Record_GUID": "879f3268-e8b6-48c0-822a-40a010d12911" + "Granta_MI_Record_GUID": "879f3268-e8b6-48c0-822a-40a010d12911" }, { "type": "MaterialFormingStep", "name": "Primary processing, Casting", "parent_part_identifier": "Part1.B[LeafPart]", - "GRANTA_MI_Record_GUID": "baa6c95b-ff0e-4811-9120-92717ee15bda" + "Granta_MI_Record_GUID": "baa6c95b-ff0e-4811-9120-92717ee15bda" }, { "type": "MaterialProcessingStep", "name": "Secondary processing, Grinding", "parent_part_identifier": "Part1.B[LeafPart]", - "GRANTA_MI_Record_GUID": "9b5b1824-f11e-449e-9a3f-f6a75396ac87", + "Granta_MI_Record_GUID": "9b5b1824-f11e-449e-9a3f-f6a75396ac87", "step_order": 0, "mass_removed_in_kg": 0.03762 }, @@ -145,13 +145,13 @@ "type": "Material", "parent_part_identifier": "Part1.C[LeafPart]", "name": "steel-1010-annealed", - "GRANTA_MI_Record_GUID": "879f3268-e8b6-48c0-822a-40a010d12911" + "Granta_MI_Record_GUID": "879f3268-e8b6-48c0-822a-40a010d12911" }, { "type": "MaterialFormingStep", "name": "Metal extrusion, hot", "parent_part_identifier": "Part1.C[LeafPart]", - "GRANTA_MI_Record_GUID": "92f90382-610a-4737-a18f-b153ea88e4ad" + "Granta_MI_Record_GUID": "92f90382-610a-4737-a18f-b153ea88e4ad" }, { "type": "Part", @@ -164,38 +164,38 @@ "type": "Material", "parent_part_identifier": "Part1.D[LeafPart]", "name": "beryllium-beralcast191-cast", - "GRANTA_MI_Record_GUID": "a0adc9d7-69a2-494e-b6da-d588f86cc5ab" + "Granta_MI_Record_GUID": "a0adc9d7-69a2-494e-b6da-d588f86cc5ab" }, { "type": "MaterialFormingStep", "name": "Metal extrusion, hot", "parent_part_identifier": "Part1.D[LeafPart]", - "GRANTA_MI_Record_GUID": "92f90382-610a-4737-a18f-b153ea88e4ad" + "Granta_MI_Record_GUID": "92f90382-610a-4737-a18f-b153ea88e4ad" }, { "type": "MaterialProcessingStep", "name": "Machining, fine", "parent_part_identifier": "Part1.D[LeafPart]", - "GRANTA_MI_Record_GUID": "03de1a28-7dd7-4354-bbd8-c839cfa00ec7", + "Granta_MI_Record_GUID": "03de1a28-7dd7-4354-bbd8-c839cfa00ec7", "step_order": 0, "mass_removed_in_kg": 0.0015 }, { "type": "Transport", "name": "Port to airport by truck", - "GRANTA_MI_Record_GUID": "8d37ee4c-41ca-4cb5-9e8e-264646fcafa8", + "Granta_MI_Record_GUID": "8d37ee4c-41ca-4cb5-9e8e-264646fcafa8", "distance_in_km": 350.0 }, { "type": "Transport", "name": "Country 1 to country 2 by air", - "GRANTA_MI_Record_GUID": "546b90cb-1f8e-423c-a284-a25f731a13e5", + "Granta_MI_Record_GUID": "546b90cb-1f8e-423c-a284-a25f731a13e5", "distance_in_km": 1500.0 }, { "type": "Transport", "name": "Airport to distributor by truck", - "GRANTA_MI_Record_GUID": "8d37ee4c-41ca-4cb5-9e8e-264646fcafa8", + "Granta_MI_Record_GUID": "8d37ee4c-41ca-4cb5-9e8e-264646fcafa8", "distance_in_km": 125.0 } ] \ No newline at end of file From 6694723adc929557a9aca160d82eac60a12f5c26 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 12 Oct 2023 11:03:12 +0200 Subject: [PATCH 116/275] Use method for record references --- .../3-5_Using_the_BoM_builder.py | 34 +++++++------------ 1 file changed, 12 insertions(+), 22 deletions(-) diff --git a/examples/3_Advanced_Topics/3-5_Using_the_BoM_builder.py b/examples/3_Advanced_Topics/3-5_Using_the_BoM_builder.py index bebbdf75..66dd9cf5 100644 --- a/examples/3_Advanced_Topics/3-5_Using_the_BoM_builder.py +++ b/examples/3_Advanced_Topics/3-5_Using_the_BoM_builder.py @@ -130,10 +130,8 @@ # is travelled during the step, and hold a reference to the assigned Granta MI Transport record, which defines the # environmental footprint per distance for the transportation mode. -# + source_transports = [item for item in data if item["type"] == "Transport"] source_transports[0] -# - # ## Build the BillOfMaterials # @@ -220,13 +218,17 @@ # source holds references to Granta MI records by record GUIDs. The GUIDs will be used to instantiate # ``MIRecordReference`` objects. +def make_record_reference(item, db_key=DB_KEY): + return bom_types.MIRecordReference( + db_key=db_key, + record_guid=item["Granta_MI_Record_GUID"] + ) + + for item in source_materials: parent_part_id = item["parent_part_identifier"] material = bom_types.Material( - mi_material_reference=bom_types.MIRecordReference( - db_key=DB_KEY, - record_guid=item["Granta_MI_Record_GUID"] - ), + mi_material_reference=make_record_reference(item), identity=item["name"], percentage=100.0, ) @@ -257,10 +259,7 @@ for item in source_joining_processes: parent_part_id = item["parent_part_identifier"] process = bom_types.Process( - mi_process_reference=bom_types.MIRecordReference( - db_key=DB_KEY, - record_guid=item["Granta_MI_Record_GUID"] - ), + mi_process_reference=make_record_reference(item), identity=item["name"], dimension_type=unit_to_dimension_type[item["quantity_unit"]], quantity_affected=bom_types.UnittedValue(value=item["quantity"], unit=item["quantity_unit"]), @@ -289,10 +288,7 @@ for item in source_primary_processes: parent_part_id = item["parent_part_identifier"] process = bom_types.Process( - mi_process_reference=bom_types.MIRecordReference( - db_key=DB_KEY, - record_guid=item["Granta_MI_Record_GUID"] - ), + mi_process_reference=make_record_reference(item), identity=item["name"], dimension_type=bom_types.DimensionType.Mass, percentage_of_part_affected=100.0 @@ -303,10 +299,7 @@ for item in source_secondary_processes: parent_part_id = item["parent_part_identifier"] process = bom_types.Process( - mi_process_reference=bom_types.MIRecordReference( - db_key=DB_KEY, - record_guid=item["Granta_MI_Record_GUID"] - ), + mi_process_reference=make_record_reference(item), identity=item["name"], dimension_type=bom_types.DimensionType.MassRemoved, quantity_affected=bom_types.UnittedValue( @@ -329,10 +322,7 @@ transports = [ bom_types.TransportStage( name=item["name"], - mi_transport_reference=bom_types.MIRecordReference( - db_key=DB_KEY, - record_guid=item["Granta_MI_Record_GUID"] - ), + mi_transport_reference=make_record_reference(item), distance=bom_types.UnittedValue(value=item["distance_in_km"], unit="km") ) for item in source_transports From d52b478bf5240bb48609fd2ef2b938df77d776fb Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 12 Oct 2023 11:07:16 +0200 Subject: [PATCH 117/275] Fix test assertions (due to mass changes in BoM) --- tests/test_integration_tests.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tests/test_integration_tests.py b/tests/test_integration_tests.py index 4e1866a0..d65d43d1 100644 --- a/tests/test_integration_tests.py +++ b/tests/test_integration_tests.py @@ -240,9 +240,9 @@ def test_sustainability_summary_query(self, connection): assert ( beryllium_summary.contributors[0].name is None ) # TODO: define names in example bom or create ticket to use part number? - assert beryllium_summary.contributors[0].material_mass_before_processing.value == pytest.approx(0.027027027) + assert beryllium_summary.contributors[0].material_mass_before_processing.value == pytest.approx(0.027) assert beryllium_summary.mass_after_processing.value == pytest.approx(0.024) - assert beryllium_summary.mass_before_processing.value == pytest.approx(0.027027027) + assert beryllium_summary.mass_before_processing.value == pytest.approx(0.027) assert beryllium_summary.record_guid is not None assert beryllium_summary.climate_change.value == pytest.approx(15.52, DEFAULT_TOLERANCE) assert beryllium_summary.climate_change_percentage == pytest.approx(54.32, DEFAULT_TOLERANCE) @@ -286,10 +286,10 @@ def test_sustainability_summary_query(self, connection): # Spot check secondary process secondary_process = response.secondary_processes_details[0] - assert secondary_process.climate_change.value == pytest.approx(0.137, DEFAULT_TOLERANCE) - assert secondary_process.embodied_energy.value == pytest.approx(2.12, DEFAULT_TOLERANCE) - assert secondary_process.climate_change_percentage == pytest.approx(43.15, DEFAULT_TOLERANCE) - assert secondary_process.embodied_energy_percentage == pytest.approx(46.48, DEFAULT_TOLERANCE) + assert secondary_process.climate_change.value == pytest.approx(0.127, DEFAULT_TOLERANCE) + assert secondary_process.embodied_energy.value == pytest.approx(1.95, DEFAULT_TOLERANCE) + assert secondary_process.climate_change_percentage == pytest.approx(41.69, DEFAULT_TOLERANCE) + assert secondary_process.embodied_energy_percentage == pytest.approx(44.94, DEFAULT_TOLERANCE) assert secondary_process.material_reference.record_guid is not None assert secondary_process.process_reference.record_guid is not None @@ -408,8 +408,8 @@ def test_sustainability_query(self, connection): # Secondary process secondary_process = material.processes[1] assert secondary_process.record_guid is not None - assert secondary_process.climate_change.value == pytest.approx(0.0597, DEFAULT_TOLERANCE) - assert secondary_process.embodied_energy.value == pytest.approx(0.696, DEFAULT_TOLERANCE) + assert secondary_process.climate_change.value == pytest.approx(0.0567, DEFAULT_TOLERANCE) + assert secondary_process.embodied_energy.value == pytest.approx(0.661, DEFAULT_TOLERANCE) # Transports assert len(response.transport_stages) == 3 From ad650ce1bb0e3739a51f816f28b29f8b6a58ac8e Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 12 Oct 2023 11:56:14 +0200 Subject: [PATCH 118/275] Change plotly renderer in examples tests [skip-ci] --- tests/test_examples.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/test_examples.py b/tests/test_examples.py index f7818c59..498b207f 100644 --- a/tests/test_examples.py +++ b/tests/test_examples.py @@ -1,3 +1,4 @@ +import os from pathlib import Path import subprocess import sys @@ -7,6 +8,9 @@ pytestmark = pytest.mark.integration IPYTHONDIR = str(Path(__file__).parent.parent) + "/.ipython" +env = os.environ.copy() +env["PLOTLY_RENDERER"] = "json" + def test_examples(example_script: Path): p = subprocess.Popen( @@ -19,6 +23,7 @@ def test_examples(example_script: Path): str(example_script), # str() needed in py <= 3.7 ], cwd=example_script.parent, + env=env, ) p.wait() assert p.returncode == 0 From deb88ff9dc6cde25377c4fe3115ff09790211cb6 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 12 Oct 2023 12:27:21 +0200 Subject: [PATCH 119/275] Update BillOfMaterialsEco2301.xsd --- .../schemas/BillOfMaterialsEco2301.xsd | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/schemas/BillOfMaterialsEco2301.xsd b/src/ansys/grantami/bomanalytics/schemas/BillOfMaterialsEco2301.xsd index 98e68def..ccc6ea28 100644 --- a/src/ansys/grantami/bomanalytics/schemas/BillOfMaterialsEco2301.xsd +++ b/src/ansys/grantami/bomanalytics/schemas/BillOfMaterialsEco2301.xsd @@ -320,7 +320,21 @@ - + + + + Represents whether the substance remains present in the material after production + + + + + + + + + + + @@ -737,4 +751,4 @@ - \ No newline at end of file + From 223624298d19efb0d1b7ba115fa056b05e685f07 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 12 Oct 2023 13:22:46 +0200 Subject: [PATCH 120/275] Add category enum --- .../bomanalytics/bom_types/_bom_types.py | 64 ++++++++++++++++--- 1 file changed, 56 insertions(+), 8 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py b/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py index 16821877..e1cfe2e4 100644 --- a/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py +++ b/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py @@ -183,6 +183,38 @@ def to_string(self) -> str: return f"{self.name[0].lower()}{self.name[1:]}" +class Category(Enum): + Null = 0 + Incorporated = 1 + MayBeIncorporated = 2 + UsedInProduction = 3 + MayBeUsedInProduction = 4 + UsedInCoating = 5 + + @classmethod + def from_string(cls, value: str) -> Category: + """ + Convert string representation of this object into an instance of this object. + + Parameters + ---------- + value: str + String representation of this object. + """ + return Category[value] + + def to_string(self) -> str: + """ + Convert this Enum object to its string representation. + + Returns + ------- + str + String representation of this object. + """ + return self.name + + class PartialTableReference(BaseType): _simple_values = [("table_identity", "tableIdentity"), ("table_guid", "tableGuid"), ("table_name", "tableName")] @@ -1688,7 +1720,7 @@ def quantity(self, value: Optional[UnittedValue]) -> None: class Substance(CommonIdentifiersMixin, InternalIdentifierMixin, BaseType): - _simple_values = [("percentage", "Percentage"), ("category", "Category")] + _simple_values = [("percentage", "Percentage")] _props = [("MIRecordReference", "mi_substance_reference", "MISubstanceReference")] @@ -1697,7 +1729,7 @@ def __init__( *, mi_substance_reference: MIRecordReference, percentage: Optional[float] = None, - category: Optional[str] = None, + category: Optional[Category] = None, **kwargs: Any, ) -> None: """ @@ -1711,8 +1743,8 @@ def __init__( percentage: Optional[Float] If the parent object consists of more than one substance, this defines the percentage of this substance. - category: Optional[str] - TODO - What is this? + category: Optional[Category] + Represents whether the substance remains present in the material after production. """ super().__init__(**kwargs) self.mi_substance_reference = mi_substance_reference @@ -1750,20 +1782,36 @@ def percentage(self, value: Optional[float]) -> None: self._percentage = value @property - def category(self) -> Optional[str]: + def category(self) -> Optional[Category]: """ - TODO - Who can say? + Represents whether the substance remains present in the material after production. Returns ------- - Optional[str] + Optional[Category] """ return self._category @category.setter - def category(self, value: Optional[str]) -> None: + def category(self, value: Optional[Category]) -> None: self._category = value + @classmethod + def _process_custom_fields(cls, obj: Dict, bom_reader: BoMReader) -> Dict[str, Any]: + props = super()._process_custom_fields(obj, bom_reader) + + category_type_obj = bom_reader.get_field(Substance, obj, "Category") + if category_type_obj is not None: + props["category"] = Category.from_string(category_type_obj) + return props + + def _write_custom_fields(self, obj: Dict, bom_writer: BoMWriter) -> None: + super()._write_custom_fields(obj, bom_writer) + + if self.category is not None: + category_field_name = bom_writer._get_qualified_name(self, "Category") + obj[category_field_name] = self.category.to_string() + class Process(CommonIdentifiersMixin, InternalIdentifierMixin, BaseType): _simple_values = [("percentage_of_part_affected", "Percentage")] From 992fd25bfa363d24135378dcf2601f1408a6864c Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 12 Oct 2023 15:20:54 +0200 Subject: [PATCH 121/275] Update sus. tests to reflect aggregation changes --- tests/test_integration_tests.py | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/tests/test_integration_tests.py b/tests/test_integration_tests.py index d65d43d1..1824f363 100644 --- a/tests/test_integration_tests.py +++ b/tests/test_integration_tests.py @@ -216,8 +216,7 @@ def test_sustainability_summary_query(self, connection): query.with_bom(sample_bom_2301) response = connection.run(query) - # TODO check no warnings, CR-1388 - # assert not response.messages + assert not response.messages assert response.process.name == "Processes" assert response.material.name == "Material" @@ -249,13 +248,11 @@ def test_sustainability_summary_query(self, connection): assert beryllium_summary.embodied_energy.value == pytest.approx(117.55, DEFAULT_TOLERANCE) assert beryllium_summary.embodied_energy_percentage == pytest.approx(41.04, DEFAULT_TOLERANCE) - # TODO processes aggregation will be updated # Check expected summaries for primary processes - assert len(response.primary_processes_details) == 4 + assert len(response.primary_processes_details) == 3 expected_primary_processes = [ - ("Primary processing, Casting", "steel-1010-annealed"), - ("Primary processing, Casting", "stainless-astm-cn-7ms-cast"), ("Primary processing, Casting", "stainless-astm-cn-7ms-cast"), + ("Primary processing, Casting", "steel-1010-annealed"), ("Other", None), ] primary_processes = [(p.process_name, p.material_identity) for p in response.primary_processes_details] @@ -263,7 +260,7 @@ def test_sustainability_summary_query(self, connection): self._check_percentages_add_up(response.primary_processes_details) # Spot check primary process - primary_process = response.primary_processes_details[0] + primary_process = response.primary_processes_details[1] assert primary_process.climate_change.value == pytest.approx(14.54, DEFAULT_TOLERANCE) assert primary_process.embodied_energy.value == pytest.approx(210.68, DEFAULT_TOLERANCE) assert primary_process.climate_change_percentage == pytest.approx(39.40, DEFAULT_TOLERANCE) @@ -329,8 +326,7 @@ def test_sustainability_query(self, connection): query.with_bom(sample_bom_2301) response = connection.run(query) - # TODO check no warnings, CR-1388 - # assert not response.messages + assert not response.messages # Check hierarchy assert len(response.parts) == 1 From db23e87bdb508b93dc5d01e595542d638f78b884 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 12 Oct 2023 15:40:37 +0200 Subject: [PATCH 122/275] Remove outdated todo --- src/ansys/grantami/bomanalytics/_query_results.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/ansys/grantami/bomanalytics/_query_results.py b/src/ansys/grantami/bomanalytics/_query_results.py index c98864f2..406823b6 100644 --- a/src/ansys/grantami/bomanalytics/_query_results.py +++ b/src/ansys/grantami/bomanalytics/_query_results.py @@ -896,7 +896,6 @@ def process(self) -> SustainabilityPhaseSummaryResult: """ return self._process_summary - # TODO confirm it is ALL and not some above threshold + Aggregated Other @property def transport_details(self) -> List[TransportSummaryResult]: """ From 98805947d57cd3fcfe430fbc9859591a4869ebe3 Mon Sep 17 00:00:00 2001 From: Andy Grigg Date: Tue, 10 Oct 2023 15:06:38 -0400 Subject: [PATCH 123/275] Fix error message --- tests/test_integration_tests.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_integration_tests.py b/tests/test_integration_tests.py index 1824f363..0ab92246 100644 --- a/tests/test_integration_tests.py +++ b/tests/test_integration_tests.py @@ -121,7 +121,7 @@ def test_missing_database_raises_grantami_exception(self, connection_missing_db) ) with pytest.raises(GrantaMIException) as e: connection_missing_db.run(query) - assert str(e.value) == "None of the record references resolved to material records in 'MI_Missing_Database'." + assert str(e.value) == "DatabaseException encountered: Database with key 'MI_Missing_Database' does not exist." def test_missing_table_raises_grantami_exception(connection): From da36e2ecabdbad2c8f59645072c728b44942f1a5 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 12 Oct 2023 16:15:56 +0200 Subject: [PATCH 124/275] Fix missing database test --- tests/test_integration_tests.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/test_integration_tests.py b/tests/test_integration_tests.py index 0ab92246..74223f15 100644 --- a/tests/test_integration_tests.py +++ b/tests/test_integration_tests.py @@ -119,9 +119,11 @@ def test_missing_database_raises_grantami_exception(self, connection_missing_db) query = ( queries.MaterialImpactedSubstancesQuery().with_material_ids(["mat_id"]).with_legislation_ids(LEGISLATIONS) ) - with pytest.raises(GrantaMIException) as e: + with pytest.raises( + GrantaMIException, + match="DatabaseException encountered: Database with key 'MI_Missing_Database' does not exist.", + ) as e: connection_missing_db.run(query) - assert str(e.value) == "DatabaseException encountered: Database with key 'MI_Missing_Database' does not exist." def test_missing_table_raises_grantami_exception(connection): From a4638377bb3856edf1840ad1d8dd98f82e5480a7 Mon Sep 17 00:00:00 2001 From: Doug Addy Date: Fri, 13 Oct 2023 16:37:33 +0100 Subject: [PATCH 125/275] Add initial docs for BoM Types - Add rst - Move init docstrings to class. I hate this, the docstring then says that a class takes a parameter. It does not. The init does. - Add docstrings for protocols. --- doc/source/api/bom_builder/api.rst | 14 + doc/source/api/bom_builder/builders.rst | 28 + doc/source/api/bom_builder/helpers.rst | 11 + doc/source/api/bom_builder/index.rst | 25 + doc/source/api/index.rst | 3 + .../bomanalytics/bom_types/_bom_types.py | 843 +++++++++--------- .../bomanalytics/bom_types/_builders.py | 38 +- 7 files changed, 538 insertions(+), 424 deletions(-) create mode 100644 doc/source/api/bom_builder/api.rst create mode 100644 doc/source/api/bom_builder/builders.rst create mode 100644 doc/source/api/bom_builder/helpers.rst create mode 100644 doc/source/api/bom_builder/index.rst diff --git a/doc/source/api/bom_builder/api.rst b/doc/source/api/bom_builder/api.rst new file mode 100644 index 00000000..6ab417d1 --- /dev/null +++ b/doc/source/api/bom_builder/api.rst @@ -0,0 +1,14 @@ +.. _ref_grantami_bomanalytics_bom_api: + +BoM Object Model +================ + +.. _ref_grantami_bomanalytics_api_billofmaterials: +.. autoclass:: ansys.grantami.bomanalytics.bom_types._bom_types.BillOfMaterials + :inherited-members: + :member-order: by_mro_by_source + + +.. automodule:: ansys.grantami.bomanalytics.bom_types._bom_types + :exclude-members: compliance_by_material_and_indicator + :inherited-members: diff --git a/doc/source/api/bom_builder/builders.rst b/doc/source/api/bom_builder/builders.rst new file mode 100644 index 00000000..6a01b357 --- /dev/null +++ b/doc/source/api/bom_builder/builders.rst @@ -0,0 +1,28 @@ +.. _ref_grantami_bomanalytics_bom_builders: + +BoM Reference Builders +====================== + +RecordReferenceBuilder +---------------------- + +Many types of entity are referenced within a Granta MI database, these references can use several different ways of +identifying the target object. The RecordReferenceBuilder helps to ensure that a reference contains the required +information and to reduce the risk of ambiguous references being provided. + +.. autoclass:: ansys.grantami.bomanalytics.bom_types.RecordReferenceBuilder + :inherited-members: + :member-order: by_mro_by_source + + + +AttributeReferenceBuilder +------------------------- + +Records can be referred to by a unique text value, this must be accompanied by a reference to the attribute containing +the value. The AttributeReferenceBuilder helps to ensure that this reference contains the required information and to +reduce the risk of ambiguous references being provided. + +.. autoclass:: ansys.grantami.bomanalytics.bom_types.AttributeReferenceBuilder + :inherited-members: + :member-order: by_mro_by_source diff --git a/doc/source/api/bom_builder/helpers.rst b/doc/source/api/bom_builder/helpers.rst new file mode 100644 index 00000000..a8cb9137 --- /dev/null +++ b/doc/source/api/bom_builder/helpers.rst @@ -0,0 +1,11 @@ +.. _ref_grantami_bomanalytics_api_bomhandler: + +BoM Handler +=========== + +The BoM handler provides the serialization and deserialization of BillOfMaterial objects to and from XML format, this +process validates that the BoM has a valid structure, and that the XML provided is syntactically correct. + +.. autoclass:: ansys.grantami.bomanalytics._bom_helper.BoMHandler + :inherited-members: + :member-order: by_mro_by_source diff --git a/doc/source/api/bom_builder/index.rst b/doc/source/api/bom_builder/index.rst new file mode 100644 index 00000000..6a21f025 --- /dev/null +++ b/doc/source/api/bom_builder/index.rst @@ -0,0 +1,25 @@ +.. _ref_grantami_bomanalytics_bom_helpers_index: + +BoM Helpers +============== + +This section provides an introduction to the BoM Helpers. These represent a BoM (bill of materials) in Ansys Granta +MI 2301 XML BoM format and support reading and writing these files. + +The :class:`~ansys.grantami.bomanalytics.bom_types.BillOfMaterials` represents the root object in a BoM hierarchy, and can +be used to programmatically generate a BoM. + +To aid in manipulation of these objects, builders have been provided for Granta MI object references, these assist in +the correct formation of these reference objects, depending on how you need to refer to these entities. + +Serialization and Deserialization of BoM objects can be performed using the :class:`~ansys.grantami.bomanalytics.BoMHandler` +this exposes methods to read a BoM from a string or a file, and to write to a string or a file. The resulting BoM can be +passed to either a Sustainability or a Compliance query. + +.. toctree:: + :maxdepth: 3 + + api + builders + helpers + diff --git a/doc/source/api/index.rst b/doc/source/api/index.rst index 1a264235..983f6556 100644 --- a/doc/source/api/index.rst +++ b/doc/source/api/index.rst @@ -18,6 +18,8 @@ The API for PyGranta BoM Analytics is split into these key sections: and how to interpret results. - :ref:`ref_grantami_bomanalytics_api_sustainability_index` explains how to build specific queries for sustainability and how to interpret results. +- :ref:`ref_grantami_bomanalytics_bom_helpers_index` explains how to create, read, edit, and save Bill of Materials + objects for Compliance and Sustainability reporting. .. note:: While some examples use a different class than the one being documented, both classes are always @@ -31,3 +33,4 @@ The API for PyGranta BoM Analytics is split into these key sections: impacted_substances/index compliance/index sustainability/index + bom_builder/index diff --git a/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py b/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py index e1cfe2e4..59c4d42e 100644 --- a/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py +++ b/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py @@ -21,10 +21,18 @@ class HasNamespace(Protocol): + """ + Protocol defining that an inheritor has an attribute *_namespace*. + """ + _namespace: str class SupportsCustomFields(Protocol): + """ + Protocol defining that an inheritor has methods to process and write custom fields. + """ + @classmethod def _process_custom_fields(cls, obj: Dict, bom_reader: BoMReader) -> Dict[str, Any]: ... @@ -216,6 +224,22 @@ def to_string(self) -> str: class PartialTableReference(BaseType): + """ + A type that partially identifies a Table, but does not specify the MI Database. Usually, just one of the several + optional fields should be provided; where more than one is provided, the highest priority one is used, where the + descending priority order is: tableIdentity, tableGUID, tableName. + + Parameters + ---------- + table_identity: Optional[int] + The identity of the table, this is the fastest way to reference a table. + table_guid: Optional[str] + The GUID of the table, this is likely to be a persistent way to refer to a table. + table_name: Optional[str] + The name of the table, note that table names can vary between localisations of a database, so this may not + be a safe way to refer to a table if the MI Database supports multiple locales. + """ + _simple_values = [("table_identity", "tableIdentity"), ("table_guid", "tableGuid"), ("table_name", "tableName")] _namespace = "http://www.grantadesign.com/12/05/GrantaBaseTypes" @@ -228,21 +252,6 @@ def __init__( table_name: Optional[str] = None, **kwargs: Dict[str, Any], ): - """ - A type that partially identifies a Table, but does not specify the MI Database. Usually, just one of the several - optional fields should be provided; where more than one is provided, the highest priority one is used, where the - descending priority order is: tableIdentity, tableGUID, tableName. - - Parameters - ---------- - table_identity: Optional[int] - The identity of the table, this is the fastest way to reference a table. - table_guid: Optional[str] - The GUID of the table, this is likely to be a persistent way to refer to a table. - table_name: Optional[str] - The name of the table, note that table names can vary between localisations of a database, so this may not - be a safe way to refer to a table if the MI Database supports multiple locales. - """ super().__init__(**kwargs) self.table_identity = table_identity self.table_guid = table_guid @@ -296,6 +305,31 @@ def table_name(self, value: Optional[str]) -> None: class MIAttributeReference(BaseType): + """A type that allows identification of a particular Attribute in an MI Database. This may be done directly by + specifying the Identity of the Attribute, or indirectly by specifying a lookup that will match (only) the + Attribute. + + Note: in certain cases, an MIAttributeReference may match more than one Attribute in + the MI Database; depending on the operation, this may be legal or may result in + a Fault. + + Parameters + ---------- + db_key: str + The key that uniquely identifies a particular Database on the MI Server. + attribute_identity: Optional[int] + The identity of the attribute within the MI Database. + table_reference: Optional[PartialTableReference] + A reference to the table hosting the attribute. Required if ``attribute_name`` is specified and + ``is_standard`` is not True. + attribute_name: Optional[str] + Name of the Attribute. + pseudo: Optional[PseudoAttribute] + The pseudo-attribute type if referring to a pseudo-attribute. + is_standard: Optional[bool] + If True indicates that the provided ``attribute_name`` is a Standard Name. + """ + _simple_values = [("db_key", "dbKey"), ("attribute_identity", "attributeIdentity")] _namespace = "http://www.grantadesign.com/12/05/GrantaBaseTypes" @@ -311,30 +345,6 @@ def __init__( is_standard: Optional[bool] = None, **kwargs: Dict[str, Any], ): - """A type that allows identification of a particular Attribute in an MI Database. This may be done directly by - specifying the Identity of the Attribute, or indirectly by specifying a lookup that will match (only) the - Attribute. - - Note: in certain cases, an MIAttributeReference may match more than one Attribute in - the MI Database; depending on the operation, this may be legal or may result in - a Fault. - - Parameters - ---------- - db_key: str - The key that uniquely identifies a particular Database on the MI Server. - attribute_identity: Optional[int] - The identity of the attribute within the MI Database. - table_reference: Optional[PartialTableReference] - A reference to the table hosting the attribute. Required if ``attribute_name`` is specified and - ``is_standard`` is not True. - attribute_name: Optional[str] - Name of the Attribute. - pseudo: Optional[PseudoAttribute] - The pseudo-attribute type if referring to a pseudo-attribute. - is_standard: Optional[bool] - If True indicates that the provided ``attribute_name`` is a Standard Name. - """ super().__init__(**kwargs) self.db_key = db_key self.attribute_identity = attribute_identity @@ -471,6 +481,42 @@ def is_standard(self, value: Optional[bool]) -> None: class MIRecordReference(BaseType): + """A type that allows identification of a particular Record in an + MI Database. This may be done directly by specifying the Identity or GUID of the Record, or + indirectly by specifying a lookup that will match (only) the Record. + + For input, you should provide exactly one of either identity, recordGUID, recordHistoryGUID + or lookupValue. If more than one element identifying the record is given, only one is used; the descending + order of priority is: identity, recordGUID, recordHistoryGUID, lookupValue. The Service Layer does not + check that the several elements identifying the record are all referencing the same record, it just picks the + highest-priority one and uses that. + + Parameters + ---------- + db_key: str + The key that uniquely identifies a particular Database on the MI Server. + record_history_identity: Optional[int] + This is the best-performing and highest-priority way to reference a record; however, identities might not + be suitable for long-term persistence. + record_version_number: Optional[int] + If omitted, this means the latest version visible to the user. + record_guid: Optional[str] + Identifies a particular version of a record by its GUID, this is a more persistent way to refer to a record. + record_history_guid: Optional[str] + Identifies a record history, the latest visible version will be returned. ``record_version_number`` has no + effect on references that use ``record_history_guid``. + lookup_attribute_reference: Optional[MIAttributeReference] + When provided in combination with ``lookup_value`` identifies a record by a unique short-text attribute. + Specifies the attribute to be used for the lookup operation. + lookup_value: Optional[str] + When provided in combination with ``lookup_attribute_reference`` identifies a record by a unique short-text + attribute. Specifies the value to be used for the lookup operation. If this is not unique an error will be + returned. + record_uid: Optional[str] + The recordUID may be used to identify a particular XML element representing a record. It does not represent + any property or attribute of an actual MI Record. + """ + _simple_values = [ ("db_key", "dbKey"), ("record_guid", "recordGUID"), @@ -493,41 +539,6 @@ def __init__( record_uid: Optional[str] = None, **kwargs: Dict[str, Any], ): - """A type that allows identification of a particular Record in an - MI Database. This may be done directly by specifying the Identity or GUID of the Record, or - indirectly by specifying a lookup that will match (only) the Record. - - For input, you should provide exactly one of either identity, recordGUID, recordHistoryGUID - or lookupValue. If more than one element identifying the record is given, only one is used; the descending - order of priority is: identity, recordGUID, recordHistoryGUID, lookupValue. The Service Layer does not - check that the several elements identifying the record are all referencing the same record, it just picks the - highest-priority one and uses that. - - Parameters - ---------- - db_key: str - The key that uniquely identifies a particular Database on the MI Server. - record_history_identity: Optional[int] - This is the best-performing and highest-priority way to reference a record; however, identities might not - be suitable for long-term persistence. - record_version_number: Optional[int] - If omitted, this means the latest version visible to the user. - record_guid: Optional[str] - Identifies a particular version of a record by its GUID, this is a more persistent way to refer to a record. - record_history_guid: Optional[str] - Identifies a record history, the latest visible version will be returned. ``record_version_number`` has no - effect on references that use ``record_history_guid``. - lookup_attribute_reference: Optional[MIAttributeReference] - When provided in combination with ``lookup_value`` identifies a record by a unique short-text attribute. - Specifies the attribute to be used for the lookup operation. - lookup_value: Optional[str] - When provided in combination with ``lookup_attribute_reference`` identifies a record by a unique short-text - attribute. Specifies the value to be used for the lookup operation. If this is not unique an error will be - returned. - record_uid: Optional[str] - The recordUID may be used to identify a particular XML element representing a record. It does not represent - any property or attribute of an actual MI Record. - """ super().__init__(**kwargs) self.db_key = db_key self.record_history_identity = record_history_identity @@ -701,15 +712,16 @@ def record_uid(self, value: Optional[str]) -> None: # TODO - I don't like having a nice method to add props then replicating it here, can we do something better with # inheritance? class InternalIdentifierMixin(SupportsCustomFields): - def __init__(self, *, internal_id: Optional[str] = None, **kwargs: Dict[str, Any]): - """A unique identity for this object in this BoM. This identity is only for internal use, allowing other - elements to reference this element. + """A unique identity for this object in this BoM. This identity is only for internal use, allowing other + elements to reference this element. - Parameters - ---------- - internal_id: Optional[str] - The identifier to assign to this object. - """ + Parameters + ---------- + internal_id: Optional[str] + The identifier to assign to this object. + """ + + def __init__(self, *, internal_id: Optional[str] = None, **kwargs: Dict[str, Any]): super().__init__(**kwargs) self.internal_id = internal_id @@ -746,6 +758,19 @@ def internal_id(self, value: Optional[str]) -> None: class CommonIdentifiersMixin(SupportsCustomFields): + """ + A set of identifiers used by external applications to reference and display parts of the BoM. + + Parameters + ---------- + identity: Optional[str] + A display identity for the object. + name: Optional[str] + A display name for the object. + external_identity: Optional[str] + A temporary reference populated and used by applications to refer to the item within the BoM. + """ + def __init__( self, *, @@ -754,18 +779,6 @@ def __init__( external_identity: Optional[str] = None, **kwargs: Dict[str, Any], ): - """ - A set of identifiers used by external applications to reference and display parts of the BoM. - - Parameters - ---------- - identity: Optional[str] - A display identity for the object. - name: Optional[str] - A display name for the object. - external_identity: Optional[str] - A temporary reference populated and used by applications to refer to the item within the BoM. - """ super().__init__(**kwargs) self.identity = identity self.name = name @@ -846,6 +859,18 @@ def external_identity(self, value: Optional[str]) -> None: class EndOfLifeFate(BaseType): + """ + The fate of a material at the end-of-life of the product. For example if a material can be recycled, and what + fraction of the total mass or volume can be recycled. + + Parameters + ---------- + mi_end_of_life_reference : MIRecordReference + Reference identifying the applicable fate within the MI Database. + fraction : float + Fraction of the total mass or volume of material to which this fate applies. + """ + _simple_values = [("fraction", "Fraction")] _props = [("MIRecordReference", "mi_end_of_life_reference", "MIEndOfLifeReference")] @@ -853,17 +878,6 @@ class EndOfLifeFate(BaseType): def __init__( self, *, mi_end_of_life_reference: MIRecordReference, fraction: float, **kwargs: Dict[str, Any] ) -> None: - """ - The fate of a material at the end-of-life of the product. For example if a material can be recycled, and what - fraction of the total mass or volume can be recycled. - - Parameters - ---------- - mi_end_of_life_reference : MIRecordReference - Reference identifying the applicable fate within the MI Database. - fraction : float - Fraction of the total mass or volume of material to which this fate applies. - """ super().__init__(**kwargs) self.mi_end_of_life_reference = mi_end_of_life_reference self.fraction = fraction @@ -900,21 +914,22 @@ def fraction(self, value: float) -> None: class UnittedValue(BaseType): + """ + A physical quantity with a unit. If provided in a input then the unit should exist within the MI database, + otherwise an error will be raised. + + Parameters + ---------- + value: float + The value of the quantity in specified units. + unit: Optional[str] + If provided, specifies the unit symbol applying to the quantity. If absent the quantity will be treated as + dimensionless. + """ + _simple_values = [("value", "$"), ("unit", "@Unit")] def __init__(self, *, value: float, unit: Optional[str] = None, **kwargs: Dict[str, Any]) -> None: - """ - A physical quantity with a unit. If provided in a input then the unit should exist within the MI database, - otherwise an error will be raised. - - Parameters - ---------- - value: float - The value of the quantity in specified units. - unit: Optional[str] - If provided, specifies the unit symbol applying to the quantity. If absent the quantity will be treated as - dimensionless. - """ super().__init__(**kwargs) self.value = value self.unit = unit @@ -957,17 +972,18 @@ def unit(self, value: Optional[str]) -> None: class Location(CommonIdentifiersMixin, InternalIdentifierMixin, BaseType): + """ + Defines the manufacturing location for the BoM for use in process calculations. + + Parameters + ---------- + mi_location_reference: Optional[MIRecordReference] + Reference to a record in the MI database representing the manufacturing location. + """ + _props = [("MIRecordReference", "mi_location_reference", "MILocationReference")] def __init__(self, *, mi_location_reference: Optional[MIRecordReference] = None, **kwargs: Any) -> None: - """ - Defines the manufacturing location for the BoM for use in process calculations. - - Parameters - ---------- - mi_location_reference: Optional[MIRecordReference] - Reference to a record in the MI database representing the manufacturing location. - """ super().__init__(**kwargs) self.mi_location_reference = mi_location_reference @@ -988,6 +1004,20 @@ def mi_location_reference(self, value: Optional[MIRecordReference]) -> None: class ElectricityMix(BaseType): + """ + If the product consumes electrical power, then the amount of CO2 produced to generate depends upon the mix of + fossil fuel burning power stations in the region of use. This type lets you specify the electrical generation + mix by either specifying the region or country of use or by specifying the percentage of power that comes from + fossil fuel sources. + + Parameters + ---------- + mi_region_reference: Optional[MIRecordReference] + Reference to a record in the MI database representing the electricity mix for the destination country. + percentage_fossil_fuels: Optional[float] + The percentage of electrical power production within the destination country that comes from fossil fuels. + """ + _props = [("MIRecordReference", "mi_region_reference", "MIRegionReference")] _simple_values = [("percentage_fossil_fuels", "PercentageFossilFuels")] @@ -998,19 +1028,6 @@ def __init__( percentage_fossil_fuels: Optional[float] = None, **kwargs: Dict[str, Any], ) -> None: - """ - If the product consumes electrical power, then the amount of CO2 produced to generate depends upon the mix of - fossil fuel burning power stations in the region of use. This type lets you specify the electrical generation - mix by either specifying the region or country of use or by specifying the percentage of power that comes from - fossil fuel sources. - - Parameters - ---------- - mi_region_reference: Optional[MIRecordReference] - Reference to a record in the MI database representing the electricity mix for the destination country. - percentage_fossil_fuels: Optional[float] - The percentage of electrical power production within the destination country that comes from fossil fuels. - """ super().__init__(**kwargs) self.mi_region_reference = mi_region_reference self.percentage_fossil_fuels = percentage_fossil_fuels @@ -1047,6 +1064,20 @@ def percentage_fossil_fuels(self, value: Optional[float]) -> None: class MobileMode(BaseType): + """ + If the product is transported as part of its use then this type contains details about the way in which it is + transported. + + Parameters + ---------- + mi_transport_reference: MIRecordReference + Reference to a record in the MI database representing the means of transport for this product during use. + days_used_per_year: float + The number of days in a year the product will be transported during use. + distance_travelled_per_day: UnittedValue + The distance the product will be transported each day as part of its use. + """ + _props = [ ("MIRecordReference", "mi_transport_reference", "MITransportReference"), ("UnittedValue", "distance_travelled_per_day", "DistanceTravelledPerDay"), @@ -1061,19 +1092,6 @@ def __init__( distance_travelled_per_day: UnittedValue, **kwargs: Dict[str, Any], ) -> None: - """ - If the product is transported as part of its use then this type contains details about the way in which it is - transported. - - Parameters - ---------- - mi_transport_reference: MIRecordReference - Reference to a record in the MI database representing the means of transport for this product during use. - days_used_per_year: float - The number of days in a year the product will be transported during use. - distance_travelled_per_day: UnittedValue - The distance the product will be transported each day as part of its use. - """ super().__init__(**kwargs) self.mi_transport_reference = mi_transport_reference self.days_used_per_year = days_used_per_year @@ -1126,6 +1144,22 @@ def distance_travelled_per_day(self, value: UnittedValue) -> None: class StaticMode(BaseType): + """ + Specifies the primary energy conversion that occurs during the product's use. + + Parameters + ---------- + mi_energy_conversion_reference: MIRecordReference + Reference to a record in the MI database representing the primary energy conversion taking place when the + product is in use. + power_rating: UnittedValue + The power rating of the product whilst in use. + days_used_per_year: float + The number of days per year that the product will be used. + hours_used_per_day: float + The number of hours per day of use that the product will be used. + """ + _props = [ ("MIRecordReference", "mi_energy_conversion_reference", "MIEnergyConversionReference"), ("UnittedValue", "power_rating", "PowerRating"), @@ -1141,21 +1175,6 @@ def __init__( hours_used_per_day: float, **kwargs: Dict[str, Any], ) -> None: - """ - Specifies the primary energy conversion that occurs during the product's use. - - Parameters - ---------- - mi_energy_conversion_reference: MIRecordReference - Reference to a record in the MI database representing the primary energy conversion taking place when the - product is in use. - power_rating: UnittedValue - The power rating of the product whilst in use. - days_used_per_year: float - The number of days per year that the product will be used. - hours_used_per_day: float - The number of hours per day of use that the product will be used. - """ super().__init__(**kwargs) self.mi_energy_conversion_reference = mi_energy_conversion_reference self.power_rating = power_rating @@ -1225,6 +1244,21 @@ def hours_used_per_day(self, value: float) -> None: class UtilitySpecification(BaseType): + """ + Specifies how much use can be obtained from the product represented by this BoM in comparison to a + representative industry average. + + Parameters + ---------- + industry_average_duration_years: Optional[float] + The average lifespan of all examples, throughout the industry, of the kind of product described herein. + industry_average_number_of_functional_units: Optional[float] + The average number of functional units delivered, in their lifespan, by all examples, throughout the + industry, of the kind of product represented by this object. + utility: Optional[float] + Directly specifies the utility. + """ + _simple_values = [ ("industry_average_duration_years", "IndustryAverageDurationYears"), ("industry_average_number_of_functional_units", "IndustryAverageNumberOfFunctionalUnits"), @@ -1239,20 +1273,6 @@ def __init__( utility: Optional[float] = None, **kwargs: Dict[str, Any], ) -> None: - """ - Specifies how much use can be obtained from the product represented by this BoM in comparison to a - representative industry average. - - Parameters - ---------- - industry_average_duration_years: Optional[float] - The average lifespan of all examples, throughout the industry, of the kind of product described herein. - industry_average_number_of_functional_units: Optional[float] - The average number of functional units delivered, in their lifespan, by all examples, throughout the - industry, of the kind of product represented by this object. - utility: Optional[float] - Directly specifies the utility. - """ super().__init__(**kwargs) self.industry_average_duration_years = industry_average_duration_years self.industry_average_number_of_functional_units = industry_average_number_of_functional_units @@ -1306,6 +1326,22 @@ def utility(self, value: Optional[float]) -> None: class ProductLifeSpan(BaseType): + """ + Specifies the average life span for the product represented by the BoM. + + Parameters + ---------- + duration_years: float + The product lifespan in years. + number_of_functional_units: Optional[float] + The number of functional units delivered in the lifespan of the product represented by the BoM. + functional_unit_description: Optional[str] + A short (ideally one-word) description of a single functional unit. + utility: Optional[UtilitySpecification] + Indicates how much use can be obtained from the product represented by the BoM, compared to an + industry-average example. + """ + _props = [("UtilitySpecification", "utility", "Utility")] _simple_values = [ ("duration_years", "DurationYears"), @@ -1322,21 +1358,6 @@ def __init__( utility: Optional[UtilitySpecification] = None, **kwargs: Dict[str, Any], ) -> None: - """ - Specifies the average life span for the product represented by the BoM. - - Parameters - ---------- - duration_years: float - The product lifespan in years. - number_of_functional_units: Optional[float] - The number of functional units delivered in the lifespan of the product represented by the BoM. - functional_unit_description: Optional[str] - A short (ideally one-word) description of a single functional unit. - utility: Optional[UtilitySpecification] - Indicates how much use can be obtained from the product represented by the BoM, compared to an - industry-average example. - """ super().__init__(**kwargs) self.duration_years = duration_years self.number_of_functional_units = number_of_functional_units @@ -1406,6 +1427,22 @@ def utility(self, value: Optional[UtilitySpecification]) -> None: class UsePhase(BaseType): + """ + Provides information about the sustainability of the product whilst in use, including electricity use, emissions + due to transport, emissions due to electricity consumption, and the expected life span of the product. + + Parameters + ---------- + product_life_span: ProductLifeSpan + Specifies the expected life span of the product. + electricity_mix: Optional[ElectricityMix] + Specifies the proportion of electricity within the destination country that comes from fossil fuels. + static_mode: Optional[StaticMode] + Provides information about the expected static use of the product. + mobile_mode: Optional[MobileMode] + Provides information about the expected mobile use of the product. + """ + _props = [ ("ProductLifeSpan", "product_life_span", "ProductLifeSpan"), ("ElectricityMix", "electricity_mix", "ElectricityMix"), @@ -1422,21 +1459,6 @@ def __init__( mobile_mode: Optional[MobileMode] = None, **kwargs: Dict[str, Any], ) -> None: - """ - Provides information about the sustainability of the product whilst in use, including electricity use, emissions - due to transport, emissions due to electricity consumption, and the expected life span of the product. - - Parameters - ---------- - product_life_span: ProductLifeSpan - Specifies the expected life span of the product. - electricity_mix: Optional[ElectricityMix] - Specifies the proportion of electricity within the destination country that comes from fossil fuels. - static_mode: Optional[StaticMode] - Provides information about the expected static use of the product. - mobile_mode: Optional[MobileMode] - Provides information about the expected mobile use of the product. - """ super().__init__(**kwargs) self.product_life_span = product_life_span self.electricity_mix = electricity_mix @@ -1505,6 +1527,20 @@ def mobile_mode(self, value: Optional[MobileMode]) -> None: class BoMDetails(BaseType): + """ + Explanatory information about a BoM. + + Parameters + ---------- + notes: Optional[str] + General notes for the BoM object. + picture_url: Optional[str] + The URL of an image to include at the top of the report. This URL must be accessible from the reporting + services server. + product_name: Optional[str] + The product name. + """ + _simple_values = [("notes", "Notes"), ("picture_url", "PictureUrl"), ("product_name", "ProductName")] def __init__( @@ -1515,19 +1551,6 @@ def __init__( product_name: Optional[str] = None, **kwargs: Dict[str, Any], ) -> None: - """ - Explanatory information about a BoM. - - Parameters - ---------- - notes: Optional[str] - General notes for the BoM object. - picture_url: Optional[str] - The URL of an image to include at the top of the report. This URL must be accessible from the reporting - services server. - product_name: Optional[str] - The product name. - """ super().__init__(**kwargs) self.notes = notes self.picture_url = picture_url @@ -1581,6 +1604,21 @@ def product_name(self, value: Optional[str]) -> None: class TransportStage(InternalIdentifierMixin, BaseType): + """ + Defines the transportation applied to an object, in terms of the generic transportation type (stored in the + Database) and the amount of that transport used in this instance. + + Parameters + ---------- + name: str + Name of this transportation stage, used only to identify the stage within the BoM. + mi_transport_reference: MIRecordReference + Reference to a record in the MI Database representing the means of transportation for this stage. + distance: UnittedValue + The distance covered by this transportation stage. + + """ + _props = [ ("MIRecordReference", "mi_transport_reference", "MITransportReference"), ("UnittedValue", "distance", "Distance"), @@ -1595,20 +1633,6 @@ def __init__( distance: UnittedValue, **kwargs: Any, ) -> None: - """ - Defines the transportation applied to an object, in terms of the generic transportation type (stored in the - Database) and the amount of that transport used in this instance. - - Parameters - ---------- - name: str - Name of this transportation stage, used only to identify the stage within the BoM. - mi_transport_reference: MIRecordReference - Reference to a record in the MI Database representing the means of transportation for this stage. - distance: UnittedValue - The distance covered by this transportation stage. - - """ super().__init__(**kwargs) self.name = name self.mi_transport_reference = mi_transport_reference @@ -1661,6 +1685,18 @@ def distance(self, value: UnittedValue) -> None: class Specification(CommonIdentifiersMixin, InternalIdentifierMixin, BaseType): + """ + A specification for a part, process, or material. Refers to a record with the MI Database storing the details + of the specification and its impact. + + Parameters + ---------- + mi_specification_reference: MIRecordReference + Reference identifying the record representing this specification in the MI Database. + quantity: Optional[UnittedValue] + A quantification of the specification, if applicable. + """ + _props = [ ("MIRecordReference", "mi_specification_reference", "MISpecificationReference"), ("UnittedValue", "quantity", "Quantity"), @@ -1673,17 +1709,6 @@ def __init__( quantity: Optional[UnittedValue] = None, **kwargs: Any, ) -> None: - """ - A specification for a part, process, or material. Refers to a record with the MI Database storing the details - of the specification and its impact. - - Parameters - ---------- - mi_specification_reference: MIRecordReference - Reference identifying the record representing this specification in the MI Database. - quantity: Optional[UnittedValue] - A quantification of the specification, if applicable. - """ super().__init__(**kwargs) self.mi_specification_reference = mi_specification_reference self.quantity = quantity @@ -1720,6 +1745,21 @@ def quantity(self, value: Optional[UnittedValue]) -> None: class Substance(CommonIdentifiersMixin, InternalIdentifierMixin, BaseType): + """ + A substance within a part, semi-finished part, material or specification. The substance is stored in the + Database. + + Parameters + ---------- + mi_substance_reference: MIRecordReference + Reference identifying the record representing the substance in the MI Database. + percentage: Optional[Float] + If the parent object consists of more than one substance, this defines the percentage of this + substance. + category: Optional[Category] + Represents whether the substance remains present in the material after production. + """ + _simple_values = [("percentage", "Percentage")] _props = [("MIRecordReference", "mi_substance_reference", "MISubstanceReference")] @@ -1732,20 +1772,6 @@ def __init__( category: Optional[Category] = None, **kwargs: Any, ) -> None: - """ - A substance within a part, semi-finished part, material or specification. The substance is stored in the - Database. - - Parameters - ---------- - mi_substance_reference: MIRecordReference - Reference identifying the record representing the substance in the MI Database. - percentage: Optional[Float] - If the parent object consists of more than one substance, this defines the percentage of this - substance. - category: Optional[Category] - Represents whether the substance remains present in the material after production. - """ super().__init__(**kwargs) self.mi_substance_reference = mi_substance_reference self.percentage = percentage @@ -1814,6 +1840,24 @@ def _write_custom_fields(self, obj: Dict, bom_writer: BoMWriter) -> None: class Process(CommonIdentifiersMixin, InternalIdentifierMixin, BaseType): + """ + A process that is applied to a subassembly, part, semi-finished part or material. The process is stored in the + Database. + + Parameters + ---------- + mi_process_reference: MIRecordReference + Reference identifying a record in the MI Database containing information about this process. + dimension_type: DimensionType + Object defining the dimension affected by the process, for example area for coatings, or volume for + rough machining operations. + percentage_of_part_affected: Optional[float] + Fraction of the object affected by the process, with basis specified by ``dimension_type``. + quantity_affected: Optional[UnittedValue] + Number of items affected by the process, if applicable. For example 17 fasteners are galvanized out of 24 + total. + """ + _simple_values = [("percentage_of_part_affected", "Percentage")] _props = [ @@ -1830,23 +1874,6 @@ def __init__( quantity_affected: Optional[UnittedValue] = None, **kwargs: Any, ) -> None: - """ - A process that is applied to a subassembly, part, semi-finished part or material. The process is stored in the - Database. - - Parameters - ---------- - mi_process_reference: MIRecordReference - Reference identifying a record in the MI Database containing information about this process. - dimension_type: DimensionType - Object defining the dimension affected by the process, for example area for coatings, or volume for - rough machining operations. - percentage_of_part_affected: Optional[float] - Fraction of the object affected by the process, with basis specified by ``dimension_type``. - quantity_affected: Optional[UnittedValue] - Number of items affected by the process, if applicable. For example 17 fasteners are galvanized out of 24 - total. - """ super().__init__(**kwargs) self.mi_process_reference = mi_process_reference self.dimension_type = dimension_type @@ -1930,6 +1957,28 @@ def quantity_affected(self, value: Optional[UnittedValue]) -> None: class Material(CommonIdentifiersMixin, InternalIdentifierMixin, BaseType): + """ + A Material within a part or semi-finished part. The material is stored in the Database. + + Parameters + ---------- + mi_material_reference: MIRecordReference + Reference identifying the material record within the MI Database. + percentage: Optional[float] + The fraction of the part consisting of this material. Provide either this or ``mass``. + mass: Optional[UnittedValue] + The mass of this material present within the part. Provide either this or ``percentage``. + recycle_content_is_typical: Optional[bool] + If True, indicates that the material's recyclability is typical, the value in the MI record will be used. + recycle_content_percentage: Optional[float] + If the recyclability is not typical for this material, or no typical value is available in the MI Database, + this value indicates which percentage of this material can be recycled. + processes: List[Process] + Any processes associated with the production and preparation of this material. + end_of_life_fates: List[EndOfLifeFate] + The fates of this material once the product is disposed of. + """ + _simple_values = [("percentage", "Percentage")] _props = [("UnittedValue", "mass", "Mass"), ("MIRecordReference", "mi_material_reference", "MIMaterialReference")] @@ -1957,27 +2006,6 @@ def __init__( end_of_life_fates: Optional[List[EndOfLifeFate]] = None, **kwargs: Any, ) -> None: - """ - A Material within a part or semi-finished part. The material is stored in the Database. - - Parameters - ---------- - mi_material_reference: MIRecordReference - Reference identifying the material record within the MI Database. - percentage: Optional[float] - The fraction of the part consisting of this material. Provide either this or ``mass``. - mass: Optional[UnittedValue] - The mass of this material present within the part. Provide either this or ``percentage``. - recycle_content_is_typical: Optional[bool] - If True, indicates that the material's recyclability is typical, the value in the MI record will be used. - recycle_content_percentage: Optional[float] - If the recyclability is not typical for this material, or no typical value is available in the MI Database, - this value indicates which percentage of this material can be recycled. - processes: List[Process] - Any processes associated with the production and preparation of this material. - end_of_life_fates: List[EndOfLifeFate] - The fates of this material once the product is disposed of. - """ super().__init__(**kwargs) self.percentage = percentage self.mass = mass @@ -2129,6 +2157,50 @@ def end_of_life_fates(self, value: List[EndOfLifeFate]) -> None: class Part(InternalIdentifierMixin, BaseType): + """ + A single part which may or may not be stored in the MI Database. + + Parameters + ---------- + part_number: str + The Part Number associated with this part. + quantity: Optional[UnittedValue] + The quantity of part(s) used in the parent part. For discrete parts, this will be the part count - an + integer with a blank unit (or "Each"). For continuous parts, it will be a mass, length, area or volume - a + float value with an appropriate units. + mass_per_unit_of_measure: Optional[UnittedValue] + The mass of the part, after processing, relative to the unit that Quantity is given in. If MassPerUom is + specified and VolumePerUom is not, then specifying materials within this part is interpreted to be + percentage by mass. + volume_per_unit_of_measure: Optional[UnittedValue] + The volume of the part, after processing, relative to the unit that Quantity is given in. If VolumePerUom + is specified and MassPerUom is not, then specifying materials within this part is interpreted to be + percentage by volume. + mi_part_reference: Optional[MIRecordReference] + A reference identifying a part stored in the MI Database. + non_mi_part_reference: Optional[Union[str, int]] + A reference to a part stored in another system, for informational purposes only. + part_name: Optional[str] + Display name for the part. + external_identity: Optional[str] + A temporary reference populated and used by applications to refer to the item within the BoM. + components: List[Part] + List of subcomponents for this part. + specifications: List[Specification] + List of specifications applying to this part. + materials: List[Material] + List of constituent materials making up this part. + substances: List[Substances] + List of substances contained within this part. + processes: List[Process] + List of processes used in the manufacture of this part. + rohs_exemptions: List[str] + If the part has a RoHS exemption, provide one or more justifications for the exemptions here. If the part is + analyzed as **Non-Compliant** then the RoHS indicator will return **Compliant with Exemptions** instead. + end_of_life_fates: List[EndOfLifeFate] + The fate(s) of the part, at the end-of-life of the product. + """ + _props = [ ("UnittedValue", "quantity", "Quantity"), ("UnittedValue", "mass_per_unit_of_measure", "MassPerUom"), @@ -2179,50 +2251,6 @@ def __init__( end_of_life_fates: Optional[List[EndOfLifeFate]] = None, **kwargs: Any, ): - """ - A single part which may or may not be stored in the MI Database. - - Parameters - ---------- - part_number: str - The Part Number associated with this part. - quantity: Optional[UnittedValue] - The quantity of part(s) used in the parent part. For discrete parts, this will be the part count - an - integer with a blank unit (or "Each"). For continuous parts, it will be a mass, length, area or volume - a - float value with an appropriate units. - mass_per_unit_of_measure: Optional[UnittedValue] - The mass of the part, after processing, relative to the unit that Quantity is given in. If MassPerUom is - specified and VolumePerUom is not, then specifying materials within this part is interpreted to be - percentage by mass. - volume_per_unit_of_measure: Optional[UnittedValue] - The volume of the part, after processing, relative to the unit that Quantity is given in. If VolumePerUom - is specified and MassPerUom is not, then specifying materials within this part is interpreted to be - percentage by volume. - mi_part_reference: Optional[MIRecordReference] - A reference identifying a part stored in the MI Database. - non_mi_part_reference: Optional[Union[str, int]] - A reference to a part stored in another system, for informational purposes only. - part_name: Optional[str] - Display name for the part. - external_identity: Optional[str] - A temporary reference populated and used by applications to refer to the item within the BoM. - components: List[Part] - List of subcomponents for this part. - specifications: List[Specification] - List of specifications applying to this part. - materials: List[Material] - List of constituent materials making up this part. - substances: List[Substances] - List of substances contained within this part. - processes: List[Process] - List of processes used in the manufacture of this part. - rohs_exemptions: List[str] - If the part has a RoHS exemption, provide one or more justifications for the exemptions here. If the part is - analyzed as **Non-Compliant** then the RoHS indicator will return **Compliant with Exemptions** instead. - end_of_life_fates: List[EndOfLifeFate] - The fate(s) of the part, at the end-of-life of the product. - """ - super().__init__(**kwargs) self.quantity = quantity self.mass_per_unit_of_measure = mass_per_unit_of_measure @@ -2521,29 +2549,30 @@ def end_of_life_fates(self, value: List[EndOfLifeFate]) -> None: class AnnotationSource(InternalIdentifierMixin, BaseType): + """ + An element indicating the source of annotations in the BoM. Each source may be + referenced by zero or more annotations. The producer and consumer(s) of the BoM must agree the + understood annotation source semantics, particularly regarding the untyped data therein. When a tool consumes + and re-produces BoMs, it should generally retain any annotation sources that it does not understand (of course, + it can also decide whether to keep, modify or discard those annotation sources that it does understand). + + The parameter documentation below is the suggested convention. + + Parameters + ---------- + name: str + The name of the software package that generated this annotation. + method: Optional[str] + The calculation method used to generate this annotation. + data: List[Any] + Data that the consumer of the BoM may require. + """ + _simple_values = [("name", "Name"), ("method", "Method")] def __init__( self, *, name: str, method: Optional[str] = None, data: Optional[List[Any]] = None, **kwargs: Any ) -> None: - """ - An element indicating the source of annotations in the BoM. Each source may be - referenced by zero or more annotations. The producer and consumer(s) of the BoM must agree the - understood annotation source semantics, particularly regarding the untyped data therein. When a tool consumes - and re-produces BoMs, it should generally retain any annotation sources that it does not understand (of course, - it can also decide whether to keep, modify or discard those annotation sources that it does understand). - - The parameter documentation below is the suggested convention. - - Parameters - ---------- - name: str - The name of the software package that generated this annotation. - method: Optional[str] - The calculation method used to generate this annotation. - data: List[Any] - Data that the consumer of the BoM may require. - """ super().__init__(**kwargs) self.name = name self.method = method @@ -2612,6 +2641,31 @@ def data(self, value: List[Any]) -> None: class Annotation(BaseType): + """ + An annotation that can be attached to objects within a BoM. The understood annotation types must be agreed + between the producer and consumer(s) of the BoM. The producer and consumer(s) must also agree whether a + particular type of annotation is allowed to have multiple instances assigned to a single element, or whether + only a single annotation of that type per element is allowed. When a tool consumes and re-produces BoMs, it + should generally retain any annotations that it does not understand (of course, it can also decide whether to + keep, modify or discard those annotations that it does understand). + + Annotations can either be pure textual data, providing additional data or context for an object, or they can + provide additional indicators, for example Embodied Energy of Production, or Cost of Raw Materials. + + Parameters + ---------- + target_id: str + The ``internal_identity`` of exactly one element to which the annotation applies. + source_id: Optional[str] + If provided, is the ``internal_identity`` of exactly one ``AnnotationSource`` object describing the source + of the annotation. If absent, no source information is provided. + type_: str + A string value indicating the type of the annotation, the accepted values for this parameter must be agreed + between the produced and consumer(s) of the BoM. + value: Union[str, UnittedValue] + The content of this annotation. + """ + _props = [("UnittedValue", "value", "Value")] _simple_values = [("type", "type"), ("target_id", "targetId"), ("source_id", "sourceId")] @@ -2625,30 +2679,6 @@ def __init__( value: Union[str, UnittedValue], **kwargs: Dict[str, Any], ) -> None: - """ - An annotation that can be attached to objects within a BoM. The understood annotation types must be agreed - between the producer and consumer(s) of the BoM. The producer and consumer(s) must also agree whether a - particular type of annotation is allowed to have multiple instances assigned to a single element, or whether - only a single annotation of that type per element is allowed. When a tool consumes and re-produces BoMs, it - should generally retain any annotations that it does not understand (of course, it can also decide whether to - keep, modify or discard those annotations that it does understand). - - Annotations can either be pure textual data, providing additional data or context for an object, or they can - provide additional indicators, for example Embodied Energy of Production, or Cost of Raw Materials. - - Parameters - ---------- - target_id: str - The ``internal_identity`` of exactly one element to which the annotation applies. - source_id: Optional[str] - If provided, is the ``internal_identity`` of exactly one ``AnnotationSource`` object describing the source - of the annotation. If absent, no source information is provided. - type_: str - A string value indicating the type of the annotation, the accepted values for this parameter must be agreed - between the produced and consumer(s) of the BoM. - value: Union[str, UnittedValue] - The content of this annotation. - """ super().__init__(**kwargs) self.target_id = target_id self.source_id = source_id @@ -2719,6 +2749,27 @@ def value(self, value: Union[str, UnittedValue]) -> None: class BillOfMaterials(InternalIdentifierMixin, BaseType): + """ + Type representing the root Bill of Materials object. + + Parameters + ---------- + components: List[Part] + The parts contained within this BoM. + transport_phase: List[TransportStage] + The different forms of transport to which the parts are subject. + use_phase: Optional[UsePhase] + The type of use to which this product is subject. + location: Optional[Location] + The location in which the object represented by the BoM is assembled. + notes: Optional[BoMDetails] + Any optional notes about this BoM. + annotations: List[Annotation] + Any annotations that are associated with objects within the BoM. + annotation_sources: List[AnnotationSource] + Sources for annotations present within the BoM. + """ + _props = [ ("UsePhase", "use_phase", "UsePhase"), ("Location", "location", "Location"), @@ -2747,26 +2798,6 @@ def __init__( annotation_sources: Optional[List[AnnotationSource]] = None, **kwargs: Any, ) -> None: - """ - Type representing the root Bill of Materials object. - - Parameters - ---------- - components: List[Part] - The parts contained within this BoM. - transport_phase: List[TransportStage] - The different forms of transport to which the parts are subject. - use_phase: Optional[UsePhase] - The type of use to which this product is subject. - location: Optional[Location] - The location in which the object represented by the BoM is assembled. - notes: Optional[BoMDetails] - Any optional notes about this BoM. - annotations: List[Annotation] - Any annotations that are associated with objects within the BoM. - annotation_sources: List[AnnotationSource] - Sources for annotations present within the BoM. - """ super().__init__(**kwargs) self.components = components if transport_phase is None: diff --git a/src/ansys/grantami/bomanalytics/bom_types/_builders.py b/src/ansys/grantami/bomanalytics/bom_types/_builders.py index 8cc198d7..bc34bbc6 100644 --- a/src/ansys/grantami/bomanalytics/bom_types/_builders.py +++ b/src/ansys/grantami/bomanalytics/bom_types/_builders.py @@ -87,17 +87,18 @@ def build(self) -> MIAttributeReference: class AttributeReferenceBuilder: + """ + Create a MI Attribute Reference with a valid combination of properties. + + Parameters + ---------- + db_key : str + Database Key specifying the database the Attribute is in. + """ + _build: MIAttributeReference def __init__(self, db_key: str) -> None: - """ - Create a MI Attribute Reference with a valid combination of properties. - - Parameters - ---------- - db_key : str - Database Key specifying the database the Attribute is in. - """ self._build = MIAttributeReference(db_key=db_key) def with_attribute_identity(self, attribute_identity: int) -> _FinalAttributeReferenceBuilder: @@ -154,19 +155,20 @@ def with_attribute_name( class RecordReferenceBuilder: + """ + Create a MIRecordReference with a valid combination of properties. + + Parameters + ---------- + db_key : str + Database key specifying the database to which the Record belongs. + record_uid : Optional[str] + Optional identifier to annotate this record reference, will be returned with the response unchanged. + """ + _build: MIRecordReference def __init__(self, db_key: str, *, record_uid: Optional[str] = None) -> None: - """ - Create a MIRecordReference with a valid combination of properties. - - Parameters - ---------- - db_key : str - Database key specifying the database to which the Record belongs. - record_uid : Optional[str] - Optional identifier to annotate this record reference, will be returned with the response unchanged. - """ self._build = MIRecordReference(db_key=db_key, record_uid=record_uid) def with_record_history_id( From 2dd6ff0b2e68ad331353e86b5812724b0a802214 Mon Sep 17 00:00:00 2001 From: Andy Grigg Date: Fri, 13 Oct 2023 11:55:21 -0400 Subject: [PATCH 126/275] Update files for 2024 R1 --- cicd/get_cleaned_db_entries.py | 37 +++++++++---------- cicd/prepare_rs_db.py | 65 +++++++++++++++------------------- 2 files changed, 47 insertions(+), 55 deletions(-) diff --git a/cicd/get_cleaned_db_entries.py b/cicd/get_cleaned_db_entries.py index b67a8d37..2c50e902 100644 --- a/cicd/get_cleaned_db_entries.py +++ b/cicd/get_cleaned_db_entries.py @@ -44,7 +44,7 @@ logger.addHandler(ch) MI_URL = "http://localhost/mi_servicelayer" -DB_KEY = "MI_Restricted_Substances" +DB_KEY = "MI_Restricted_Substances_23R2" OUTPUT_FILE_NAME = Path("./rs_data.json").resolve() logger.info(f"Connecting to MI at {MI_URL} with AutoLogon") @@ -67,16 +67,17 @@ "Legislations and Lists": {"layout": "Legislations", "subset": "All legislations"}, } +# Generally static unless the BoM Analytics Servers logic has changed, or these attributes have been added to the layout +# Both of these scenarios are unlikely extra_attributes = {"Coatings": ["Coating Code"], "Legislations and Lists": ["Legislation ID", "Short title"]} -renamed_attributes = {"Specifications": {"Chemical name": "Substance name"}} +# Will generally be different for each release, and will likely be empty. +renamed_attributes = {} info = {} logger.info(f"Reading records and attributes from database '{DB_KEY}'") logger.info("Getting Table Information") -tables: models.GrantaServerApiSchemaTablesInfo = tables_api.v1alpha_databases_database_key_tables_get( - database_key=DB_KEY -) +tables = tables_api.v1alpha_databases_database_key_tables_get(database_key=DB_KEY) table_name_map = {table.name: table for table in tables.tables} for table_name, table_details in table_information.items(): logger.info(f"--Processing table '{table_name}'") @@ -86,14 +87,12 @@ logger.info(f"----Fetching attributes in layout '{layout_name}") renamed_attributes_for_table = renamed_attributes.get(table_name, []) table_info = table_name_map[table_name] - table_layouts: models.GrantaServerApiSchemaLayoutsLayoutsInfo = ( - layouts_api.v1alpha_databases_database_key_tables_table_guid_layouts_get( - database_key=DB_KEY, table_guid=table_info.guid - ) + table_layouts = layouts_api.v1alpha_databases_database_key_tables_table_guid_layouts_get( + database_key=DB_KEY, table_guid=table_info.guid ) layout_map = {layout.name: layout for layout in table_layouts.layouts} layout_item = layout_map[layout_name] - sections_response: models.GrantaServerApiSchemaLayoutsLayoutSectionsInfo = ( + sections_response = ( layout_sections_api.v1alpha_databases_database_key_tables_table_guid_layouts_layout_guid_sections_get( database_key=DB_KEY, table_guid=table_info.guid, layout_guid=layout_item.guid, show_full_detail=True ) @@ -101,18 +100,14 @@ layout_info = [section.to_dict() for section in sections_response.layout_sections] if table_name in extra_attributes: # Add extra attribute information to a section in the layout - table_attributes: models.GrantaServerApiSchemaAttributesAttributesInfo = ( - attributes_api.v1alpha_databases_database_key_tables_table_guid_attributes_get( - DB_KEY, table_guid=table_info.guid - ) + table_attributes = attributes_api.v1alpha_databases_database_key_tables_table_guid_attributes_get( + database_key=DB_KEY, table_guid=table_info.guid ) attribute_name_map = {attribute.name: attribute for attribute in table_attributes.attributes} added_items = [] relevant_attribute_names = extra_attributes[table_name] for extra_attribute_name in relevant_attribute_names: - attribute_info: models.GrantaServerApiSchemaSlimEntitiesSlimAttribute = attribute_name_map[ - extra_attribute_name - ] + attribute_info = attribute_name_map[extra_attribute_name] added_items.append( models.GrantaServerApiSchemaLayoutsLayoutAttributeItem( attribute_type=attribute_info.type, @@ -120,11 +115,17 @@ name=attribute_info.name, meta_attributes=[], tabular_columns=None, + read_only=False, + required=False, + guid="", ) ) layout_info.append( models.GrantaServerApiSchemaLayoutsFullLayoutSection( - name="Extra Attributes", section_items=added_items + name="Extra Attributes", + section_items=added_items, + display_names={}, + guid="", ).to_dict() ) if len(renamed_attributes_for_table) > 0: diff --git a/cicd/prepare_rs_db.py b/cicd/prepare_rs_db.py index f54076c0..bf05eff3 100644 --- a/cicd/prepare_rs_db.py +++ b/cicd/prepare_rs_db.py @@ -47,9 +47,7 @@ class TableBrowser(ServerApiClient): def get_table_name_guid_map(self, db_key: str) -> Mapping[str, str]: tables_api = api.SchemaTablesApi(self._client) self.logger.info(f"Getting Table Information for database '{db_key}'") - tables: models.GrantaServerApiSchemaTablesInfo = tables_api.v1alpha_databases_database_key_tables_get( - database_key=db_key - ) + tables = tables_api.v1alpha_databases_database_key_tables_get(database_key=db_key) table_name_map = {table.name: table.guid for table in tables.tables} logger.info(f"Fetched {len(table_name_map)} tables") for name, guid in table_name_map.items(): @@ -59,7 +57,7 @@ def get_table_name_guid_map(self, db_key: str) -> Mapping[str, str]: def update_table_name(self, db_key: str, table_guid: str, new_table_name: str) -> None: tables_api = api.SchemaTablesApi(self._client) self.logger.info(f"Updating Table - {db_key}:{table_guid} with name '{new_table_name}'") - patch_request = models.GrantaServerApiSchemaUpdateTable(name=new_table_name) + patch_request = models.GrantaServerApiSchemaTablesUpdateTable(name=new_table_name) tables_api.v1alpha_databases_database_key_tables_table_guid_patch( database_key=db_key, table_guid=table_guid, body=patch_request ) @@ -71,10 +69,8 @@ def __init__(self, api_client: ApiClient, logger: logging.Logger, db_key: str, t self._attributes_api = api.SchemaAttributesApi(self._client) self._layouts_api = api.SchemaLayoutsApi(self._client) self._layout_sections_api = api.SchemaLayoutSectionsApi(self._client) - table_attributes: models.GrantaServerApiSchemaAttributesAttributesInfo = ( - self._attributes_api.v1alpha_databases_database_key_tables_table_guid_attributes_get( - database_key=db_key, table_guid=table_guid - ) + table_attributes = self._attributes_api.v1alpha_databases_database_key_tables_table_guid_attributes_get( + database_key=db_key, table_guid=table_guid ) self._db_key = db_key self._table_guid = table_guid @@ -84,10 +80,8 @@ def __init__(self, api_client: ApiClient, logger: logging.Logger, db_key: str, t def get_layout_name_guid_map(self) -> Mapping[str, str]: self.logger.info(f"Getting Layout Information for database '{self._db_key}' in table '{self._table_guid}'") - layouts: models.GrantaServerApiSchemaLayoutsLayoutsInfo = ( - self._layouts_api.v1alpha_databases_database_key_tables_table_guid_layouts_get( - database_key=self._db_key, table_guid=self._table_guid - ) + layouts = self._layouts_api.v1alpha_databases_database_key_tables_table_guid_layouts_get( + database_key=self._db_key, table_guid=self._table_guid ) layouts_map = {layout.name: layout.guid for layout in layouts.layouts} return layouts_map @@ -100,18 +94,16 @@ def delete_layout(self, layout_guid: str) -> None: def create_layout(self, layout_name: str) -> str: logger.info(f"Creating new layout '{layout_name}'") - layout_request = models.GrantaServerApiSchemaLayoutsUpdateLayout(name=layout_name) - layout_response: models.GrantaServerApiSchemaSlimEntitiesSlimLayout = ( - self._layouts_api.v1alpha_databases_database_key_tables_table_guid_layouts_post( - database_key=self._db_key, table_guid=self._table_guid, body=layout_request - ) + layout_request = models.GrantaServerApiSchemaLayoutsCreateLayout(name=layout_name) + layout_response = self._layouts_api.v1alpha_databases_database_key_tables_table_guid_layouts_post( + database_key=self._db_key, table_guid=self._table_guid, body=layout_request ) return layout_response.guid def create_layout_section(self, layout_guid: str, section_name: str) -> str: logger.info(f"Creating new layout section '{section_name}' in layout '{layout_guid}'") - section_request = models.GrantaServerApiSchemaSlimEntitiesSlimLayoutSection(name=section_name) - section_response: models.GrantaServerApiSchemaSlimEntitiesSlimLayoutSection = self._layout_sections_api.v1alpha_databases_database_key_tables_table_guid_layouts_layout_guid_sections_post( # noqa: E501 + section_request = models.GrantaServerApiSchemaLayoutsCreateLayoutSection(name=section_name) + section_response = self._layout_sections_api.v1alpha_databases_database_key_tables_table_guid_layouts_layout_guid_sections_post( # noqa: E501 database_key=self._db_key, table_guid=self._table_guid, layout_guid=layout_guid, body=section_request ) return section_response.guid @@ -148,7 +140,9 @@ def _process_association_chain(self, layout_item): def _process_association_chain_link(self, chain_link): links = [ models.GrantaServerApiSchemaLayoutsNewLayoutAssociationChainLink( - forwards=chain_link["forwards"], tabular_attribute_guid=chain_link["underlying_entity_guid"] + forwards=chain_link["forwards"], + tabular_attribute_guid=chain_link["underlying_entity_guid"], + source_database_version_guid=chain_link["target_database"], ) ] logger.info(f"----Link - {chain_link['name']}") @@ -164,11 +158,12 @@ def _process_attribute(self, layout_item: Mapping): new_section_item = models.GrantaServerApiSchemaLayoutsNewLayoutAttributeItem(attribute_guid=attribute_guid) if layout_item["tabular_columns"] is not None: - detailed_attribute_info: models.GrantaServerApiSchemaAttributesTabularAttribute = ( + detailed_attribute_info = ( self._attributes_api.v1alpha_databases_database_key_tables_table_guid_attributes_attribute_guid_get( database_key=self._db_key, table_guid=self._table_guid, attribute_guid=attribute_guid ) ) + assert isinstance(detailed_attribute_info, models.GrantaServerApiSchemaAttributesTabularAttribute) column_map = {column.name: column for column in detailed_attribute_info.tabular_columns} columns = [] for column_item in layout_item["tabular_columns"]: @@ -177,14 +172,14 @@ def _process_attribute(self, layout_item: Mapping): if len(meta_names) > 0: logger.info("--Meta-attributes") metas = [] - meta_response: models.GrantaServerApiSchemaAttributesAttributesInfo = self._attributes_api.v1alpha_databases_database_key_tables_table_guid_attributes_attribute_guid_meta_attributes_get( # noqa: E501 + meta_response = self._attributes_api.v1alpha_databases_database_key_tables_table_guid_attributes_attribute_guid_meta_attributes_get( # noqa: E501 database_key=self._db_key, table_guid=self._table_guid, attribute_guid=attribute_guid ) meta_map = {meta.name: meta.guid for meta in meta_response.attributes} for meta_name in meta_names: logger.info(f"----{meta_name}") meta_item = meta_map[meta_name] - metas.append(models.GrantaServerApiSchemaLayoutsNewLayoutAttributeItem(attribute_guid=meta_item.guid)) + metas.append(models.GrantaServerApiSchemaLayoutsNewLayoutAttributeItem(attribute_guid=meta_item)) new_section_item.meta_attributes = metas return new_section_item @@ -193,10 +188,8 @@ class SubsetCreator(ServerApiClient): def get_subset_name_guid_map(self, db_key: str, table_guid: str) -> Mapping[str, str]: subsets_api = api.SchemaSubsetsApi(self._client) self.logger.info(f"Getting Subset Information for database '{db_key}' in table '{table_guid}'") - subsets: models.GrantaServerApiSchemaSubsetsInfo = ( - subsets_api.v1alpha_databases_database_key_tables_table_guid_subsets_get( - database_key=db_key, table_guid=table_guid - ) + subsets = subsets_api.v1alpha_databases_database_key_tables_table_guid_subsets_get( + database_key=db_key, table_guid=table_guid ) subsets_map = {subset.name: subset.guid for subset in subsets.subsets} return subsets_map @@ -211,11 +204,9 @@ def delete_subset(self, db_key: str, table_guid: str, subset_guid: str): def create_subset(self, db_key: str, table_guid: str, subset_name: str) -> str: subsets_api = api.SchemaSubsetsApi(self._client) self.logger.info(f"Creating new subset '{subset_name}'") - subset_request = models.GrantaServerApiSchemaUpdateSubset(name=subset_name) - subset_response: models.GrantaServerApiSchemaSubset = ( - subsets_api.v1alpha_databases_database_key_tables_table_guid_subsets_post( - database_key=db_key, table_guid=table_guid, body=subset_request - ) + subset_request = models.GrantaServerApiSchemaSubsetsCreateSubset(name=subset_name) + subset_response = subsets_api.v1alpha_databases_database_key_tables_table_guid_subsets_post( + database_key=db_key, table_guid=table_guid, body=subset_request ) return subset_response.guid @@ -232,8 +223,8 @@ def _get_subsets( ) -> Iterable[Iterable[gdl.SubsetReference]]: self._logger.info("Fetching subset membership for records") record_references = [ - gdl.RecordReference(DBKey=db_key, historyGUID=history_guid, recordGUID=record_guid, recordUID=str(uid)) - for uid, (history_guid, record_guid) in enumerate(record_identifiers) + gdl.RecordReference(DBKey=db_key, historyGUID=history_guid, recordUID=str(uid)) + for uid, (history_guid, _) in enumerate(record_identifiers) ] subsets_request = gdl.GetRecordAttributesByRefRequest( attributeReferences=[ @@ -365,8 +356,8 @@ def process_database( vanilla_table_name_map = table_browser.get_table_name_guid_map(vanilla_db_key) process_database(vanilla_db_key, api_client, gdl_session, vanilla_table_name_map) - custom_db_key = "MI_Restricted_Substances_Custom_Tables" - custom_table_name_map = table_browser.get_table_name_guid_map(custom_db_key) - process_database(custom_db_key, api_client, gdl_session, custom_table_name_map) + # custom_db_key = "MI_Restricted_Substances_Custom_Tables" + # custom_table_name_map = table_browser.get_table_name_guid_map(custom_db_key) + # process_database(custom_db_key, api_client, gdl_session, custom_table_name_map) logger.info("All done") From b4beb049cf342d5a67ee30c0624ec4152fac5381 Mon Sep 17 00:00:00 2001 From: Doug Addy Date: Fri, 13 Oct 2023 16:57:24 +0100 Subject: [PATCH 127/275] Ignore deserialization --- ignore_words.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/ignore_words.txt b/ignore_words.txt index e69de29b..31dabe9b 100644 --- a/ignore_words.txt +++ b/ignore_words.txt @@ -0,0 +1 @@ +deserialization \ No newline at end of file From 76ddb3a46a5459dc98b34daa7f4a020171ff5e2f Mon Sep 17 00:00:00 2001 From: Doug Addy Date: Fri, 13 Oct 2023 16:59:16 +0100 Subject: [PATCH 128/275] Exclude the right thing --- doc/source/api/bom_builder/api.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/source/api/bom_builder/api.rst b/doc/source/api/bom_builder/api.rst index 6ab417d1..2044a04c 100644 --- a/doc/source/api/bom_builder/api.rst +++ b/doc/source/api/bom_builder/api.rst @@ -10,5 +10,5 @@ BoM Object Model .. automodule:: ansys.grantami.bomanalytics.bom_types._bom_types - :exclude-members: compliance_by_material_and_indicator + :exclude-members: BillOfMaterials :inherited-members: From a66de5355b389a4cf54d2fa41c173bc850dcda13 Mon Sep 17 00:00:00 2001 From: Doug Addy Date: Fri, 13 Oct 2023 17:05:02 +0100 Subject: [PATCH 129/275] Move a docstring and update the other ignorewords... --- doc/styles/Vocab/ANSYS/accept.txt | 4 +++- src/ansys/grantami/bomanalytics/_bom_helper.py | 7 ++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/doc/styles/Vocab/ANSYS/accept.txt b/doc/styles/Vocab/ANSYS/accept.txt index d4f18673..b1e65109 100644 --- a/doc/styles/Vocab/ANSYS/accept.txt +++ b/doc/styles/Vocab/ANSYS/accept.txt @@ -5,4 +5,6 @@ PyGranta BoM Analytics BoM BoM Analytics legislations -RoHS \ No newline at end of file +RoHS +deserialization +Deserialization \ No newline at end of file diff --git a/src/ansys/grantami/bomanalytics/_bom_helper.py b/src/ansys/grantami/bomanalytics/_bom_helper.py index 675d046e..9f4ba579 100644 --- a/src/ansys/grantami/bomanalytics/_bom_helper.py +++ b/src/ansys/grantami/bomanalytics/_bom_helper.py @@ -11,13 +11,14 @@ class BoMHandler: + """ + Handler for XML formatted BoMs, supports reading from files and strings, and serializing to string format. + """ + _schema_path: Path = Path(__file__).parent / "schemas" / "BillOfMaterialsEco2301.xsd" _schema: XMLSchema def __init__(self) -> None: - """ - Handler for XML formatted BoMs, supports reading from files and strings, and serializing to string format. - """ self._schema = XMLSchema(self._schema_path) self._schema.namespaces[""] = self._schema.namespaces["eco"] self._reader = BoMReader(self._schema) From 8b6aedf081b4ba2de548ff6992077a26d37f46e9 Mon Sep 17 00:00:00 2001 From: Doug Addy Date: Fri, 13 Oct 2023 17:15:57 +0100 Subject: [PATCH 130/275] Try without tildes --- doc/source/api/bom_builder/index.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/source/api/bom_builder/index.rst b/doc/source/api/bom_builder/index.rst index 6a21f025..c8dfd8c7 100644 --- a/doc/source/api/bom_builder/index.rst +++ b/doc/source/api/bom_builder/index.rst @@ -6,13 +6,13 @@ BoM Helpers This section provides an introduction to the BoM Helpers. These represent a BoM (bill of materials) in Ansys Granta MI 2301 XML BoM format and support reading and writing these files. -The :class:`~ansys.grantami.bomanalytics.bom_types.BillOfMaterials` represents the root object in a BoM hierarchy, and can +The :class:`ansys.grantami.bomanalytics.bom_types.BillOfMaterials` represents the root object in a BoM hierarchy, and can be used to programmatically generate a BoM. To aid in manipulation of these objects, builders have been provided for Granta MI object references, these assist in the correct formation of these reference objects, depending on how you need to refer to these entities. -Serialization and Deserialization of BoM objects can be performed using the :class:`~ansys.grantami.bomanalytics.BoMHandler` +Serialization and Deserialization of BoM objects can be performed using the :class:`ansys.grantami.bomanalytics.BoMHandler` this exposes methods to read a BoM from a string or a file, and to write to a string or a file. The resulting BoM can be passed to either a Sustainability or a Compliance query. From 7e8659449aa909cfb71ac673e22b4dc134032dd4 Mon Sep 17 00:00:00 2001 From: Doug Addy Date: Fri, 13 Oct 2023 17:28:21 +0100 Subject: [PATCH 131/275] Pin vale? --- .github/workflows/local_checks.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/local_checks.yml b/.github/workflows/local_checks.yml index c6f8c6c0..7928d07b 100644 --- a/.github/workflows/local_checks.yml +++ b/.github/workflows/local_checks.yml @@ -26,6 +26,7 @@ jobs: uses: ansys/actions/doc-style@v4 with: token: ${{ secrets.GITHUB_TOKEN }} + vale-version: 2.28 unit_tests: name: Unit tests From a4c61a2f296678fc004d13422e5d68906db3da0a Mon Sep 17 00:00:00 2001 From: Doug Addy Date: Fri, 13 Oct 2023 17:35:26 +0100 Subject: [PATCH 132/275] There is no 2.28 --- .github/workflows/local_checks.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/local_checks.yml b/.github/workflows/local_checks.yml index 7928d07b..e3bc4747 100644 --- a/.github/workflows/local_checks.yml +++ b/.github/workflows/local_checks.yml @@ -26,7 +26,7 @@ jobs: uses: ansys/actions/doc-style@v4 with: token: ${{ secrets.GITHUB_TOKEN }} - vale-version: 2.28 + vale-version: 2.28.1 unit_tests: name: Unit tests From 7ff91ceb224f37af641743e35f16701f029dfd3b Mon Sep 17 00:00:00 2001 From: Doug Addy Date: Mon, 16 Oct 2023 10:21:18 +0100 Subject: [PATCH 133/275] Update index.rst --- doc/source/api/bom_builder/index.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/source/api/bom_builder/index.rst b/doc/source/api/bom_builder/index.rst index c8dfd8c7..7769387a 100644 --- a/doc/source/api/bom_builder/index.rst +++ b/doc/source/api/bom_builder/index.rst @@ -17,7 +17,7 @@ this exposes methods to read a BoM from a string or a file, and to write to a st passed to either a Sustainability or a Compliance query. .. toctree:: - :maxdepth: 3 + :maxdepth: 2 api builders From 4ed327d5c7281863d6dec8f6d4a4500c7f6e1ef4 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Fri, 13 Oct 2023 12:29:26 +0200 Subject: [PATCH 134/275] Update README.rst --- README.rst | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/README.rst b/README.rst index 7d268e3d..3dc3b2ad 100644 --- a/README.rst +++ b/README.rst @@ -6,10 +6,13 @@ Project Overview PyGranta BoM Analytics is part of the larger `PyAnsys `_ effort to facilitate the use of Ansys technologies directly from Python. -The Granta MI Restricted Substances solution includes a REST API for -evaluating compliance of products, assemblies, specifications, and -materials against legislations. This package abstracts automatically- -generated code into an easy-to-use client library. +The MI Restricted Substances and MI Sustainability solutions for Granta MI include REST APIs for: + + - Evaluating compliance of products, assemblies, specifications, and + materials against legislations. + - Evaluating the environmental performance of products, assemblies, materials and processes. + +This package abstracts automatically-generated code into an easy-to-use client library. Installation From 9b125112c9e1b74331250bfc139be3f329b8a91b Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Fri, 13 Oct 2023 13:12:48 +0200 Subject: [PATCH 135/275] Clarify aggregation methodology --- .../4-1_BoM_Sustainability_summary.py | 8 +++---- .../grantami/bomanalytics/_query_results.py | 23 ++++++++++--------- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/examples/4_Sustainability/4-1_BoM_Sustainability_summary.py b/examples/4_Sustainability/4-1_BoM_Sustainability_summary.py index 41be38c6..b9a76f1d 100644 --- a/examples/4_Sustainability/4-1_BoM_Sustainability_summary.py +++ b/examples/4_Sustainability/4-1_BoM_Sustainability_summary.py @@ -223,10 +223,10 @@ def plot_footprint(df, title, textinfo="percent+label", hoverinfo="value+name"): # The environmental contribution specifically from processing applied to raw materials is summarized in the # `primary_processes_details`, `secondary_processes_details`, and `joining_and_finishing_processes_details` properties # for primary, secondary, and joining and finishing process categories respectively. Each category lists unique -# process-material pairs, which contribute at least 5% of the total for the process category. The relative contributions -# describe the contribution of a process-material pair, relative to the total contributions of all processes from the -# same category. Processes that do meet the contribution threshold are aggregated under the ``Other`` item, with the -# material set to `None`. +# process-material pairs, which contribute at least 5% of the total impact for the process category. The relative +# contributions describe the contribution of a process-material pair, relative to the total contributions of all +# processes from the same category. Processes that do meet the contribution threshold are aggregated under the +# ``Other`` item, with the material set to `None`. # ### Primary processing diff --git a/src/ansys/grantami/bomanalytics/_query_results.py b/src/ansys/grantami/bomanalytics/_query_results.py index 406823b6..159901b0 100644 --- a/src/ansys/grantami/bomanalytics/_query_results.py +++ b/src/ansys/grantami/bomanalytics/_query_results.py @@ -911,9 +911,9 @@ def material_details(self) -> List[MaterialSummaryResult]: """ Summary information for aggregated materials. - Relative and absolute contributions for materials whose relative contributions exceed 2% of the total energy - for materials. - All materials found in the BoM, which do not exceed the threshold, are aggregated under a virtual + Relative and absolute contributions for materials whose relative contributions exceed 2% of the total impact + for materials (by embodied energy or climate change). + All materials found in the BoM, which do not exceed the 2% threshold, are aggregated under a virtual :class:`~ansys.grantami.bomanalytics._item_results.MaterialSummaryResult`, whose ``name`` property is equal to ``Other``. @@ -928,9 +928,9 @@ def primary_processes_details(self) -> List[ProcessSummaryResult]: """ Summary information for primary processes, aggregated by process and the material it is applied to. - The returned list includes all primary processes whose relative contributions exceed 5% of the total energy of - all primary processes. Processes not exceeding the threshold are aggregated under a virtual - :class:`~ansys.grantami.bomanalytics._item_results.ProcessSummaryResult`, whose + The returned list includes all primary processes whose relative contributions exceed 5% of the total impact of + all primary processes (by embodied energy or climate change). Processes not exceeding the 5% threshold are + aggregated under a virtual :class:`~ansys.grantami.bomanalytics._item_results.ProcessSummaryResult`, whose :attr:`~ansys.grantami.bomanalytics._item_results.ProcessSummaryResult.process_name` is equal to ``Other``. Values in percentages express the contribution of the specific process, relative to contributions of all @@ -943,9 +943,9 @@ def secondary_processes_details(self) -> List[ProcessSummaryResult]: """ Summary information for secondary processes, aggregated by process and the material it is applied to. - The returned list includes all secondary processes whose relative contributions exceed 5% of the total energy of - all secondary processes. Processes not exceeding the threshold are aggregated under a virtual - :class:`~ansys.grantami.bomanalytics._item_results.ProcessSummaryResult`, whose + The returned list includes all secondary processes whose relative contributions exceed 5% of the total impact of + all secondary processes (by embodied energy or climate change). Processes not exceeding the 5% threshold are + aggregated under a virtual :class:`~ansys.grantami.bomanalytics._item_results.ProcessSummaryResult`, whose :attr:`~ansys.grantami.bomanalytics._item_results.ProcessSummaryResult.process_name` is equal to ``Other``. Values in percentages express the contribution of the specific process, relative to contributions of all @@ -960,8 +960,9 @@ def joining_and_finishing_processes_details(self) -> List[ProcessSummaryResult]: to. The returned list includes all joining and finishing processes whose relative contributions exceed 5% of the - total energy of all joining and finishing processes. Processes not exceeding the threshold are aggregated under - a virtual :class:`~ansys.grantami.bomanalytics._item_results.ProcessSummaryResult`, whose + total impact of all joining and finishing processes (by embodied energy or climate change). Processes not + exceeding the 5% threshold are aggregated under a virtual + :class:`~ansys.grantami.bomanalytics._item_results.ProcessSummaryResult`, whose :attr:`~ansys.grantami.bomanalytics._item_results.ProcessSummaryResult.process_name` is equal to ``Other``. Values in percentages express the contribution of the specific process, relative to contributions of all From 315dc7a1bc5423e79860b5049ffec51dc8b446fc Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Fri, 13 Oct 2023 14:14:17 +0200 Subject: [PATCH 136/275] Add links to online docs --- doc/source/api/compliance/bom.rst | 4 ++++ doc/source/api/impacted_substances/bom.rst | 4 ++++ doc/source/api/sustainability/index.rst | 9 +++++++++ doc/source/conf.py | 7 +++++++ 4 files changed, 24 insertions(+) diff --git a/doc/source/api/compliance/bom.rst b/doc/source/api/compliance/bom.rst index f2730737..5900e5d0 100644 --- a/doc/source/api/compliance/bom.rst +++ b/doc/source/api/compliance/bom.rst @@ -3,6 +3,10 @@ BoM compliance ============== +For more information about BoM item types relevant for compliance analysis, refer to the +:MI_docs:`BoM item types for Restricted Substances ` section of the online +documentation. + Query definition ~~~~~~~~~~~~~~~~ diff --git a/doc/source/api/impacted_substances/bom.rst b/doc/source/api/impacted_substances/bom.rst index 533b4bce..6894a731 100644 --- a/doc/source/api/impacted_substances/bom.rst +++ b/doc/source/api/impacted_substances/bom.rst @@ -3,6 +3,10 @@ BoM impacted substances ======================= +For more information about BoM item types relevant for impacted substances analysis, refer to the +:MI_docs:`BoM item types for Restricted Substances ` section of the online +documentation. + .. _ref_grantami_bomanalytics_api_impactedsubstances_bom_query: Query definition diff --git a/doc/source/api/sustainability/index.rst b/doc/source/api/sustainability/index.rst index 36633f3b..f6c5c625 100644 --- a/doc/source/api/sustainability/index.rst +++ b/doc/source/api/sustainability/index.rst @@ -3,6 +3,15 @@ Sustainability API ================== +This section provides an overview of the API for sustainability. The +:ref:`ref_grantami_bomanalytics_api_sustainability_bom` and +:ref:`ref_grantami_bomanalytics_api_sustainability_summary_bom` queries +can be used to determine the environmental performance of a BoM (bill of materials) in Ansys Granta MI 2301 XML BoM +format. + +For more information about BoM item types relevant for sustainability analysis, refer to the +:MI_docs:`BoM item types for Sustainability ` section of the online +documentation. .. toctree:: diff --git a/doc/source/conf.py b/doc/source/conf.py index 2502a35e..aa580c25 100755 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -81,6 +81,13 @@ # type, unless multiple values are being returned" } +extlinks = { + 'MI_docs': ( + 'https://miniature-fortnight-dc09be55.pages.github.io/granta/v241/en/RS_and_Sustainability/%s', + None + ) +} + # static path html_static_path = ["_static"] From aa803bd2233e8549c8a5b44ea7555d765a3ff75c Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Fri, 13 Oct 2023 17:56:30 +0200 Subject: [PATCH 137/275] Add record identification documentation --- doc/source/api/index.rst | 7 +- doc/source/api/record_identification.rst | 94 ++++++++++++++++++++++++ 2 files changed, 99 insertions(+), 2 deletions(-) create mode 100644 doc/source/api/record_identification.rst diff --git a/doc/source/api/index.rst b/doc/source/api/index.rst index 983f6556..8d8be6b4 100644 --- a/doc/source/api/index.rst +++ b/doc/source/api/index.rst @@ -12,11 +12,13 @@ The API for PyGranta BoM Analytics is split into these key sections: - :ref:`ref_grantami_bomanalytics_common_exceptions` lists the possible custom exceptions that might be raised. - :ref:`ref_grantami_bomanalytics_batching` explains how queries are batched if they exceed a certain size. +- :ref:`ref_grantami_bomanalytics_record_identification` explains how Granta MI records are identified throughout the + package. - :ref:`ref_grantami_bomanalytics_api_impactedsubstances_index` explains how to build queries for impacted substances and interpret results. -- :ref:`ref_grantami_bomanalytics_api_compliance_index` explains how to build specific queries for compliance +- :ref:`ref_grantami_bomanalytics_api_compliance_index` explains how to build queries for compliance and how to interpret results. -- :ref:`ref_grantami_bomanalytics_api_sustainability_index` explains how to build specific queries for sustainability +- :ref:`ref_grantami_bomanalytics_api_sustainability_index` explains how to build queries for sustainability and how to interpret results. - :ref:`ref_grantami_bomanalytics_bom_helpers_index` explains how to create, read, edit, and save Bill of Materials objects for Compliance and Sustainability reporting. @@ -30,6 +32,7 @@ The API for PyGranta BoM Analytics is split into these key sections: common batching + record_identification impacted_substances/index compliance/index sustainability/index diff --git a/doc/source/api/record_identification.rst b/doc/source/api/record_identification.rst new file mode 100644 index 00000000..36920802 --- /dev/null +++ b/doc/source/api/record_identification.rst @@ -0,0 +1,94 @@ +.. _ref_grantami_bomanalytics_record_identification: + +Record identification +===================== + + +BoM queries +----------- + +Returned input BoM items +~~~~~~~~~~~~~~~~~~~~~~~~~ + +BoM queries accept a BoM as input to the request. According to the Ansys Granta MI XML BoM formats, +record references can be defined in many ways. As a general rule, items in the query result which correspond to an +item provided in the input BoM, are described by the same identifier. + +For example, a ``MIMaterialReference`` in an input BoM using a ``recordGUID`` + +.. code-block:: xml + + + MI_Restricted_Substances + 2086f56a-4f4d-4850-9891-3d6ad155d1f9 + + +which is used in a :class:`~ansys.grantami.bomanalytics.queries.BomSustainabilityQuery`, will result in a +:class:`~ansys.grantami.bomanalytics._item_results.MaterialWithSustainabilityResult`, where only the +:attr:`~ansys.grantami.bomanalytics._item_results.MaterialWithSustainabilityResult.record_guid` is populated. + +If the record reference in an input BoM is defined via a ``lookupValue``: + +.. code-block:: xml + + + MI_Restricted_Substances + + + MI_Restricted_Substances + + + Products and parts +
+ Part number +
+
+ CYLINDER +
+
+ +then the objects in the response will be identified by ``record_guid``, unless the attribute used for the lookup is a +special identifier such as: + +- ``part_number`` +- ``material_id`` +- ``cas_number`` +- ``specification_id`` + +in which case the corresponding property is populated. + + +Expanded BoM items +~~~~~~~~~~~~~~~~~~ + +Expanded items are items that were not included in the input BoM, but were expanded during the analysis from other +items included in the input BoM. For example, specifications in a +:class:`~ansys.grantami.bomanalytics.queries.BomComplianceQuery` are expanded, and the linked specifications are +included in the analysis. + +Expanded items are identified by the ``record_history_identity`` property. + + +Item queries +------------ + .. py:currentmodule:: ansys.grantami.bomanalytics.queries + +Returned request items +~~~~~~~~~~~~~~~~~~~~~~ + +Queries that accept record references as inputs, such as :class:`~PartComplianceQuery`, allow the input records to be +defined via different identifiers. + +The corresponding item in the query result will be identified by the same identifier than the one used in the request. + +For example, parts added to the query with :meth:`~.PartComplianceQuery.with_part_numbers` will be identified in the +query result by their ``part_number`` property, and parts added with :meth:`~.PartComplianceQuery.with_record_guids` +will be identified in the query result by their ``record_guid`` property. + +Expanded items +~~~~~~~~~~~~~~ + +Item queries expand children based on the links defined in MI records. For example, during the processing of a +:class:`~.PartComplianceQuery`, children parts of the requested MI Part records will be expanded. + +Expanded items are identified by the ``record_history_identity`` property. From ab01217bb89c6c31a9370e6ce48c730850d6316c Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Fri, 13 Oct 2023 18:04:45 +0200 Subject: [PATCH 138/275] Remove id notes --- .../grantami/bomanalytics/_item_results.py | 41 ------------------- 1 file changed, 41 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/_item_results.py b/src/ansys/grantami/bomanalytics/_item_results.py index b2f61c69..7d49d681 100644 --- a/src/ansys/grantami/bomanalytics/_item_results.py +++ b/src/ansys/grantami/bomanalytics/_item_results.py @@ -885,9 +885,6 @@ class MaterialWithImpactedSubstancesResult(RecordWithImpactedSubstancesResultMix Notes ----- - With the exception of the ``record_history_identity`` parameter, record reference parameters are only populated if - they are specified in the original query. - Objects of this class are only returned as the result of a query. The class is not intended to be instantiated directly. @@ -915,9 +912,6 @@ class PartWithImpactedSubstancesResult(RecordWithImpactedSubstancesResultMixin, Notes ----- - With the exception of the ``record_history_identity`` parameter, record reference parameters are only populated if - they are specified in the original query. - Objects of this class are only returned as the result of a query. The class is not intended to be instantiated directly. @@ -947,9 +941,6 @@ class SpecificationWithImpactedSubstancesResult( Notes ----- - With the exception of the ``record_history_identity`` parameter, record reference attributes are only populated if - they are specified in the original query. - Objects of this class are only returned as the result of a query. The class is not intended to be instantiated directly. @@ -1313,8 +1304,6 @@ class SubstanceWithComplianceResult(ComplianceResultMixin, SubstanceReferenceWit Notes ----- - Record reference parameters are only populated if they are specified in the original query. - Objects of this class are only returned as the result of a query. The class is not intended to be instantiated directly. """ @@ -1332,10 +1321,6 @@ class MaterialWithComplianceResult( Notes ----- - With the exception of the ``record_history_identity`` parameter, record reference parameters are only populated if - they are specified in the original query. As a result, if this object is included as the child of another - compliance result object, only the ``record_history_identity`` parameter is populated. - Objects of this class are only returned as the result of a query. The class is not intended to be instantiated directly. """ @@ -1358,10 +1343,6 @@ class PartWithComplianceResult( Notes ----- - With the exception of the ``record_history_identity`` parameter, record reference attributes are only populated if - they are specified in the original query. As a result, if this object is included as the child of another - compliance result object, only the ``record_history_identity`` parameter is populated. - Objects of this class are only returned as the result of a query. The class is not intended to be instantiated directly. """ @@ -1384,10 +1365,6 @@ class SpecificationWithComplianceResult( Notes ----- - With the exception of the ``record_history_identity`` parameter, record reference attributes are only populated if - they are specified in the original query. As a result, if this object is included as the child of another - compliance result object, only the ``record_history_identity`` parameter is populated. - Objects of this class are only returned as the result of a query. The class is not intended to be instantiated directly. """ @@ -1835,10 +1812,6 @@ class MaterialWithSustainabilityResult( Notes ----- - With the exception of the ``record_history_identity`` parameter, record reference parameters are only populated if - they are specified in the original query. As a result, if this object is included as the child of another result - object, only the ``record_history_identity`` parameter is populated. - Objects of this class are only returned as the result of a query. The class is not intended to be instantiated directly. """ @@ -1863,10 +1836,6 @@ class PartWithSustainabilityResult( Notes ----- - With the exception of the ``record_history_identity`` parameter, record reference attributes are only populated if - they are specified in the original query. As a result, if this object is included as the child of another result - object, only the ``record_history_identity`` parameter is populated. - Objects of this class are only returned as the result of a query. The class is not intended to be instantiated directly. """ @@ -1890,10 +1859,6 @@ class SpecificationWithSustainabilityResult( Notes ----- - With the exception of the ``record_history_identity`` parameter, record reference attributes are only populated if - they are specified in the original query. As a result, if this object is included as the child of another result - object, only the ``record_history_identity`` parameter is populated. - Objects of this class are only returned as the result of a query. The class is not intended to be instantiated directly. """ @@ -1905,8 +1870,6 @@ class SubstanceResult(SubstanceReferenceWithIdentifiers): Notes ----- - Record reference parameters are only populated if they are specified in the original query. - Objects of this class are only returned as the result of a query. The class is not intended to be instantiated directly. """ @@ -1939,8 +1902,6 @@ class ProcessWithSustainabilityResult( Notes ----- - Record reference parameters are only populated if they are specified in the original query. - Objects of this class are only returned as the result of a query. The class is not intended to be instantiated directly. """ @@ -1958,8 +1919,6 @@ class TransportWithSustainabilityResult( Notes ----- - Record reference parameters are only populated if they are specified in the original query. - Objects of this class are only returned as the result of a query. The class is not intended to be instantiated directly. """ From 14e6e5199ca52644f4875b27223ae6c89ee443ea Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Fri, 13 Oct 2023 18:13:10 +0200 Subject: [PATCH 139/275] Remove "do not instantiate" notes --- .../grantami/bomanalytics/_item_results.py | 55 ----------------- .../grantami/bomanalytics/_query_results.py | 61 +------------------ 2 files changed, 2 insertions(+), 114 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/_item_results.py b/src/ansys/grantami/bomanalytics/_item_results.py index 7d49d681..0d6f8e7d 100644 --- a/src/ansys/grantami/bomanalytics/_item_results.py +++ b/src/ansys/grantami/bomanalytics/_item_results.py @@ -1301,11 +1301,6 @@ class SubstanceWithComplianceResult(ComplianceResultMixin, SubstanceReferenceWit - The reference to the substance in Granta MI - The compliance status of this substance, stored in a dictionary of one or more indicator objects - - Notes - ----- - Objects of this class are only returned as the result of a query. The class is not intended to be instantiated - directly. """ @@ -1318,11 +1313,6 @@ class MaterialWithComplianceResult( - The reference to the material in Granta MI - The compliance status of this material, stored in a dictionary of one or more indicator objects - Any substance objects that are a child of this material object - - Notes - ----- - Objects of this class are only returned as the result of a query. The class is not intended to be instantiated - directly. """ @@ -1340,11 +1330,6 @@ class PartWithComplianceResult( - The reference to the part in Granta MI (if the part references a record) - The compliance status of this part, stored in a dictionary of one or more indicator objects - Any part, specification, material, or substance objects which are a child of this part object - - Notes - ----- - Objects of this class are only returned as the result of a query. The class is not intended to be instantiated - directly. """ @@ -1380,11 +1365,6 @@ class CoatingWithComplianceResult( - The reference to the coating in Granta MI - The compliance status of this coating, stored in one or more indicator objects - Any substance objects which are a child of this coating object - - Notes - ----- - Objects of this class are only returned as the result of a query. The class is not intended to be instantiated - directly. """ record_history_identity: Optional[int] @@ -1809,11 +1789,6 @@ class MaterialWithSustainabilityResult( - The reference to the material in Granta MI - The sustainability information for this material - Any process or substance objects that are a child of this material object - - Notes - ----- - Objects of this class are only returned as the result of a query. The class is not intended to be instantiated - directly. """ @@ -1833,11 +1808,6 @@ class PartWithSustainabilityResult( - The reference to the part in Granta MI (if the part references a record) - The sustainability information for this part - Any part, material, process, substance, or specification objects which are a child of this part object - - Notes - ----- - Objects of this class are only returned as the result of a query. The class is not intended to be instantiated - directly. """ @@ -1856,22 +1826,12 @@ class SpecificationWithSustainabilityResult( - The reference to the part in Granta MI (if the part references a record) - The sustainability information for this specification - Any specification, material, substance, or coating objects which are a child of this part object - - Notes - ----- - Objects of this class are only returned as the result of a query. The class is not intended to be instantiated - directly. """ class SubstanceResult(SubstanceReferenceWithIdentifiers): """Describes an individual specification included as part of a sustainability query result. This object includes only includes the reference to the part in Granta MI (if the substance references a record). - - Notes - ----- - Objects of this class are only returned as the result of a query. The class is not intended to be instantiated - directly. """ @@ -1882,11 +1842,6 @@ class CoatingResult(CoatingReferenceWithIdentifier): """Provides an individual coating included as part of a sustainability query result. This object includes only includes the reference to the coating in Granta MI. - - Notes - ----- - Objects of this class are only returned as the result of a query. The class is not intended to be instantiated - directly. """ @@ -1899,11 +1854,6 @@ class ProcessWithSustainabilityResult( - The reference to the part in Granta MI (if the process references a record) - The sustainability information for this process - - Notes - ----- - Objects of this class are only returned as the result of a query. The class is not intended to be instantiated - directly. """ @@ -1916,11 +1866,6 @@ class TransportWithSustainabilityResult( - The reference to the transport in Granta MI (if the part references a record) - The sustainability information for this transport stage - - Notes - ----- - Objects of this class are only returned as the result of a query. The class is not intended to be instantiated - directly. """ # TODO is the record reference note relevant? diff --git a/src/ansys/grantami/bomanalytics/_query_results.py b/src/ansys/grantami/bomanalytics/_query_results.py index 159901b0..d1c8ea9c 100644 --- a/src/ansys/grantami/bomanalytics/_query_results.py +++ b/src/ansys/grantami/bomanalytics/_query_results.py @@ -255,11 +255,6 @@ class MaterialImpactedSubstancesQueryResult(ImpactedSubstancesBaseClass): This class describes the substances in the specified materials impacted by one or more legislations. - Notes - ----- - Objects of this class are only returned as the result of a query. The class is not intended to be instantiated - directly. - Examples -------- >>> result: MaterialImpactedSubstancesQueryResult @@ -317,11 +312,6 @@ class MaterialComplianceQueryResult(ComplianceBaseClass): class. This class describes the compliance status of materials against one or more indicators. - - Notes - ----- - Objects of this class are only returned as the result of a query. The class is not intended to be instantiated - directly. """ _result_type_name = "MaterialWithCompliance" @@ -379,11 +369,6 @@ class PartImpactedSubstancesQueryResult(ImpactedSubstancesBaseClass): class. This class describes the substances in the specified parts impacted by one or more legislations. - - Notes - ----- - Objects of this class are only returned as the result of a query. The class is not intended to be instantiated - directly. """ def __init__( @@ -436,11 +421,6 @@ class PartComplianceQueryResult(ComplianceBaseClass): class. This class describes the compliance status of parts against one or more indicators. - - Notes - ----- - Objects of this class are only returned as the result of a query. The class is not intended to be instantiated - directly. """ _result_type_name = "PartWithCompliance" @@ -499,11 +479,6 @@ class SpecificationImpactedSubstancesQueryResult(ImpactedSubstancesBaseClass): class. This class describes the substances in the specified specifications impacted by one or more legislations. - - Notes - ----- - Objects of this class are only returned as the result of a query. The class is not intended to be instantiated - directly. """ def __init__( @@ -559,11 +534,6 @@ class SpecificationComplianceQueryResult(ComplianceBaseClass): class. This class describes the compliance status of specifications against one or more indicators. - - Notes - ----- - Objects of this class are only returned as the result of a query. The class is not intended to be instantiated - directly. """ _result_type_name = "SpecificationWithCompliance" @@ -624,11 +594,6 @@ class SubstanceComplianceQueryResult(ComplianceBaseClass): class. This class describes the compliance status of substances against one or more indicators. - - Notes - ----- - Objects of this class are only returned as the result of a query. The class is not intended to be instantiated - directly. """ def __init__( @@ -681,11 +646,6 @@ class BomImpactedSubstancesQueryResult(ImpactedSubstancesBaseClass): class. This class describes the substances in the specified BoM impacted by one or more legislations. - - Notes - ----- - Objects of this class are only returned as the result of a query. The class is not intended to be instantiated - directly. """ def __init__( @@ -717,11 +677,6 @@ class BomComplianceQueryResult(ComplianceBaseClass): class. This class summarizes the compliance status of a BoM against one or more indicators. - - Notes - ----- - Objects of this class are only returned as the result of a query. The class is not intended to be instantiated - directly. """ _result_type_name = "PartWithCompliance" @@ -777,13 +732,7 @@ def compliance_by_part_and_indicator(self) -> List["PartWithComplianceResult"]: @QueryResultFactory.register(models.GetSustainabilityForBom2301Response) class BomSustainabilityQueryResult(ResultBaseClass): - """Describes the result of running a :class:`~ansys.grantami.bomanalytics.queries.BomSustainabilityQuery`. - - Notes - ----- - Objects of this class are only returned as the result of a query. The class is not intended to be instantiated - directly. - """ + """Describes the result of running a :class:`~ansys.grantami.bomanalytics.queries.BomSustainabilityQuery`.""" def __init__( self, @@ -818,13 +767,7 @@ def transport_stages(self) -> List[TransportWithSustainabilityResult]: @QueryResultFactory.register(models.GetSustainabilitySummaryForBom2301Response) class BomSustainabilitySummaryQueryResult(ResultBaseClass): - """Describes the result of running a :class:`~ansys.grantami.bomanalytics.queries.BomSustainabilitySummaryQuery`. - - Notes - ----- - Objects of this class are only returned as the result of a query. The class is not intended to be instantiated - directly. - """ + """Describes the result of running a :class:`~ansys.grantami.bomanalytics.queries.BomSustainabilitySummaryQuery`.""" def __init__( self, From 2d989d7646dccb6cd1b6debfe3ba20c4bae64db3 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Mon, 16 Oct 2023 15:50:56 +0200 Subject: [PATCH 140/275] Fix message typing --- src/ansys/grantami/bomanalytics/_query_results.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/_query_results.py b/src/ansys/grantami/bomanalytics/_query_results.py index d1c8ea9c..2ad2ed3a 100644 --- a/src/ansys/grantami/bomanalytics/_query_results.py +++ b/src/ansys/grantami/bomanalytics/_query_results.py @@ -737,7 +737,7 @@ class BomSustainabilityQueryResult(ResultBaseClass): def __init__( self, results: List[models.GetSustainabilityForBom2301Response], - messages: List[LogMessage], + messages: List[models.CommonLogEntry], ) -> None: super().__init__(messages) self._response = results[0] @@ -772,7 +772,7 @@ class BomSustainabilitySummaryQueryResult(ResultBaseClass): def __init__( self, results: List[models.GetSustainabilitySummaryForBom2301Response], - messages: List[LogMessage], + messages: List[models.CommonLogEntry], ) -> None: super().__init__(messages) self._response = results[0] From 876ecf20d295425c5a2a75f5530bc553682abb72 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Mon, 16 Oct 2023 16:04:42 +0200 Subject: [PATCH 141/275] Update summary results docstrings --- .../grantami/bomanalytics/_query_results.py | 32 ++++++++++++------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/_query_results.py b/src/ansys/grantami/bomanalytics/_query_results.py index 2ad2ed3a..2ee405c1 100644 --- a/src/ansys/grantami/bomanalytics/_query_results.py +++ b/src/ansys/grantami/bomanalytics/_query_results.py @@ -855,9 +855,11 @@ def material_details(self) -> List[MaterialSummaryResult]: Summary information for aggregated materials. Relative and absolute contributions for materials whose relative contributions exceed 2% of the total impact - for materials (by embodied energy or climate change). + for materials (by :attr:`~.MaterialSummaryResult.embodied_energy_percentage` or + :attr:`~.MaterialSummaryResult.climate_change_percentage`). + All materials found in the BoM, which do not exceed the 2% threshold, are aggregated under a virtual - :class:`~ansys.grantami.bomanalytics._item_results.MaterialSummaryResult`, whose ``name`` property is equal to + :class:`.MaterialSummaryResult`, whose :attr:`~.MaterialSummaryResult.identity` property is equal to ``Other``. Values in percentages express the contribution of the specific material, relative to contributions of all @@ -872,9 +874,11 @@ def primary_processes_details(self) -> List[ProcessSummaryResult]: Summary information for primary processes, aggregated by process and the material it is applied to. The returned list includes all primary processes whose relative contributions exceed 5% of the total impact of - all primary processes (by embodied energy or climate change). Processes not exceeding the 5% threshold are - aggregated under a virtual :class:`~ansys.grantami.bomanalytics._item_results.ProcessSummaryResult`, whose - :attr:`~ansys.grantami.bomanalytics._item_results.ProcessSummaryResult.process_name` is equal to ``Other``. + all primary processes (by :attr:`~.ProcessSummaryResult.embodied_energy_percentage` or + :attr:`~.ProcessSummaryResult.climate_change_percentage`). + + Processes not exceeding the 5% threshold are aggregated under a virtual :class:`~.ProcessSummaryResult`, whose + :attr:`~.ProcessSummaryResult.process_name` is equal to ``Other``. Values in percentages express the contribution of the specific process, relative to contributions of all primary processes. @@ -887,9 +891,11 @@ def secondary_processes_details(self) -> List[ProcessSummaryResult]: Summary information for secondary processes, aggregated by process and the material it is applied to. The returned list includes all secondary processes whose relative contributions exceed 5% of the total impact of - all secondary processes (by embodied energy or climate change). Processes not exceeding the 5% threshold are - aggregated under a virtual :class:`~ansys.grantami.bomanalytics._item_results.ProcessSummaryResult`, whose - :attr:`~ansys.grantami.bomanalytics._item_results.ProcessSummaryResult.process_name` is equal to ``Other``. + all secondary processes (by :attr:`~.ProcessSummaryResult.embodied_energy_percentage` or + :attr:`~.ProcessSummaryResult.climate_change_percentage`). + + Processes not exceeding the 5% threshold are aggregated under a virtual + :class:`~.ProcessSummaryResult`, whose :attr:`~.ProcessSummaryResult.process_name` is equal to ``Other``. Values in percentages express the contribution of the specific process, relative to contributions of all secondary processes. @@ -903,10 +909,12 @@ def joining_and_finishing_processes_details(self) -> List[ProcessSummaryResult]: to. The returned list includes all joining and finishing processes whose relative contributions exceed 5% of the - total impact of all joining and finishing processes (by embodied energy or climate change). Processes not - exceeding the 5% threshold are aggregated under a virtual - :class:`~ansys.grantami.bomanalytics._item_results.ProcessSummaryResult`, whose - :attr:`~ansys.grantami.bomanalytics._item_results.ProcessSummaryResult.process_name` is equal to ``Other``. + total impact of all joining and finishing processes (by + :attr:`~.ProcessSummaryResult.embodied_energy_percentage` or + :attr:`~.ProcessSummaryResult.climate_change_percentage`). + + Processes not exceeding the 5% threshold are aggregated under a virtual + :class:`~.ProcessSummaryResult`, whose :attr:`~.ProcessSummaryResult.process_name` is equal to ``Other``. Values in percentages express the contribution of the specific process, relative to contributions of all joining and finishing processes. From f8fb2295aaf48bd2c6c648a74b1d4d43f7371ee0 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Mon, 16 Oct 2023 17:35:14 +0200 Subject: [PATCH 142/275] Bump openapi package --- poetry.lock | 8 ++++---- pyproject.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/poetry.lock b/poetry.lock index e1a6349c..904ee217 100644 --- a/poetry.lock +++ b/poetry.lock @@ -27,7 +27,7 @@ files = [ [[package]] name = "ansys-grantami-bomanalytics-openapi" -version = "1.1.0.dev37" +version = "1.1.0.dev40" description = "Autogenerated client library for the Granta MI BoM Analytics Services." optional = false python-versions = "^3.8.0" @@ -42,8 +42,8 @@ requests = "^2.26.0" [package.source] type = "git" url = "https://github.com/ansys/grantami-bomanalytics-openapi-private.git" -reference = "bd92030" -resolved_reference = "bd92030c2dcf7e1c66067b2b04e6ff50e200c6df" +reference = "a995bce" +resolved_reference = "a995bced4e9fd52b89b3b7e9163c76764c2140d4" subdirectory = "ansys-grantami-bomanalytics-openapi" [[package]] @@ -3556,4 +3556,4 @@ examples = ["jupyterlab", "lxml", "pandas", "tabulate"] [metadata] lock-version = "2.0" python-versions = "^3.8.0" -content-hash = "8a58166bff5ff94be4163d4e82de010afd43759235077658c88fa6704d260a78" +content-hash = "d995585c95176bd55dde25e086dd6e792addfc99b22d0e2e1d7d8be28215cf83" diff --git a/pyproject.toml b/pyproject.toml index 552ecfac..6a0e72f8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,7 +40,7 @@ python = "^3.8.0" # Packages for core library ansys-openapi-common = "< 2.0.0" -ansys-grantami-bomanalytics-openapi = { git = 'https://github.com/ansys/grantami-bomanalytics-openapi-private.git', subdirectory = 'ansys-grantami-bomanalytics-openapi', rev = 'bd92030' } +ansys-grantami-bomanalytics-openapi = { git = 'https://github.com/ansys/grantami-bomanalytics-openapi-private.git', subdirectory = 'ansys-grantami-bomanalytics-openapi', rev = 'a995bce' } # Packages for the examples extra jupyterlab = { version = ">=3,<5", optional = true } From e965af0dced0354be69229a928bb3db6de89eca3 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Mon, 16 Oct 2023 17:43:03 +0200 Subject: [PATCH 143/275] Remove sustainability blank coatings --- doc/source/api/sustainability/bom.rst | 7 -- .../grantami/bomanalytics/_item_results.py | 64 ------------------- 2 files changed, 71 deletions(-) diff --git a/doc/source/api/sustainability/bom.rst b/doc/source/api/sustainability/bom.rst index 3b467d4a..5a22d12e 100644 --- a/doc/source/api/sustainability/bom.rst +++ b/doc/source/api/sustainability/bom.rst @@ -55,13 +55,6 @@ Specification :inherited-members: :member-order: by_mro_by_source -Coating -~~~~~~~ - -.. autoclass:: ansys.grantami.bomanalytics._item_results.CoatingResult - :inherited-members: - :member-order: by_mro_by_source - Substance ~~~~~~~~~ diff --git a/src/ansys/grantami/bomanalytics/_item_results.py b/src/ansys/grantami/bomanalytics/_item_results.py index b2f61c69..b0fa95f0 100644 --- a/src/ansys/grantami/bomanalytics/_item_results.py +++ b/src/ansys/grantami/bomanalytics/_item_results.py @@ -445,7 +445,6 @@ def create_specification_with_sustainability( specification_with_sustainability._add_child_specifications(result_with_sustainability.specifications) specification_with_sustainability._add_child_materials(result_with_sustainability.materials) specification_with_sustainability._add_child_substances(result_with_sustainability.substances) - specification_with_sustainability._add_child_coatings(result_with_sustainability.coatings) return specification_with_sustainability @classmethod @@ -475,31 +474,6 @@ def create_substance_result( ) return substance - @classmethod - def create_coating_result( - cls, - result: models.CommonCoatingReference, - ) -> "CoatingResult": - """Returns a Coating object. - - Parameters - ---------- - result: models.CommonCoatingReference - Result from the REST API describing this particular coating. - - Returns - ------- - CoatingResult - """ - - reference_type = cls.parse_reference_type(result.reference_type) - coating = CoatingResult( - reference_type=reference_type, - reference_value=result.reference_value, - identity=result.id, - ) - return coating - @classmethod def create_transport_with_sustainability( cls, @@ -1743,43 +1717,6 @@ def _add_child_substances(self, child_substances: List[models.CommonSubstanceRef self._substances.append(child_substance_result) -class ChildCoatingMixin: - """Provides the implementation for managing children coatings, by adding a ``coatings`` property to the class. - - Parameters - ---------- - child_coatings - Coatings returned by the low-level API that are children of this item. - **kwargs - Contains arguments handled by other mixins or base classes. - """ - - def __init__(self, **kwargs: Any) -> None: - super().__init__(**kwargs) - self._coatings: List[CoatingResult] = [] - - @property - def coatings(self) -> List["CoatingResult"]: - """Coating objects that are direct children of this item in the BoM.""" - - return self._coatings - - def _add_child_coatings(self, child_coatings: List[models.CommonCoatingReference]) -> None: - """Populate the ``coatings`` attribute based on a list of low-level API coatings results. - - Parameters - ---------- - child_coatings - List of coatings returned from the low-level API. - """ - - for child_coating in child_coatings: - child_coating_result = ItemResultFactory.create_coating_result( - result=child_coating, - ) - self._coatings.append(child_coating_result) - - class ChildProcessWithSustainabilityMixin: """Provides the implementation for managing children processes, by adding a ``processes`` property to the class. @@ -1873,7 +1810,6 @@ class PartWithSustainabilityResult( class SpecificationWithSustainabilityResult( - ChildCoatingMixin, ChildSubstanceMixin, ChildMaterialWithSustainabilityMixin, ChildSpecificationWithSustainabilityMixin, From cafa05d55a0409127ca8ee6f48e9535f0a1a2e52 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Mon, 16 Oct 2023 17:55:39 +0200 Subject: [PATCH 144/275] Remove sustainability from specifications --- doc/source/api/sustainability/bom.rst | 2 +- .../grantami/bomanalytics/_item_results.py | 65 +++++++------------ 2 files changed, 26 insertions(+), 41 deletions(-) diff --git a/doc/source/api/sustainability/bom.rst b/doc/source/api/sustainability/bom.rst index 5a22d12e..e5af1d13 100644 --- a/doc/source/api/sustainability/bom.rst +++ b/doc/source/api/sustainability/bom.rst @@ -51,7 +51,7 @@ Process Specification ~~~~~~~~~~~~~ -.. autoclass:: ansys.grantami.bomanalytics._item_results.SpecificationWithSustainabilityResult +.. autoclass:: ansys.grantami.bomanalytics._item_results.SpecificationResult :inherited-members: :member-order: by_mro_by_source diff --git a/src/ansys/grantami/bomanalytics/_item_results.py b/src/ansys/grantami/bomanalytics/_item_results.py index b0fa95f0..721de001 100644 --- a/src/ansys/grantami/bomanalytics/_item_results.py +++ b/src/ansys/grantami/bomanalytics/_item_results.py @@ -415,37 +415,31 @@ def create_material_with_sustainability( return material_with_sustainability @classmethod - def create_specification_with_sustainability( + def create_specification_result( cls, - result_with_sustainability: models.CommonSustainabilitySpecificationWithSustainability, - ) -> "SpecificationWithSustainabilityResult": - """Returns a Specification object with sustainability metrics and child items. + result: models.CommonSpecificationReference, + ) -> "SpecificationResult": + """Returns a Specification object. Parameters ---------- - result_with_sustainability: models.CommonSustainabilitySpecificationWithSustainability - Result from the REST API describing the sustainability for this particular specification. + result: models.CommonSpecificationReference + Result from the REST API describing a specification. Returns ------- - SpecificationWithSustainabilityResult + SpecificationResult """ - reference_type = cls.parse_reference_type(result_with_sustainability.reference_type) - specification_with_sustainability = SpecificationWithSustainabilityResult( + reference_type = cls.parse_reference_type(result.reference_type) + specification = SpecificationResult( reference_type=reference_type, - reference_value=result_with_sustainability.reference_value, - embodied_energy=cls.create_unitted_value(result_with_sustainability.embodied_energy), - climate_change=cls.create_unitted_value(result_with_sustainability.climate_change), - reported_mass=cls.create_unitted_value(result_with_sustainability.reported_mass), - identity=result_with_sustainability.id, - external_identity=result_with_sustainability.external_identity, - name=result_with_sustainability.name, + reference_value=result.reference_value, + identity=result.id, + external_identity=result.external_identity, + name=result.name, ) - specification_with_sustainability._add_child_specifications(result_with_sustainability.specifications) - specification_with_sustainability._add_child_materials(result_with_sustainability.materials) - specification_with_sustainability._add_child_substances(result_with_sustainability.substances) - return specification_with_sustainability + return specification @classmethod def create_substance_result( @@ -1637,7 +1631,7 @@ def _add_child_parts( self._parts.append(child_part_with_sustainability) -class ChildSpecificationWithSustainabilityMixin: +class ChildSpecificationMixin: """Provides the implementation for managing children specifications, by adding a ``specifications`` property to the class. @@ -1651,17 +1645,17 @@ class ChildSpecificationWithSustainabilityMixin: def __init__(self, **kwargs: Any) -> None: super().__init__(**kwargs) - self._specifications: List[SpecificationWithSustainabilityResult] = [] + self._specifications: List[SpecificationResult] = [] @property - def specifications(self) -> List["SpecificationWithSustainabilityResult"]: + def specifications(self) -> List["SpecificationResult"]: """Specification with sustainability result objects that are direct children of this item in the BoM.""" return self._specifications def _add_child_specifications( self, - child_specifications: List[models.CommonSustainabilitySpecificationWithSustainability], + child_specifications: List[models.CommonSpecificationReference], ) -> None: """Populate the ``specifications`` attribute based on a list of low-level API specifications with compliance results. @@ -1673,10 +1667,10 @@ def _add_child_specifications( """ for child_specification in child_specifications: - child_specification_with_sustainability = ItemResultFactory.create_specification_with_sustainability( - result_with_sustainability=child_specification, + child_specification_result = ItemResultFactory.create_specification_result( + result=child_specification, ) - self._specifications.append(child_specification_with_sustainability) + self._specifications.append(child_specification_result) class ChildSubstanceMixin: @@ -1782,7 +1776,7 @@ class MaterialWithSustainabilityResult( class PartWithSustainabilityResult( - ChildSpecificationWithSustainabilityMixin, + ChildSpecificationMixin, ChildSubstanceMixin, ChildProcessWithSustainabilityMixin, ChildMaterialWithSustainabilityMixin, @@ -1809,20 +1803,11 @@ class PartWithSustainabilityResult( """ -class SpecificationWithSustainabilityResult( - ChildSubstanceMixin, - ChildMaterialWithSustainabilityMixin, - ChildSpecificationWithSustainabilityMixin, - SustainabilityResultMixin, - MassResultMixin, +class SpecificationResult( SpecificationReferenceWithIdentifiers, ): """Describes an individual specification included as part of a sustainability query result. - This object includes three categories of attributes: - - - The reference to the part in Granta MI (if the part references a record) - - The sustainability information for this specification - - Any specification, material, substance, or coating objects which are a child of this part object + This object includes only includes the reference to the record in Granta MI. Notes ----- @@ -1837,7 +1822,7 @@ class SpecificationWithSustainabilityResult( class SubstanceResult(SubstanceReferenceWithIdentifiers): """Describes an individual specification included as part of a sustainability query result. - This object includes only includes the reference to the part in Granta MI (if the substance references a record). + This object includes only includes the reference to the record in Granta MI (if the substance references a record). Notes ----- From 94c637b3c05587063d0ae128763f5ea92dcf531c Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Mon, 16 Oct 2023 18:00:39 +0200 Subject: [PATCH 145/275] Remove substances from MaterialWithSustainability --- src/ansys/grantami/bomanalytics/_item_results.py | 4 +--- tests/test_integration_tests.py | 1 - 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/_item_results.py b/src/ansys/grantami/bomanalytics/_item_results.py index 721de001..a6d84f12 100644 --- a/src/ansys/grantami/bomanalytics/_item_results.py +++ b/src/ansys/grantami/bomanalytics/_item_results.py @@ -411,7 +411,6 @@ def create_material_with_sustainability( name=result_with_sustainability.name, ) material_with_sustainability._add_child_processes(result_with_sustainability.processes) - material_with_sustainability._add_child_substances(result_with_sustainability.substances) return material_with_sustainability @classmethod @@ -1750,7 +1749,6 @@ def _add_child_processes(self, child_processes: List[models.CommonSustainability class MaterialWithSustainabilityResult( - ChildSubstanceMixin, ChildProcessWithSustainabilityMixin, SustainabilityResultMixin, ReusabilityResultMixin, @@ -1762,7 +1760,7 @@ class MaterialWithSustainabilityResult( - The reference to the material in Granta MI - The sustainability information for this material - - Any process or substance objects that are a child of this material object + - Any process objects that are a child of this material object Notes ----- diff --git a/tests/test_integration_tests.py b/tests/test_integration_tests.py index 74223f15..66fe7b12 100644 --- a/tests/test_integration_tests.py +++ b/tests/test_integration_tests.py @@ -387,7 +387,6 @@ def test_sustainability_query(self, connection): material = leaf_part.materials[0] assert len(material.processes) == 2 - assert not material.substances assert material.record_guid is not None assert material.climate_change.value == pytest.approx(0.939, DEFAULT_TOLERANCE) From 8482a02a13158af0828d83722433650f8b6b820f Mon Sep 17 00:00:00 2001 From: Doug Addy Date: Mon, 16 Oct 2023 17:33:57 +0100 Subject: [PATCH 146/275] Fix issues with Quantity - Treat $ as a special case and never handle namespaces - Handle attributes with no namespace if no default namespace is present --- .../bomanalytics/bom_types/_bom_reader.py | 48 ++++++++++++++----- tests/test_bom_handler.py | 17 ++++++- 2 files changed, 52 insertions(+), 13 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/bom_types/_bom_reader.py b/src/ansys/grantami/bomanalytics/bom_types/_bom_reader.py index 62c09d24..f813ee55 100644 --- a/src/ansys/grantami/bomanalytics/bom_types/_bom_reader.py +++ b/src/ansys/grantami/bomanalytics/bom_types/_bom_reader.py @@ -118,22 +118,46 @@ def get_field( """ if namespace_url is None: namespace_url = instance._namespace + for k, v in obj.items(): if k.startswith("@xmlns"): continue - if ":" not in k: - if "" in self._namespaces and namespace_url == self._namespaces[""] and k == field_name: + + if k == "$" and field_name == "$": + return v + + if k.startswith("@"): + is_matched = self._match_attribute(k, field_name, namespace_url) + if is_matched: return v else: - is_attribute = False - item_name = k - if item_name.startswith("@"): - item_name = item_name[1:] - is_attribute = True - namespace_prefix, stripped_name = item_name.split(":") - if is_attribute: - stripped_name = f"@{stripped_name}" - field_namespace_url = self._namespaces[namespace_prefix] - if namespace_url == field_namespace_url and stripped_name == field_name: + is_matched = self._match_element(k, field_name, namespace_url) + if is_matched: return v return None + + def _match_element(self, item_name: str, field_name: str, namespace_url: str) -> bool: + if ":" in item_name: + namespace_prefix, stripped_name = item_name.split(":") + field_namespace_url = self._namespaces[namespace_prefix] + return namespace_url == field_namespace_url and stripped_name == field_name + else: + return "" in self._namespaces and namespace_url == self._namespaces[""] and item_name == field_name + + def _match_attribute(self, item_name: str, field_name: str, namespace_url: str) -> bool: + if not item_name.startswith("@"): + return False + if ":" in item_name: + item_name = item_name[1:] + namespace_prefix, stripped_name = item_name.split(":") + stripped_name = f"@{stripped_name}" + field_namespace_url = self._namespaces[namespace_prefix] + return namespace_url == field_namespace_url and stripped_name == field_name + else: + if "" in self._namespaces: + return namespace_url == self._namespaces[""] and item_name == field_name + else: + # Workaround for https://github.com/ansys/grantami-bomanalytics-private/issues/75 + # TODO - properly check the _parent_ object's namespace and make sure that we expect a namespace + # if we're in a different namespace than the parent. + return item_name == field_name diff --git a/tests/test_bom_handler.py b/tests/test_bom_handler.py index 3ca026ab..8d11f763 100644 --- a/tests/test_bom_handler.py +++ b/tests/test_bom_handler.py @@ -62,7 +62,7 @@ def _compare_boms(*, source_bom: str, result_bom: str): "bom_filename", ["drill.xml", "medium-test-bom.xml"], ) - def test_roundtrip(self, bom_filename: str): + def test_roundtrip_with_assertions(self, bom_filename: str): bom_path = self._bom_location / bom_filename with open(bom_path, "r", encoding="utf8") as fp: input_bom = fp.read() @@ -77,6 +77,21 @@ def test_roundtrip(self, bom_filename: str): assert len(diff) == 0, "\n".join(diff) + @pytest.mark.parametrize( + "bom_filename", + ["drill.xml", "medium-test-bom.xml"], + ) + def test_roundtrip_parsing_succeeds(self, bom_filename: str): + bom_path = self._bom_location / bom_filename + with open(bom_path, "r", encoding="utf8") as fp: + input_bom = fp.read() + + bom_handler = BoMHandler() + deserialized_bom = bom_handler.load_bom_from_text(input_bom) + + rendered_bom = bom_handler.dump_bom(deserialized_bom) + bom_handler.load_bom_from_text(rendered_bom) + class TestBoMDeserialization: _bom_location = Path(__file__).parent / "inputs" From e0ca441ddd11cc6a305e6b6b8270dcca8cc086be Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Mon, 16 Oct 2023 18:32:23 +0200 Subject: [PATCH 147/275] Add name to transport results --- .../4_Sustainability/4-2_BoM_Sustainability.py | 2 +- src/ansys/grantami/bomanalytics/_item_results.py | 16 +++++++++++++++- tests/test_integration_tests.py | 2 +- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/examples/4_Sustainability/4-2_BoM_Sustainability.py b/examples/4_Sustainability/4-2_BoM_Sustainability.py index f4f32472..ea1e52bb 100644 --- a/examples/4_Sustainability/4-2_BoM_Sustainability.py +++ b/examples/4_Sustainability/4-2_BoM_Sustainability.py @@ -191,7 +191,7 @@ def to_dict(item, parent): if isinstance(item, PartWithSustainabilityResult): record.update({"type": "Part", "name": item.input_part_number}) elif isinstance(item, TransportWithSustainabilityResult): - record.update({"type": "Transport", "name": item.identity}) + record.update({"type": "Transport", "name": item.name}) elif isinstance(item, MaterialWithSustainabilityResult): record.update({"type": "Material", "name": item.name}) elif isinstance(item, ProcessWithSustainabilityResult): diff --git a/src/ansys/grantami/bomanalytics/_item_results.py b/src/ansys/grantami/bomanalytics/_item_results.py index a6d84f12..bb45df91 100644 --- a/src/ansys/grantami/bomanalytics/_item_results.py +++ b/src/ansys/grantami/bomanalytics/_item_results.py @@ -491,6 +491,7 @@ def create_transport_with_sustainability( embodied_energy=cls.create_unitted_value(result_with_sustainability.embodied_energy), climate_change=cls.create_unitted_value(result_with_sustainability.climate_change), identity=result_with_sustainability.id, + name=result_with_sustainability.stage_name, ) return transport_with_sustainability @@ -1883,7 +1884,20 @@ class TransportWithSustainabilityResult( directly. """ - # TODO is the record reference note relevant? + def __init__( + self, + name: str, + **kwargs: Any, + ) -> None: + super().__init__(**kwargs) + self._name = name + + @property + def name(self) -> str: + """ + Name of the transport stage. + """ + return self._name class SustainabilitySummaryMixin: diff --git a/tests/test_integration_tests.py b/tests/test_integration_tests.py index 66fe7b12..677c9113 100644 --- a/tests/test_integration_tests.py +++ b/tests/test_integration_tests.py @@ -410,9 +410,9 @@ def test_sustainability_query(self, connection): # Transports assert len(response.transport_stages) == 3 - # TODO Check all transport names (CR-1399) transport = response.transport_stages[0] + assert transport.name == "Port to airport by truck" assert transport.climate_change.value == pytest.approx(0.345, DEFAULT_TOLERANCE) assert transport.embodied_energy.value == pytest.approx(5.23, DEFAULT_TOLERANCE) assert transport.record_guid is not None From 9d0d1326b940a054e3add025f698c9a6b32d740f Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Mon, 16 Oct 2023 18:51:27 +0200 Subject: [PATCH 148/275] Update examples.py --- tests/inputs/examples.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tests/inputs/examples.py b/tests/inputs/examples.py index aeb182b4..de39b455 100644 --- a/tests/inputs/examples.py +++ b/tests/inputs/examples.py @@ -4,7 +4,6 @@ # TODO: Modify the codegen script to generate this as a package _example_dict_raw = { - "CommonCoatingReference": r"""""", # noqa: E501 "CommonCoatingWithCompliance": r"""""", # noqa: E501 "CommonImpactedSubstance": r"""""", # noqa: E501 "CommonIndicatorDefinition": r"""""", # noqa: E501 @@ -31,7 +30,6 @@ "CommonSustainabilityProcessSummary": r"""""", # noqa: E501 "CommonSustainabilityProcessSummaryEntry": r"""""", # noqa: E501 "CommonSustainabilityProcessWithSustainability": r"""""", # noqa: E501 - "CommonSustainabilitySpecificationWithSustainability": r"""""", # noqa: E501 "CommonSustainabilityTransportSummary": r"""""", # noqa: E501 "CommonSustainabilityTransportSummaryEntry": r"""""", # noqa: E501 "CommonSustainabilityTransportWithSustainability": r"""""", # noqa: E501 @@ -65,7 +63,7 @@ "GetImpactedSubstancesForSpecificationsResponse": r"""{"Specifications":[{"Legislations":[{"LegislationId":"SINList","ImpactedSubstances":[{"SubstanceName":"1,3-Butadiene","CasNumber":"106-99-0","EcNumber":"203-450-8","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1},{"SubstanceName":"Butylated hydroxytoluene [BAN:NF]","CasNumber":"128-37-0","EcNumber":"204-881-4","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1}]}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":545019,"Id":null},{"Legislations":[{"LegislationId":"SINList","ImpactedSubstances":[{"SubstanceName":"Benzophenone","CasNumber":"119-61-9","EcNumber":"204-337-6","MaxPercentageAmountInMaterial":1,"LegislationThreshold":0.1},{"SubstanceName":"2,4-Dihydroxybenzophenon","CasNumber":"131-56-6","EcNumber":"205-029-4","MaxPercentageAmountInMaterial":1,"LegislationThreshold":0.1}]}],"ReferenceType":"SpecificationId","ReferenceValue":"AMS03-27","Id":null}],"LogMessages":[]}""", # noqa: E501 "GetImpactedSubstancesForSpecificationsSpecification": r"""""", # noqa: E501 "GetSustainabilityForBom2301Request": r"""{"BomXml2301":"<?xml version= \"1.0\"?><PartsEco xmlns:xsd= \"http://www.w3.org/2001/XMLSchema\" xmlns:xsi= \"http://www.w3.org/2001/XMLSchema-instance\" xmlns= \"http://www.grantadesign.com/23/01/BillOfMaterialsEco\"><Components><Part><Quantity Unit= \"Each\">1</Quantity><PartNumber>PartOne</PartNumber><Name>PartOne</Name><ExternalIdentity>1686152405220|5</ExternalIdentity><Components><Part><Quantity Unit= \"Each\">1</Quantity><MassPerUom Unit= \"kg/Part\">2</MassPerUom><PartNumber>PartTwo</PartNumber><Name>PartTwo</Name><ExternalIdentity>1686152405220|16</ExternalIdentity><Materials><Material><Mass Unit= \"kg\">2</Mass><MIMaterialReference><dbKey xmlns= \"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey><recordGUID xmlns= \"http://www.grantadesign.com/12/05/GrantaBaseTypes\">8dc38bb5-eff9-4c60-9233-271a3c8f6270</recordGUID></MIMaterialReference><Identity>steel-kovar-annealed</Identity><Name>High alloy steel, Kovar, annealed</Name><ExternalIdentity>1686152405220|14</ExternalIdentity><Processes><Process><MIProcessReference><dbKey xmlns= \"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey><recordHistoryGUID xmlns= \"http://www.grantadesign.com/12/05/GrantaBaseTypes\">d986c90a-2835-45f3-8b69-d6d662dcf53a</recordHistoryGUID></MIProcessReference><Identity>Coarse Machining</Identity><Name>Coarse Machining</Name><ExternalIdentity>1977190729730|4</ExternalIdentity><DimensionType>MassRemoved</DimensionType><Quantity Unit= \"kg\">0.05</Quantity></Process></Processes></Material></Materials></Part></Components></Part></Components><Notes><ProductName>Example</ProductName></Notes></PartsEco>","PreferredUnits":null,"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 - "GetSustainabilityForBom2301Response": r"""{"Parts":[{"Parts":[{"Parts":[],"Materials":[{"Processes":[{"EmbodiedEnergy":{"Value":0.09,"Unit":"MJ"},"ClimateChange":{"Value":0,"Unit":"kg"},"ReferenceType":"MiRecordHistoryGuid","ReferenceValue":"d986c90a-2835-45f3-8b69-d6d662dcf53a","Id":null}],"Substances":[],"EmbodiedEnergy":{"Value":441.1,"Unit":"MJ"},"ClimateChange":{"Value":14.9,"Unit":"kg"},"Recyclable":true,"Biodegradable":false,"FunctionalRecycle":true,"ReportedMass":{"Value":2,"Unit":"kg"},"ReferenceType":"MiRecordGuid","ReferenceValue":"8dc38bb5-eff9-4c60-9233-271a3c8f6270","Id":null}],"Processes":[],"Substances":[],"Specifications":[],"EmbodiedEnergy":{"Value":441.2,"Unit":"MJ"},"ClimateChange":{"Value":14.2,"Unit":"kg"},"ReportedMass":{"Value":2,"Unit":"kg"},"ReferenceType":null,"ReferenceValue":null,"Id":null}],"Materials":[],"Processes":[],"Substances":[],"Specifications":[],"EmbodiedEnergy":{"Value":441.2,"Unit":"MJ"},"ClimateChange":{"Value":14.2,"Unit":"kg"},"ReportedMass":{"Value":2,"Unit":"kg"},"ReferenceType":null,"ReferenceValue":null,"Id":null}],"TransportStages":[],"LogMessages":[]}""", # noqa: E501 + "GetSustainabilityForBom2301Response": r"""{"Parts":[{"Parts":[{"Parts":[],"Materials":[{"Processes":[{"EmbodiedEnergy":{"Value":0.09,"Unit":"MJ"},"ClimateChange":{"Value":0,"Unit":"kg"},"ReferenceType":"MiRecordHistoryGuid","ReferenceValue":"d986c90a-2835-45f3-8b69-d6d662dcf53a","Id":null}],"EmbodiedEnergy":{"Value":441.1,"Unit":"MJ"},"ClimateChange":{"Value":14.9,"Unit":"kg"},"Recyclable":true,"Biodegradable":false,"FunctionalRecycle":true,"ReportedMass":{"Value":2,"Unit":"kg"},"ReferenceType":"MiRecordGuid","ReferenceValue":"8dc38bb5-eff9-4c60-9233-271a3c8f6270","Id":null}],"Processes":[],"Substances":[],"Specifications":[],"EmbodiedEnergy":{"Value":441.2,"Unit":"MJ"},"ClimateChange":{"Value":14.2,"Unit":"kg"},"ReportedMass":{"Value":2,"Unit":"kg"},"ReferenceType":null,"ReferenceValue":null,"Id":null}],"Materials":[],"Processes":[],"Substances":[],"Specifications":[],"EmbodiedEnergy":{"Value":441.2,"Unit":"MJ"},"ClimateChange":{"Value":14.2,"Unit":"kg"},"ReportedMass":{"Value":2,"Unit":"kg"},"ReferenceType":null,"ReferenceValue":null,"Id":null}],"TransportStages":[],"LogMessages":[]}""", # noqa: E501 "GetSustainabilitySummaryForBom2301Request": r"""{"BomXml2301":"<?xml version=\"1.0\"?><PartsEco xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://www.grantadesign.com/23/01/BillOfMaterialsEco\"> <Components> <Part> <Quantity Unit=\"Each\">1</Quantity> <PartNumber>PartOne</PartNumber> <ExternalIdentity>47</ExternalIdentity> <Components> <Part> <Quantity Unit=\"Each\">1</Quantity> <PartNumber>PartTwo</PartNumber> <Name /> <ExternalIdentity>50</ExternalIdentity> <Materials> <Material> <Mass Unit=\"kg\">0.5</Mass> <MIMaterialReference> <dbKey xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey> <recordGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">8dc38bb5-eff9-4c60-9233-271a3c8f6270</recordGUID> </MIMaterialReference> <Identity>steel-kovar-annealed</Identity> <Name>High alloy steel, Kovar, annealed</Name> <ExternalIdentity>5777</ExternalIdentity> <Processes> <Process> <MIProcessReference> <dbKey xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey> <recordGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">baa6c95b-ff0e-4811-9120-92717ee15bda</recordGUID> </MIProcessReference> <Identity /> <Name>Metal casting</Name> <ExternalIdentity>5821</ExternalIdentity> <DimensionType>Mass</DimensionType> <Percentage>100</Percentage> </Process> <Process> <MIProcessReference> <dbKey xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey> <recordGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">907bda29-e800-44f6-b7ea-4eb8e7cff375</recordGUID> </MIProcessReference> <Identity /> <Name>Machining, coarse</Name> <ExternalIdentity>5801</ExternalIdentity> <DimensionType>MassRemoved</DimensionType> <Percentage>20</Percentage> </Process> </Processes> </Material> </Materials> </Part> </Components> </Part> </Components> <Notes> <ProductName>Example</ProductName> </Notes></PartsEco>","PreferredUnits":null,"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 "GetSustainabilitySummaryForBom2301Response": r"""{"MaterialSummary":{"Summary":[{"Identity":"steel-kovar-annealed","RecordReference":{"ReferenceType":"MiRecordGuid","ReferenceValue":"8dc38bb5-eff9-4c60-9233-271a3c8f6270","Id":null},"EmbodiedEnergy":{"Value":134.482549067761,"Unit":"MJ"},"EmbodiedEnergyPercentage":100,"ClimateChange":{"Value":4.3276934674222,"Unit":"kg"},"ClimateChangePercentage":100,"MassBeforeProcessing":{"Value":0.625,"Unit":"kg"},"MassAfterProcessing":{"Value":0.5,"Unit":"kg"},"LargestContributors":[{"ComponentName":"","RecordReference":{"ReferenceType":null,"ReferenceValue":null,"Id":null},"MaterialMassBeforeProcessing":{"Value":0.625,"Unit":"kg"}}]}],"PhaseSummary":{"Phase":"Material","EmbodiedEnergy":{"Value":134.482549067761,"Unit":"MJ"},"EmbodiedEnergyPercentage":95.1957177924867,"ClimateChange":{"Value":4.3276934674222,"Unit":"kg"},"ClimateChangePercentage":93.623465310322}},"ProcessSummary":{"PrimaryProcesses":[{"ProcessName":"Metal casting","ProcessRecordReference":{"ReferenceType":"MiRecordGuid","ReferenceValue":"baa6c95b-ff0e-4811-9120-92717ee15bda","Id":null},"MaterialRecordReference":{"ReferenceType":"MiRecordGuid","ReferenceValue":"8dc38bb5-eff9-4c60-9233-271a3c8f6270","Id":null},"MaterialIdentity":"High alloy steel, Kovar, annealed","EmbodiedEnergy":{"Value":6.55438765769984,"Unit":"MJ"},"EmbodiedEnergyPercentage":100,"ClimateChange":{"Value":0.283705040845716,"Unit":"kg"},"ClimateChangePercentage":100}],"SecondaryProcesses":[{"ProcessName":"Machining, coarse","ProcessRecordReference":{"ReferenceType":"MiRecordGuid","ReferenceValue":"907bda29-e800-44f6-b7ea-4eb8e7cff375","Id":null},"MaterialRecordReference":{"ReferenceType":"MiRecordGuid","ReferenceValue":"8dc38bb5-eff9-4c60-9233-271a3c8f6270","Id":null},"MaterialIdentity":"High alloy steel, Kovar, annealed","EmbodiedEnergy":{"Value":0.232599537624153,"Unit":"MJ"},"EmbodiedEnergyPercentage":100,"ClimateChange":{"Value":0.0110467869128737,"Unit":"kg"},"ClimateChangePercentage":100}],"JoiningAndFinishingProcesses":[],"PhaseSummary":{"Phase":"Processes","EmbodiedEnergy":{"Value":6.78698719532399,"Unit":"MJ"},"EmbodiedEnergyPercentage":4.80428220751333,"ClimateChange":{"Value":0.29475182775859,"Unit":"kg"},"ClimateChangePercentage":6.37653468967796}},"TransportSummary":{"Summary":[],"PhaseSummary":{"Phase":"Transport","EmbodiedEnergy":{"Value":0,"Unit":"MJ"},"EmbodiedEnergyPercentage":0,"ClimateChange":{"Value":0,"Unit":"kg"},"ClimateChangePercentage":0}},"LogMessages":[]}""", # noqa: E501 } From 2c1bae53356845e45bd8f35f36ebe442be7ac4bc Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Mon, 16 Oct 2023 18:54:18 +0200 Subject: [PATCH 149/275] Update unit tests --- tests/test_item_results.py | 25 +++---------------- .../test_sustainability.py | 1 - 2 files changed, 3 insertions(+), 23 deletions(-) diff --git a/tests/test_item_results.py b/tests/test_item_results.py index caed03a3..ba8caf0a 100644 --- a/tests/test_item_results.py +++ b/tests/test_item_results.py @@ -282,7 +282,6 @@ def test_material_result_repr(self): functional_recycle=True, recyclable=True, processes=[], - substances=[], reported_mass=models.CommonValueWithUnit(value=45, unit="kg"), ) result = ItemResultFactory.create_material_with_sustainability(model) @@ -303,15 +302,6 @@ def test_process_result_repr(self): ) assert repr(result) == expected - def test_coating_result_repr(self): - model = models.CommonCoatingReference( - **self._rec_ref_kwargs, - **self._id, - ) - result = ItemResultFactory.create_coating_result(model) - expected = "" - assert repr(result) == expected - def test_substance_result_repr(self): model = models.CommonSubstanceReference( **self._rec_ref_kwargs, @@ -322,21 +312,12 @@ def test_substance_result_repr(self): assert repr(result) == expected def test_specification_result_repr(self): - model = models.CommonSustainabilitySpecificationWithSustainability( + model = models.CommonSpecificationReference( **self._rec_ref_kwargs, - **self._eco_metrics, **self._identifiers, - reported_mass=models.CommonValueWithUnit(value=45, unit="kg"), - specifications=[], - materials=[], - substances=[], - coatings=[], - ) - result = ItemResultFactory.create_specification_with_sustainability(model) - expected = ( - "" ) + result = ItemResultFactory.create_specification_result(model) + expected = "" assert repr(result) == expected diff --git a/tests/test_mocked_responses/test_sustainability.py b/tests/test_mocked_responses/test_sustainability.py index d730214c..23b1e68c 100644 --- a/tests/test_mocked_responses/test_sustainability.py +++ b/tests/test_mocked_responses/test_sustainability.py @@ -75,7 +75,6 @@ def test_response_processing(self, mock_connection): assert part_0_0_material_0.record_guid == "8dc38bb5-eff9-4c60-9233-271a3c8f6270" assert len(part_0_0_material_0.processes) == 1 - assert len(part_0_0_material_0.substances) == 0 process = part_0_0_material_0.processes[0] assert process.embodied_energy.unit == "MJ" From a0645977e45f66d0fdb182f9b507c18132f68cbc Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Tue, 17 Oct 2023 13:23:16 +0200 Subject: [PATCH 150/275] Use merge commit ref --- poetry.lock | 6 +++--- pyproject.toml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/poetry.lock b/poetry.lock index 904ee217..18d31b1c 100644 --- a/poetry.lock +++ b/poetry.lock @@ -42,8 +42,8 @@ requests = "^2.26.0" [package.source] type = "git" url = "https://github.com/ansys/grantami-bomanalytics-openapi-private.git" -reference = "a995bce" -resolved_reference = "a995bced4e9fd52b89b3b7e9163c76764c2140d4" +reference = "d7767ee" +resolved_reference = "d7767ee37ac86ae081ef52303cc89398fbe7eb49" subdirectory = "ansys-grantami-bomanalytics-openapi" [[package]] @@ -3556,4 +3556,4 @@ examples = ["jupyterlab", "lxml", "pandas", "tabulate"] [metadata] lock-version = "2.0" python-versions = "^3.8.0" -content-hash = "d995585c95176bd55dde25e086dd6e792addfc99b22d0e2e1d7d8be28215cf83" +content-hash = "bd6c6a12565e3776dd7fc3eb7624c21a70cf6ad683f696d6ec4a2b002a45019b" diff --git a/pyproject.toml b/pyproject.toml index 6a0e72f8..585467e3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,7 +40,7 @@ python = "^3.8.0" # Packages for core library ansys-openapi-common = "< 2.0.0" -ansys-grantami-bomanalytics-openapi = { git = 'https://github.com/ansys/grantami-bomanalytics-openapi-private.git', subdirectory = 'ansys-grantami-bomanalytics-openapi', rev = 'a995bce' } +ansys-grantami-bomanalytics-openapi = { git = 'https://github.com/ansys/grantami-bomanalytics-openapi-private.git', subdirectory = 'ansys-grantami-bomanalytics-openapi', rev = 'd7767ee' } # Packages for the examples extra jupyterlab = { version = ">=3,<5", optional = true } From b482327b955fee0ca8b11fce068a96b769439b40 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Tue, 17 Oct 2023 13:40:42 +0200 Subject: [PATCH 151/275] Update tests/test_item_results.py Co-authored-by: Doug Addy --- tests/test_item_results.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_item_results.py b/tests/test_item_results.py index ba8caf0a..fe39ac75 100644 --- a/tests/test_item_results.py +++ b/tests/test_item_results.py @@ -317,7 +317,7 @@ def test_specification_result_repr(self): **self._identifiers, ) result = ItemResultFactory.create_specification_result(model) - expected = "" + expected = "" assert repr(result) == expected From fe2269ffa034cfb87ebaa583a050ed9d1a30915b Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Tue, 17 Oct 2023 15:11:05 +0200 Subject: [PATCH 152/275] Create BillOfMaterialsEco1711.xsd --- .../schemas/BillOfMaterialsEco1711.xsd | 730 ++++++++++++++++++ 1 file changed, 730 insertions(+) create mode 100644 src/ansys/grantami/bomanalytics/schemas/BillOfMaterialsEco1711.xsd diff --git a/src/ansys/grantami/bomanalytics/schemas/BillOfMaterialsEco1711.xsd b/src/ansys/grantami/bomanalytics/schemas/BillOfMaterialsEco1711.xsd new file mode 100644 index 00000000..450249a4 --- /dev/null +++ b/src/ansys/grantami/bomanalytics/schemas/BillOfMaterialsEco1711.xsd @@ -0,0 +1,730 @@ + + + + + + + + + Root node of an Eco Bill of Materials (BoM). + + + + + + Type for the root node of an Eco Bill of Materials (BoM). + + + + + + + + + + + + + The Transports to which the contained Parts are subject. + + + + + + The Use to which the contained Parts are subject. + + + + + + This defines optional notes about the BoM. + + + + + + Optional annotations to the BoM. + + + + + + + Information about the sources of annotations to the BoM. Only useful when there are + some annotations. Even when annotations are present, it is optional whether to provide information about their sources. + + + + + + + + + + A single part which may or may not be stored in the MI Database. + + + + + + + The quantity of part(s) used in the parent part. + + For discrete parts, this will be the part count - an integer with a blank unit (or "Each"). + + For continuous parts, it will be a mass, length, area or volume - a decimal value with an appropriate units. + + + + + + + + The mass of the part, after processing, relative to the unit that Quantity is given in. + + If MassPerUom is specified and VolumePerUom is not, then specifying materials within this part is interpreted to be + percentage by mass. + + + + + + + + The volume of the part, after processing, relative to the unit that Quantity is given in. + + If VolumePerUom is specified and MassPerUom is not, then specifying materials within this part is interpreted to be + percentage by volume. + + + + + + + + A reference to a part stored in MI. + + + + + + A reference to a part stored in another system, for informational purposes only. + + + + + + + + + + + + The Part Number associated with this part. External applications may treat this analogously to Identity from the CommonIdentifiers group. + + + + + + See CommonIdentifiers group. + + + + + + See CommonIdentifiers group. + + + + + + + + + + + + + + + + + + + + Specify the fate(s) of the part, at end-of-life of the product. + + + + + + + + + + + The list of materials within a part or semi-finished part. Materials can also be part of a specification. + + + + + + + + + + A Material within a part or semi-finished part. The material is stored in the Database. + + + + + + + + + + + + + + The recycle content of Parts. That is, Mc/(Mc + Mv), where Mc is the mass of recycled material in Parts, and Mv is the mass of virgin material in Parts. If omitted then 0% is assumed. + + + + + + Indicates that the recycle content is to be obtained from the materials datasheet. + + + + + The actual content, as a percentage. + + + + + + + + Specify processes that are applied to the material. + + + + + Specify the fate(s) of the material, at end-of-life of the product. + + + + + + + + + + All the processes that are applied to a subassembly, part, semi-finished part or material. A process chain may also be part of a specification. + + + + + + + + + + A process that is applied to a subassembly, part, semi-finished part or material. The process is stored in the Database. + + + + + + + + + + + + + If the process affects the bulk of the material or part (e.g. it is a shaping process) then the amount of material affected by the process should be specified. The amount may be specified as a percentage by weight or an absolute value. + + + + + Specifying the mass in this way allows one to specify processes that may have removed material (e.g. milling or turning). + + + + + + Some joining processes can have an associated area. + + + + + If the process is an edge joining process (e.g. welding) then the BOM must specify the length of material affected by the process. + + + + + Certain fastening processes are quantified by the number of fasteners (e.g. the number of hot rivets holding two plates together). + + + + + + + + + + + The percentage of the material mass in this part affected by the process. Specifying a percentage may be useful in scenarios where we do not know the actual material mass + but we know that the process affects all the material. + + Percentage is only supported for dimension types "Mass" and "Mass removed". + + + + + + A quantification of the process according to its dimension type. + + + + + + + + + + + + + + + + + A substance within a part, semi-finished part, material or specification. The substance is stored in the Database. + + + + + + + + + + + + + + + + + + + + + + + + + + + + A quantification of the specification, if applicable. + + + + + + + + + + + + + + + + + + + + + Defines a transportation mode stored in the Database. + + + + + + + + + + Defines the transportation applied to a BoM node, in terms of the generic transportation type (stored in the Database) and the amount of that transport used in this instance. + + + + + + + + + + + + + + + + + + All the the transportation applied to a BoM node. + + + + + + + + + + Explanatory information about a BoM. + + + + + + Add any notes about the bill of materials here. These notes will be included in the report. + + + + + The URL of an image to include at the top of the report. This URL must be accessible from the reporting services server. + + + + + The product name + + + + + + + + Defines the usage of Parts in the BoM. + + + + + + + + + + + + + + + The product lifetime in years. Must be strictly positive. + + + + + The number of functional units delivered, in the lifespan of the product described herein. If provided, must be strictly positive. + + + + + A very short (ideally one-word) description of a single functional unit. E.g. "trips", "cups", "cuts", "metres". + + + + + Indicates how much use can be obtained from the product described herein, compared to an industry-average example. If this element is absent, utility is assume to be unity. + + + + + + + + + + The average lifespan of all examples, throughout the industry, of the kind of product described herein. + + + + + The average number of functional units delivered, in their lifespan, by all examples, throughout the industry, of the kind of product described herein. Must be strictly positive. + + + + + Directly specifies the utility. + + + + + + + + + + This record specifies the primary energy conversion that occurs during the product's use. + + + + + + + + + + + + + + + + + If the product is transported as part of its use then this type contains details about the way in which it is transported. + + + + + We can specify the mode of transport here + + + + The mode of transport. + + + + + + + + + + If the product consumes electrical power, then the amount of CO2 produced to generate depends upon the mix of fossil fuel burning power stations in the region of use. This type lets you specify the electrical generation mix by either specifying the region or country of use or by specifying the percentage of power that comes from fossil fuel sources. + + + + + + This record reference will point to a record in some electricity mix table. + + + + + If a specific country is not specified, then the proportion of electricity generated by fossil fuels can be given instead. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A unique identity for this XML element in a document of this schema. This identity is + ONLY for internal use within the document, allowing other elements to reference this element. Consumers + of this document should not assume any other semantics for this identity. + + + + + + + + + A value corresponding to some InternalIdentification ID within this XML document, used + only to indicate a one-way link between XML elements. + + + + + + + + + + + + + + + + + + Base type for all BoM annotations, which are pieces of information that + can be indirectly attached, via XML attributes of ID and IDREF types, to specific XML elements within + the main body of the BoM. The understood annotation types must be agreed between the producer and consumer(s) + of the BoM. The producer and consumer(s) must also agree whether a particular type of annotation is allowed + to have multiple instances assigned to a single element, or whether only a single annotation + of that type per element is allowed. When a tool consumes and re-produces BoMs, it should generally retain + any annotations that it does not understand (of course, it can also decide whether to keep, modify or discard + those annotations that it does understand). + + + + + + The XML element identity of the exactly one element, in this BoM document, to which this annotation applies. No + further meaning should be applied to this identity. + + + + + + + If specified, this is the XML element identity of the exactly one element, in this BoM document, that + describes the source of this annotation. If no value is specified, it means that there is no information about the source + of this annotation. No further meaning should be applied to this identity, or to its absence. + + + + + + + A textual value that identifies the type of this annotation. It is suggested that types + should comprise camel-cased English strings, with optional use of period (.) as a separator. + + + + + + + + An annotation that is purely textual data. + + + + + + + + + + + + + + An annotation that gives the value of an indicator for the target. The understood indicators + need to be agreed between the producer and consumer(s) of the BoM, but examples might include embodied energy + of production or cost of raw materials. + + + + + + + + + + + + + + + + + + + + + An element indicating the source of annotations in the BoM. Each source may be + referenced by zero or more annotations. The producer and consumer(s) of the BoM must agree the + understood annotation source semantics, particularly regarding the untyped data therein. When a tool consumes and + re-produces BoMs, it should generally retain any annotation sources that it does not understand (of course, it + can also decide whether to keep, modify or discard those annotation sources that it does understand). + + + + + + + Producer and consumer(s) must agree the semantics of this element, but it is + suggested that it should identify the software package that generated the annotation. + + + + + + + Producer and consumer(s) must agree the semantics of this optional element, but it is + suggested that it should identify the calculation method used, for numeric annotations. + + + + + + Optional untyped data that some consumer(s) of the BoM will find useful in understanding the annotation. + + + + + + + + + + + + + + A set of identifiers used by external applications to reference and display parts of the BoM. + + + + + + A display identity for the item. + + + + + + A display name for the item. + + + + + + A temporary reference populated and used by applications to refer to the item within the BoM. + + + + + + From e2a4e5b32cdba6c9350c6c2ebf37dbf0f05065ad Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Tue, 17 Oct 2023 15:23:58 +0200 Subject: [PATCH 153/275] Schemas sub-package --- src/ansys/grantami/bomanalytics/_bom_helper.py | 3 ++- src/ansys/grantami/bomanalytics/schemas/__init__.py | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 src/ansys/grantami/bomanalytics/schemas/__init__.py diff --git a/src/ansys/grantami/bomanalytics/_bom_helper.py b/src/ansys/grantami/bomanalytics/_bom_helper.py index 9f4ba579..906a926c 100644 --- a/src/ansys/grantami/bomanalytics/_bom_helper.py +++ b/src/ansys/grantami/bomanalytics/_bom_helper.py @@ -5,6 +5,7 @@ from xmlschema import XMLSchema from .bom_types import BoMReader, BoMWriter +from .schemas import bom_schema_2301 if TYPE_CHECKING: from .bom_types import BillOfMaterials @@ -15,7 +16,7 @@ class BoMHandler: Handler for XML formatted BoMs, supports reading from files and strings, and serializing to string format. """ - _schema_path: Path = Path(__file__).parent / "schemas" / "BillOfMaterialsEco2301.xsd" + _schema_path: Path = bom_schema_2301 _schema: XMLSchema def __init__(self) -> None: diff --git a/src/ansys/grantami/bomanalytics/schemas/__init__.py b/src/ansys/grantami/bomanalytics/schemas/__init__.py new file mode 100644 index 00000000..2dcb16aa --- /dev/null +++ b/src/ansys/grantami/bomanalytics/schemas/__init__.py @@ -0,0 +1,6 @@ +from pathlib import Path + +_schemas_dir = Path(__file__).parent + +bom_schema_1711: Path = _schemas_dir / "BillOfMaterialsEco1711.xsd" +bom_schema_2301: Path = _schemas_dir / "BillOfMaterialsEco2301.xsd" From 836d32d744895afc3630be6d13cd5aedf4c8c481 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Tue, 17 Oct 2023 15:37:25 +0200 Subject: [PATCH 154/275] Remove schemas from examples --- .../3-1_Working_with_XML_BoMs.py | 38 +- .../supporting-files/BillOfMaterialsEco.xsd | 730 ------------------ .../supporting-files/grantarecord1205.xsd | 292 ------- 3 files changed, 14 insertions(+), 1046 deletions(-) delete mode 100644 examples/3_Advanced_Topics/supporting-files/BillOfMaterialsEco.xsd delete mode 100644 examples/3_Advanced_Topics/supporting-files/grantarecord1205.xsd diff --git a/examples/3_Advanced_Topics/3-1_Working_with_XML_BoMs.py b/examples/3_Advanced_Topics/3-1_Working_with_XML_BoMs.py index bc20f60e..3cb5424c 100644 --- a/examples/3_Advanced_Topics/3-1_Working_with_XML_BoMs.py +++ b/examples/3_Advanced_Topics/3-1_Working_with_XML_BoMs.py @@ -6,7 +6,7 @@ # extension: .py # format_name: light # format_version: '1.5' -# jupytext_version: 1.13.1 +# jupytext_version: 1.15.1 # kernelspec: # display_name: Python 3 (ipykernel) # language: python @@ -27,18 +27,18 @@ # The following supporting files are required for this example: # -# * [BillOfMaterialsEco.xsd](supporting-files/BillOfMaterialsEco.xsd) -# * [grantarecord1205.xsd](supporting-files/grantarecord1205.xsd) # * [bom-complex.xml](supporting-files/bom-complex.xml) # * [invalid-bom.xml](supporting-files/invalid-bom.xml) +# The XSD XML schema is included in the library in the ``schemas`` sub-package. + # ## Validating an XML file with an XSD schema # The ``lxml`` package provides a similar API to the standard library xml module, but it includes some additional # functionality, including schema validation. First import the ``lxml`` package and then build a simple validator # function that takes both the XML file and schema file and returns the result. -# + tags=[] +# + from lxml import etree @@ -46,37 +46,34 @@ def xml_validator(xml: str, schema_file: str) -> bool: schema = etree.XMLSchema(file=schema_file) doc = etree.fromstring(xml) return schema.validate(doc) -# - # You can now use this function to test the validity of a BoM generated by BoM Analyzer. -# + tags=[] +# + +from ansys.grantami.bomanalytics.schemas import bom_schema_1711 + valid_xml_file = "supporting-files/bom-complex.xml" with open(valid_xml_file) as f: valid_xml = f.read() -result = xml_validator(valid_xml, "supporting-files/BillOfMaterialsEco.xsd") +result = xml_validator(valid_xml, bom_schema_1711) result # - # You can also test a BoM that is valid XML but is not compliant with the schema. -# + tags=[] invalid_xml_file = "supporting-files/invalid-bom.xml" with open(invalid_xml_file) as f: invalid_xml = f.read() -result = xml_validator( - invalid_xml, "supporting-files/BillOfMaterialsEco.xsd" -) +result = xml_validator(invalid_xml, bom_schema_1711) result -# - # ## Run an impacted substances XML-based query # Now that you have validated the XML, you can build your XML BoM-based query. # First, connect to Granta MI. -# + tags=[] +# + from ansys.grantami.bomanalytics import Connection server_url = "http://my_grantami_server/mi_servicelayer" @@ -87,7 +84,7 @@ def xml_validator(xml: str, schema_file: str) -> bool: # a BoM query can only accept a single BoM at a time, and so you only ever receive a single list # of substances impacted by the specified legislations. -# + tags=[] +# + from ansys.grantami.bomanalytics import queries SIN_LIST = "SINList" @@ -98,16 +95,14 @@ def xml_validator(xml: str, schema_file: str) -> bool: ) # - -# + tags=[] impacted_substances_result = cxn.run(impacted_substances_query) impacted_substances_result -# - # The ``BomImpactedSubstancesQueryResult`` object returned after running the query for impacted substances now behaves # similarly to the result object for any other query for impacted substances. For example, you can print all substances # impacted by the legislation using an approach from the previous example. -# + tags=[] +# + from tabulate import tabulate rows = [ @@ -123,7 +118,7 @@ def xml_validator(xml: str, schema_file: str) -> bool: # Running a BoM compliance query produces the same result as if you had stored the BoM structure as linked **Products # and Parts** records in Granta MI. -# + tags=[] +# + from ansys.grantami.bomanalytics import indicators svhc = indicators.WatchListIndicator( @@ -138,19 +133,15 @@ def xml_validator(xml: str, schema_file: str) -> bool: ) # - -# + tags=[] compliance_result = cxn.run(compliance_query) compliance_result -# - # The ``BomComplianceQueryResult`` object returned after running the compliance query contains a list of # ``PartWithComplianceResult`` objects, the behavior of which has been covered in a previous example. # The following cell prints the compliance status of the BoM. -# + tags=[] root_part = compliance_result.compliance_by_part_and_indicator[0] print(f"BoM Compliance Status: {root_part.indicators['SVHC'].flag.name}") -# - # ## Invalid BoM exception @@ -158,7 +149,7 @@ def xml_validator(xml: str, schema_file: str) -> bool: # Layer responded with a 500 HTTP response code. To raise the exception, change the constant ``RUN_QUERY``below to # ``True``. -# + tags=[] +# + broken_query = ( queries.BomImpactedSubstancesQuery() .with_bom(invalid_xml) @@ -169,4 +160,3 @@ def xml_validator(xml: str, schema_file: str) -> bool: if RUN_QUERY: cxn.run(broken_query) -# - diff --git a/examples/3_Advanced_Topics/supporting-files/BillOfMaterialsEco.xsd b/examples/3_Advanced_Topics/supporting-files/BillOfMaterialsEco.xsd deleted file mode 100644 index 450249a4..00000000 --- a/examples/3_Advanced_Topics/supporting-files/BillOfMaterialsEco.xsd +++ /dev/null @@ -1,730 +0,0 @@ - - - - - - - - - Root node of an Eco Bill of Materials (BoM). - - - - - - Type for the root node of an Eco Bill of Materials (BoM). - - - - - - - - - - - - - The Transports to which the contained Parts are subject. - - - - - - The Use to which the contained Parts are subject. - - - - - - This defines optional notes about the BoM. - - - - - - Optional annotations to the BoM. - - - - - - - Information about the sources of annotations to the BoM. Only useful when there are - some annotations. Even when annotations are present, it is optional whether to provide information about their sources. - - - - - - - - - - A single part which may or may not be stored in the MI Database. - - - - - - - The quantity of part(s) used in the parent part. - - For discrete parts, this will be the part count - an integer with a blank unit (or "Each"). - - For continuous parts, it will be a mass, length, area or volume - a decimal value with an appropriate units. - - - - - - - - The mass of the part, after processing, relative to the unit that Quantity is given in. - - If MassPerUom is specified and VolumePerUom is not, then specifying materials within this part is interpreted to be - percentage by mass. - - - - - - - - The volume of the part, after processing, relative to the unit that Quantity is given in. - - If VolumePerUom is specified and MassPerUom is not, then specifying materials within this part is interpreted to be - percentage by volume. - - - - - - - - A reference to a part stored in MI. - - - - - - A reference to a part stored in another system, for informational purposes only. - - - - - - - - - - - - The Part Number associated with this part. External applications may treat this analogously to Identity from the CommonIdentifiers group. - - - - - - See CommonIdentifiers group. - - - - - - See CommonIdentifiers group. - - - - - - - - - - - - - - - - - - - - Specify the fate(s) of the part, at end-of-life of the product. - - - - - - - - - - - The list of materials within a part or semi-finished part. Materials can also be part of a specification. - - - - - - - - - - A Material within a part or semi-finished part. The material is stored in the Database. - - - - - - - - - - - - - - The recycle content of Parts. That is, Mc/(Mc + Mv), where Mc is the mass of recycled material in Parts, and Mv is the mass of virgin material in Parts. If omitted then 0% is assumed. - - - - - - Indicates that the recycle content is to be obtained from the materials datasheet. - - - - - The actual content, as a percentage. - - - - - - - - Specify processes that are applied to the material. - - - - - Specify the fate(s) of the material, at end-of-life of the product. - - - - - - - - - - All the processes that are applied to a subassembly, part, semi-finished part or material. A process chain may also be part of a specification. - - - - - - - - - - A process that is applied to a subassembly, part, semi-finished part or material. The process is stored in the Database. - - - - - - - - - - - - - If the process affects the bulk of the material or part (e.g. it is a shaping process) then the amount of material affected by the process should be specified. The amount may be specified as a percentage by weight or an absolute value. - - - - - Specifying the mass in this way allows one to specify processes that may have removed material (e.g. milling or turning). - - - - - - Some joining processes can have an associated area. - - - - - If the process is an edge joining process (e.g. welding) then the BOM must specify the length of material affected by the process. - - - - - Certain fastening processes are quantified by the number of fasteners (e.g. the number of hot rivets holding two plates together). - - - - - - - - - - - The percentage of the material mass in this part affected by the process. Specifying a percentage may be useful in scenarios where we do not know the actual material mass - but we know that the process affects all the material. - - Percentage is only supported for dimension types "Mass" and "Mass removed". - - - - - - A quantification of the process according to its dimension type. - - - - - - - - - - - - - - - - - A substance within a part, semi-finished part, material or specification. The substance is stored in the Database. - - - - - - - - - - - - - - - - - - - - - - - - - - - - A quantification of the specification, if applicable. - - - - - - - - - - - - - - - - - - - - - Defines a transportation mode stored in the Database. - - - - - - - - - - Defines the transportation applied to a BoM node, in terms of the generic transportation type (stored in the Database) and the amount of that transport used in this instance. - - - - - - - - - - - - - - - - - - All the the transportation applied to a BoM node. - - - - - - - - - - Explanatory information about a BoM. - - - - - - Add any notes about the bill of materials here. These notes will be included in the report. - - - - - The URL of an image to include at the top of the report. This URL must be accessible from the reporting services server. - - - - - The product name - - - - - - - - Defines the usage of Parts in the BoM. - - - - - - - - - - - - - - - The product lifetime in years. Must be strictly positive. - - - - - The number of functional units delivered, in the lifespan of the product described herein. If provided, must be strictly positive. - - - - - A very short (ideally one-word) description of a single functional unit. E.g. "trips", "cups", "cuts", "metres". - - - - - Indicates how much use can be obtained from the product described herein, compared to an industry-average example. If this element is absent, utility is assume to be unity. - - - - - - - - - - The average lifespan of all examples, throughout the industry, of the kind of product described herein. - - - - - The average number of functional units delivered, in their lifespan, by all examples, throughout the industry, of the kind of product described herein. Must be strictly positive. - - - - - Directly specifies the utility. - - - - - - - - - - This record specifies the primary energy conversion that occurs during the product's use. - - - - - - - - - - - - - - - - - If the product is transported as part of its use then this type contains details about the way in which it is transported. - - - - - We can specify the mode of transport here - - - - The mode of transport. - - - - - - - - - - If the product consumes electrical power, then the amount of CO2 produced to generate depends upon the mix of fossil fuel burning power stations in the region of use. This type lets you specify the electrical generation mix by either specifying the region or country of use or by specifying the percentage of power that comes from fossil fuel sources. - - - - - - This record reference will point to a record in some electricity mix table. - - - - - If a specific country is not specified, then the proportion of electricity generated by fossil fuels can be given instead. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - A unique identity for this XML element in a document of this schema. This identity is - ONLY for internal use within the document, allowing other elements to reference this element. Consumers - of this document should not assume any other semantics for this identity. - - - - - - - - - A value corresponding to some InternalIdentification ID within this XML document, used - only to indicate a one-way link between XML elements. - - - - - - - - - - - - - - - - - - Base type for all BoM annotations, which are pieces of information that - can be indirectly attached, via XML attributes of ID and IDREF types, to specific XML elements within - the main body of the BoM. The understood annotation types must be agreed between the producer and consumer(s) - of the BoM. The producer and consumer(s) must also agree whether a particular type of annotation is allowed - to have multiple instances assigned to a single element, or whether only a single annotation - of that type per element is allowed. When a tool consumes and re-produces BoMs, it should generally retain - any annotations that it does not understand (of course, it can also decide whether to keep, modify or discard - those annotations that it does understand). - - - - - - The XML element identity of the exactly one element, in this BoM document, to which this annotation applies. No - further meaning should be applied to this identity. - - - - - - - If specified, this is the XML element identity of the exactly one element, in this BoM document, that - describes the source of this annotation. If no value is specified, it means that there is no information about the source - of this annotation. No further meaning should be applied to this identity, or to its absence. - - - - - - - A textual value that identifies the type of this annotation. It is suggested that types - should comprise camel-cased English strings, with optional use of period (.) as a separator. - - - - - - - - An annotation that is purely textual data. - - - - - - - - - - - - - - An annotation that gives the value of an indicator for the target. The understood indicators - need to be agreed between the producer and consumer(s) of the BoM, but examples might include embodied energy - of production or cost of raw materials. - - - - - - - - - - - - - - - - - - - - - An element indicating the source of annotations in the BoM. Each source may be - referenced by zero or more annotations. The producer and consumer(s) of the BoM must agree the - understood annotation source semantics, particularly regarding the untyped data therein. When a tool consumes and - re-produces BoMs, it should generally retain any annotation sources that it does not understand (of course, it - can also decide whether to keep, modify or discard those annotation sources that it does understand). - - - - - - - Producer and consumer(s) must agree the semantics of this element, but it is - suggested that it should identify the software package that generated the annotation. - - - - - - - Producer and consumer(s) must agree the semantics of this optional element, but it is - suggested that it should identify the calculation method used, for numeric annotations. - - - - - - Optional untyped data that some consumer(s) of the BoM will find useful in understanding the annotation. - - - - - - - - - - - - - - A set of identifiers used by external applications to reference and display parts of the BoM. - - - - - - A display identity for the item. - - - - - - A display name for the item. - - - - - - A temporary reference populated and used by applications to refer to the item within the BoM. - - - - - - diff --git a/examples/3_Advanced_Topics/supporting-files/grantarecord1205.xsd b/examples/3_Advanced_Topics/supporting-files/grantarecord1205.xsd deleted file mode 100644 index 2221200b..00000000 --- a/examples/3_Advanced_Topics/supporting-files/grantarecord1205.xsd +++ /dev/null @@ -1,292 +0,0 @@ - - - - - A base type for types that identify entities in an MI Database. The details of how entities are identified differ between concrete sub-types. - - - - - The key that uniquely identifies a particular Database on the MI Server. Though this element is defined as optional, a - database key is required in almost all references; only a few specialised usages will accept a reference without database key. - - - - - - - - Attributes for referencing an item by name, where the name may, or may not, be a Standard Name. - - - - - - Element for referencing an item by name, where the name may, or may not, be a Standard Name. - - - - - - - - - - A type that allows identification of a particular Record in an - MI Database. This may be done directly by specifying the Identity or GUID of the Record, or - indirectly by specifying a lookup that will match (only) the Record. - - - - - - - For input you should provide exactly one of either identity, recordGUID, recordHistoryGUID - or lookupValue. If more than one element identifying the record is given, only one is used; the descending - order of priority is: identity, recordGUID, recordHistoryGUID, lookupValue. The Service Layer does not - check that the several elements identifying the record are all referencing the same record, it just picks the highest-priority - one and uses that. - - - - This element will always be present if service layer has generated this reference. - If used as an input to the service layer, then this element is optional. This is the best-performing and - highest-priority way to reference a record; however, identities might not be suitable for long-term - persistence. - - - - - - - If omitted, this means the latest version visible to the user. - - - - - - - - This element will usually be present if service layer has generated this reference. If used as an input to the service layer, then this element is optional. - - - - - This element will usually be present if service layer has generated this reference. If used as an input to the service layer, then this element is optional. - - - - - This element is optional - the service layer may return this element if this element was specified in the input of the data export. - - - - Instead of by identity or GUID, records may also be - looked up by an attribute value or pseudo-attribute value. Only - a small number of simple attribute types and simple pseudo-attributes - are supported for this lookup. In addition, the looked-up - value must be unique; behaviour is undefined if it is not unique. - - - - - - - - - - - - The recordUID may be used to identify a particular XML element - representing a record. Generally, it will be set by the caller and its value - will simply be retained by the Service Layer, as the element is passed around. - It does NOT represent any property or attribute of an actual MI Record. - - - - - - - - - - - - - - - A type that may be used in some places where an Attribute is required, to - describe some information about a Record that is not stored in an actual Attribute. This - is sometimes referred to as a Record Property. Not a real attribute and hence only - applicable to certain operations; others may fail. - - - - - The full name of the Record - - - - - The short or "tree" name of the Record - - - - - Comma-separated list of names of Subsets to which this Record belongs. - - - - - The date at which this Record was Released, in a Version-Controlled database. - - - - - The date at which this Record was last modified. Note that not all changes that conceptually - appear to modify the Record actually result in this date being updated, because MI considers them to be - changes to related objects, rather than to the Record itself. - - - - - Indicates whether the node is a plain Record, a Folder etc. - - - - - The identity, in the MI Database, of the Record History that owns all versions of the Record. - - - - - The colour that should be used to render the Record, for display. - - - - - The Records that are linked to this Record, via static RecordLinkGroups. This pseudo-attribute has been deprecated because it - returns all links for a potentially large number of record link groups. Please use GetLinkedRecords or DataExport to get the linked records. - - - - - - The GUID of the specific version of the Record. - - - - - The GUID of the Record History, which is shared by all versions of the Record. - - - - - The Version Number of the Record. For a non-version-controlled table, NotApplicable is set to true. - - - - - The Name of the Table containing the Record. - - - - - All direct child records the Record. Does not include the children of those children; it is not recursive. - - - - - The zero or more table filters matched by the Table from which the Record came. - - - - - - - A type that allows identification of a particular Attribute in an - MI Database. This may be done directly by specifying the Identity of the Attribute, or - indirectly by specifying a lookup that will match (only) the Attribute. - Note: in certain cases, an MIAttributeReference may match more than one Attribute in - the MI Database; depending on the operation, this may be legal or may result in - a Fault. - - - - - - - - - - - - Required for plain attribute name. Optional for standard attribute name. - - - - - - - - - - - - - - - - - - - A type that partially identifies a Table, but does not specify the - MI Database. Usually, just one of the several optional fields should be provided; where - more than one is provided, the highest priority one is used, where the descending - priority order is: tableIdentity, tableGUID, tableName. - - - - - The table identity is the fastest and highest-priority way to reference a table. However, table - identities might not be a good choice for long-lived references to tables. - - - - - A table GUID is a good choice for long-lived references to tables. - - - - - Table name. Note that table names vary between localisations of databases, so - may not be a good choice for long-lived references to tables. - - - - - - - A type that allows identification of a particular Table in a particular MI Database. - - - - - - - The key that uniquely identifies a particular Database on the MI Server - - - - - - - - - A string representation of a Globally Unique IDentifier (GUID). - - - - - - From 93c5e2546947161f5c1fd96345e3fded52f8da97 Mon Sep 17 00:00:00 2001 From: Doug Addy Date: Wed, 18 Oct 2023 10:10:04 +0100 Subject: [PATCH 155/275] Review comments --- .../bomanalytics/bom_types/_bom_reader.py | 22 +++++++++---------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/bom_types/_bom_reader.py b/src/ansys/grantami/bomanalytics/bom_types/_bom_reader.py index f813ee55..de3c035b 100644 --- a/src/ansys/grantami/bomanalytics/bom_types/_bom_reader.py +++ b/src/ansys/grantami/bomanalytics/bom_types/_bom_reader.py @@ -137,23 +137,16 @@ def get_field( return None def _match_element(self, item_name: str, field_name: str, namespace_url: str) -> bool: - if ":" in item_name: - namespace_prefix, stripped_name = item_name.split(":") - field_namespace_url = self._namespaces[namespace_prefix] - return namespace_url == field_namespace_url and stripped_name == field_name - else: + if ":" not in item_name: return "" in self._namespaces and namespace_url == self._namespaces[""] and item_name == field_name + namespace_prefix, stripped_name = item_name.split(":") + field_namespace_url = self._namespaces[namespace_prefix] + return namespace_url == field_namespace_url and stripped_name == field_name def _match_attribute(self, item_name: str, field_name: str, namespace_url: str) -> bool: if not item_name.startswith("@"): return False - if ":" in item_name: - item_name = item_name[1:] - namespace_prefix, stripped_name = item_name.split(":") - stripped_name = f"@{stripped_name}" - field_namespace_url = self._namespaces[namespace_prefix] - return namespace_url == field_namespace_url and stripped_name == field_name - else: + if ":" not in item_name: if "" in self._namespaces: return namespace_url == self._namespaces[""] and item_name == field_name else: @@ -161,3 +154,8 @@ def _match_attribute(self, item_name: str, field_name: str, namespace_url: str) # TODO - properly check the _parent_ object's namespace and make sure that we expect a namespace # if we're in a different namespace than the parent. return item_name == field_name + item_name = item_name[1:] + namespace_prefix, stripped_name = item_name.split(":") + stripped_name = f"@{stripped_name}" + field_namespace_url = self._namespaces[namespace_prefix] + return namespace_url == field_namespace_url and stripped_name == field_name From ddcaf6508b5dd9a451ec73d800986128194946d8 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Wed, 18 Oct 2023 13:38:33 +0200 Subject: [PATCH 156/275] Expect warnings in tests --- tests/test_mocked_responses/test_bom.py | 5 +++++ tests/test_mocked_responses/test_messages.py | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/tests/test_mocked_responses/test_bom.py b/tests/test_mocked_responses/test_bom.py index 5b200772..9ed59132 100644 --- a/tests/test_mocked_responses/test_bom.py +++ b/tests/test_mocked_responses/test_bom.py @@ -2,6 +2,7 @@ GetComplianceForBom1711Response, GetImpactedSubstancesForBom1711Response, ) +import pytest from ansys.grantami.bomanalytics import indicators, queries @@ -12,6 +13,10 @@ class TestImpactedSubstances(BaseMockTester): query = queries.BomImpactedSubstancesQuery() mock_key = GetImpactedSubstancesForBom1711Response.__name__ + def get_mocked_response(self, *args, **kwargs): + with pytest.warns(RuntimeWarning, match="No legislations"): + return super().get_mocked_response(*args, **kwargs) + def test_impacted_substances_by_legislation(self, mock_connection): response = self.get_mocked_response(mock_connection) assert len(response.impacted_substances_by_legislation) == 1 diff --git a/tests/test_mocked_responses/test_messages.py b/tests/test_mocked_responses/test_messages.py index 3ee7ae45..61b30ba8 100644 --- a/tests/test_mocked_responses/test_messages.py +++ b/tests/test_mocked_responses/test_messages.py @@ -17,7 +17,7 @@ class TestMessages(BaseMockTester): def test_critical_error_raises_exception(self, mock_connection, caplog): error_message = "This is a critical message" response = {"LogMessages": [{"Severity": "critical-error", "Message": error_message}]} - with pytest.raises(GrantaMIException) as e: + with pytest.raises(GrantaMIException) as e, pytest.warns(RuntimeWarning, match="No legislations"): self.get_mocked_response(mock_connection, response=json.dumps(response)) assert str(e.value) == error_message assert self.check_log(caplog, "CRITICAL", error_message) From d8063eae640d1aab228beadd994017a5ec6dbfba Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Wed, 18 Oct 2023 14:23:13 +0200 Subject: [PATCH 157/275] Make inputs mandatory --- src/ansys/grantami/bomanalytics/queries.py | 20 +++++++++---------- tests/test_argument_managers.py | 5 ++--- tests/test_mocked_responses/test_bom.py | 18 ++++++++++------- tests/test_mocked_responses/test_messages.py | 2 +- .../test_sustainability.py | 4 ++-- tests/test_query_builders/test_bom.py | 7 +++++++ .../test_common_queries.py | 9 ++------- 7 files changed, 35 insertions(+), 30 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/queries.py b/src/ansys/grantami/bomanalytics/queries.py index 62ff4dcf..8b2884e7 100644 --- a/src/ansys/grantami/bomanalytics/queries.py +++ b/src/ansys/grantami/bomanalytics/queries.py @@ -92,6 +92,9 @@ class _BaseQueryDataManager(ABC): _item_results: list """List of results to be returned by the low-level API.""" + item_type_name: str + """Name of the argument managed by this class and expected by the request object.""" # TODO is this correct? + def __init__(self) -> None: self._messages: List[models.CommonLogEntry] = [] @@ -297,18 +300,14 @@ class _BaseQueryBuilder(ABC): def _validate_items(self) -> None: """Perform pre-flight checks on the items that have been added to the query. - Warns + Raises ----- - RuntimeWarning - Error to raise if no items have been added to the query, warning that the response will be empty. + ValueError + Error to raise if no items have been added to the query. """ if not self._data.populated_inputs: - warnings.warn( - f"No {self._data.item_type_name} have been added to the " # type: ignore[attr-defined] - "query. Server response will be empty.", - RuntimeWarning, - ) + raise ValueError(f"No {self._data.item_type_name} have been added to the query.") class _RecordBasedQueryBuilder(_BaseQueryBuilder, ABC): @@ -1529,11 +1528,12 @@ class _BomQueryDataManager(_BaseQueryDataManager): def __init__(self, item_type_name: Union[Literal["bom_xml1711"], Literal["bom_xml2301"]]) -> None: super().__init__() self.item_type_name = item_type_name - self._item_definitions = [""] + self._item_definitions = [] self._item_results = [] def __repr__(self) -> str: - return f'<_BomQueryDataManager {{bom: "{self._item_definitions[0][:100]}"}}>' + items_repr = f' {{bom: "{self._item_definitions[0][:100]}"}}' if self._item_definitions else "" + return f"<_BomQueryDataManager{items_repr}>" @property def bom(self) -> str: diff --git a/tests/test_argument_managers.py b/tests/test_argument_managers.py index 206b2130..9fef7e4b 100644 --- a/tests/test_argument_managers.py +++ b/tests/test_argument_managers.py @@ -89,9 +89,8 @@ class TestBomArgManager: @pytest.mark.parametrize("bom_version", ["bom_xml1711", "bom_xml2301"]) def test_uninitialized_configuration(self, bom_version): am = queries._BomQueryDataManager(bom_version) - assert isinstance(am._item_definitions[0], str) - assert am._item_definitions[0] == "" - assert am.__repr__() == '<_BomQueryDataManager {bom: ""}>' + assert am._item_definitions == [] + assert am.__repr__() == "<_BomQueryDataManager>" @pytest.mark.parametrize( ["bom", "bom_version"], diff --git a/tests/test_mocked_responses/test_bom.py b/tests/test_mocked_responses/test_bom.py index 9ed59132..75fafe08 100644 --- a/tests/test_mocked_responses/test_bom.py +++ b/tests/test_mocked_responses/test_bom.py @@ -10,7 +10,7 @@ class TestImpactedSubstances(BaseMockTester): - query = queries.BomImpactedSubstancesQuery() + query = queries.BomImpactedSubstancesQuery().with_bom("FakeBoM") # Use fake BoM to avoid validation error mock_key = GetImpactedSubstancesForBom1711Response.__name__ def get_mocked_response(self, *args, **kwargs): @@ -54,12 +54,16 @@ class TestCompliance(BaseMockTester): A mocked query is used, populated by the examples included in the API definition. """ - query = queries.BomComplianceQuery().with_indicators( - [ - indicators.WatchListIndicator(name="Indicator 1", legislation_ids=["Mock"]), - indicators.RoHSIndicator(name="Indicator 2", legislation_ids=["Mock"]), - ] - ) + query = ( + queries.BomComplianceQuery() + .with_indicators( + [ + indicators.WatchListIndicator(name="Indicator 1", legislation_ids=["Mock"]), + indicators.RoHSIndicator(name="Indicator 2", legislation_ids=["Mock"]), + ] + ) + .with_bom("FakeBoM") + ) # Use fake BoM to avoid validation error mock_key = GetComplianceForBom1711Response.__name__ def test_compliance_by_part_and_indicator(self, mock_connection): diff --git a/tests/test_mocked_responses/test_messages.py b/tests/test_mocked_responses/test_messages.py index 61b30ba8..a737e2f6 100644 --- a/tests/test_mocked_responses/test_messages.py +++ b/tests/test_mocked_responses/test_messages.py @@ -12,7 +12,7 @@ class TestMessages(BaseMockTester): - query = queries.BomImpactedSubstancesQuery() + query = queries.BomImpactedSubstancesQuery().with_bom("FakeBoM") # Use fake BoM to avoid validation error def test_critical_error_raises_exception(self, mock_connection, caplog): error_message = "This is a critical message" diff --git a/tests/test_mocked_responses/test_sustainability.py b/tests/test_mocked_responses/test_sustainability.py index 23b1e68c..b218b8d8 100644 --- a/tests/test_mocked_responses/test_sustainability.py +++ b/tests/test_mocked_responses/test_sustainability.py @@ -13,7 +13,7 @@ class TestBomSustainability(BaseMockTester): - query = queries.BomSustainabilityQuery() + query = queries.BomSustainabilityQuery().with_bom("FakeBoM") # Use fake BoM to avoid validation error mock_key = GetSustainabilityForBom2301Response.__name__ def test_response_processing(self, mock_connection): @@ -85,7 +85,7 @@ def test_response_processing(self, mock_connection): class TestBomSustainabilitySummary(BaseMockTester): - query = queries.BomSustainabilitySummaryQuery() + query = queries.BomSustainabilitySummaryQuery().with_bom("FakeBoM") # Use fake BoM to avoid validation error mock_key = GetSustainabilitySummaryForBom2301Response.__name__ def test_response_processing(self, mock_connection): diff --git a/tests/test_query_builders/test_bom.py b/tests/test_query_builders/test_bom.py index 3449e38a..c77036a4 100644 --- a/tests/test_query_builders/test_bom.py +++ b/tests/test_query_builders/test_bom.py @@ -28,3 +28,10 @@ def test_add_bom_wrong_type(query_type): with pytest.raises(TypeError) as e: query_type().with_bom(bom=12345) assert "Incorrect type for value" in str(e.value) + + +@all_bom_queries +def test_no_bom(query_type): + query = query_type() + with pytest.raises(ValueError, match=r"No \w+ have been added to the query"): + query._validate_items() diff --git a/tests/test_query_builders/test_common_queries.py b/tests/test_query_builders/test_common_queries.py index b0d468f3..b01c49be 100644 --- a/tests/test_query_builders/test_common_queries.py +++ b/tests/test_query_builders/test_common_queries.py @@ -89,15 +89,10 @@ def test_add_record_history_ids_wrong_type_type_error(self, query_type, test_val query_type().with_record_history_ids(test_values) query_type().with_record_history_ids(record_history_identities=test_values) - def test_no_items_raises_warning(self, query_type): + def test_no_items_raises_error(self, query_type): query = query_type() - with pytest.warns(RuntimeWarning) as w: + with pytest.raises(ValueError, match=r"No \w+ have been added to the query"): query._validate_items() - assert len(w) == 1 - assert ( - f"No {query._data.item_type_name} have been added to the query. Server response will be" - f" empty." in w[0].message.args[0] - ) def test_stk_object(self, query_type): stk_object = [ From eb08bb103b12a8035bbdc5f467a1c239230312c6 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Wed, 18 Oct 2023 15:02:19 +0200 Subject: [PATCH 158/275] Naive support for multiple BoM versions --- doc/source/api/compliance/bom.rst | 6 +- doc/source/api/impacted_substances/bom.rst | 6 +- .../grantami/bomanalytics/_query_results.py | 2 + src/ansys/grantami/bomanalytics/queries.py | 254 ++++++++++-------- tests/inputs/__init__.py | 2 +- tests/test_argument_managers.py | 82 +++++- tests/test_integration_tests.py | 2 + tests/test_mocked_responses/test_bom.py | 64 +++-- tests/test_mocked_responses/test_messages.py | 4 +- .../test_sustainability.py | 7 +- tests/test_query_builders/common.py | 1 + tests/test_query_builders/test_bom.py | 8 +- 12 files changed, 283 insertions(+), 155 deletions(-) diff --git a/doc/source/api/compliance/bom.rst b/doc/source/api/compliance/bom.rst index 5900e5d0..320f3c44 100644 --- a/doc/source/api/compliance/bom.rst +++ b/doc/source/api/compliance/bom.rst @@ -11,10 +11,8 @@ Query definition ~~~~~~~~~~~~~~~~ .. autoclass:: ansys.grantami.bomanalytics.queries.BomComplianceQuery - :members: - - .. automethod:: with_indicators - .. automethod:: with_bom + :inherited-members: + :exclude-members: api_class Query result ~~~~~~~~~~~~ diff --git a/doc/source/api/impacted_substances/bom.rst b/doc/source/api/impacted_substances/bom.rst index 6894a731..4e35feac 100644 --- a/doc/source/api/impacted_substances/bom.rst +++ b/doc/source/api/impacted_substances/bom.rst @@ -13,10 +13,8 @@ Query definition ~~~~~~~~~~~~~~~~ .. autoclass:: ansys.grantami.bomanalytics.queries.BomImpactedSubstancesQuery - :members: - - .. automethod:: with_legislation_ids - .. automethod:: with_bom + :inherited-members: + :exclude-members: api_class .. _ref_grantami_bomanalytics_api_impactedsubstances_bom_queryresult: diff --git a/src/ansys/grantami/bomanalytics/_query_results.py b/src/ansys/grantami/bomanalytics/_query_results.py index 2ee405c1..936531af 100644 --- a/src/ansys/grantami/bomanalytics/_query_results.py +++ b/src/ansys/grantami/bomanalytics/_query_results.py @@ -641,6 +641,7 @@ def compliance_by_substance_and_indicator(self) -> List["SubstanceWithCompliance @QueryResultFactory.register(models.GetImpactedSubstancesForBom1711Response) +@QueryResultFactory.register(models.GetImpactedSubstancesForBom2301Response) class BomImpactedSubstancesQueryResult(ImpactedSubstancesBaseClass): """Retrieves the result of running the :class:`~ansys.grantami.bomanalytics.queries.BomImpactedSubstancesQuery` class. @@ -672,6 +673,7 @@ def __repr__(self) -> str: @QueryResultFactory.register(models.GetComplianceForBom1711Response) +@QueryResultFactory.register(models.GetComplianceForBom2301Response) class BomComplianceQueryResult(ComplianceBaseClass): """Retrieves the result of running the :class:`~ansys.grantami.bomanalytics.queries.BomComplianceQuery` class. diff --git a/src/ansys/grantami/bomanalytics/queries.py b/src/ansys/grantami/bomanalytics/queries.py index 8b2884e7..5614c0e1 100644 --- a/src/ansys/grantami/bomanalytics/queries.py +++ b/src/ansys/grantami/bomanalytics/queries.py @@ -6,7 +6,10 @@ """ from abc import ABC, abstractmethod +from dataclasses import dataclass +from enum import Enum from numbers import Number +import re from typing import ( TYPE_CHECKING, Any, @@ -14,7 +17,6 @@ Dict, Generator, List, - Literal, Optional, Tuple, Type, @@ -22,6 +24,7 @@ Union, ) import warnings +from xml.etree import ElementTree from ansys.grantami.bomanalytics_openapi import api, models # type: ignore[import] @@ -54,9 +57,6 @@ _SubstanceQuery = TypeVar("_SubstanceQuery", bound="_SubstanceQueryBuilder") _BomQuery = TypeVar("_BomQuery", bound="_BomQueryBuilder") -_Bom1711Query = TypeVar("_Bom1711Query", bound="_Bom1711QueryBuilder") -_Bom2301Query = TypeVar("_Bom2301Query", bound="_Bom2301QueryBuilder") - EXCEPTION_MAP = { "critical-error": logger.critical, @@ -529,12 +529,11 @@ class _ApiMixin(_BaseQueryBuilder, _BaseQuery, ABC): """ _request_type: Type[models.ModelBase] + """Type of object to send to the Granta MI server. The actual value is set in the concrete class + definition.""" def __init__(self) -> None: super().__init__() - self._request_type: Type[models.ModelBase] - """Type of object to send to the Granta MI server. The actual value is set in the concrete class - definition.""" def _call_api(self, api_method: Callable[..., models.ModelBase], arguments: Dict) -> None: """Perform the actual call against the Granta MI database. @@ -604,15 +603,15 @@ class _ComplianceMixin(_ApiMixin, ABC): MI, and creates the compliance result objects. """ + _api_method: str + """Name of the method in the ``api`` class. The name is specified in the concrete class and + retrieved dynamically because the ``api`` instance doesn't exist until runtime.""" + def __init__(self) -> None: super().__init__() self._indicators: Dict[str, _Indicator] = {} """Indicators added to the query.""" - self._api_method: str = "" - """Name of the method in the ``api`` class. The name is specified in the concrete class and - retrieved dynamically because the ``api`` instance doesn't exist until runtime.""" - self.api_class: Type[api.ComplianceApi] = api.ComplianceApi """Class in the low-level API for this query type. This class requires instantiation with the client object, and so only the reference to the class is stored here, not the instance itself.""" @@ -725,15 +724,15 @@ class _ImpactedSubstanceMixin(_ApiMixin, ABC): Granta MI, and creates the impacted substance result objects. """ + _api_method: str + """Name of the method in the ``api`` class. The name is specified in the concrete class and + retrieved dynamically because the `api` instance doesn't exist until runtime.""" + def __init__(self) -> None: super().__init__() self._legislations: List[str] = [] """Legislation ids added to the query.""" - self._api_method: str = "" - """Name of the method in the ``api`` class. The name is specified in the concrete class and - retrieved dynamically because the `api` instance doesn't exist until runtime.""" - self.api_class: Type[api.ImpactedSubstancesApi] = api.ImpactedSubstancesApi """Class in the low-level API for this query type. This class requires instantiation with the client object, and so only the reference to the class is stored here, not the instance itself.""" @@ -1518,6 +1517,19 @@ def __init__(self) -> None: self._api_method = "post_compliance_substances" +_ROOT_NAMESPACE_REGEX = re.compile(r"\{(.*)\}PartsEco") + + +class _BomFormat(Enum): + """ + Defines all supported BoM formats and provides a mapping between the expected argument name in a request and the + associated namespace. + """ + + bom_xml1711 = "http://www.grantadesign.com/17/11/BillOfMaterialsEco" + bom_xml2301 = "http://www.grantadesign.com/23/01/BillOfMaterialsEco" + + class _BomQueryDataManager(_BaseQueryDataManager): """Stores a BoM for use in queries and generates the kwarg to send to the server. @@ -1525,11 +1537,11 @@ class _BomQueryDataManager(_BaseQueryDataManager): single string because only one BoM can be sent to the server in a single query. """ - def __init__(self, item_type_name: Union[Literal["bom_xml1711"], Literal["bom_xml2301"]]) -> None: + def __init__(self, supported_bom_formats: List[_BomFormat]) -> None: super().__init__() - self.item_type_name = item_type_name self._item_definitions = [] self._item_results = [] + self._supported_bom_formats = supported_bom_formats def __repr__(self) -> str: items_repr = f' {{bom: "{self._item_definitions[0][:100]}"}}' if self._item_definitions else "" @@ -1550,6 +1562,11 @@ def bom(self) -> str: @bom.setter def bom(self, value: str) -> None: + ns = self._read_namespace(value) + bom_format = self._validate_namespace(ns) + self._validate_bom_format(bom_format) + + self.item_type_name = bom_format.name self._item_definitions = [value] @property @@ -1582,114 +1599,109 @@ def _extract_results_from_response(self, response: models.ModelBase) -> List[mod """ return [response] + @staticmethod + def _read_namespace(bom: str) -> str: + try: + root = ElementTree.XML(bom) + except ElementTree.ParseError as e: + raise ValueError(f"BoM provided as input is not valid XML ({str(e)}).") from e + match = _ROOT_NAMESPACE_REGEX.match(root.tag) + if match is None: + raise ValueError( + "Could not read BoM version from provided input BoM. Ensure the document is compliant with the expected" + " XML schema." + ) + ns = match.group(1) + return ns -class _BomQueryBuilder(_BaseQueryBuilder, ABC): - """Sub-class for all queries where the items added to the query are Boms.""" - - bom_version: Union[Literal["bom_xml1711"], Literal["bom_xml2301"]] + @staticmethod + def _validate_namespace(namespace: str) -> _BomFormat: + try: + bom_format = _BomFormat(namespace) + except ValueError: + raise Exception( + f"Invalid namespace on input BoM: '{namespace}'. Ensure the document is compliant with the expected XML" + f" schema." + ) + return bom_format - def __init__(self) -> None: - self._data: _BomQueryDataManager = _BomQueryDataManager(self.bom_version) + def _validate_bom_format(self, bom_format: _BomFormat) -> None: + if bom_format not in self._supported_bom_formats: + raise ValueError(f"BoM format {bom_format.name} ({bom_format.value}) is not supported by this query.") - @abstractmethod - def with_bom(self: _BomQuery, bom: str) -> _BomQuery: - """Set the BoM to use for the query. - Abstract method must be implemented in sub-classes. +@dataclass +class _BomFormatConfiguration: + """Defines the class for a BoM request and the api method to pass it to.""" - Parameters - ---------- - bom : str - BoM to use for the query. + request_model_type: Type + api_method_name: str - Returns - ------- - Query - Current query object. - """ - raise NotImplementedError +class _BomQueryBuilder(_BaseQueryBuilder, ABC): + """Sub-class for all queries where the items added to the query are Boms.""" + _supported_bom_formats: Dict[_BomFormat, _BomFormatConfiguration] -class _Bom1711QueryBuilder(_BomQueryBuilder): - bom_version: Literal["bom_xml1711"] = "bom_xml1711" + def __init__(self) -> None: + self._data: _BomQueryDataManager = _BomQueryDataManager(list(self._supported_bom_formats.keys())) - # Method is redefined to override the docstring. @validate_argument_type(str) - def with_bom(self: _Bom1711Query, bom: str) -> _Bom1711Query: - """Set the BoM to use for the query. - - The BoM must be in the Ansys Granta 1711 XML BoM format. + def with_bom(self: _BomQuery, bom: str) -> _BomQuery: + """Set the BoM to use for the query. See the query documentation for supported BoM formats. Parameters ---------- bom : str - BoM to use for the query. + BoM to use for the query. Returns ------- Query - Current query object. + Current query object. Raises ------ TypeError - Error to raise if the method is called with values that do not match the types described earlier. - - Notes - ----- - The XML schema is defined by the schema document - :download:`BillOfMaterialsEco1711.xsd `, which in turn - references :download:`grantarecord1205.xsd`. Together, these XSD - files can be used to validate that the BoM is both valid XML and adheres to the Ansys Granta 1711 XML BoM - schema. + Error raised if the method is called with values that do not match the types described earlier. + ValueError + Error raised if the bom isn't valid XML, or isn't in a known supported BoM format. """ - self._data.bom = bom return self + @property + def _input_bom_format(self) -> _BomFormat: + """BoM format as obtained from the internal BoMDataManager.""" + return _BomFormat[self._data.item_type_name] -class _Bom2301QueryBuilder(_BomQueryBuilder): - bom_version: Literal["bom_xml2301"] = "bom_xml2301" - - # Method is redefined to override the docstring. - @validate_argument_type(str) - def with_bom(self: _Bom2301Query, bom: str) -> _Bom2301Query: - """Set the BoM to use for the query. - - The BoM must be in the Ansys Granta 2301 XML BoM format. + @property + def _request_type(self) -> Type: + """Request model type, resolved from the input BoM format.""" + return self._supported_bom_formats[self._input_bom_format].request_model_type - Parameters - ---------- - bom : str - BoM to use for the query. + @property + def _api_method(self) -> str: + """Api method name, resolved from the input BoM format.""" + return self._supported_bom_formats[self._input_bom_format].api_method_name - Returns - ------- - Query - Current query object. + def _validate_items(self) -> None: + """Override validation method to replace error message with a more generic value, since the `item_type_name` + isn't known until a BoM has been provided. Raises - ------ - TypeError - Error to raise if the method is called with values that do not match the types described earlier. - - Notes ----- - The XML schema is defined by the schema document - :download:`BillOfMaterialsEco2301.xsd `, which in turn - references :download:`grantarecord1205.xsd`. Together, these XSD - files can be used to validate that the BoM is both valid XML and adheres to the Ansys Granta 2301 XML BoM - schema. + ValueError + Error to raise if no items have been added to the query. """ + if not self._data.populated_inputs: + raise ValueError(f"No BoM has been added to the query.") - self._data.bom = bom - return self +class BomComplianceQuery(_ComplianceMixin, _BomQueryBuilder): + """Evaluates compliance for a BoM against a number of indicators. -class BomComplianceQuery(_ComplianceMixin, _Bom1711QueryBuilder): - """Evaluates compliance for a BoM in the Ansys Granta 1711 XML BoM format against a number of - indicators. + The BoM must be in the Ansys Granta 1711 XML BoM format or Ansys Granta 2301 XML BoM format. All BoM-based queries only operate on a single BoM. As a result, the ``.with_batch_size()`` method is not implemented for BoM-based queries. @@ -1718,15 +1730,20 @@ class BomComplianceQuery(_ComplianceMixin, _Bom1711QueryBuilder): """ - def __init__(self) -> None: - super().__init__() - self._request_type = models.GetComplianceForBom1711Request - self._api_method = "post_compliance_bom1711" + _supported_bom_formats = { + _BomFormat.bom_xml1711: _BomFormatConfiguration( + request_model_type=models.GetComplianceForBom1711Request, api_method_name="post_compliance_bom1711" + ), + _BomFormat.bom_xml2301: _BomFormatConfiguration( + request_model_type=models.GetComplianceForBom2301Request, api_method_name="post_compliance_bom2301" + ), + } + +class BomImpactedSubstancesQuery(_ImpactedSubstanceMixin, _BomQueryBuilder): + """Gets the substances impacted by a list of legislations for a BoM. -class BomImpactedSubstancesQuery(_ImpactedSubstanceMixin, _Bom1711QueryBuilder): - """Gets the substances impacted by a list of legislations for a BoM in the Ansys Granta - 1711 XML BoM format. + The BoM must be in the Ansys Granta 1711 XML BoM format or Ansys Granta 2301 XML BoM format. All BoM-based queries only operate on a single BoM. As a result, the ``.with_batch_size()`` method is not implemented for BoM-based queries. @@ -1748,21 +1765,21 @@ class BomImpactedSubstancesQuery(_ImpactedSubstanceMixin, _Bom1711QueryBuilder): """ - def __init__(self) -> None: - super().__init__() - self._request_type = models.GetImpactedSubstancesForBom1711Request - self._api_method = "post_impactedsubstances_bom1711" + _supported_bom_formats = { + _BomFormat.bom_xml1711: _BomFormatConfiguration( + request_model_type=models.GetImpactedSubstancesForBom1711Request, + api_method_name="post_impactedsubstances_bom1711", + ), + _BomFormat.bom_xml2301: _BomFormatConfiguration( + request_model_type=models.GetImpactedSubstancesForBom2301Request, + api_method_name="post_impactedsubstances_bom2301", + ), + } class _SustainabilityMixin(_ApiMixin): _api_method: str api_class = api.SustainabilityApi # TODO consider making private. Manually excluded from docs for now. - _data: _BomQueryDataManager - - def __init_subclass__(cls, api_method: str, request_type: Type, **kwargs: Any): - super().__init_subclass__(**kwargs) - cls._api_method = api_method - cls._request_type = request_type def __init__(self) -> None: super().__init__() @@ -1821,12 +1838,7 @@ def _validate_parameters(self) -> None: pass -class BomSustainabilityQuery( - _SustainabilityMixin, - _Bom2301QueryBuilder, - api_method="post_sustainability_bom2301", - request_type=models.GetSustainabilityForBom2301Request, -): +class BomSustainabilityQuery(_SustainabilityMixin, _BomQueryBuilder): """Evaluates sustainability impact for a BoM in the Ansys Granta 2301 XML BoM format. The methods used to configure units and add the BoM to this query return the query itself so that they can be @@ -1848,13 +1860,14 @@ class BomSustainabilityQuery( """ + _supported_bom_formats = { + _BomFormat.bom_xml2301: _BomFormatConfiguration( + request_model_type=models.GetSustainabilityForBom2301Request, api_method_name="post_sustainability_bom2301" + ), + } -class BomSustainabilitySummaryQuery( - _SustainabilityMixin, - _Bom2301QueryBuilder, - api_method="post_sustainabilitysummary_bom2301", - request_type=models.GetSustainabilitySummaryForBom2301Request, -): + +class BomSustainabilitySummaryQuery(_SustainabilityMixin, _BomQueryBuilder): """ Evaluates sustainability impact for a BoM in the Ansys Granta 2301 XML BoM format and returns aggregated metrics. @@ -1876,3 +1889,10 @@ class BomSustainabilitySummaryQuery( >>> cxn.run(query) """ + + _supported_bom_formats = { + _BomFormat.bom_xml2301: _BomFormatConfiguration( + request_model_type=models.GetSustainabilitySummaryForBom2301Request, + api_method_name="post_sustainabilitysummary_bom2301", + ), + } diff --git a/tests/inputs/__init__.py b/tests/inputs/__init__.py index c1cd59fb..a9ad45e2 100644 --- a/tests/inputs/__init__.py +++ b/tests/inputs/__init__.py @@ -4,7 +4,7 @@ _bom_path = pathlib.Path(__file__).parent / "bom.xml" with open(_bom_path, "r") as f: - sample_bom = f.read() + sample_bom = f.read() # TODO rename 1711 _complex_bom_path = pathlib.Path(__file__).parent / "bom-complex.xml" with open(_complex_bom_path, "r") as f: diff --git a/tests/test_argument_managers.py b/tests/test_argument_managers.py index 9fef7e4b..f392fbbb 100644 --- a/tests/test_argument_managers.py +++ b/tests/test_argument_managers.py @@ -1,10 +1,11 @@ from dataclasses import dataclass +import re import pytest from ansys.grantami.bomanalytics import queries -from .inputs import sample_bom, sample_bom_2301 +from .inputs import sample_bom, sample_bom_2301, sample_bom_complex class MockRecordDefinition: @@ -85,24 +86,95 @@ def test_repr(self): assert am.__repr__() == '<_RecordQueryDataManager {record_type_name: "TEST_NAME", batch_size: 100}, length = 1>' +all_bom_formats = [item for item in queries._BomFormat] + + class TestBomArgManager: @pytest.mark.parametrize("bom_version", ["bom_xml1711", "bom_xml2301"]) def test_uninitialized_configuration(self, bom_version): - am = queries._BomQueryDataManager(bom_version) + am = queries._BomQueryDataManager(all_bom_formats) assert am._item_definitions == [] assert am.__repr__() == "<_BomQueryDataManager>" @pytest.mark.parametrize( ["bom", "bom_version"], [ - ("Test bom less than 100 chars", "bom_xml1711"), (sample_bom, "bom_xml1711"), (sample_bom_2301, "bom_xml2301"), ], ) def test_add_bom(self, bom, bom_version): - am = queries._BomQueryDataManager(bom_version) - am._item_definitions = [bom] + am = queries._BomQueryDataManager(all_bom_formats) + am.bom = bom assert am._item_definitions[0] == bom assert am.batched_arguments == [{bom_version: bom}] assert am.__repr__() == f'<_BomQueryDataManager {{bom: "{bom[:100]}"}}>' + + +class TestBomNameSpaceParsing: + @pytest.mark.parametrize( + ["bom", "namespace"], + [ + (sample_bom_2301, "http://www.grantadesign.com/23/01/BillOfMaterialsEco"), + (sample_bom, "http://www.grantadesign.com/17/11/BillOfMaterialsEco"), + (sample_bom_complex, "http://www.grantadesign.com/17/11/BillOfMaterialsEco"), + ], + ) + def test_valid_namespace_parsing(self, bom, namespace): + ns = queries._BomQueryDataManager._read_namespace(bom) + assert ns == namespace + + def test_not_valid_xml(self): + bom = sample_bom.replace("", "") + with pytest.raises(ValueError, match="BoM provided as input is not valid XML"): + queries._BomQueryDataManager(all_bom_formats).bom = bom + + def test_xml_but_not_a_bom(self): + bom = sample_bom.replace("PartsEco", "SomeOtherRoot") + with pytest.raises(ValueError, match="Could not read BoM version .* compliant with the expected XML schema"): + queries._BomQueryDataManager(all_bom_formats).bom = bom + + def test_xml_bom_but_unknown_namespace(self): + bom = sample_bom_2301.replace("http://www.grantadesign.com/23/01/BillOfMaterialsEco", "UnknownNamespace") + with pytest.raises(Exception, match="Invalid namespace"): # TODO + queries._BomQueryDataManager(all_bom_formats).bom = bom + + def test_xml_bom_but_not_version_supported_by_query(self): + expected_error = re.escape( + "bom_xml2301 (http://www.grantadesign.com/23/01/BillOfMaterialsEco) is not supported by this query." + ) + with pytest.raises(ValueError, match=expected_error): + queries._BomQueryDataManager([queries._BomFormat.bom_xml1711]).bom = sample_bom_2301 + + +def test_add_boms_sequentially(): + # Check that properties are updated as expected when overwriting a bom with a bom from another version + bom_manager = queries._BomQueryDataManager(all_bom_formats) + # assert query.item_type_name is None # TODO attribute does not exist + bom_manager.bom = sample_bom + assert bom_manager.item_type_name == "bom_xml1711" + assert bom_manager._item_definitions[0] == sample_bom + + bom_manager.bom = sample_bom_2301 + assert bom_manager.item_type_name == "bom_xml2301" + assert bom_manager._item_definitions[0] == sample_bom_2301 + + +class TestBomFormatEnum: + @pytest.mark.parametrize( + "value", + [ + "http://www.grantadesign.com/17/11/BillOfMaterialsEco", + "http://www.grantadesign.com/23/01/BillOfMaterialsEco", + ], + ) + def test_valid_values_by_namespace(self, value): + enum_value = queries._BomFormat(value) + + def test_invalid_value(self): + value = "SomeOtherNotValidValue" + with pytest.raises(ValueError, match=f"'{value}' is not a valid _BomFormat"): + enum_value = queries._BomFormat(value) + + def test_by_name(self): + value = queries._BomFormat["bom_xml1711"] diff --git a/tests/test_integration_tests.py b/tests/test_integration_tests.py index 677c9113..5710e7e0 100644 --- a/tests/test_integration_tests.py +++ b/tests/test_integration_tests.py @@ -108,6 +108,8 @@ def test_compliance(self, bom, connection_with_db_variants): assert response.compliance_by_part_and_indicator assert response.compliance_by_indicator + # TODO integration tests: 2301 boms + class TestMissingDatabase: @pytest.fixture diff --git a/tests/test_mocked_responses/test_bom.py b/tests/test_mocked_responses/test_bom.py index 75fafe08..28c186dc 100644 --- a/tests/test_mocked_responses/test_bom.py +++ b/tests/test_mocked_responses/test_bom.py @@ -1,18 +1,18 @@ from ansys.grantami.bomanalytics_openapi.models import ( GetComplianceForBom1711Response, + GetComplianceForBom2301Response, GetImpactedSubstancesForBom1711Response, + GetImpactedSubstancesForBom2301Response, ) import pytest from ansys.grantami.bomanalytics import indicators, queries +from ..inputs import sample_bom, sample_bom_2301 from .common import BaseMockTester, MaterialValidator, PartValidator, SubstanceValidator -class TestImpactedSubstances(BaseMockTester): - query = queries.BomImpactedSubstancesQuery().with_bom("FakeBoM") # Use fake BoM to avoid validation error - mock_key = GetImpactedSubstancesForBom1711Response.__name__ - +class _TestImpactedSubstances(BaseMockTester): def get_mocked_response(self, *args, **kwargs): with pytest.warns(RuntimeWarning, match="No legislations"): return super().get_mocked_response(*args, **kwargs) @@ -47,25 +47,25 @@ def test_impacted_substances_by_legislation_repr(self, mock_connection): assert "ImpactedSubstance" in repr(response.impacted_substances_by_legislation) -class TestCompliance(BaseMockTester): +class TestImpactedSubstances1711(_TestImpactedSubstances): + # Setting the BoM is required: to pass query validation and to resolve which endpoint to call + query = queries.BomImpactedSubstancesQuery().with_bom(sample_bom) + mock_key = GetImpactedSubstancesForBom1711Response.__name__ + + +class TestImpactedSubstances2301(_TestImpactedSubstances): + # Setting the BoM is required: to pass query validation and to resolve which endpoint to call + query = queries.BomImpactedSubstancesQuery().with_bom(sample_bom_2301) + mock_key = GetImpactedSubstancesForBom2301Response.__name__ + + +class _TestCompliance(BaseMockTester): """Check that each mocked result has the correct record references, indicator results, child objects, and bom relationships. A mocked query is used, populated by the examples included in the API definition. """ - query = ( - queries.BomComplianceQuery() - .with_indicators( - [ - indicators.WatchListIndicator(name="Indicator 1", legislation_ids=["Mock"]), - indicators.RoHSIndicator(name="Indicator 2", legislation_ids=["Mock"]), - ] - ) - .with_bom("FakeBoM") - ) # Use fake BoM to avoid validation error - mock_key = GetComplianceForBom1711Response.__name__ - def test_compliance_by_part_and_indicator(self, mock_connection): response = self.get_mocked_response(mock_connection) assert len(response.compliance_by_part_and_indicator) == 2 @@ -165,3 +165,33 @@ def test_compliance_by_indicator_repr(self, mock_connection): def test_compliance_by_substance_and_indicator_repr(self, mock_connection): response = self.get_mocked_response(mock_connection) assert "PartWithComplianceResult" in repr(response.compliance_by_part_and_indicator) + + +class TestCompliance1711(_TestCompliance): + # Setting the BoM is required: to pass query validation and to resolve which endpoint to call + query = ( + queries.BomComplianceQuery() + .with_indicators( + [ + indicators.WatchListIndicator(name="Indicator 1", legislation_ids=["Mock"]), + indicators.RoHSIndicator(name="Indicator 2", legislation_ids=["Mock"]), + ] + ) + .with_bom(sample_bom) + ) + mock_key = GetComplianceForBom1711Response.__name__ + + +class TestCompliance2301(_TestCompliance): + # Setting the BoM is required: to pass query validation and to resolve which endpoint to call + query = ( + queries.BomComplianceQuery() + .with_indicators( + [ + indicators.WatchListIndicator(name="Indicator 1", legislation_ids=["Mock"]), + indicators.RoHSIndicator(name="Indicator 2", legislation_ids=["Mock"]), + ] + ) + .with_bom(sample_bom_2301) + ) + mock_key = GetComplianceForBom2301Response.__name__ diff --git a/tests/test_mocked_responses/test_messages.py b/tests/test_mocked_responses/test_messages.py index a737e2f6..45e08710 100644 --- a/tests/test_mocked_responses/test_messages.py +++ b/tests/test_mocked_responses/test_messages.py @@ -7,12 +7,12 @@ from ansys.grantami.bomanalytics import GrantaMIException, queries from ansys.grantami.bomanalytics._query_results import LogMessage -from ..inputs import examples_as_dicts +from ..inputs import examples_as_dicts, sample_bom from .common import BaseMockTester class TestMessages(BaseMockTester): - query = queries.BomImpactedSubstancesQuery().with_bom("FakeBoM") # Use fake BoM to avoid validation error + query = queries.BomImpactedSubstancesQuery().with_bom(sample_bom) def test_critical_error_raises_exception(self, mock_connection, caplog): error_message = "This is a critical message" diff --git a/tests/test_mocked_responses/test_sustainability.py b/tests/test_mocked_responses/test_sustainability.py index b218b8d8..98101df7 100644 --- a/tests/test_mocked_responses/test_sustainability.py +++ b/tests/test_mocked_responses/test_sustainability.py @@ -9,11 +9,13 @@ BomSustainabilitySummaryQueryResult, ) +from ..inputs import sample_bom_2301 from .common import BaseMockTester class TestBomSustainability(BaseMockTester): - query = queries.BomSustainabilityQuery().with_bom("FakeBoM") # Use fake BoM to avoid validation error + # Use sample BoM to avoid validation error + query = queries.BomSustainabilityQuery().with_bom(sample_bom_2301) mock_key = GetSustainabilityForBom2301Response.__name__ def test_response_processing(self, mock_connection): @@ -85,7 +87,8 @@ def test_response_processing(self, mock_connection): class TestBomSustainabilitySummary(BaseMockTester): - query = queries.BomSustainabilitySummaryQuery().with_bom("FakeBoM") # Use fake BoM to avoid validation error + # Use sample BoM to avoid validation error + query = queries.BomSustainabilitySummaryQuery().with_bom(sample_bom_2301) mock_key = GetSustainabilitySummaryForBom2301Response.__name__ def test_response_processing(self, mock_connection): diff --git a/tests/test_query_builders/common.py b/tests/test_query_builders/common.py index ea5eefeb..4974f53a 100644 --- a/tests/test_query_builders/common.py +++ b/tests/test_query_builders/common.py @@ -2,6 +2,7 @@ from ansys.grantami.bomanalytics import queries +# TODO unused? RECORD_QUERY_TYPES: List = [ queries.MaterialImpactedSubstancesQuery, queries.MaterialComplianceQuery, diff --git a/tests/test_query_builders/test_bom.py b/tests/test_query_builders/test_bom.py index c77036a4..1c855e90 100644 --- a/tests/test_query_builders/test_bom.py +++ b/tests/test_query_builders/test_bom.py @@ -2,6 +2,8 @@ from ansys.grantami.bomanalytics import queries +from ..inputs import sample_bom_2301 + all_bom_queries = pytest.mark.parametrize( "query_type", [ @@ -15,9 +17,9 @@ @all_bom_queries def test_add_bom(query_type): - query = query_type().with_bom("TEST BOM") + query = query_type().with_bom(sample_bom_2301) assert isinstance(query, query_type) - assert query._data.bom == "TEST BOM" + assert query._data.bom == sample_bom_2301 @all_bom_queries @@ -33,5 +35,5 @@ def test_add_bom_wrong_type(query_type): @all_bom_queries def test_no_bom(query_type): query = query_type() - with pytest.raises(ValueError, match=r"No \w+ have been added to the query"): + with pytest.raises(ValueError, match=r"No BoM has been added to the query"): query._validate_items() From 81756b5cf29e875fa2a34b44b7daf8914b9efa16 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 19 Oct 2023 11:04:01 +0200 Subject: [PATCH 159/275] Add notes about schemas and schemas to docs --- doc/source/api/bom_builder/index.rst | 1 + doc/source/api/bom_builder/schemas.rst | 12 ++++++++++++ src/ansys/grantami/bomanalytics/queries.py | 5 +++++ src/ansys/grantami/bomanalytics/schemas/__init__.py | 9 +++++++++ 4 files changed, 27 insertions(+) create mode 100644 doc/source/api/bom_builder/schemas.rst diff --git a/doc/source/api/bom_builder/index.rst b/doc/source/api/bom_builder/index.rst index 7769387a..74659d6d 100644 --- a/doc/source/api/bom_builder/index.rst +++ b/doc/source/api/bom_builder/index.rst @@ -22,4 +22,5 @@ passed to either a Sustainability or a Compliance query. api builders helpers + schemas diff --git a/doc/source/api/bom_builder/schemas.rst b/doc/source/api/bom_builder/schemas.rst new file mode 100644 index 00000000..5ece1bb9 --- /dev/null +++ b/doc/source/api/bom_builder/schemas.rst @@ -0,0 +1,12 @@ +.. _ref_grantami_bomanalytics_api_bomschemas: + +BoM Schemas +=========== + +.. automodule:: ansys.grantami.bomanalytics.schemas + +.. autodata:: ansys.grantami.bomanalytics.schemas.bom_schema_1711 + :no-value: + +.. autodata:: ansys.grantami.bomanalytics.schemas.bom_schema_2301 + :no-value: diff --git a/src/ansys/grantami/bomanalytics/queries.py b/src/ansys/grantami/bomanalytics/queries.py index 5614c0e1..ac2f8825 100644 --- a/src/ansys/grantami/bomanalytics/queries.py +++ b/src/ansys/grantami/bomanalytics/queries.py @@ -1666,6 +1666,11 @@ def with_bom(self: _BomQuery, bom: str) -> _BomQuery: Error raised if the method is called with values that do not match the types described earlier. ValueError Error raised if the bom isn't valid XML, or isn't in a known supported BoM format. + + Notes + ----- + See the :py:mod:`ansys.grantami.bomanalytics.schemas` sub-package for Ansys Granta XML BoM Schema Definitions. + """ self._data.bom = bom return self diff --git a/src/ansys/grantami/bomanalytics/schemas/__init__.py b/src/ansys/grantami/bomanalytics/schemas/__init__.py index 2dcb16aa..b7383a48 100644 --- a/src/ansys/grantami/bomanalytics/schemas/__init__.py +++ b/src/ansys/grantami/bomanalytics/schemas/__init__.py @@ -1,6 +1,15 @@ +""" +Sub-package providing XML Schema Definition (XSD) files for Ansys Granta BoM formats. + +XSD files can be used for validating XML files. +""" + from pathlib import Path _schemas_dir = Path(__file__).parent bom_schema_1711: Path = _schemas_dir / "BillOfMaterialsEco1711.xsd" +"""Path to the Ansys Granta 17/11 BoM XML Schema definition.""" + bom_schema_2301: Path = _schemas_dir / "BillOfMaterialsEco2301.xsd" +"""Path to the Ansys Granta 23/01 BoM XML Schema definition.""" From 5f64bd038929bfe1e769f19de85e348a550b2b92 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 19 Oct 2023 11:05:07 +0200 Subject: [PATCH 160/275] Rename sample bom --- tests/inputs/__init__.py | 2 +- tests/test_argument_managers.py | 14 +++++++------- tests/test_mocked_responses/test_bom.py | 6 +++--- tests/test_mocked_responses/test_messages.py | 4 ++-- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/tests/inputs/__init__.py b/tests/inputs/__init__.py index a9ad45e2..05ce7f60 100644 --- a/tests/inputs/__init__.py +++ b/tests/inputs/__init__.py @@ -4,7 +4,7 @@ _bom_path = pathlib.Path(__file__).parent / "bom.xml" with open(_bom_path, "r") as f: - sample_bom = f.read() # TODO rename 1711 + sample_bom_1711 = f.read() _complex_bom_path = pathlib.Path(__file__).parent / "bom-complex.xml" with open(_complex_bom_path, "r") as f: diff --git a/tests/test_argument_managers.py b/tests/test_argument_managers.py index f392fbbb..25f03a36 100644 --- a/tests/test_argument_managers.py +++ b/tests/test_argument_managers.py @@ -5,7 +5,7 @@ from ansys.grantami.bomanalytics import queries -from .inputs import sample_bom, sample_bom_2301, sample_bom_complex +from .inputs import sample_bom_1711, sample_bom_2301, sample_bom_complex class MockRecordDefinition: @@ -99,7 +99,7 @@ def test_uninitialized_configuration(self, bom_version): @pytest.mark.parametrize( ["bom", "bom_version"], [ - (sample_bom, "bom_xml1711"), + (sample_bom_1711, "bom_xml1711"), (sample_bom_2301, "bom_xml2301"), ], ) @@ -116,7 +116,7 @@ class TestBomNameSpaceParsing: ["bom", "namespace"], [ (sample_bom_2301, "http://www.grantadesign.com/23/01/BillOfMaterialsEco"), - (sample_bom, "http://www.grantadesign.com/17/11/BillOfMaterialsEco"), + (sample_bom_1711, "http://www.grantadesign.com/17/11/BillOfMaterialsEco"), (sample_bom_complex, "http://www.grantadesign.com/17/11/BillOfMaterialsEco"), ], ) @@ -125,12 +125,12 @@ def test_valid_namespace_parsing(self, bom, namespace): assert ns == namespace def test_not_valid_xml(self): - bom = sample_bom.replace("", "") + bom = sample_bom_1711.replace("", "") with pytest.raises(ValueError, match="BoM provided as input is not valid XML"): queries._BomQueryDataManager(all_bom_formats).bom = bom def test_xml_but_not_a_bom(self): - bom = sample_bom.replace("PartsEco", "SomeOtherRoot") + bom = sample_bom_1711.replace("PartsEco", "SomeOtherRoot") with pytest.raises(ValueError, match="Could not read BoM version .* compliant with the expected XML schema"): queries._BomQueryDataManager(all_bom_formats).bom = bom @@ -151,9 +151,9 @@ def test_add_boms_sequentially(): # Check that properties are updated as expected when overwriting a bom with a bom from another version bom_manager = queries._BomQueryDataManager(all_bom_formats) # assert query.item_type_name is None # TODO attribute does not exist - bom_manager.bom = sample_bom + bom_manager.bom = sample_bom_1711 assert bom_manager.item_type_name == "bom_xml1711" - assert bom_manager._item_definitions[0] == sample_bom + assert bom_manager._item_definitions[0] == sample_bom_1711 bom_manager.bom = sample_bom_2301 assert bom_manager.item_type_name == "bom_xml2301" diff --git a/tests/test_mocked_responses/test_bom.py b/tests/test_mocked_responses/test_bom.py index 28c186dc..fe9b1e73 100644 --- a/tests/test_mocked_responses/test_bom.py +++ b/tests/test_mocked_responses/test_bom.py @@ -8,7 +8,7 @@ from ansys.grantami.bomanalytics import indicators, queries -from ..inputs import sample_bom, sample_bom_2301 +from ..inputs import sample_bom_1711, sample_bom_2301 from .common import BaseMockTester, MaterialValidator, PartValidator, SubstanceValidator @@ -49,7 +49,7 @@ def test_impacted_substances_by_legislation_repr(self, mock_connection): class TestImpactedSubstances1711(_TestImpactedSubstances): # Setting the BoM is required: to pass query validation and to resolve which endpoint to call - query = queries.BomImpactedSubstancesQuery().with_bom(sample_bom) + query = queries.BomImpactedSubstancesQuery().with_bom(sample_bom_1711) mock_key = GetImpactedSubstancesForBom1711Response.__name__ @@ -177,7 +177,7 @@ class TestCompliance1711(_TestCompliance): indicators.RoHSIndicator(name="Indicator 2", legislation_ids=["Mock"]), ] ) - .with_bom(sample_bom) + .with_bom(sample_bom_1711) ) mock_key = GetComplianceForBom1711Response.__name__ diff --git a/tests/test_mocked_responses/test_messages.py b/tests/test_mocked_responses/test_messages.py index 45e08710..7c0ee0e6 100644 --- a/tests/test_mocked_responses/test_messages.py +++ b/tests/test_mocked_responses/test_messages.py @@ -7,12 +7,12 @@ from ansys.grantami.bomanalytics import GrantaMIException, queries from ansys.grantami.bomanalytics._query_results import LogMessage -from ..inputs import examples_as_dicts, sample_bom +from ..inputs import examples_as_dicts, sample_bom_1711 from .common import BaseMockTester class TestMessages(BaseMockTester): - query = queries.BomImpactedSubstancesQuery().with_bom(sample_bom) + query = queries.BomImpactedSubstancesQuery().with_bom(sample_bom_1711) def test_critical_error_raises_exception(self, mock_connection, caplog): error_message = "This is a critical message" From dd78f2b035cf72c214a4d3eb811daa377830cdf7 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 19 Oct 2023 11:07:12 +0200 Subject: [PATCH 161/275] Delete unused test helpers --- tests/test_query_builders/common.py | 64 ----------------------------- 1 file changed, 64 deletions(-) diff --git a/tests/test_query_builders/common.py b/tests/test_query_builders/common.py index 4974f53a..0391551d 100644 --- a/tests/test_query_builders/common.py +++ b/tests/test_query_builders/common.py @@ -1,67 +1,3 @@ -from typing import List - -from ansys.grantami.bomanalytics import queries - -# TODO unused? -RECORD_QUERY_TYPES: List = [ - queries.MaterialImpactedSubstancesQuery, - queries.MaterialComplianceQuery, - queries.PartImpactedSubstancesQuery, - queries.PartComplianceQuery, - queries.SpecificationImpactedSubstancesQuery, - queries.SpecificationComplianceQuery, - queries.SubstanceComplianceQuery, -] - -COMPLIANCE_QUERY_TYPES: List = [ - queries.MaterialComplianceQuery, - queries.PartComplianceQuery, - queries.SpecificationComplianceQuery, - queries.SubstanceComplianceQuery, - queries.BomComplianceQuery, -] -SUBSTANCE_QUERY_TYPES: List = [ - queries.MaterialImpactedSubstancesQuery, - queries.PartImpactedSubstancesQuery, - queries.SpecificationImpactedSubstancesQuery, - queries.BomImpactedSubstancesQuery, -] -ALL_QUERY_TYPES = COMPLIANCE_QUERY_TYPES + SUBSTANCE_QUERY_TYPES - - -TEST_GUIDS = [ - [], - ["00000000-0000-0000-0000-000000000000"], - [ - "00000000-0123-4567-89AB-000000000000", - "00000000-0000-0000-0000-CDEF01234567", - ], -] - - -TEST_HISTORY_IDS = [ - [], - [123], - [ - 456, - 789, - ], - {123}, - {456, 789}, -] - -STK_OBJECT = [ - { - "db_key": "MI_Restricted_Substances", - "record_guid": "00000000-0000-0000-0000-000000000000", - }, - { - "db_key": "MI_Restricted_Substances", - "record_guid": "00000000-0000-0000-0000-000000000123", - }, -] - - def check_query_manager_attributes(query_manager, none_attributes, populated_attributes, populated_values): assert len(query_manager._data._item_definitions) == len(populated_values) for idx, value in enumerate(populated_values): From 511b6bab1087ef56518c3461418a5edf5e3a94f0 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 19 Oct 2023 11:20:12 +0200 Subject: [PATCH 162/275] Update test_integration_tests.py --- tests/test_integration_tests.py | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/tests/test_integration_tests.py b/tests/test_integration_tests.py index 5710e7e0..754db130 100644 --- a/tests/test_integration_tests.py +++ b/tests/test_integration_tests.py @@ -3,7 +3,7 @@ from ansys.grantami.bomanalytics import GrantaMIException, queries from .common import INDICATORS, LEGISLATIONS -from .inputs import sample_bom_2301, sample_bom_complex, sample_bom_custom_db +from .inputs import sample_bom_1711, sample_bom_2301, sample_bom_complex, sample_bom_custom_db pytestmark = pytest.mark.integration @@ -94,6 +94,14 @@ def bom(self, connection_with_db_variants): else: return sample_bom_complex + @pytest.fixture + def bom1711(self): + _bom = sample_bom_1711.replace( + "http://www.grantadesign.com/17/11/BillOfMaterialsEco", + "http://www.grantadesign.com/23/01/BillOfMaterialsEco", + ) + return _bom + def test_impacted_substances(self, bom, connection_with_db_variants): query = queries.BomImpactedSubstancesQuery().with_bom(bom).with_legislation_ids(LEGISLATIONS) response = connection_with_db_variants.run(query) @@ -101,6 +109,8 @@ def test_impacted_substances(self, bom, connection_with_db_variants): assert response.impacted_substances assert response.impacted_substances_by_legislation + assert connection_with_db_variants.last_response.request.url.endswith("bom1711") + def test_compliance(self, bom, connection_with_db_variants): query = queries.BomComplianceQuery().with_bom(bom).with_indicators(indicators) response = connection_with_db_variants.run(query) @@ -108,7 +118,21 @@ def test_compliance(self, bom, connection_with_db_variants): assert response.compliance_by_part_and_indicator assert response.compliance_by_indicator - # TODO integration tests: 2301 boms + assert connection_with_db_variants.last_response.request.url.endswith("bom1711") + + def test_impacted_substances_2301(self, connection, bom1711): + query = queries.BomImpactedSubstancesQuery().with_bom(bom1711).with_legislation_ids(LEGISLATIONS) + response = connection.run(query) + + assert not response.messages + assert connection.last_response.request.url.endswith("bom2301") + + def test_compliance_2301(self, connection, bom1711): + query = queries.BomComplianceQuery().with_bom(bom1711).with_indicators(indicators) + response = connection.run(query) + + assert not response.messages + assert connection.last_response.request.url.endswith("bom2301") class TestMissingDatabase: From 68774a0af6d0a9d5939d93d8354d205ce1bddc5f Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 19 Oct 2023 11:33:42 +0200 Subject: [PATCH 163/275] Modify invalid bom to pass client side validation --- examples/3_Advanced_Topics/3-1_Working_with_XML_BoMs.py | 2 +- examples/3_Advanced_Topics/supporting-files/invalid-bom.xml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/3_Advanced_Topics/3-1_Working_with_XML_BoMs.py b/examples/3_Advanced_Topics/3-1_Working_with_XML_BoMs.py index 3cb5424c..da7b6db2 100644 --- a/examples/3_Advanced_Topics/3-1_Working_with_XML_BoMs.py +++ b/examples/3_Advanced_Topics/3-1_Working_with_XML_BoMs.py @@ -145,7 +145,7 @@ def xml_validator(xml: str, schema_file: str) -> bool: # ## Invalid BoM exception -# If you were to try the same query with an invalid BoM, yoy would see a stack trace informing you that the MI Service +# If you were to try the same query with an invalid BoM, you would see a stack trace informing you that the MI Service # Layer responded with a 500 HTTP response code. To raise the exception, change the constant ``RUN_QUERY``below to # ``True``. diff --git a/examples/3_Advanced_Topics/supporting-files/invalid-bom.xml b/examples/3_Advanced_Topics/supporting-files/invalid-bom.xml index b7cda42c..c8fa5521 100644 --- a/examples/3_Advanced_Topics/supporting-files/invalid-bom.xml +++ b/examples/3_Advanced_Topics/supporting-files/invalid-bom.xml @@ -1,5 +1,5 @@ - + 1 10 - \ No newline at end of file +
\ No newline at end of file From 1583e82b2a1534b32ec9343c0813a683b0417c48 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 19 Oct 2023 12:03:02 +0200 Subject: [PATCH 164/275] Fix fixture name --- tests/test_integration_tests.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/test_integration_tests.py b/tests/test_integration_tests.py index 754db130..b4351597 100644 --- a/tests/test_integration_tests.py +++ b/tests/test_integration_tests.py @@ -95,7 +95,7 @@ def bom(self, connection_with_db_variants): return sample_bom_complex @pytest.fixture - def bom1711(self): + def bom2301(self): _bom = sample_bom_1711.replace( "http://www.grantadesign.com/17/11/BillOfMaterialsEco", "http://www.grantadesign.com/23/01/BillOfMaterialsEco", @@ -120,15 +120,15 @@ def test_compliance(self, bom, connection_with_db_variants): assert connection_with_db_variants.last_response.request.url.endswith("bom1711") - def test_impacted_substances_2301(self, connection, bom1711): - query = queries.BomImpactedSubstancesQuery().with_bom(bom1711).with_legislation_ids(LEGISLATIONS) + def test_impacted_substances_2301(self, connection, bom2301): + query = queries.BomImpactedSubstancesQuery().with_bom(bom2301).with_legislation_ids(LEGISLATIONS) response = connection.run(query) assert not response.messages assert connection.last_response.request.url.endswith("bom2301") - def test_compliance_2301(self, connection, bom1711): - query = queries.BomComplianceQuery().with_bom(bom1711).with_indicators(indicators) + def test_compliance_2301(self, connection, bom2301): + query = queries.BomComplianceQuery().with_bom(bom2301).with_indicators(indicators) response = connection.run(query) assert not response.messages From 6258763ff29b7a06ceb9015b123e77912fe1e237 Mon Sep 17 00:00:00 2001 From: Andy Grigg Date: Thu, 19 Oct 2023 17:01:00 -0400 Subject: [PATCH 165/275] Add custom tables for sustainability --- cicd/modify_custom_rs_db.py | 5 ++++- src/ansys/grantami/bomanalytics/_connection.py | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/cicd/modify_custom_rs_db.py b/cicd/modify_custom_rs_db.py index 26eaffac..69f41de6 100644 --- a/cicd/modify_custom_rs_db.py +++ b/cicd/modify_custom_rs_db.py @@ -48,6 +48,9 @@ "Products and parts": "Parts 'n' Products", "Restricted Substances": "Chemicals", "Coatings": "Coverings", + "Locations": "Places", + "ProcessUniverse": "Methods", + "Transport": "Locomotion", } URL = "http://localhost/mi_servicelayer" @@ -120,7 +123,7 @@ delete_response = data_import_service.DeleteOrWithdrawIfLatestRecordVersion(withdrawal_request) logger.info("Creating linked specifications. (TestSpecificationLinkDepth)") - specs_guid = custom_table_name_map["specs"] + specs_guid = custom_table_name_map["Specifications"] tabular_type = gdl.TabularDataType() tabular_type.AddColumn("Thickness") diff --git a/src/ansys/grantami/bomanalytics/_connection.py b/src/ansys/grantami/bomanalytics/_connection.py index d9db350d..7bf4bd38 100644 --- a/src/ansys/grantami/bomanalytics/_connection.py +++ b/src/ansys/grantami/bomanalytics/_connection.py @@ -292,6 +292,9 @@ def set_database_details( products_and_parts_table_name: Optional[str] = None, substances_table_name: Optional[str] = None, coatings_table_name: Optional[str] = None, + process_universe_table_name: Optional[str] = None, + location_table_name: Optional[str] = None, + transport_table_name: Optional[str] = None, ) -> None: """Configure the database key and table names if different from the defaults. @@ -321,6 +324,15 @@ def set_database_details( coatings_table_name : str, optional Name of the table that implements the ``Coatings`` schema. The default is ``None``, in which case ``Coatings`` is used. + process_universe_table_name : str, optional + Name of the table that implements the ``ProcessUniverse`` schema. The default + is ``None``, in which case ``ProcessUniverse`` is used. + location_table_name : str, optional + Name of the table that implements the ``Location`` schema. The default + is ``None``, in which case ``Location`` is used. + transport_table_name : str, optional + Name of the table that implements the ``Transport`` schema. The default + is ``None``, in which case ``Transport`` is used. Notes ----- @@ -336,6 +348,9 @@ def set_database_details( - Products and parts - Restricted Substances - Coatings + - ProcessUniverse + - Location + - Transport Examples -------- @@ -351,6 +366,9 @@ def set_database_details( self._table_names["products_and_parts_table_name"] = products_and_parts_table_name self._table_names["substances_table_name"] = substances_table_name self._table_names["coatings_table_name"] = coatings_table_name + self._table_names["process_universe_table_name"] = process_universe_table_name + self._table_names["location_table_name"] = location_table_name + self._table_names["transport_table_name"] = transport_table_name @overload def run(self, query: "MaterialImpactedSubstancesQuery") -> "MaterialImpactedSubstancesQueryResult": From bb622a2ddf21830be896c48f10f765c2aa3af491 Mon Sep 17 00:00:00 2001 From: Andy Grigg Date: Thu, 19 Oct 2023 17:01:44 -0400 Subject: [PATCH 166/275] Fix failing integration tests --- cicd/prepare_rs_db.py | 6 +++--- tests/common.py | 3 +++ tests/test_integration_tests.py | 17 ++++++++--------- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/cicd/prepare_rs_db.py b/cicd/prepare_rs_db.py index bf05eff3..90921d8a 100644 --- a/cicd/prepare_rs_db.py +++ b/cicd/prepare_rs_db.py @@ -356,8 +356,8 @@ def process_database( vanilla_table_name_map = table_browser.get_table_name_guid_map(vanilla_db_key) process_database(vanilla_db_key, api_client, gdl_session, vanilla_table_name_map) - # custom_db_key = "MI_Restricted_Substances_Custom_Tables" - # custom_table_name_map = table_browser.get_table_name_guid_map(custom_db_key) - # process_database(custom_db_key, api_client, gdl_session, custom_table_name_map) + custom_db_key = "MI_Restricted_Substances_Custom_Tables" + custom_table_name_map = table_browser.get_table_name_guid_map(custom_db_key) + process_database(custom_db_key, api_client, gdl_session, custom_table_name_map) logger.info("All done") diff --git a/tests/common.py b/tests/common.py index b6497ad4..9d21dfad 100644 --- a/tests/common.py +++ b/tests/common.py @@ -24,4 +24,7 @@ ("products_and_parts_table_name", "Parts 'n' Products"), ("substances_table_name", "Chemicals"), ("coatings_table_name", "Coverings"), + ("process_universe_table_name", "Methods"), + ("location_table_name", "Places"), + ("transport_table_name", "Locomotion"), ] diff --git a/tests/test_integration_tests.py b/tests/test_integration_tests.py index 677c9113..691f7341 100644 --- a/tests/test_integration_tests.py +++ b/tests/test_integration_tests.py @@ -147,7 +147,7 @@ def test_licensing(connection_with_db_variants): class TestActAsReadUser: def _run_query(self, connection): MATERIAL_ID = "plastic-abs-pc-flame" - LEGISLATION_ID = "The SIN List 2.1 (Substitute It Now!)" + LEGISLATION_ID = "SINList" mat_query = ( queries.MaterialImpactedSubstancesQuery() .with_material_ids([MATERIAL_ID]) @@ -218,7 +218,7 @@ def test_sustainability_summary_query(self, connection): query.with_bom(sample_bom_2301) response = connection.run(query) - assert not response.messages + assert not response.messages, "\n".join([f"{m.severity}: {m.message}" for m in response.messages]) assert response.process.name == "Processes" assert response.material.name == "Material" @@ -271,12 +271,11 @@ def test_sustainability_summary_query(self, connection): assert primary_process.process_reference.record_guid is not None # Check expected summaries for secondary processes - assert len(response.secondary_processes_details) == 5 + assert len(response.secondary_processes_details) == 4 expected_secondary_processes = [ ("Secondary processing, Grinding", "steel-1010-annealed"), - ("Secondary processing, Machining, coarse (D)", "stainless-astm-cn-7ms-cast"), + ("Secondary processing, Machining, coarse", "stainless-astm-cn-7ms-cast"), ("Machining, fine", "steel-1010-annealed"), - ("Machining, fine", "stainless-astm-cn-7ms-cast"), ("Other", None), ] secondary_processes = [(p.process_name, p.material_identity) for p in response.secondary_processes_details] @@ -287,7 +286,7 @@ def test_sustainability_summary_query(self, connection): secondary_process = response.secondary_processes_details[0] assert secondary_process.climate_change.value == pytest.approx(0.127, DEFAULT_TOLERANCE) assert secondary_process.embodied_energy.value == pytest.approx(1.95, DEFAULT_TOLERANCE) - assert secondary_process.climate_change_percentage == pytest.approx(41.69, DEFAULT_TOLERANCE) + assert secondary_process.climate_change_percentage == pytest.approx(44.94, DEFAULT_TOLERANCE) assert secondary_process.embodied_energy_percentage == pytest.approx(44.94, DEFAULT_TOLERANCE) assert secondary_process.material_reference.record_guid is not None assert secondary_process.process_reference.record_guid is not None @@ -328,7 +327,7 @@ def test_sustainability_query(self, connection): query.with_bom(sample_bom_2301) response = connection.run(query) - assert not response.messages + assert not response.messages, "\n".join([f"{m.severity}: {m.message}" for m in response.messages]) # Check hierarchy assert len(response.parts) == 1 @@ -379,7 +378,7 @@ def test_sustainability_query(self, connection): assert leaf_part.input_part_number == "Part1.A[LeafPart]" assert leaf_part._reference_value is None - assert leaf_part.climate_change.value == pytest.approx(1.64, DEFAULT_TOLERANCE) + assert leaf_part.climate_change.value == pytest.approx(1.62, DEFAULT_TOLERANCE) assert leaf_part.embodied_energy.value == pytest.approx(23.23, DEFAULT_TOLERANCE) assert leaf_part.reported_mass.value == pytest.approx(0.61, DEFAULT_TOLERANCE) @@ -405,7 +404,7 @@ def test_sustainability_query(self, connection): # Secondary process secondary_process = material.processes[1] assert secondary_process.record_guid is not None - assert secondary_process.climate_change.value == pytest.approx(0.0567, DEFAULT_TOLERANCE) + assert secondary_process.climate_change.value == pytest.approx(0.043, DEFAULT_TOLERANCE) assert secondary_process.embodied_energy.value == pytest.approx(0.661, DEFAULT_TOLERANCE) # Transports From adae7f9466bfa7cac697b24add2d586b8f9b48e4 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Fri, 20 Oct 2023 12:30:32 +0200 Subject: [PATCH 167/275] Minor feedback --- src/ansys/grantami/bomanalytics/queries.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/queries.py b/src/ansys/grantami/bomanalytics/queries.py index ac2f8825..bdd0f19d 100644 --- a/src/ansys/grantami/bomanalytics/queries.py +++ b/src/ansys/grantami/bomanalytics/queries.py @@ -93,7 +93,7 @@ class _BaseQueryDataManager(ABC): """List of results to be returned by the low-level API.""" item_type_name: str - """Name of the argument managed by this class and expected by the request object.""" # TODO is this correct? + """Name of the argument managed by this class and expected by the request object.""" def __init__(self) -> None: self._messages: List[models.CommonLogEntry] = [] @@ -301,7 +301,7 @@ def _validate_items(self) -> None: """Perform pre-flight checks on the items that have been added to the query. Raises - ----- + ------ ValueError Error to raise if no items have been added to the query. """ From 611655e7b99401871fc5bffbeae3a7ccde9ea012 Mon Sep 17 00:00:00 2001 From: Andy Grigg Date: Fri, 20 Oct 2023 11:17:26 -0400 Subject: [PATCH 168/275] Fix database key --- cicd/get_cleaned_db_entries.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cicd/get_cleaned_db_entries.py b/cicd/get_cleaned_db_entries.py index 2c50e902..15cf11d4 100644 --- a/cicd/get_cleaned_db_entries.py +++ b/cicd/get_cleaned_db_entries.py @@ -44,7 +44,7 @@ logger.addHandler(ch) MI_URL = "http://localhost/mi_servicelayer" -DB_KEY = "MI_Restricted_Substances_23R2" +DB_KEY = "MI_Restricted_Substances" OUTPUT_FILE_NAME = Path("./rs_data.json").resolve() logger.info(f"Connecting to MI at {MI_URL} with AutoLogon") From dacc12f024785aaeba9fd0ca7662735dc9e20024 Mon Sep 17 00:00:00 2001 From: Andy Grigg Date: Fri, 20 Oct 2023 14:06:22 -0400 Subject: [PATCH 169/275] Fix vale vocab --- doc/styles/Vocab/ANSYS/accept.txt | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/doc/styles/Vocab/ANSYS/accept.txt b/doc/styles/Vocab/ANSYS/accept.txt index b1e65109..98d88b99 100644 --- a/doc/styles/Vocab/ANSYS/accept.txt +++ b/doc/styles/Vocab/ANSYS/accept.txt @@ -1,10 +1,7 @@ -ANSYS -Ansys -ansys +(?i)ansys PyGranta BoM Analytics BoM BoM Analytics legislations RoHS -deserialization -Deserialization \ No newline at end of file +[Dd]eserialization From 8505d991ea4077eab2454fd508cdc0fe025a7b04 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Mon, 23 Oct 2023 10:51:29 +0200 Subject: [PATCH 170/275] Remove use of regex --- src/ansys/grantami/bomanalytics/queries.py | 66 +++++++++------------- tests/test_argument_managers.py | 22 +++++--- 2 files changed, 40 insertions(+), 48 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/queries.py b/src/ansys/grantami/bomanalytics/queries.py index bdd0f19d..a874bbde 100644 --- a/src/ansys/grantami/bomanalytics/queries.py +++ b/src/ansys/grantami/bomanalytics/queries.py @@ -9,7 +9,6 @@ from dataclasses import dataclass from enum import Enum from numbers import Number -import re from typing import ( TYPE_CHECKING, Any, @@ -1517,9 +1516,6 @@ def __init__(self) -> None: self._api_method = "post_compliance_substances" -_ROOT_NAMESPACE_REGEX = re.compile(r"\{(.*)\}PartsEco") - - class _BomFormat(Enum): """ Defines all supported BoM formats and provides a mapping between the expected argument name in a request and the @@ -1562,13 +1558,30 @@ def bom(self) -> str: @bom.setter def bom(self, value: str) -> None: - ns = self._read_namespace(value) - bom_format = self._validate_namespace(ns) - self._validate_bom_format(bom_format) - + bom_format = self._validate_bom(value) self.item_type_name = bom_format.name self._item_definitions = [value] + def _validate_bom(self, bom: str) -> _BomFormat: + """ + Checks that the provided string is valid XML and that the root tag matches the root tag of a supported BoM + format. + """ + try: + root = ElementTree.XML(bom) + except ElementTree.ParseError as e: + raise ValueError(f"BoM provided as input is not valid XML ({str(e)}).") from e + + valid_bom_formats = {f"{{{_format.value}}}PartsEco": _format for _format in _BomFormat} + try: + _bom_format = valid_bom_formats[root.tag] + except KeyError: + raise ValueError(f"Invalid input BoM. Ensure the document is compliant with the expected XML schema.") + if _bom_format not in self._supported_bom_formats: + raise ValueError(f"BoM format {_bom_format.name} ({_bom_format.value}) is not supported by this query.") + + return _bom_format + @property def batched_arguments(self) -> List[Dict[str, str]]: """Dictionary with a key that passes the BoM as a kwarg to the request constructor. @@ -1599,36 +1612,6 @@ def _extract_results_from_response(self, response: models.ModelBase) -> List[mod """ return [response] - @staticmethod - def _read_namespace(bom: str) -> str: - try: - root = ElementTree.XML(bom) - except ElementTree.ParseError as e: - raise ValueError(f"BoM provided as input is not valid XML ({str(e)}).") from e - match = _ROOT_NAMESPACE_REGEX.match(root.tag) - if match is None: - raise ValueError( - "Could not read BoM version from provided input BoM. Ensure the document is compliant with the expected" - " XML schema." - ) - ns = match.group(1) - return ns - - @staticmethod - def _validate_namespace(namespace: str) -> _BomFormat: - try: - bom_format = _BomFormat(namespace) - except ValueError: - raise Exception( - f"Invalid namespace on input BoM: '{namespace}'. Ensure the document is compliant with the expected XML" - f" schema." - ) - return bom_format - - def _validate_bom_format(self, bom_format: _BomFormat) -> None: - if bom_format not in self._supported_bom_formats: - raise ValueError(f"BoM format {bom_format.name} ({bom_format.value}) is not supported by this query.") - @dataclass class _BomFormatConfiguration: @@ -1648,7 +1631,12 @@ def __init__(self) -> None: @validate_argument_type(str) def with_bom(self: _BomQuery, bom: str) -> _BomQuery: - """Set the BoM to use for the query. See the query documentation for supported BoM formats. + """Set the BoM to use for the query. + + See the query documentation for supported BoM formats. + + Minimal validation is performed on the provided ``bom`` to ensure the request is sent to the appropriate + endpoint. XSD files are provided in :mod:`~.schemas` for full validation. Parameters ---------- diff --git a/tests/test_argument_managers.py b/tests/test_argument_managers.py index 25f03a36..833ee8a7 100644 --- a/tests/test_argument_managers.py +++ b/tests/test_argument_managers.py @@ -113,16 +113,16 @@ def test_add_bom(self, bom, bom_version): class TestBomNameSpaceParsing: @pytest.mark.parametrize( - ["bom", "namespace"], + ["bom", "bom_format"], [ - (sample_bom_2301, "http://www.grantadesign.com/23/01/BillOfMaterialsEco"), - (sample_bom_1711, "http://www.grantadesign.com/17/11/BillOfMaterialsEco"), - (sample_bom_complex, "http://www.grantadesign.com/17/11/BillOfMaterialsEco"), + (sample_bom_2301, queries._BomFormat.bom_xml2301), + (sample_bom_1711, queries._BomFormat.bom_xml1711), + (sample_bom_complex, queries._BomFormat.bom_xml1711), ], ) - def test_valid_namespace_parsing(self, bom, namespace): - ns = queries._BomQueryDataManager._read_namespace(bom) - assert ns == namespace + def test_valid_namespace_parsing(self, bom, bom_format): + parsed_format = queries._BomQueryDataManager(all_bom_formats)._validate_bom(bom) + assert parsed_format == bom_format def test_not_valid_xml(self): bom = sample_bom_1711.replace("", "") @@ -131,12 +131,16 @@ def test_not_valid_xml(self): def test_xml_but_not_a_bom(self): bom = sample_bom_1711.replace("PartsEco", "SomeOtherRoot") - with pytest.raises(ValueError, match="Could not read BoM version .* compliant with the expected XML schema"): + with pytest.raises( + ValueError, match="Invalid input BoM. Ensure the document is compliant with the expected XML schema" + ): queries._BomQueryDataManager(all_bom_formats).bom = bom def test_xml_bom_but_unknown_namespace(self): bom = sample_bom_2301.replace("http://www.grantadesign.com/23/01/BillOfMaterialsEco", "UnknownNamespace") - with pytest.raises(Exception, match="Invalid namespace"): # TODO + with pytest.raises( + ValueError, match="Invalid input BoM. Ensure the document is compliant with the expected XML schema" + ): queries._BomQueryDataManager(all_bom_formats).bom = bom def test_xml_bom_but_not_version_supported_by_query(self): From e9bdd7aa0d15a3bd219cbeed1ae862d3c86ce1f1 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Mon, 23 Oct 2023 11:10:14 +0200 Subject: [PATCH 171/275] Remove messages assertions --- tests/test_integration_tests.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/test_integration_tests.py b/tests/test_integration_tests.py index af658c3f..3b605c50 100644 --- a/tests/test_integration_tests.py +++ b/tests/test_integration_tests.py @@ -124,14 +124,12 @@ def test_impacted_substances_2301(self, connection, bom2301): query = queries.BomImpactedSubstancesQuery().with_bom(bom2301).with_legislation_ids(LEGISLATIONS) response = connection.run(query) - assert not response.messages assert connection.last_response.request.url.endswith("bom2301") def test_compliance_2301(self, connection, bom2301): query = queries.BomComplianceQuery().with_bom(bom2301).with_indicators(indicators) response = connection.run(query) - assert not response.messages assert connection.last_response.request.url.endswith("bom2301") From 86d8af804f5366f1b9b80edc41f963a4d3163660 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Mon, 23 Oct 2023 13:26:05 +0200 Subject: [PATCH 172/275] Update docs --- doc/source/api/compliance/index.rst | 2 +- doc/source/api/impacted_substances/index.rst | 2 +- examples/3_Advanced_Topics/3-1_Working_with_XML_BoMs.py | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/source/api/compliance/index.rst b/doc/source/api/compliance/index.rst index 69575a68..0c0ffec2 100644 --- a/doc/source/api/compliance/index.rst +++ b/doc/source/api/compliance/index.rst @@ -14,7 +14,7 @@ a threshold. If a certain record directly or indirectly contains substances impa legislations in an amount that exceeds the threshold, the record is not compliant with that indicator. For more information about possible results, see the definitions of the indicators. -The :ref:`ref_grantami_bomanalytics_api_compliance_bom` query accepts a BoM (bill of materials) in Ansys Granta MI 1711 XML BoM format and +The :ref:`ref_grantami_bomanalytics_api_compliance_bom` query accepts a BoM (bill of materials) in XML format and returns the compliance status of the BoM based on the Granta MI records referenced by it. In general, the result of each query is a recursive BoM (or multi-level BoM) that shows the compliance status and impacted diff --git a/doc/source/api/impacted_substances/index.rst b/doc/source/api/impacted_substances/index.rst index 817e5f22..b01149e1 100644 --- a/doc/source/api/impacted_substances/index.rst +++ b/doc/source/api/impacted_substances/index.rst @@ -9,7 +9,7 @@ This section gives an overview of the API for impacted substances. The :ref:`ref_grantami_bomanalytics_api_impactedsubstances_parts` queries accept a list of references to records in a Granta MI database and determine the impacted substances that are directly or indirectly associated with these records via associated records in the Granta MI database. The :ref:`ref_grantami_bomanalytics_api_impactedsubstances_bom` query is -similar, but instead of records it accepts a Bill of Materials in Ansys Granta MI 1711 XML BoM format, which in turn includes references to +similar, but instead of records it accepts a Bill of Materials in XML format, which in turn includes references to Granta MI records. In all cases, impacted substances are determined by a list of legislations, identified by legislation name. diff --git a/examples/3_Advanced_Topics/3-1_Working_with_XML_BoMs.py b/examples/3_Advanced_Topics/3-1_Working_with_XML_BoMs.py index da7b6db2..df11aeb4 100644 --- a/examples/3_Advanced_Topics/3-1_Working_with_XML_BoMs.py +++ b/examples/3_Advanced_Topics/3-1_Working_with_XML_BoMs.py @@ -16,8 +16,8 @@ # # Perform a BoM query # Both impacted substances queries and compliance queries can be performed on an XML BoM instead of a list -# of Granta MI records. The BoM must be in the Granta 17/11 format. This example shows how to use the -# ``lxml`` package with the XSD XML schema file to validate the XML format. +# of Granta MI records. The BoM must be in the Granta 17/11 format or Granta 23/01 format. This example shows how to use +# the ``lxml`` package with the XSD XML schema file to validate the XML format. # If the XML file is generated by a Granta MI product and has not been modified, it is possible to skip this step before # submitting the query. However, it is strongly advised to validate the XML BoM in all situations to avoid unexpected From 1a9fb4a166c538946d003b82b9662eb2a35aaef9 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Tue, 24 Oct 2023 10:16:03 +0200 Subject: [PATCH 173/275] Remove results classes --- .../grantami/bomanalytics/_item_results.py | 164 ------------------ 1 file changed, 164 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/_item_results.py b/src/ansys/grantami/bomanalytics/_item_results.py index 5e2d4717..625aec1f 100644 --- a/src/ansys/grantami/bomanalytics/_item_results.py +++ b/src/ansys/grantami/bomanalytics/_item_results.py @@ -346,8 +346,6 @@ def create_part_with_sustainability( part_with_sustainability._add_child_parts(result_with_sustainability.parts) part_with_sustainability._add_child_materials(result_with_sustainability.materials) part_with_sustainability._add_child_processes(result_with_sustainability.processes) - part_with_sustainability._add_child_specifications(result_with_sustainability.specifications) - part_with_sustainability._add_child_substances(result_with_sustainability.substances) return part_with_sustainability @classmethod @@ -413,60 +411,6 @@ def create_material_with_sustainability( material_with_sustainability._add_child_processes(result_with_sustainability.processes) return material_with_sustainability - @classmethod - def create_specification_result( - cls, - result: models.CommonSpecificationReference, - ) -> "SpecificationResult": - """Returns a Specification object. - - Parameters - ---------- - result: models.CommonSpecificationReference - Result from the REST API describing a specification. - - Returns - ------- - SpecificationResult - """ - - reference_type = cls.parse_reference_type(result.reference_type) - specification = SpecificationResult( - reference_type=reference_type, - reference_value=result.reference_value, - identity=result.id, - external_identity=result.external_identity, - name=result.name, - ) - return specification - - @classmethod - def create_substance_result( - cls, - result: models.CommonSubstanceReference, - ) -> "SubstanceResult": - """Returns a Substance object. - - Parameters - ---------- - result: models.CommonSubstanceReference - Result from the REST API describing this particular substance. - - Returns - ------- - SubstanceResult - """ - - reference_type = cls.parse_reference_type(result.reference_type) - substance = SubstanceResult( - reference_type=reference_type, - reference_value=result.reference_value, - identity=result.id, - external_identity=result.external_identity, - name=result.name, - ) - return substance - @classmethod def create_transport_with_sustainability( cls, @@ -1588,86 +1532,6 @@ def _add_child_parts( self._parts.append(child_part_with_sustainability) -class ChildSpecificationMixin: - """Provides the implementation for managing children specifications, by adding a ``specifications`` property to the - class. - - Parameters - ---------- - child_specifications - Specifications returned by the low-level API that are children of this item. - **kwargs - Contains arguments handled by other mixins or base classes. - """ - - def __init__(self, **kwargs: Any) -> None: - super().__init__(**kwargs) - self._specifications: List[SpecificationResult] = [] - - @property - def specifications(self) -> List["SpecificationResult"]: - """Specification with sustainability result objects that are direct children of this item in the BoM.""" - - return self._specifications - - def _add_child_specifications( - self, - child_specifications: List[models.CommonSpecificationReference], - ) -> None: - """Populate the ``specifications`` attribute based on a list of low-level API specifications with - compliance results. - - Parameters - ---------- - child_specifications - List of specifications with sustainability returned from the low-level API - """ - - for child_specification in child_specifications: - child_specification_result = ItemResultFactory.create_specification_result( - result=child_specification, - ) - self._specifications.append(child_specification_result) - - -class ChildSubstanceMixin: - """Provides the implementation for managing children substances, by adding a ``substances`` property to the - class. - - Parameters - ---------- - child_substances - Substances returned by the low-level API that are children of this item. - **kwargs - Contains arguments handled by other mixins or base classes. - """ - - def __init__(self, **kwargs: Any) -> None: - super().__init__(**kwargs) - self._substances: List[SubstanceResult] = [] - - @property - def substances(self) -> List["SubstanceResult"]: - """Substance objects that are direct children of this item in the BoM.""" - - return self._substances - - def _add_child_substances(self, child_substances: List[models.CommonSubstanceReference]) -> None: - """Populate the ``substances`` attribute based on a list of low-level API substances results. - - Parameters - ---------- - child_substances - List of substances returned from the low-level API. - """ - - for child_substance in child_substances: - child_substance_result = ItemResultFactory.create_substance_result( - result=child_substance, - ) - self._substances.append(child_substance_result) - - class ChildProcessWithSustainabilityMixin: """Provides the implementation for managing children processes, by adding a ``processes`` property to the class. @@ -1723,8 +1587,6 @@ class MaterialWithSustainabilityResult( class PartWithSustainabilityResult( - ChildSpecificationMixin, - ChildSubstanceMixin, ChildProcessWithSustainabilityMixin, ChildMaterialWithSustainabilityMixin, ChildPartWithSustainabilityMixin, @@ -1741,32 +1603,6 @@ class PartWithSustainabilityResult( """ -class SpecificationResult( - SpecificationReferenceWithIdentifiers, -): - """Describes an individual specification included as part of a sustainability query result. - - This object only includes the reference to the record in Granta MI. - """ - - -class SubstanceResult(SubstanceReferenceWithIdentifiers): - """Describes an individual specification included as part of a sustainability query result. - - This object only includes the reference to the record in Granta MI (if the substance references a record). - """ - - -# TODO: Consider documenting CoatingReference/SubstanceReference directly, since Material and PartRef need to be added -# anyway. Although having the result class means it can be extended in the future without qualifying as breaking -# changes. -class CoatingResult(CoatingReferenceWithIdentifier): - """Provides an individual coating included as part of a sustainability query result. - - This object only includes the reference to the coating in Granta MI. - """ - - class ProcessWithSustainabilityResult( SustainabilityResultMixin, ProcessReferenceWithIdentifiers, From 07ffb60ae0c46dc8842b8472139303b244b243e2 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Tue, 24 Oct 2023 10:20:39 +0200 Subject: [PATCH 174/275] Update tests --- tests/test_integration_tests.py | 6 ------ tests/test_item_results.py | 18 ------------------ .../test_sustainability.py | 6 ------ 3 files changed, 30 deletions(-) diff --git a/tests/test_integration_tests.py b/tests/test_integration_tests.py index 3b605c50..33b478ea 100644 --- a/tests/test_integration_tests.py +++ b/tests/test_integration_tests.py @@ -360,8 +360,6 @@ def test_sustainability_query(self, connection): product = response.parts[0] assert not product.processes assert not product.materials - assert not product.specifications - assert not product.substances assert product.input_part_number == "Part1[ProductAssembly]" assert product._reference_value is None @@ -376,8 +374,6 @@ def test_sustainability_query(self, connection): assert len(subassembly.parts) == 2 assert len(subassembly.processes) == 1 assert not subassembly.materials - assert not subassembly.specifications - assert not subassembly.substances assert subassembly.input_part_number == "Part1.1[SubAssembly]" assert subassembly._reference_value is None @@ -397,8 +393,6 @@ def test_sustainability_query(self, connection): assert not leaf_part.parts assert not leaf_part.processes assert len(leaf_part.materials) == 1 - assert not leaf_part.specifications - assert not leaf_part.substances assert leaf_part.input_part_number == "Part1.A[LeafPart]" assert leaf_part._reference_value is None diff --git a/tests/test_item_results.py b/tests/test_item_results.py index fe39ac75..01b77d84 100644 --- a/tests/test_item_results.py +++ b/tests/test_item_results.py @@ -302,24 +302,6 @@ def test_process_result_repr(self): ) assert repr(result) == expected - def test_substance_result_repr(self): - model = models.CommonSubstanceReference( - **self._rec_ref_kwargs, - **self._identifiers, - ) - result = ItemResultFactory.create_substance_result(model) - expected = "" - assert repr(result) == expected - - def test_specification_result_repr(self): - model = models.CommonSpecificationReference( - **self._rec_ref_kwargs, - **self._identifiers, - ) - result = ItemResultFactory.create_specification_result(model) - expected = "" - assert repr(result) == expected - class TestLicensing: @pytest.mark.parametrize("restricted_substances", [True, False]) diff --git a/tests/test_mocked_responses/test_sustainability.py b/tests/test_mocked_responses/test_sustainability.py index 98101df7..38e38d03 100644 --- a/tests/test_mocked_responses/test_sustainability.py +++ b/tests/test_mocked_responses/test_sustainability.py @@ -21,8 +21,6 @@ class TestBomSustainability(BaseMockTester): def test_response_processing(self, mock_connection): response = self.get_mocked_response(mock_connection) - # TODO Example isn't complete enough - assert isinstance(response, BomSustainabilityQueryResult) assert len(response.transport_stages) == 0 @@ -33,8 +31,6 @@ def test_response_processing(self, mock_connection): part_0 = response.parts[0] assert len(part_0.materials) == 0 assert len(part_0.processes) == 0 - assert len(part_0.substances) == 0 - assert len(part_0.specifications) == 0 assert part_0.embodied_energy.unit == "MJ" assert part_0.embodied_energy.value == 441.2 @@ -52,8 +48,6 @@ def test_response_processing(self, mock_connection): assert len(part_0_0.parts) == 0 assert len(part_0_0.processes) == 0 - assert len(part_0_0.substances) == 0 - assert len(part_0_0.specifications) == 0 assert part_0_0.embodied_energy.unit == "MJ" assert part_0_0.embodied_energy.value == 441.2 From 1a1830c203cfbf4cb7c6246dc071444df6a61a42 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Tue, 24 Oct 2023 10:24:50 +0200 Subject: [PATCH 175/275] Remove from docs --- doc/source/api/sustainability/bom.rst | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/doc/source/api/sustainability/bom.rst b/doc/source/api/sustainability/bom.rst index e5af1d13..a7c2928c 100644 --- a/doc/source/api/sustainability/bom.rst +++ b/doc/source/api/sustainability/bom.rst @@ -47,17 +47,3 @@ Process .. autoclass:: ansys.grantami.bomanalytics._item_results.ProcessWithSustainabilityResult :inherited-members: :member-order: by_mro_by_source - -Specification -~~~~~~~~~~~~~ - -.. autoclass:: ansys.grantami.bomanalytics._item_results.SpecificationResult - :inherited-members: - :member-order: by_mro_by_source - -Substance -~~~~~~~~~ - -.. autoclass:: ansys.grantami.bomanalytics._item_results.SubstanceResult - :inherited-members: - :member-order: by_mro_by_source From 5426a7847fdfc7db247aed6d6ae8de575eaa4d73 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Tue, 24 Oct 2023 10:26:13 +0200 Subject: [PATCH 176/275] Update PartWithSustainability docstring --- src/ansys/grantami/bomanalytics/_item_results.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ansys/grantami/bomanalytics/_item_results.py b/src/ansys/grantami/bomanalytics/_item_results.py index 625aec1f..f3446617 100644 --- a/src/ansys/grantami/bomanalytics/_item_results.py +++ b/src/ansys/grantami/bomanalytics/_item_results.py @@ -1599,7 +1599,7 @@ class PartWithSustainabilityResult( - The reference to the part in Granta MI (if the part references a record) - The sustainability information for this part - - Any part, material, process, substance, or specification objects which are a child of this part object + - Any part, material, or process objects which are a child of this part object """ From 28c726e76fbfd6d537b1b4a5cb9bc03d928abb8a Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Tue, 24 Oct 2023 10:48:19 +0200 Subject: [PATCH 177/275] Compose record references --- .../grantami/bomanalytics/_item_results.py | 57 +++++++++++++++---- 1 file changed, 47 insertions(+), 10 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/_item_results.py b/src/ansys/grantami/bomanalytics/_item_results.py index 5e2d4717..f1859db1 100644 --- a/src/ansys/grantami/bomanalytics/_item_results.py +++ b/src/ansys/grantami/bomanalytics/_item_results.py @@ -550,8 +550,10 @@ def create_transport_summary( """ reference_type = cls.parse_reference_type(result.record_reference.reference_type) return TransportSummaryResult( - reference_type=reference_type, - reference_value=result.record_reference.reference_value, + transport_reference=TransportReference( + reference_type=reference_type, + reference_value=result.record_reference.reference_value, + ), name=result.stage_name, distance=cls.create_unitted_value(result.distance), embodied_energy=cls.create_unitted_value(result.embodied_energy), @@ -580,8 +582,10 @@ def create_material_summary( # TODO one of these is a bucket for all other materials that do not contribute >2% EE. Worth separating it? # It does not have a valid record reference or contributors. return MaterialSummaryResult( - reference_type=reference_type, - reference_value=result.record_reference.reference_value, + material_reference=MaterialReference( + reference_type=cls.parse_reference_type(result.record_reference.reference_type), + reference_value=result.record_reference.reference_value, + ), identity=result.identity, embodied_energy=cls.create_unitted_value(result.embodied_energy), embodied_energy_percentage=result.embodied_energy_percentage, @@ -611,8 +615,10 @@ def create_contributing_component( """ reference_type = cls.parse_reference_type(result.record_reference.reference_type) return ContributingComponentResult( - reference_type=reference_type, - reference_value=result.record_reference.reference_value, + part_reference=PartReference( + reference_type=reference_type, + reference_value=result.record_reference.reference_value, + ), material_mass_before_processing=cls.create_unitted_value(result.material_mass_before_processing), name=result.component_name, ) @@ -1921,7 +1927,7 @@ def __repr__(self) -> str: ) -class TransportSummaryResult(NamedItemMixin, SustainabilitySummaryMixin, TransportReference): +class TransportSummaryResult(NamedItemMixin, SustainabilitySummaryMixin): """ Sustainability summary for a transport stage. """ @@ -1929,10 +1935,23 @@ class TransportSummaryResult(NamedItemMixin, SustainabilitySummaryMixin, Transpo name: str """Name of the transport stage.""" - def __init__(self, distance: ValueWithUnit, **kwargs: Any) -> None: + def __init__( + self, + transport_reference: TransportReference, + distance: ValueWithUnit, + **kwargs: Any, + ) -> None: super().__init__(**kwargs) + self._transport_reference = transport_reference self._distance = distance + @property + def transport_reference(self) -> TransportReference: + """ + Transport record reference. + """ + return self._transport_reference + @property def distance(self) -> ValueWithUnit: """Distance travelled in the transport stage.""" @@ -1945,7 +1964,7 @@ def __repr__(self) -> str: ) -class ContributingComponentResult(NamedItemMixin, PartReference): +class ContributingComponentResult(NamedItemMixin): """ Identifies a Part as one the largest contributors to the environmental footprint of a material. """ @@ -1956,12 +1975,21 @@ class ContributingComponentResult(NamedItemMixin, PartReference): def __init__( self, + part_reference: PartReference, material_mass_before_processing: ValueWithUnit, **kwargs: Any, ) -> None: super().__init__(**kwargs) + self._part_reference = part_reference self._material_mass_before_processing = material_mass_before_processing + @property + def part_reference(self) -> PartReference: + """ + Part record reference. + """ + return self._part_reference + @property def material_mass_before_processing(self) -> ValueWithUnit: """ @@ -1974,7 +2002,7 @@ def __repr__(self) -> str: return f"<{self.__class__.__name__}('{self.name}', mass={_mass})>" -class MaterialSummaryResult(SustainabilitySummaryMixin, MaterialReference): +class MaterialSummaryResult(SustainabilitySummaryMixin): """ Aggregated sustainability summary for a material. @@ -1984,6 +2012,7 @@ class MaterialSummaryResult(SustainabilitySummaryMixin, MaterialReference): def __init__( self, identity: str, + material_reference: MaterialReference, mass_before_processing: ValueWithUnit, mass_after_processing: ValueWithUnit, contributors: List[ContributingComponentResult], @@ -1991,6 +2020,7 @@ def __init__( ) -> None: super().__init__(**kwargs) self._identity = identity + self._material_reference = material_reference self._mass_before_processing = mass_before_processing self._mass_after_processing = mass_after_processing self._contributors = contributors @@ -2002,6 +2032,13 @@ def identity(self) -> str: """ return self._identity + @property + def material_reference(self) -> MaterialReference: + """ + Material record reference. + """ + return self._material_reference + @property def mass_before_processing(self) -> ValueWithUnit: """ From 69ffb2c44992690a3ad5845c753964bb45a34e60 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Tue, 24 Oct 2023 11:07:38 +0200 Subject: [PATCH 178/275] Add part number --- src/ansys/grantami/bomanalytics/_item_results.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/ansys/grantami/bomanalytics/_item_results.py b/src/ansys/grantami/bomanalytics/_item_results.py index f1859db1..e332300e 100644 --- a/src/ansys/grantami/bomanalytics/_item_results.py +++ b/src/ansys/grantami/bomanalytics/_item_results.py @@ -615,6 +615,7 @@ def create_contributing_component( """ reference_type = cls.parse_reference_type(result.record_reference.reference_type) return ContributingComponentResult( + part_number=result.component_part_number, part_reference=PartReference( reference_type=reference_type, reference_value=result.record_reference.reference_value, @@ -1975,14 +1976,23 @@ class ContributingComponentResult(NamedItemMixin): def __init__( self, + part_number: str, # TODO optional or not? what about name? part_reference: PartReference, material_mass_before_processing: ValueWithUnit, **kwargs: Any, ) -> None: super().__init__(**kwargs) + self._part_number = part_number self._part_reference = part_reference self._material_mass_before_processing = material_mass_before_processing + @property + def part_number(self) -> str: + """ + Part number. + """ + return self._part_number + @property def part_reference(self) -> PartReference: """ From 7fa2235995a55d0ff5eb2c0cb858c1b0ca2a051f Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Tue, 24 Oct 2023 11:12:50 +0200 Subject: [PATCH 179/275] Update tests --- .../supporting-files/bom-2301-assembly.xml | 1 + tests/test_integration_tests.py | 7 +++---- tests/test_mocked_responses/test_sustainability.py | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/examples/4_Sustainability/supporting-files/bom-2301-assembly.xml b/examples/4_Sustainability/supporting-files/bom-2301-assembly.xml index 8ccfffd9..a991dfc1 100644 --- a/examples/4_Sustainability/supporting-files/bom-2301-assembly.xml +++ b/examples/4_Sustainability/supporting-files/bom-2301-assembly.xml @@ -203,6 +203,7 @@ 2.0 0.012 Part1.D[LeafPart] + Part1.D 100.0 diff --git a/tests/test_integration_tests.py b/tests/test_integration_tests.py index 3b605c50..6e375943 100644 --- a/tests/test_integration_tests.py +++ b/tests/test_integration_tests.py @@ -262,13 +262,12 @@ def test_sustainability_summary_query(self, connection): # Spot check one material summary beryllium_summary = next(m for m in response.material_details if m.identity == "beryllium-beralcast191-cast") assert len(beryllium_summary.contributors) == 1 - assert ( - beryllium_summary.contributors[0].name is None - ) # TODO: define names in example bom or create ticket to use part number? + assert beryllium_summary.contributors[0].name == "Part1.D" + assert beryllium_summary.contributors[0].part_number == "Part1.D[LeafPart]" assert beryllium_summary.contributors[0].material_mass_before_processing.value == pytest.approx(0.027) assert beryllium_summary.mass_after_processing.value == pytest.approx(0.024) assert beryllium_summary.mass_before_processing.value == pytest.approx(0.027) - assert beryllium_summary.record_guid is not None + assert beryllium_summary.material_reference.record_guid is not None assert beryllium_summary.climate_change.value == pytest.approx(15.52, DEFAULT_TOLERANCE) assert beryllium_summary.climate_change_percentage == pytest.approx(54.32, DEFAULT_TOLERANCE) assert beryllium_summary.embodied_energy.value == pytest.approx(117.55, DEFAULT_TOLERANCE) diff --git a/tests/test_mocked_responses/test_sustainability.py b/tests/test_mocked_responses/test_sustainability.py index 98101df7..5420664b 100644 --- a/tests/test_mocked_responses/test_sustainability.py +++ b/tests/test_mocked_responses/test_sustainability.py @@ -124,7 +124,7 @@ def test_response_processing(self, mock_connection): assert len(response.material_details) == 1 unique_material_0 = response.material_details[0] assert unique_material_0.identity == "steel-kovar-annealed" - assert unique_material_0.record_guid == "8dc38bb5-eff9-4c60-9233-271a3c8f6270" + assert unique_material_0.material_reference.record_guid == "8dc38bb5-eff9-4c60-9233-271a3c8f6270" assert unique_material_0.embodied_energy.value == 134.482549067761 assert unique_material_0.embodied_energy.unit == "MJ" assert unique_material_0.climate_change.value == 4.3276934674222 From 321cab7a2ef2522736fe65bf030f82c163a139ff Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Tue, 24 Oct 2023 11:33:45 +0200 Subject: [PATCH 180/275] Correct typing --- .../grantami/bomanalytics/_item_results.py | 70 ++++++++----------- 1 file changed, 30 insertions(+), 40 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/_item_results.py b/src/ansys/grantami/bomanalytics/_item_results.py index e332300e..94e255fb 100644 --- a/src/ansys/grantami/bomanalytics/_item_results.py +++ b/src/ansys/grantami/bomanalytics/_item_results.py @@ -1877,16 +1877,16 @@ def climate_change_percentage(self) -> float: return self._climate_change_percentage -class NamedItemMixin: - """Adds a name to a class. +class SustainabilityPhaseSummaryResult(SustainabilitySummaryMixin): + """ + High-level sustainability summary for a phase. + + Phases currently include: + + - ``Material`` + - ``Processes`` + - ``Transport`` - Parameters - ---------- - name : str - Name of the item. - **kwargs - Contains arguments handled by other mixins or base classes, e.g. ``reference_type`` and ``reference_value`` - for ``RecordDefinition``-based objects. """ def __init__( @@ -1899,28 +1899,9 @@ def __init__( @property def name(self) -> str: - """ - Item name. - """ + """Name of the phase. Supported values are ``Material``, ``Processes``, and ``Transport``.""" return self._name - -class SustainabilityPhaseSummaryResult(NamedItemMixin, SustainabilitySummaryMixin): - """ - High-level sustainability summary for a phase. - - Phases currently include: - - - ``Material`` - - ``Processes`` - - ``Transport`` - - """ - - # Overriding docstring for property `name` inherited from mixin - name: str - """Name of the phase. Supported values are ``Material``, ``Processes``, and ``Transport``.""" - def __repr__(self) -> str: return ( f"<{self.__class__.__name__}('{self.name}'," @@ -1928,24 +1909,28 @@ def __repr__(self) -> str: ) -class TransportSummaryResult(NamedItemMixin, SustainabilitySummaryMixin): +class TransportSummaryResult(SustainabilitySummaryMixin): """ Sustainability summary for a transport stage. """ - name: str - """Name of the transport stage.""" - def __init__( self, + name: Optional[str], transport_reference: TransportReference, distance: ValueWithUnit, **kwargs: Any, ) -> None: super().__init__(**kwargs) + self._name = name self._transport_reference = transport_reference self._distance = distance + @property + def name(self) -> Optional[str]: + """Name of the transport stage.""" + return self._name + @property def transport_reference(self) -> TransportReference: """ @@ -1965,34 +1950,39 @@ def __repr__(self) -> str: ) -class ContributingComponentResult(NamedItemMixin): +class ContributingComponentResult: """ Identifies a Part as one the largest contributors to the environmental footprint of a material. """ - # Overriding docstring for property `name` inherited from mixin - name: str - """Name of the part.""" - def __init__( self, - part_number: str, # TODO optional or not? what about name? + name: Optional[str], + part_number: Optional[str], part_reference: PartReference, material_mass_before_processing: ValueWithUnit, **kwargs: Any, ) -> None: super().__init__(**kwargs) + self._name = name self._part_number = part_number self._part_reference = part_reference self._material_mass_before_processing = material_mass_before_processing @property - def part_number(self) -> str: + def part_number(self) -> Optional[str]: """ Part number. """ return self._part_number + @property + def name(self) -> Optional[str]: + """ + Name of the part (if populated on the BoM used in the query). + """ + return self._name + @property def part_reference(self) -> PartReference: """ From b507be78aa4f0f48e8777a2105fe57320904e871 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Tue, 24 Oct 2023 12:13:31 +0200 Subject: [PATCH 181/275] Update mock responses and associated tests --- tests/inputs/examples.py | 8 +-- .../test_sustainability.py | 68 +++++++++++-------- 2 files changed, 42 insertions(+), 34 deletions(-) diff --git a/tests/inputs/examples.py b/tests/inputs/examples.py index de39b455..bb7438d1 100644 --- a/tests/inputs/examples.py +++ b/tests/inputs/examples.py @@ -62,10 +62,10 @@ "GetImpactedSubstancesForSpecificationsRequest": r"""{"Specifications":[{"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":545019,"Id":null},{"ReferenceType":"SpecificationId","ReferenceValue":"AMS03-27","Id":null}],"LegislationIds":["SINList"],"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 "GetImpactedSubstancesForSpecificationsResponse": r"""{"Specifications":[{"Legislations":[{"LegislationId":"SINList","ImpactedSubstances":[{"SubstanceName":"1,3-Butadiene","CasNumber":"106-99-0","EcNumber":"203-450-8","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1},{"SubstanceName":"Butylated hydroxytoluene [BAN:NF]","CasNumber":"128-37-0","EcNumber":"204-881-4","MaxPercentageAmountInMaterial":null,"LegislationThreshold":0.1}]}],"ReferenceType":"MiRecordHistoryIdentity","ReferenceValue":545019,"Id":null},{"Legislations":[{"LegislationId":"SINList","ImpactedSubstances":[{"SubstanceName":"Benzophenone","CasNumber":"119-61-9","EcNumber":"204-337-6","MaxPercentageAmountInMaterial":1,"LegislationThreshold":0.1},{"SubstanceName":"2,4-Dihydroxybenzophenon","CasNumber":"131-56-6","EcNumber":"205-029-4","MaxPercentageAmountInMaterial":1,"LegislationThreshold":0.1}]}],"ReferenceType":"SpecificationId","ReferenceValue":"AMS03-27","Id":null}],"LogMessages":[]}""", # noqa: E501 "GetImpactedSubstancesForSpecificationsSpecification": r"""""", # noqa: E501 - "GetSustainabilityForBom2301Request": r"""{"BomXml2301":"<?xml version= \"1.0\"?><PartsEco xmlns:xsd= \"http://www.w3.org/2001/XMLSchema\" xmlns:xsi= \"http://www.w3.org/2001/XMLSchema-instance\" xmlns= \"http://www.grantadesign.com/23/01/BillOfMaterialsEco\"><Components><Part><Quantity Unit= \"Each\">1</Quantity><PartNumber>PartOne</PartNumber><Name>PartOne</Name><ExternalIdentity>1686152405220|5</ExternalIdentity><Components><Part><Quantity Unit= \"Each\">1</Quantity><MassPerUom Unit= \"kg/Part\">2</MassPerUom><PartNumber>PartTwo</PartNumber><Name>PartTwo</Name><ExternalIdentity>1686152405220|16</ExternalIdentity><Materials><Material><Mass Unit= \"kg\">2</Mass><MIMaterialReference><dbKey xmlns= \"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey><recordGUID xmlns= \"http://www.grantadesign.com/12/05/GrantaBaseTypes\">8dc38bb5-eff9-4c60-9233-271a3c8f6270</recordGUID></MIMaterialReference><Identity>steel-kovar-annealed</Identity><Name>High alloy steel, Kovar, annealed</Name><ExternalIdentity>1686152405220|14</ExternalIdentity><Processes><Process><MIProcessReference><dbKey xmlns= \"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey><recordHistoryGUID xmlns= \"http://www.grantadesign.com/12/05/GrantaBaseTypes\">d986c90a-2835-45f3-8b69-d6d662dcf53a</recordHistoryGUID></MIProcessReference><Identity>Coarse Machining</Identity><Name>Coarse Machining</Name><ExternalIdentity>1977190729730|4</ExternalIdentity><DimensionType>MassRemoved</DimensionType><Quantity Unit= \"kg\">0.05</Quantity></Process></Processes></Material></Materials></Part></Components></Part></Components><Notes><ProductName>Example</ProductName></Notes></PartsEco>","PreferredUnits":null,"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 - "GetSustainabilityForBom2301Response": r"""{"Parts":[{"Parts":[{"Parts":[],"Materials":[{"Processes":[{"EmbodiedEnergy":{"Value":0.09,"Unit":"MJ"},"ClimateChange":{"Value":0,"Unit":"kg"},"ReferenceType":"MiRecordHistoryGuid","ReferenceValue":"d986c90a-2835-45f3-8b69-d6d662dcf53a","Id":null}],"EmbodiedEnergy":{"Value":441.1,"Unit":"MJ"},"ClimateChange":{"Value":14.9,"Unit":"kg"},"Recyclable":true,"Biodegradable":false,"FunctionalRecycle":true,"ReportedMass":{"Value":2,"Unit":"kg"},"ReferenceType":"MiRecordGuid","ReferenceValue":"8dc38bb5-eff9-4c60-9233-271a3c8f6270","Id":null}],"Processes":[],"Substances":[],"Specifications":[],"EmbodiedEnergy":{"Value":441.2,"Unit":"MJ"},"ClimateChange":{"Value":14.2,"Unit":"kg"},"ReportedMass":{"Value":2,"Unit":"kg"},"ReferenceType":null,"ReferenceValue":null,"Id":null}],"Materials":[],"Processes":[],"Substances":[],"Specifications":[],"EmbodiedEnergy":{"Value":441.2,"Unit":"MJ"},"ClimateChange":{"Value":14.2,"Unit":"kg"},"ReportedMass":{"Value":2,"Unit":"kg"},"ReferenceType":null,"ReferenceValue":null,"Id":null}],"TransportStages":[],"LogMessages":[]}""", # noqa: E501 - "GetSustainabilitySummaryForBom2301Request": r"""{"BomXml2301":"<?xml version=\"1.0\"?><PartsEco xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://www.grantadesign.com/23/01/BillOfMaterialsEco\"> <Components> <Part> <Quantity Unit=\"Each\">1</Quantity> <PartNumber>PartOne</PartNumber> <ExternalIdentity>47</ExternalIdentity> <Components> <Part> <Quantity Unit=\"Each\">1</Quantity> <PartNumber>PartTwo</PartNumber> <Name /> <ExternalIdentity>50</ExternalIdentity> <Materials> <Material> <Mass Unit=\"kg\">0.5</Mass> <MIMaterialReference> <dbKey xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey> <recordGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">8dc38bb5-eff9-4c60-9233-271a3c8f6270</recordGUID> </MIMaterialReference> <Identity>steel-kovar-annealed</Identity> <Name>High alloy steel, Kovar, annealed</Name> <ExternalIdentity>5777</ExternalIdentity> <Processes> <Process> <MIProcessReference> <dbKey xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey> <recordGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">baa6c95b-ff0e-4811-9120-92717ee15bda</recordGUID> </MIProcessReference> <Identity /> <Name>Metal casting</Name> <ExternalIdentity>5821</ExternalIdentity> <DimensionType>Mass</DimensionType> <Percentage>100</Percentage> </Process> <Process> <MIProcessReference> <dbKey xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey> <recordGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">907bda29-e800-44f6-b7ea-4eb8e7cff375</recordGUID> </MIProcessReference> <Identity /> <Name>Machining, coarse</Name> <ExternalIdentity>5801</ExternalIdentity> <DimensionType>MassRemoved</DimensionType> <Percentage>20</Percentage> </Process> </Processes> </Material> </Materials> </Part> </Components> </Part> </Components> <Notes> <ProductName>Example</ProductName> </Notes></PartsEco>","PreferredUnits":null,"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 - "GetSustainabilitySummaryForBom2301Response": r"""{"MaterialSummary":{"Summary":[{"Identity":"steel-kovar-annealed","RecordReference":{"ReferenceType":"MiRecordGuid","ReferenceValue":"8dc38bb5-eff9-4c60-9233-271a3c8f6270","Id":null},"EmbodiedEnergy":{"Value":134.482549067761,"Unit":"MJ"},"EmbodiedEnergyPercentage":100,"ClimateChange":{"Value":4.3276934674222,"Unit":"kg"},"ClimateChangePercentage":100,"MassBeforeProcessing":{"Value":0.625,"Unit":"kg"},"MassAfterProcessing":{"Value":0.5,"Unit":"kg"},"LargestContributors":[{"ComponentName":"","RecordReference":{"ReferenceType":null,"ReferenceValue":null,"Id":null},"MaterialMassBeforeProcessing":{"Value":0.625,"Unit":"kg"}}]}],"PhaseSummary":{"Phase":"Material","EmbodiedEnergy":{"Value":134.482549067761,"Unit":"MJ"},"EmbodiedEnergyPercentage":95.1957177924867,"ClimateChange":{"Value":4.3276934674222,"Unit":"kg"},"ClimateChangePercentage":93.623465310322}},"ProcessSummary":{"PrimaryProcesses":[{"ProcessName":"Metal casting","ProcessRecordReference":{"ReferenceType":"MiRecordGuid","ReferenceValue":"baa6c95b-ff0e-4811-9120-92717ee15bda","Id":null},"MaterialRecordReference":{"ReferenceType":"MiRecordGuid","ReferenceValue":"8dc38bb5-eff9-4c60-9233-271a3c8f6270","Id":null},"MaterialIdentity":"High alloy steel, Kovar, annealed","EmbodiedEnergy":{"Value":6.55438765769984,"Unit":"MJ"},"EmbodiedEnergyPercentage":100,"ClimateChange":{"Value":0.283705040845716,"Unit":"kg"},"ClimateChangePercentage":100}],"SecondaryProcesses":[{"ProcessName":"Machining, coarse","ProcessRecordReference":{"ReferenceType":"MiRecordGuid","ReferenceValue":"907bda29-e800-44f6-b7ea-4eb8e7cff375","Id":null},"MaterialRecordReference":{"ReferenceType":"MiRecordGuid","ReferenceValue":"8dc38bb5-eff9-4c60-9233-271a3c8f6270","Id":null},"MaterialIdentity":"High alloy steel, Kovar, annealed","EmbodiedEnergy":{"Value":0.232599537624153,"Unit":"MJ"},"EmbodiedEnergyPercentage":100,"ClimateChange":{"Value":0.0110467869128737,"Unit":"kg"},"ClimateChangePercentage":100}],"JoiningAndFinishingProcesses":[],"PhaseSummary":{"Phase":"Processes","EmbodiedEnergy":{"Value":6.78698719532399,"Unit":"MJ"},"EmbodiedEnergyPercentage":4.80428220751333,"ClimateChange":{"Value":0.29475182775859,"Unit":"kg"},"ClimateChangePercentage":6.37653468967796}},"TransportSummary":{"Summary":[],"PhaseSummary":{"Phase":"Transport","EmbodiedEnergy":{"Value":0,"Unit":"MJ"},"EmbodiedEnergyPercentage":0,"ClimateChange":{"Value":0,"Unit":"kg"},"ClimateChangePercentage":0}},"LogMessages":[]}""", # noqa: E501 + "GetSustainabilityForBom2301Request": r"""{"BomXml2301":"<?xml version= \"1.0\"?><PartsEco xmlns:xsd= \"http://www.w3.org/2001/XMLSchema\" xmlns:xsi= \"http://www.w3.org/2001/XMLSchema-instance\" xmlns= \"http://www.grantadesign.com/23/01/BillOfMaterialsEco\"><Components><Part><Quantity Unit= \"Each\">1</Quantity><PartNumber>PartOne</PartNumber><Name>PartOne</Name><Components><Part><Quantity Unit= \"Each\">1</Quantity><MassPerUom Unit= \"kg/Part\">2</MassPerUom><PartNumber>PartTwo</PartNumber><Name>PartTwo</Name><Materials><Material><Mass Unit= \"kg\">2</Mass><MIMaterialReference><dbKey xmlns= \"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey><recordGUID xmlns= \"http://www.grantadesign.com/12/05/GrantaBaseTypes\">8dc38bb5-eff9-4c60-9233-271a3c8f6270</recordGUID></MIMaterialReference><Identity>steel-kovar-annealed</Identity><Name>High alloy steel, Kovar, annealed</Name><Processes><Process><MIProcessReference><dbKey xmlns= \"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey><recordHistoryGUID xmlns= \"http://www.grantadesign.com/12/05/GrantaBaseTypes\">d986c90a-2835-45f3-8b69-d6d662dcf53a</recordHistoryGUID></MIProcessReference><Identity>Coarse Machining</Identity><Name>Coarse Machining</Name><DimensionType>MassRemoved</DimensionType><Quantity Unit=\"kg\">0.05</Quantity></Process></Processes></Material></Materials></Part></Components></Part></Components><Notes><ProductName>Example</ProductName></Notes></PartsEco>","PreferredUnits":null,"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 + "GetSustainabilityForBom2301Response": r"""{"Parts":[{"Parts":[{"Parts":[],"Materials":[{"Processes":[{"EmbodiedEnergy":{"Value":0.892227273922441,"Unit":"MJ"},"ClimateChange":{"Value":0.0579439821562209,"Unit":"kg"},"Name":"Coarse Machining","ReferenceType":"MiRecordHistoryGuid","ReferenceValue":"d986c90a-2835-45f3-8b69-d6d662dcf53a","Id":"P4"}],"EmbodiedEnergy":{"Value":489.332037066857,"Unit":"MJ"},"ClimateChange":{"Value":18.0379615325568,"Unit":"kg"},"Recyclable":true,"Biodegradable":false,"FunctionalRecycle":true,"ReportedMass":{"Value":2,"Unit":"kg"},"Name":"High alloy steel, Kovar, annealed","ReferenceType":"MiRecordGuid","ReferenceValue":"8dc38bb5-eff9-4c60-9233-271a3c8f6270","Id":"P3"}],"Processes":[],"Substances":[],"Specifications":[],"EmbodiedEnergy":{"Value":490.224264340779,"Unit":"MJ"},"ClimateChange":{"Value":18.0959055147131,"Unit":"kg"},"ReportedMass":{"Value":2,"Unit":"kg"},"Name":"PartTwo","ReferenceType":null,"ReferenceValue":null,"Id":"P2"}],"Materials":[],"Processes":[],"Substances":[],"Specifications":[],"EmbodiedEnergy":{"Value":490.224264340779,"Unit":"MJ"},"ClimateChange":{"Value":18.0959055147131,"Unit":"kg"},"ReportedMass":{"Value":2,"Unit":"kg"},"Name":"PartOne","ReferenceType":null,"ReferenceValue":null,"Id":"P1"}],"TransportStages":[],"LogMessages":[{"Severity":"information","Message":"No location information has been supplied for this BoM. The location has been set to 'The Whole World'"}]}""", # noqa: E501 + "GetSustainabilitySummaryForBom2301Request": r"""{"BomXml2301":"<?xml version=\"1.0\"?><PartsEco xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://www.grantadesign.com/23/01/BillOfMaterialsEco\"> <Components> <Part> <Quantity Unit=\"Each\">1</Quantity> <PartNumber>PartOne</PartNumber> <ExternalIdentity>47</ExternalIdentity> <Components> <Part> <Quantity Unit=\"Each\">1</Quantity> <PartNumber>PartTwo</PartNumber> <Name>PartTwo</Name> <ExternalIdentity>50</ExternalIdentity> <Materials> <Material> <Mass Unit=\"kg\">0.5</Mass> <MIMaterialReference> <dbKey xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey> <recordGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">8dc38bb5-eff9-4c60-9233-271a3c8f6270</recordGUID> </MIMaterialReference> <Identity>steel-kovar-annealed</Identity> <Name>High alloy steel, Kovar, annealed</Name> <ExternalIdentity>5777</ExternalIdentity> <Processes> <Process> <MIProcessReference> <dbKey xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey> <recordGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">baa6c95b-ff0e-4811-9120-92717ee15bda</recordGUID> </MIProcessReference> <Identity /> <Name>Metal casting</Name> <ExternalIdentity>5821</ExternalIdentity> <DimensionType>Mass</DimensionType> <Percentage>100</Percentage> </Process> <Process> <MIProcessReference> <dbKey xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">MI_Restricted_Substances</dbKey> <recordGUID xmlns=\"http://www.grantadesign.com/12/05/GrantaBaseTypes\">907bda29-e800-44f6-b7ea-4eb8e7cff375</recordGUID> </MIProcessReference> <Identity /> <Name>Machining, coarse</Name> <ExternalIdentity>5801</ExternalIdentity> <DimensionType>MassRemoved</DimensionType> <Percentage>20</Percentage> </Process> </Processes> </Material> </Materials> </Part> </Components> </Part> </Components> <Notes> <ProductName>Example</ProductName> </Notes></PartsEco>","PreferredUnits":null,"DatabaseKey":"MI_Restricted_Substances","Config":null}""", # noqa: E501 + "GetSustainabilitySummaryForBom2301Response": r"""{"MaterialSummary":{"Summary":[{"Identity":"steel-kovar-annealed","RecordReference":{"ReferenceType":"MiRecordGuid","ReferenceValue":"8dc38bb5-eff9-4c60-9233-271a3c8f6270","Id":null},"EmbodiedEnergy":{"Value":149.186596666725,"Unit":"MJ"},"EmbodiedEnergyPercentage":100,"ClimateChange":{"Value":5.49937851602342,"Unit":"kg"},"ClimateChangePercentage":100,"MassBeforeProcessing":{"Value":0.625,"Unit":"kg"},"MassAfterProcessing":{"Value":0.5,"Unit":"kg"},"LargestContributors":[{"ComponentName":"PartTwo","ComponentPartNumber":"PartTwo","RecordReference":null,"MaterialMassBeforeProcessing":{"Value":0.625,"Unit":"kg"}}]}],"PhaseSummary":{"Phase":"Material","EmbodiedEnergy":{"Value":149.186596666725,"Unit":"MJ"},"EmbodiedEnergyPercentage":54.9433431023616,"ClimateChange":{"Value":5.49937851602342,"Unit":"kg"},"ClimateChangePercentage":39.5645592037266}},"ProcessSummary":{"PrimaryProcesses":[{"ProcessName":"Metal casting","ProcessRecordReference":{"ReferenceType":"MiRecordGuid","ReferenceValue":"baa6c95b-ff0e-4811-9120-92717ee15bda","Id":null},"MaterialRecordReference":{"ReferenceType":"MiRecordGuid","ReferenceValue":"8dc38bb5-eff9-4c60-9233-271a3c8f6270","Id":null},"MaterialIdentity":"steel-kovar-annealed","EmbodiedEnergy":{"Value":120.110900684605,"Unit":"MJ"},"EmbodiedEnergyPercentage":100,"ClimateChange":{"Value":8.25552087559637,"Unit":"kg"},"ClimateChangePercentage":100}],"SecondaryProcesses":[{"ProcessName":"Machining, coarse","ProcessRecordReference":{"ReferenceType":"MiRecordGuid","ReferenceValue":"907bda29-e800-44f6-b7ea-4eb8e7cff375","Id":null},"MaterialRecordReference":{"ReferenceType":"MiRecordGuid","ReferenceValue":"8dc38bb5-eff9-4c60-9233-271a3c8f6270","Id":null},"MaterialIdentity":"steel-kovar-annealed","EmbodiedEnergy":{"Value":2.23056818480611,"Unit":"MJ"},"EmbodiedEnergyPercentage":100,"ClimateChange":{"Value":0.144859955390553,"Unit":"kg"},"ClimateChangePercentage":100}],"JoiningAndFinishingProcesses":[],"PhaseSummary":{"Phase":"Processes","EmbodiedEnergy":{"Value":122.341468869412,"Unit":"MJ"},"EmbodiedEnergyPercentage":45.0566568976384,"ClimateChange":{"Value":8.40038083098692,"Unit":"kg"},"ClimateChangePercentage":60.4354407962734}},"TransportSummary":{"Summary":[],"PhaseSummary":{"Phase":"Transport","EmbodiedEnergy":{"Value":0,"Unit":"MJ"},"EmbodiedEnergyPercentage":0,"ClimateChange":{"Value":0,"Unit":"kg"},"ClimateChangePercentage":0}},"LogMessages":[]}""", # noqa: E501 } examples_as_strings = {k: html.unescape(v) for k, v in _example_dict_raw.items() if v} diff --git a/tests/test_mocked_responses/test_sustainability.py b/tests/test_mocked_responses/test_sustainability.py index 5420664b..354749b5 100644 --- a/tests/test_mocked_responses/test_sustainability.py +++ b/tests/test_mocked_responses/test_sustainability.py @@ -1,7 +1,10 @@ +import json + from ansys.grantami.bomanalytics_openapi.models import ( GetSustainabilityForBom2301Response, GetSustainabilitySummaryForBom2301Response, ) +import pytest from ansys.grantami.bomanalytics import queries from ansys.grantami.bomanalytics._query_results import ( @@ -9,7 +12,7 @@ BomSustainabilitySummaryQueryResult, ) -from ..inputs import sample_bom_2301 +from ..inputs import examples_as_dicts, sample_bom_2301 from .common import BaseMockTester @@ -26,7 +29,7 @@ def test_response_processing(self, mock_connection): assert isinstance(response, BomSustainabilityQueryResult) assert len(response.transport_stages) == 0 - assert len(response.messages) == 0 + assert len(response.messages) == 1 # Top-level assert len(response.parts) == 1 @@ -37,9 +40,9 @@ def test_response_processing(self, mock_connection): assert len(part_0.specifications) == 0 assert part_0.embodied_energy.unit == "MJ" - assert part_0.embodied_energy.value == 441.2 + assert part_0.embodied_energy.value == pytest.approx(490.22, 0.01) assert part_0.climate_change.unit == "kg" - assert part_0.climate_change.value == 14.2 + assert part_0.climate_change.value == pytest.approx(18.09, 0.01) assert part_0.reported_mass.unit == "kg" assert part_0.reported_mass.value == 2 @@ -56,19 +59,18 @@ def test_response_processing(self, mock_connection): assert len(part_0_0.specifications) == 0 assert part_0_0.embodied_energy.unit == "MJ" - assert part_0_0.embodied_energy.value == 441.2 + assert part_0_0.embodied_energy.value == pytest.approx(490.22, 0.01) assert part_0_0.climate_change.unit == "kg" - assert part_0_0.climate_change.value == 14.2 + assert part_0_0.climate_change.value == pytest.approx(18.09, 0.01) assert part_0_0.reported_mass.unit == "kg" assert part_0_0.reported_mass.value == 2 assert len(part_0_0.materials) == 1 part_0_0_material_0 = part_0_0.materials[0] - # TODO something does not add-up in Climate change assert part_0_0_material_0.embodied_energy.unit == "MJ" - assert part_0_0_material_0.embodied_energy.value == 441.1 + assert part_0_0_material_0.embodied_energy.value == pytest.approx(489.33, 0.01) assert part_0_0_material_0.climate_change.unit == "kg" - assert part_0_0_material_0.climate_change.value == 14.9 + assert part_0_0_material_0.climate_change.value == pytest.approx(18.037, 0.01) assert part_0_0_material_0.reported_mass.unit == "kg" assert part_0_0_material_0.reported_mass.value == 2 assert part_0_0_material_0.recyclable is True @@ -80,9 +82,9 @@ def test_response_processing(self, mock_connection): process = part_0_0_material_0.processes[0] assert process.embodied_energy.unit == "MJ" - assert process.embodied_energy.value == 0.09 + assert process.embodied_energy.value == pytest.approx(0.89, 0.01) assert process.climate_change.unit == "kg" - assert process.climate_change.value == 0 + assert process.climate_change.value == pytest.approx(0.0579, 0.01) assert process.record_history_guid == "d986c90a-2835-45f3-8b69-d6d662dcf53a" @@ -92,26 +94,32 @@ class TestBomSustainabilitySummary(BaseMockTester): mock_key = GetSustainabilitySummaryForBom2301Response.__name__ def test_response_processing(self, mock_connection): - response = self.get_mocked_response(mock_connection) + patched_response = examples_as_dicts[self.mock_key] + patched_response["MaterialSummary"]["Summary"][0]["LargestContributors"][0]["RecordReference"] = { + "Id": None, + "ReferenceType": None, + "ReferenceValue": None, + } + response = self.get_mocked_response(mock_connection, json.dumps(patched_response)) assert isinstance(response, BomSustainabilitySummaryQueryResult) assert len(response.messages) == 0 material_summary = response.material - assert material_summary.embodied_energy.value == 134.482549067761 + assert material_summary.embodied_energy.value == pytest.approx(149.17, 0.01) assert material_summary.embodied_energy.unit == "MJ" - assert material_summary.climate_change.value == 4.3276934674222 + assert material_summary.climate_change.value == pytest.approx(5.499, 0.01) assert material_summary.climate_change.unit == "kg" - assert material_summary.embodied_energy_percentage == 95.1957177924867 - assert material_summary.climate_change_percentage == 93.623465310322 + assert material_summary.embodied_energy_percentage == pytest.approx(54.943, 0.01) + assert material_summary.climate_change_percentage == pytest.approx(39.56, 0.01) process_summary = response.process - assert process_summary.embodied_energy.value == 6.78698719532399 + assert process_summary.embodied_energy.value == 122.341468869412 assert process_summary.embodied_energy.unit == "MJ" - assert process_summary.climate_change.value == 0.29475182775859 + assert process_summary.climate_change.value == 8.40038083098692 assert process_summary.climate_change.unit == "kg" - assert process_summary.embodied_energy_percentage == 4.80428220751333 - assert process_summary.climate_change_percentage == 6.37653468967796 + assert process_summary.embodied_energy_percentage == 45.0566568976384 + assert process_summary.climate_change_percentage == 60.4354407962734 transport_summary = response.transport assert transport_summary.embodied_energy.value == 0 @@ -125,9 +133,9 @@ def test_response_processing(self, mock_connection): unique_material_0 = response.material_details[0] assert unique_material_0.identity == "steel-kovar-annealed" assert unique_material_0.material_reference.record_guid == "8dc38bb5-eff9-4c60-9233-271a3c8f6270" - assert unique_material_0.embodied_energy.value == 134.482549067761 + assert unique_material_0.embodied_energy.value == 149.186596666725 assert unique_material_0.embodied_energy.unit == "MJ" - assert unique_material_0.climate_change.value == 4.3276934674222 + assert unique_material_0.climate_change.value == 5.49937851602342 assert unique_material_0.climate_change.unit == "kg" assert unique_material_0.embodied_energy_percentage == 100 assert unique_material_0.climate_change_percentage == 100 @@ -138,8 +146,8 @@ def test_response_processing(self, mock_connection): assert len(unique_material_0.contributors) == 1 # TODO this is consistent with the example response. But is the example response correct? - assert unique_material_0.contributors[0].name == "" - assert unique_material_0.contributors[0].part_number is None + assert unique_material_0.contributors[0].name == "PartTwo" + assert unique_material_0.contributors[0].part_number == "PartTwo" assert unique_material_0.contributors[0].material_mass_before_processing.value == 0.625 assert unique_material_0.contributors[0].material_mass_before_processing.unit == "kg" @@ -150,12 +158,12 @@ def test_response_processing(self, mock_connection): unique_ppmp_0 = response.primary_processes_details[0] assert unique_ppmp_0.process_name == "Metal casting" assert unique_ppmp_0.process_reference.record_guid == "baa6c95b-ff0e-4811-9120-92717ee15bda" - assert unique_ppmp_0.material_identity == "High alloy steel, Kovar, annealed" + assert unique_ppmp_0.material_identity == "steel-kovar-annealed" assert unique_ppmp_0.material_reference.record_guid == "8dc38bb5-eff9-4c60-9233-271a3c8f6270" - assert unique_ppmp_0.embodied_energy.value == 6.55438765769984 + assert unique_ppmp_0.embodied_energy.value == 120.110900684605 assert unique_ppmp_0.embodied_energy.unit == "MJ" - assert unique_ppmp_0.climate_change.value == 0.283705040845716 + assert unique_ppmp_0.climate_change.value == 8.25552087559637 assert unique_ppmp_0.climate_change.unit == "kg" assert unique_ppmp_0.embodied_energy_percentage == 100 assert unique_ppmp_0.climate_change_percentage == 100 @@ -165,12 +173,12 @@ def test_response_processing(self, mock_connection): unique_spmp_0 = response.secondary_processes_details[0] assert unique_spmp_0.process_name == "Machining, coarse" assert unique_spmp_0.process_reference.record_guid == "907bda29-e800-44f6-b7ea-4eb8e7cff375" - assert unique_spmp_0.material_identity == "High alloy steel, Kovar, annealed" + assert unique_spmp_0.material_identity == "steel-kovar-annealed" assert unique_spmp_0.material_reference.record_guid == "8dc38bb5-eff9-4c60-9233-271a3c8f6270" - assert unique_spmp_0.embodied_energy.value == 0.232599537624153 + assert unique_spmp_0.embodied_energy.value == 2.23056818480611 assert unique_spmp_0.embodied_energy.unit == "MJ" - assert unique_spmp_0.climate_change.value == 0.0110467869128737 + assert unique_spmp_0.climate_change.value == 0.144859955390553 assert unique_spmp_0.climate_change.unit == "kg" assert unique_spmp_0.embodied_energy_percentage == 100 assert unique_spmp_0.climate_change_percentage == 100 From c7da2e981d4ee60c1fe18599d0dc66c563e0d641 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Tue, 24 Oct 2023 13:22:50 +0200 Subject: [PATCH 182/275] Update dependency --- poetry.lock | 8 ++++---- pyproject.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/poetry.lock b/poetry.lock index 18d31b1c..5ad4f08d 100644 --- a/poetry.lock +++ b/poetry.lock @@ -27,7 +27,7 @@ files = [ [[package]] name = "ansys-grantami-bomanalytics-openapi" -version = "1.1.0.dev40" +version = "1.1.0.dev42" description = "Autogenerated client library for the Granta MI BoM Analytics Services." optional = false python-versions = "^3.8.0" @@ -42,8 +42,8 @@ requests = "^2.26.0" [package.source] type = "git" url = "https://github.com/ansys/grantami-bomanalytics-openapi-private.git" -reference = "d7767ee" -resolved_reference = "d7767ee37ac86ae081ef52303cc89398fbe7eb49" +reference = "fa37355" +resolved_reference = "fa37355fe6ec8ec1d3fb03dbe303f743b950a651" subdirectory = "ansys-grantami-bomanalytics-openapi" [[package]] @@ -3556,4 +3556,4 @@ examples = ["jupyterlab", "lxml", "pandas", "tabulate"] [metadata] lock-version = "2.0" python-versions = "^3.8.0" -content-hash = "bd6c6a12565e3776dd7fc3eb7624c21a70cf6ad683f696d6ec4a2b002a45019b" +content-hash = "59ea7d0b4ba2627698ea30a7e1f32d400092525f0199cb3c94c1e133dffba959" diff --git a/pyproject.toml b/pyproject.toml index 585467e3..9b8cceb0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,7 +40,7 @@ python = "^3.8.0" # Packages for core library ansys-openapi-common = "< 2.0.0" -ansys-grantami-bomanalytics-openapi = { git = 'https://github.com/ansys/grantami-bomanalytics-openapi-private.git', subdirectory = 'ansys-grantami-bomanalytics-openapi', rev = 'd7767ee' } +ansys-grantami-bomanalytics-openapi = { git = 'https://github.com/ansys/grantami-bomanalytics-openapi-private.git', subdirectory = 'ansys-grantami-bomanalytics-openapi', rev = 'fa37355' } # Packages for the examples extra jupyterlab = { version = ">=3,<5", optional = true } From 653a773a7ce568609f57cdb52dd339c442189eb0 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Tue, 24 Oct 2023 15:54:25 +0200 Subject: [PATCH 183/275] Make mixin into base class --- .../grantami/bomanalytics/_item_results.py | 20 ++++++++----------- 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/_item_results.py b/src/ansys/grantami/bomanalytics/_item_results.py index 40dc2e2b..d3177483 100644 --- a/src/ansys/grantami/bomanalytics/_item_results.py +++ b/src/ansys/grantami/bomanalytics/_item_results.py @@ -1649,9 +1649,10 @@ def name(self) -> str: return self._name -class SustainabilitySummaryMixin: - # TODO reuse existing SusResultMixin? - """Adds sustainability summary results to a class. +class SustainabilitySummaryBase: + """Base class for sustainability summary results. + + Implements common environmental indicators. Parameters ---------- @@ -1664,9 +1665,6 @@ class SustainabilitySummaryMixin: equivalents (CO2-eq.). Based on Intergovernmental Panel on Climate Change (IPCC) method. climate_change_percentage : float Represents the percentage contribution of the item to total climate change of the parent collection. - **kwargs - Contains arguments handled by other mixins or base classes, e.g. ``reference_type`` and ``reference_value`` - for ``RecordDefinition``-based objects. """ def __init__( @@ -1675,9 +1673,7 @@ def __init__( embodied_energy_percentage: float, climate_change: ValueWithUnit, climate_change_percentage: float, - **kwargs: Any, ) -> None: - super().__init__(**kwargs) self._embodied_energy = embodied_energy self._embodied_energy_percentage = embodied_energy_percentage self._climate_change = climate_change @@ -1713,7 +1709,7 @@ def climate_change_percentage(self) -> float: return self._climate_change_percentage -class SustainabilityPhaseSummaryResult(SustainabilitySummaryMixin): +class SustainabilityPhaseSummaryResult(SustainabilitySummaryBase): """ High-level sustainability summary for a phase. @@ -1745,7 +1741,7 @@ def __repr__(self) -> str: ) -class TransportSummaryResult(SustainabilitySummaryMixin): +class TransportSummaryResult(SustainabilitySummaryBase): """ Sustainability summary for a transport stage. """ @@ -1838,7 +1834,7 @@ def __repr__(self) -> str: return f"<{self.__class__.__name__}('{self.name}', mass={_mass})>" -class MaterialSummaryResult(SustainabilitySummaryMixin): +class MaterialSummaryResult(SustainabilitySummaryBase): """ Aggregated sustainability summary for a material. @@ -1902,7 +1898,7 @@ def __repr__(self) -> str: ) -class ProcessSummaryResult(SustainabilitySummaryMixin): +class ProcessSummaryResult(SustainabilitySummaryBase): """ Aggregated sustainability summary for a process, applied to a unique material. From 35e9409fd63001de7f3aeb66ff9dcd4b8a55d7f8 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Tue, 24 Oct 2023 16:52:28 +0200 Subject: [PATCH 184/275] Use merge commit ref --- poetry.lock | 6 +++--- pyproject.toml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/poetry.lock b/poetry.lock index 5ad4f08d..63f3b9fe 100644 --- a/poetry.lock +++ b/poetry.lock @@ -42,8 +42,8 @@ requests = "^2.26.0" [package.source] type = "git" url = "https://github.com/ansys/grantami-bomanalytics-openapi-private.git" -reference = "fa37355" -resolved_reference = "fa37355fe6ec8ec1d3fb03dbe303f743b950a651" +reference = "16ca550" +resolved_reference = "16ca550c58a47a757aca3eadcb8344a311716258" subdirectory = "ansys-grantami-bomanalytics-openapi" [[package]] @@ -3556,4 +3556,4 @@ examples = ["jupyterlab", "lxml", "pandas", "tabulate"] [metadata] lock-version = "2.0" python-versions = "^3.8.0" -content-hash = "59ea7d0b4ba2627698ea30a7e1f32d400092525f0199cb3c94c1e133dffba959" +content-hash = "28fe443a026a82b4a579ccc321e1e302c20171b711f4c1d1b423fb07ae49927b" diff --git a/pyproject.toml b/pyproject.toml index 9b8cceb0..b3f115ed 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,7 +40,7 @@ python = "^3.8.0" # Packages for core library ansys-openapi-common = "< 2.0.0" -ansys-grantami-bomanalytics-openapi = { git = 'https://github.com/ansys/grantami-bomanalytics-openapi-private.git', subdirectory = 'ansys-grantami-bomanalytics-openapi', rev = 'fa37355' } +ansys-grantami-bomanalytics-openapi = { git = 'https://github.com/ansys/grantami-bomanalytics-openapi-private.git', subdirectory = 'ansys-grantami-bomanalytics-openapi', rev = '16ca550' } # Packages for the examples extra jupyterlab = { version = ">=3,<5", optional = true } From a9f5a5ab153b417b4153b9fb2901b9ba7dbf8878 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Wed, 25 Oct 2023 11:54:07 +0200 Subject: [PATCH 185/275] Warn on multiple root parts in sust. query result --- .../grantami/bomanalytics/_query_results.py | 6 +++++ .../test_sustainability.py | 26 +++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/src/ansys/grantami/bomanalytics/_query_results.py b/src/ansys/grantami/bomanalytics/_query_results.py index 936531af..fe4e94d1 100644 --- a/src/ansys/grantami/bomanalytics/_query_results.py +++ b/src/ansys/grantami/bomanalytics/_query_results.py @@ -6,6 +6,7 @@ from abc import ABC from collections import defaultdict, namedtuple from typing import Any, Callable, Dict, List, Type, Union +import warnings from ansys.grantami.bomanalytics_openapi import models # type: ignore[import] @@ -743,6 +744,11 @@ def __init__( ) -> None: super().__init__(messages) self._response = results[0] + if len(self._response.parts) > 1: + warnings.warn( + f"BomSustainabilityQuery only supports a single root part (found {len(self._response.parts)}). Extra " + f"parts do not include sustainability results." + ) self._parts: List[PartWithSustainabilityResult] = [ ItemResultFactory.create_part_with_sustainability(result_with_sustainability=part) for part in self._response.parts diff --git a/tests/test_mocked_responses/test_sustainability.py b/tests/test_mocked_responses/test_sustainability.py index 95ff6348..7f64f0e0 100644 --- a/tests/test_mocked_responses/test_sustainability.py +++ b/tests/test_mocked_responses/test_sustainability.py @@ -1,6 +1,8 @@ import json from ansys.grantami.bomanalytics_openapi.models import ( + CommonSustainabilityPartWithSustainability, + CommonValueWithUnit, GetSustainabilityForBom2301Response, GetSustainabilitySummaryForBom2301Response, ) @@ -81,6 +83,30 @@ def test_response_processing(self, mock_connection): assert process.climate_change.value == pytest.approx(0.0579, 0.01) assert process.record_history_guid == "d986c90a-2835-45f3-8b69-d6d662dcf53a" + def test_two_root_parts_emits_warning(self, mock_connection): + part1 = CommonSustainabilityPartWithSustainability( + input_part_number="PartOne", + reference_type="MiRecordGuid", + reference_value="GUID", + parts=[], + specifications=[], + materials=[], + processes=[], + embodied_energy=CommonValueWithUnit(value=1.0, unit="UNIT"), + climate_change=CommonValueWithUnit(value=1.0, unit="UNIT"), + reported_mass=CommonValueWithUnit(value=1.0, unit="UNIT"), + ) + part2 = CommonSustainabilityPartWithSustainability(**part1.to_dict()) + part2.input_part_number = "PartTwo" + two_parts_response = GetSustainabilityForBom2301Response( + log_messages=[], + parts=[part1, part2], + transport_stages=[], + ) + mock_response = json.dumps(mock_connection.sanitize_for_serialization(two_parts_response)) + with pytest.warns(UserWarning, match="single root part"): + response = self.get_mocked_response(mock_connection, response=mock_response) + class TestBomSustainabilitySummary(BaseMockTester): # Use sample BoM to avoid validation error From 83ef0b82c16e0e5c2b3400e7d743c0a613190614 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Wed, 25 Oct 2023 12:18:39 +0200 Subject: [PATCH 186/275] Update warning --- src/ansys/grantami/bomanalytics/_query_results.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/_query_results.py b/src/ansys/grantami/bomanalytics/_query_results.py index fe4e94d1..71529190 100644 --- a/src/ansys/grantami/bomanalytics/_query_results.py +++ b/src/ansys/grantami/bomanalytics/_query_results.py @@ -746,8 +746,8 @@ def __init__( self._response = results[0] if len(self._response.parts) > 1: warnings.warn( - f"BomSustainabilityQuery only supports a single root part (found {len(self._response.parts)}). Extra " - f"parts do not include sustainability results." + f"BomSustainabilityQuery only supports a single root part (found {len(self._response.parts)}). " + f"Additional root parts do not include sustainability results." ) self._parts: List[PartWithSustainabilityResult] = [ ItemResultFactory.create_part_with_sustainability(result_with_sustainability=part) From 71a3c90c27587d227cb8cfdc5a09c03d449c0995 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Wed, 25 Oct 2023 12:01:36 +0200 Subject: [PATCH 187/275] Add part and transport references to docs --- doc/source/api/sustainability/common.rst | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/doc/source/api/sustainability/common.rst b/doc/source/api/sustainability/common.rst index 4acc2a89..64bb588c 100644 --- a/doc/source/api/sustainability/common.rst +++ b/doc/source/api/sustainability/common.rst @@ -12,6 +12,14 @@ Value with unit Record references ~~~~~~~~~~~~~~~~~ +See :ref:`ref_grantami_bomanalytics_record_identification` for more information about populated properties on record +reference objects. + +.. autoclass:: ansys.grantami.bomanalytics._item_definitions.PartReference + :members: + :inherited-members: + :member-order: by_mro_by_source + .. autoclass:: ansys.grantami.bomanalytics._item_definitions.MaterialReference :members: :inherited-members: @@ -21,3 +29,8 @@ Record references :members: :inherited-members: :member-order: by_mro_by_source + +.. autoclass:: ansys.grantami.bomanalytics._item_definitions.TransportReference + :members: + :inherited-members: + :member-order: by_mro_by_source From 2145ca55d3942342ab749169d6b3646be318b0ee Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Wed, 25 Oct 2023 13:50:46 +0200 Subject: [PATCH 188/275] Update docs homepage --- doc/source/index/intro.rst | 15 +++++++++++---- doc/source/index/quick_code.rst | 2 +- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/doc/source/index/intro.rst b/doc/source/index/intro.rst index 4e88227c..79fcb154 100644 --- a/doc/source/index/intro.rst +++ b/doc/source/index/intro.rst @@ -20,20 +20,27 @@ The expected use cases for this package are as follows: - Allowing compliance to be determined for BoMs (Bills of Materials) stored in third-party systems, such as PLM or ERP systems. +Starting in version 2024R1, Granta MI provides a method for managing +sustainability data as part of the Restricted Substances and Sustainability +solution. The ``grantami-bomanalytics`` package now also exposes an API +allowing to evaluate the sustainability performance of BoMs (Bills of Materials). + Background ---------- The Granta MI Restricted Substances solution includes a REST API for evaluating compliance of products, assemblies, specifications, and -materials against legislations. This package automatically abstracts -generated code into an easy-to-use client library. +materials against legislations. +The Granta MI Sustainability solution includes a REST API for evaluating the environmental +performance of products, assemblies, materials, manufacturing and transports. +This package automatically abstracts generated code into an easy-to-use client library. Dependencies ------------ To use the ``grantami-bomanalytics`` package, you must have access -to a Granta MI server that includes MI Restricted Substances Reports -2022 R1 or later. This package also has the following Python package +to a Granta MI server that includes MI Restricted Substances and Sustainability Reports +2024 R1 or later. This package also has the following Python package dependencies: - ``ansys-grantami-bomanalytics-openapi`` package diff --git a/doc/source/index/quick_code.rst b/doc/source/index/quick_code.rst index e2d53951..b56ed3b9 100644 --- a/doc/source/index/quick_code.rst +++ b/doc/source/index/quick_code.rst @@ -28,7 +28,7 @@ The sequence of events is as follows: #. Connect to Granta MI. #. Create the appropriate query, choosing between: - - Query type: Compliance or impacted substances + - Query type: Compliance, impacted substances, or sustainability - Reference type: Materials, parts, specifications, substances, or an XML BoM #. Specify the legislations and records of interest. From ab7cf9b2fa3d10fbe279472cd871df8dcb67538c Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Wed, 25 Oct 2023 13:56:24 +0200 Subject: [PATCH 189/275] Update GitHub org name --- README.rst | 4 ++-- doc/source/conf.py | 2 +- doc/source/contributing.rst | 4 ++-- doc/source/getting_started/index.rst | 6 +++--- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/README.rst b/README.rst index 3dc3b2ad..9d781761 100644 --- a/README.rst +++ b/README.rst @@ -3,7 +3,7 @@ ansys-grantami-bomanalytics Project Overview ---------------- -PyGranta BoM Analytics is part of the larger `PyAnsys `_ +PyGranta BoM Analytics is part of the larger `PyAnsys `_ effort to facilitate the use of Ansys technologies directly from Python. The MI Restricted Substances and MI Sustainability solutions for Granta MI include REST APIs for: @@ -27,7 +27,7 @@ Alternatively, clone and install this package with this code: .. code:: - git clone https://github.com/pyansys/grantami-bomanalytics + git clone https://github.com/ansys/grantami-bomanalytics cd grantami-bomanalytics pip install . diff --git a/doc/source/conf.py b/doc/source/conf.py index aa580c25..d70dfd16 100755 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -145,7 +145,7 @@ html_favicon = ansys_favicon html_logo = pyansys_logo_black html_theme_options = { - "github_url": "https://github.com/pyansys/grantami-bomanalytics", + "github_url": "https://github.com/ansys/grantami-bomanalytics", "additional_breadcrumbs": [ ("PyAnsys Documentation", "https://docs.pyansys.com/"), ("PyGranta", "https://grantami.docs.pyansys.com/"), diff --git a/doc/source/contributing.rst b/doc/source/contributing.rst index 0ae6a27a..1c9ce325 100644 --- a/doc/source/contributing.rst +++ b/doc/source/contributing.rst @@ -23,14 +23,14 @@ dependencies to run the tests. .. code:: - git clone https://github.com/pyansys/grantami-bomanalytics + git clone https://github.com/ansys/grantami-bomanalytics cd grantami-bomanalytics poetry install Post issues ----------- -Use the `Issues `_ page for +Use the `Issues `_ page for this repository to submit questions, report bugs, and request new features. To reach the PyAnsys support team, email `pyansys.support@ansys.com `_. diff --git a/doc/source/getting_started/index.rst b/doc/source/getting_started/index.rst index ab8cba78..63a6be93 100644 --- a/doc/source/getting_started/index.rst +++ b/doc/source/getting_started/index.rst @@ -19,19 +19,19 @@ this code: pip install ansys-grantami-bomanalytics -Alternatively, to install the latest from `ansys-grantami-bomanalytics GitHub `_, +Alternatively, to install the latest from `ansys-grantami-bomanalytics GitHub `_, use this code: .. code:: - pip install git:https://github.com/pyansys/grantami-bomanalytics.git + pip install git:https://github.com/ansys/grantami-bomanalytics.git To install a local *development* version with Git and Poetry, use this code: .. code:: - git clone https://github.com/pyansys/grantami-bomanalytics + git clone https://github.com/ansys/grantami-bomanalytics cd grantami-bomanalytics poetry install From 26cfd36adda40f4f39701c5956a1c6d7ba227b12 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Wed, 25 Oct 2023 13:57:58 +0200 Subject: [PATCH 190/275] Update MI version requirements --- doc/source/getting_started/index.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/source/getting_started/index.rst b/doc/source/getting_started/index.rst index 63a6be93..f8e88a84 100644 --- a/doc/source/getting_started/index.rst +++ b/doc/source/getting_started/index.rst @@ -3,7 +3,7 @@ Getting started --------------- To use the ``ansys.grantami.bomanalytics`` package, you must have access to a -Granta MI server that includes MI Restricted Substances Reports 2022 R1 +Granta MI server that includes MI Restricted Substances and Sustainability Reports 2024 R1 or later. The ``ansys.grantami.bomanalytics`` package currently supports Python 3.8 @@ -41,9 +41,9 @@ with your changes reflected in your Python setup after restarting the Python ker Ansys software requirements ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -For the latest features, you must have a working installation of Ansys Granta MI 2022 R1 -or later with read access, along with an 2022 R1 or later installation of the MI Restricted -Substances Reports Bundle. +You must have a working installation of Ansys Granta MI 2024 R1 +or later with read access, along with an 2024 R1 or later installation of the MI Restricted +Substances and Sustainability Reports Bundle. Verify your installation ~~~~~~~~~~~~~~~~~~~~~~~~ From 5592a827ded474523613ef57afff240d480d71ce Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Wed, 25 Oct 2023 14:12:20 +0200 Subject: [PATCH 191/275] Add note about product licensing --- doc/source/getting_started/index.rst | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/source/getting_started/index.rst b/doc/source/getting_started/index.rst index f8e88a84..3264afce 100644 --- a/doc/source/getting_started/index.rst +++ b/doc/source/getting_started/index.rst @@ -45,6 +45,11 @@ You must have a working installation of Ansys Granta MI 2024 R1 or later with read access, along with an 2024 R1 or later installation of the MI Restricted Substances and Sustainability Reports Bundle. +Licensing +~~~~~~~~~ +``MI Restricted Substances`` and ``MI Sustainability`` are licensed separately. +Endpoints available to end users depend on the licenses purchased by their organization. + Verify your installation ~~~~~~~~~~~~~~~~~~~~~~~~ Check that you can start the BomServices Client from Python by running this code: From 61b0a6fa12737aa7c6dff1ac510deb80ea6350b7 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 26 Oct 2023 11:07:53 +0200 Subject: [PATCH 192/275] Update Process properties names and docs --- .../bomanalytics/bom_types/_bom_types.py | 53 ++++++++++--------- 1 file changed, 27 insertions(+), 26 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py b/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py index 59c4d42e..1d987e10 100644 --- a/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py +++ b/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py @@ -1849,20 +1849,20 @@ class Process(CommonIdentifiersMixin, InternalIdentifierMixin, BaseType): mi_process_reference: MIRecordReference Reference identifying a record in the MI Database containing information about this process. dimension_type: DimensionType - Object defining the dimension affected by the process, for example area for coatings, or volume for - rough machining operations. - percentage_of_part_affected: Optional[float] - Fraction of the object affected by the process, with basis specified by ``dimension_type``. - quantity_affected: Optional[UnittedValue] - Number of items affected by the process, if applicable. For example 17 fasteners are galvanized out of 24 - total. + Object defining the dimension affected by the process, for example area for coatings, or mass removed for + machining operations. + percentage: Optional[float] + Fraction of the object affected by the process, with basis specified by ``dimension_type``. Only supported for + dimension types ``Mass`` and ``MassRemoved``. + quantity: Optional[UnittedValue] + A quantification of the process according to its dimension type. """ - _simple_values = [("percentage_of_part_affected", "Percentage")] + _simple_values = [("percentage", "Percentage")] _props = [ ("MIRecordReference", "mi_process_reference", "MIProcessReference"), - ("UnittedValue", "quantity_affected", "Quantity"), + ("UnittedValue", "quantity", "Quantity"), ] def __init__( @@ -1870,15 +1870,15 @@ def __init__( *, mi_process_reference: MIRecordReference, dimension_type: DimensionType, - percentage_of_part_affected: Optional[float] = None, - quantity_affected: Optional[UnittedValue] = None, + percentage: Optional[float] = None, + quantity: Optional[UnittedValue] = None, **kwargs: Any, ) -> None: super().__init__(**kwargs) self.mi_process_reference = mi_process_reference self.dimension_type = dimension_type - self.percentage_of_part_affected = percentage_of_part_affected - self.quantity_affected = quantity_affected + self.percentage = percentage + self.quantity = quantity @classmethod def _process_custom_fields(cls, obj: Dict, bom_reader: BoMReader) -> Dict[str, Any]: @@ -1912,7 +1912,7 @@ def mi_process_reference(self, value: MIRecordReference) -> None: @property def dimension_type(self) -> DimensionType: """ - Object defining the dimension affected by the process, for example area for coatings, or volume for rough + Object defining the dimension affected by the process, for example ``Area`` for coatings, or ``MassRemoved`` for machining operations. Returns @@ -1926,34 +1926,35 @@ def dimension_type(self, value: DimensionType) -> None: self._dimension_type = value @property - def percentage_of_part_affected(self) -> Optional[float]: + def percentage(self) -> Optional[float]: """ - Fraction of the object affected by the process, with basis specified by ``dimension_type``. + Fraction of the object affected by the process, with basis specified by ``dimension_type``. Only supported for + dimension types ``Mass`` and ``MassRemoved``. Returns ------- Optional[float] """ - return self._percentage_of_part_affected + return self._percentage - @percentage_of_part_affected.setter - def percentage_of_part_affected(self, value: Optional[float]) -> None: - self._percentage_of_part_affected = value + @percentage.setter + def percentage(self, value: Optional[float]) -> None: + self._percentage = value @property - def quantity_affected(self) -> Optional[UnittedValue]: + def quantity(self) -> Optional[UnittedValue]: """ - Number of items affected by the process, if applicable. For example 17 fasteners are galvanized out of 24 total. + A quantification of the process according to its dimension type. Returns ------- Optional[UnittedValue] """ - return self._quantity_affected + return self._quantity - @quantity_affected.setter - def quantity_affected(self, value: Optional[UnittedValue]) -> None: - self._quantity_affected = value + @quantity.setter + def quantity(self, value: Optional[UnittedValue]) -> None: + self._quantity = value class Material(CommonIdentifiersMixin, InternalIdentifierMixin, BaseType): From 4bcacbf059100b01ea740196e54c537e0ad77243 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 26 Oct 2023 11:29:37 +0200 Subject: [PATCH 193/275] Update BoM builder example --- examples/3_Advanced_Topics/3-5_Using_the_BoM_builder.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/3_Advanced_Topics/3-5_Using_the_BoM_builder.py b/examples/3_Advanced_Topics/3-5_Using_the_BoM_builder.py index 66dd9cf5..5fcce946 100644 --- a/examples/3_Advanced_Topics/3-5_Using_the_BoM_builder.py +++ b/examples/3_Advanced_Topics/3-5_Using_the_BoM_builder.py @@ -262,7 +262,7 @@ def make_record_reference(item, db_key=DB_KEY): mi_process_reference=make_record_reference(item), identity=item["name"], dimension_type=unit_to_dimension_type[item["quantity_unit"]], - quantity_affected=bom_types.UnittedValue(value=item["quantity"], unit=item["quantity_unit"]), + quantity=bom_types.UnittedValue(value=item["quantity"], unit=item["quantity_unit"]), ) components[parent_part_id].processes.append(process) # - @@ -291,7 +291,7 @@ def make_record_reference(item, db_key=DB_KEY): mi_process_reference=make_record_reference(item), identity=item["name"], dimension_type=bom_types.DimensionType.Mass, - percentage_of_part_affected=100.0 + percentage=100.0 ) components[parent_part_id].materials[0].processes.append(process) @@ -302,7 +302,7 @@ def make_record_reference(item, db_key=DB_KEY): mi_process_reference=make_record_reference(item), identity=item["name"], dimension_type=bom_types.DimensionType.MassRemoved, - quantity_affected=bom_types.UnittedValue( + quantity=bom_types.UnittedValue( value=item["mass_removed_in_kg"], unit="kg", ) From 2a0c72445d5b54dc4b2e1b951addfded9ad04217 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 26 Oct 2023 12:32:07 +0200 Subject: [PATCH 194/275] Update example bom --- .../supporting-files/bom-complex.xml | 416 +++++++++--------- 1 file changed, 204 insertions(+), 212 deletions(-) diff --git a/examples/3_Advanced_Topics/supporting-files/bom-complex.xml b/examples/3_Advanced_Topics/supporting-files/bom-complex.xml index 07fa78e9..f4992ed9 100644 --- a/examples/3_Advanced_Topics/supporting-files/bom-complex.xml +++ b/examples/3_Advanced_Topics/supporting-files/bom-complex.xml @@ -1,218 +1,210 @@ - - - - - 1 - Part 1 - 1635969933169|97 - - - 1 - Child 1 - - 1635969933169|98 - - - 1 - 10.2 - - MI_Restricted_Substances - d00873c5-9544-48c5-8de2-2e2b00893db4 - - Fire Distinguisher - - 1635969933169|21 - - - - MI_Restricted_Substances - 9b5b2172-da97-4ffa-9bd4-e57309be5641 - - AMS2420,Class1 - AMS®2420™, Class 1 - 1635969933169|25 - - - - - 1 - - MI_Restricted_Substances - 90ed0f8c-1fb0-47bc-89e0-0c2380d7976c - - mid_frame - mid_frame - 1635969933169|14 - - - 1 - 13.7651193872285 - - MI_Restricted_Substances - ad3cae1e-6ad6-4800-96bc-bec6cc0e4e59 - - mid_frame: Body 1 - mid_frame: Body 1 - 1635969933169|15 - - - - MI_Restricted_Substances - 44b976f9-1c1b-4187-a9dc-9ec88bf40c38 - - MIL-A-8625,TypeIII,Class1 - MIL-A-8625, Type III, Class 1 (Hardcoat sulfuric) - 1635969933169|16 - 238064.510108457 - - - - - 100 - - MI_Restricted_Substances - 5a4d882d-789b-4c94-8af4-fd3527845849 - - aluminum-2024-t6 - Aluminum, 2024, T6 - 1635969933169|17 - - + + + + 1.0 + Part 1 + 1635969933169|97 + + + 1.0 + Child 1 + 1635969933169|98 + + + 1.0 + 10.2 + + MI_Restricted_Substances + d00873c5-9544-48c5-8de2-2e2b00893db4 + + Fire Distinguisher + 1635969933169|21 + + + + MI_Restricted_Substances + 9b5b2172-da97-4ffa-9bd4-e57309be5641 + + AMS2420,Class1 + AMS®2420™, Class 1 + 1635969933169|25 + + + + + 1.0 + + MI_Restricted_Substances + 90ed0f8c-1fb0-47bc-89e0-0c2380d7976c + + mid_frame + mid_frame + 1635969933169|14 + + + 1.0 + 13.7651193872285 + + MI_Restricted_Substances + ad3cae1e-6ad6-4800-96bc-bec6cc0e4e59 + + mid_frame: Body 1 + mid_frame: Body 1 + 1635969933169|15 + + + + MI_Restricted_Substances + 44b976f9-1c1b-4187-a9dc-9ec88bf40c38 + + MIL-A-8625,TypeIII,Class1 + MIL-A-8625, Type III, Class 1 (Hardcoat sulfuric) + 1635969933169|16 + 238064.510108457 + + + + + 100.0 + + MI_Restricted_Substances + 5a4d882d-789b-4c94-8af4-fd3527845849 + + aluminum-2024-t6 + Aluminum, 2024, T6 + 1635969933169|17 + + + + + 1.0 + 0.0788292499952808 + + MI_Restricted_Substances + 2c50aee4-7a5b-4d49-b27d-a7bc184167fb + + mid_frame: Body 2 + mid_frame: Body 2 + 1635969933169|18 + + + + MI_Restricted_Substances + 44b976f9-1c1b-4187-a9dc-9ec88bf40c38 + + MIL-A-8625,TypeIII,Class1 + MIL-A-8625, Type III, Class 1 (Hardcoat sulfuric) + 1635969933169|19 + 36908.3727431303 + + + + + 100.0 + + MI_Restricted_Substances + 5a4d882d-789b-4c94-8af4-fd3527845849 + + aluminum-2024-t6 + Aluminum, 2024, T6 + 1635969933169|20 + + + + + + + 1.0 + Substance Component + 1635969933169|31 + + + + MI_Restricted_Substances + b3ed7838-15c5-4bb2-874b-a112d2201914 + + 143-50-0 + Kepone [143-50-0] + 1635969933169|29 + + + + - - 1 - 0.0788292499952808 - - MI_Restricted_Substances - 2c50aee4-7a5b-4d49-b27d-a7bc184167fb - - mid_frame: Body 2 - mid_frame: Body 2 - 1635969933169|18 - - - - MI_Restricted_Substances - 44b976f9-1c1b-4187-a9dc-9ec88bf40c38 - - MIL-A-8625,TypeIII,Class1 - MIL-A-8625, Type III, Class 1 (Hardcoat sulfuric) - 1635969933169|19 - 36908.3727431303 - - - - - 100 - - MI_Restricted_Substances - 5a4d882d-789b-4c94-8af4-fd3527845849 - - aluminum-2024-t6 - Aluminum, 2024, T6 - 1635969933169|20 - - + + 1.0 + Child 2 + 1635969933169|101 + + + 1.0 + Material Component + 1635969933169|131 + + + + MI_Restricted_Substances + 2ce26bf2-ea34-4e0c-af77-a8424252a079 + + mmc-aluminum-polyethylenesandwich + Aluminum-polyethylene sandwich + 1635969933169|132 + + + + MI_Restricted_Substances + 40cc6742-ca1f-4e00-a39a-d4cb01842658 + + plastic-pe-hd-20-30longglassfiber + PE-HD (20-30% long glass fiber) + 1635969933169|142 + + + + - - - - 1 - Substance Component - - 1635969933169|31 - - - - MI_Restricted_Substances - b3ed7838-15c5-4bb2-874b-a112d2201914 - - 143-50-0 - Kepone [143-50-0] - 1635969933169|29 - - - - + - - 1 - Child 2 - - 1635969933169|101 - - - 1 - Material Component - - 1635969933169|131 - - - - MI_Restricted_Substances - 2ce26bf2-ea34-4e0c-af77-a8424252a079 - - mmc-aluminum-polyethylenesandwich - Aluminum-polyethylene sandwich - 1635969933169|132 - - - - MI_Restricted_Substances - 40cc6742-ca1f-4e00-a39a-d4cb01842658 - - plastic-pe-hd-20-30longglassfiber - PE-HD (20-30% long glass fiber) - 1635969933169|142 + + 1.0 + Part 2 + 1635969933169|181 + + + + MI_Restricted_Substances + ad7a7965-8f48-4250-9e09-f1062b50cf9e + + AMS2404,Class1 + AMS®2404™, Class 1 + 1635969933169|185 + + + + + + MI_Restricted_Substances + 1b7932f7-c3c2-4228-8b51-f7fabee7de4e + + plastic-cap-13-18plasticizer + CAP (13-18% plasticizer) + 1635969933169|183 - - - - - - - - 1 - Part 2 - - 1635969933169|181 - - - - MI_Restricted_Substances - ad7a7965-8f48-4250-9e09-f1062b50cf9e - - AMS2404,Class1 - AMS®2404™, Class 1 - 1635969933169|185 - - - - - - MI_Restricted_Substances - 1b7932f7-c3c2-4228-8b51-f7fabee7de4e - - plastic-cap-13-18plasticizer - CAP (13-18% plasticizer) - 1635969933169|183 - - - - - - MI_Restricted_Substances - 5286d5c7-393f-4ea4-876e-1f716b555dac - - 68476-30-2 - Fuel oil, No 2 [68476-30-2] - 1635969933169|187 - - + + + + + MI_Restricted_Substances + 5286d5c7-393f-4ea4-876e-1f716b555dac + + 68476-30-2 + Fuel oil, No 2 [68476-30-2] + 1635969933169|187 + +
-
- - Complex Bom - - +
+ + Complex Bom +
\ No newline at end of file From 27af5cf03af284e8dca6a55e65818ec1e5fbab69 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 26 Oct 2023 12:37:42 +0200 Subject: [PATCH 195/275] Remove duplicated BoM --- tests/inputs/__init__.py | 7 +- tests/inputs/bom-complex.xml | 210 ----------------------------------- 2 files changed, 3 insertions(+), 214 deletions(-) delete mode 100644 tests/inputs/bom-complex.xml diff --git a/tests/inputs/__init__.py b/tests/inputs/__init__.py index 05ce7f60..1c95f577 100644 --- a/tests/inputs/__init__.py +++ b/tests/inputs/__init__.py @@ -2,19 +2,18 @@ from .examples import examples_as_dicts, examples_as_strings +repository_root = pathlib.Path(__file__).parents[2] + _bom_path = pathlib.Path(__file__).parent / "bom.xml" with open(_bom_path, "r") as f: sample_bom_1711 = f.read() -_complex_bom_path = pathlib.Path(__file__).parent / "bom-complex.xml" +_complex_bom_path = repository_root / "examples" / "3_Advanced_Topics" / "supporting-files" / "bom-complex.xml" with open(_complex_bom_path, "r") as f: sample_bom_complex = f.read() sample_bom_custom_db = sample_bom_complex.replace("MI_Restricted_Substances", "MI_Restricted_Substances_Custom_Tables") - -repository_root = pathlib.Path(__file__).parents[2] - _bom_2301_path = repository_root / "examples" / "4_Sustainability" / "supporting-files" / "bom-2301-assembly.xml" with open(_bom_2301_path, "r") as f: sample_bom_2301 = f.read() diff --git a/tests/inputs/bom-complex.xml b/tests/inputs/bom-complex.xml deleted file mode 100644 index f4992ed9..00000000 --- a/tests/inputs/bom-complex.xml +++ /dev/null @@ -1,210 +0,0 @@ - - - - 1.0 - Part 1 - 1635969933169|97 - - - 1.0 - Child 1 - 1635969933169|98 - - - 1.0 - 10.2 - - MI_Restricted_Substances - d00873c5-9544-48c5-8de2-2e2b00893db4 - - Fire Distinguisher - 1635969933169|21 - - - - MI_Restricted_Substances - 9b5b2172-da97-4ffa-9bd4-e57309be5641 - - AMS2420,Class1 - AMS®2420™, Class 1 - 1635969933169|25 - - - - - 1.0 - - MI_Restricted_Substances - 90ed0f8c-1fb0-47bc-89e0-0c2380d7976c - - mid_frame - mid_frame - 1635969933169|14 - - - 1.0 - 13.7651193872285 - - MI_Restricted_Substances - ad3cae1e-6ad6-4800-96bc-bec6cc0e4e59 - - mid_frame: Body 1 - mid_frame: Body 1 - 1635969933169|15 - - - - MI_Restricted_Substances - 44b976f9-1c1b-4187-a9dc-9ec88bf40c38 - - MIL-A-8625,TypeIII,Class1 - MIL-A-8625, Type III, Class 1 (Hardcoat sulfuric) - 1635969933169|16 - 238064.510108457 - - - - - 100.0 - - MI_Restricted_Substances - 5a4d882d-789b-4c94-8af4-fd3527845849 - - aluminum-2024-t6 - Aluminum, 2024, T6 - 1635969933169|17 - - - - - 1.0 - 0.0788292499952808 - - MI_Restricted_Substances - 2c50aee4-7a5b-4d49-b27d-a7bc184167fb - - mid_frame: Body 2 - mid_frame: Body 2 - 1635969933169|18 - - - - MI_Restricted_Substances - 44b976f9-1c1b-4187-a9dc-9ec88bf40c38 - - MIL-A-8625,TypeIII,Class1 - MIL-A-8625, Type III, Class 1 (Hardcoat sulfuric) - 1635969933169|19 - 36908.3727431303 - - - - - 100.0 - - MI_Restricted_Substances - 5a4d882d-789b-4c94-8af4-fd3527845849 - - aluminum-2024-t6 - Aluminum, 2024, T6 - 1635969933169|20 - - - - - - - 1.0 - Substance Component - 1635969933169|31 - - - - MI_Restricted_Substances - b3ed7838-15c5-4bb2-874b-a112d2201914 - - 143-50-0 - Kepone [143-50-0] - 1635969933169|29 - - - - - - - 1.0 - Child 2 - 1635969933169|101 - - - 1.0 - Material Component - 1635969933169|131 - - - - MI_Restricted_Substances - 2ce26bf2-ea34-4e0c-af77-a8424252a079 - - mmc-aluminum-polyethylenesandwich - Aluminum-polyethylene sandwich - 1635969933169|132 - - - - MI_Restricted_Substances - 40cc6742-ca1f-4e00-a39a-d4cb01842658 - - plastic-pe-hd-20-30longglassfiber - PE-HD (20-30% long glass fiber) - 1635969933169|142 - - - - - - - - - 1.0 - Part 2 - 1635969933169|181 - - - - MI_Restricted_Substances - ad7a7965-8f48-4250-9e09-f1062b50cf9e - - AMS2404,Class1 - AMS®2404™, Class 1 - 1635969933169|185 - - - - - - MI_Restricted_Substances - 1b7932f7-c3c2-4228-8b51-f7fabee7de4e - - plastic-cap-13-18plasticizer - CAP (13-18% plasticizer) - 1635969933169|183 - - - - - - MI_Restricted_Substances - 5286d5c7-393f-4ea4-876e-1f716b555dac - - 68476-30-2 - Fuel oil, No 2 [68476-30-2] - 1635969933169|187 - - - - - - Complex Bom - - \ No newline at end of file From a2176f106964cc5ab72be060acccc2a7dc3fde1b Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 26 Oct 2023 12:42:53 +0200 Subject: [PATCH 196/275] Rename test BoMs --- tests/inputs/__init__.py | 8 +++++--- tests/test_argument_managers.py | 18 ++++++++++-------- tests/test_integration_tests.py | 13 +++++++++---- tests/test_mocked_responses/test_bom.py | 6 +++--- .../test_sustainability.py | 6 +++--- tests/test_query_builders/test_bom.py | 6 +++--- 6 files changed, 33 insertions(+), 24 deletions(-) diff --git a/tests/inputs/__init__.py b/tests/inputs/__init__.py index 1c95f577..8ce65880 100644 --- a/tests/inputs/__init__.py +++ b/tests/inputs/__init__.py @@ -10,10 +10,12 @@ _complex_bom_path = repository_root / "examples" / "3_Advanced_Topics" / "supporting-files" / "bom-complex.xml" with open(_complex_bom_path, "r") as f: - sample_bom_complex = f.read() + sample_compliance_bom_1711 = f.read() -sample_bom_custom_db = sample_bom_complex.replace("MI_Restricted_Substances", "MI_Restricted_Substances_Custom_Tables") +sample_bom_custom_db = sample_compliance_bom_1711.replace( + "MI_Restricted_Substances", "MI_Restricted_Substances_Custom_Tables" +) _bom_2301_path = repository_root / "examples" / "4_Sustainability" / "supporting-files" / "bom-2301-assembly.xml" with open(_bom_2301_path, "r") as f: - sample_bom_2301 = f.read() + sample_sustainability_bom_2301 = f.read() diff --git a/tests/test_argument_managers.py b/tests/test_argument_managers.py index 833ee8a7..f643e120 100644 --- a/tests/test_argument_managers.py +++ b/tests/test_argument_managers.py @@ -5,7 +5,7 @@ from ansys.grantami.bomanalytics import queries -from .inputs import sample_bom_1711, sample_bom_2301, sample_bom_complex +from .inputs import sample_bom_1711, sample_compliance_bom_1711, sample_sustainability_bom_2301 class MockRecordDefinition: @@ -100,7 +100,7 @@ def test_uninitialized_configuration(self, bom_version): ["bom", "bom_version"], [ (sample_bom_1711, "bom_xml1711"), - (sample_bom_2301, "bom_xml2301"), + (sample_sustainability_bom_2301, "bom_xml2301"), ], ) def test_add_bom(self, bom, bom_version): @@ -115,9 +115,9 @@ class TestBomNameSpaceParsing: @pytest.mark.parametrize( ["bom", "bom_format"], [ - (sample_bom_2301, queries._BomFormat.bom_xml2301), + (sample_sustainability_bom_2301, queries._BomFormat.bom_xml2301), (sample_bom_1711, queries._BomFormat.bom_xml1711), - (sample_bom_complex, queries._BomFormat.bom_xml1711), + (sample_compliance_bom_1711, queries._BomFormat.bom_xml1711), ], ) def test_valid_namespace_parsing(self, bom, bom_format): @@ -137,7 +137,9 @@ def test_xml_but_not_a_bom(self): queries._BomQueryDataManager(all_bom_formats).bom = bom def test_xml_bom_but_unknown_namespace(self): - bom = sample_bom_2301.replace("http://www.grantadesign.com/23/01/BillOfMaterialsEco", "UnknownNamespace") + bom = sample_sustainability_bom_2301.replace( + "http://www.grantadesign.com/23/01/BillOfMaterialsEco", "UnknownNamespace" + ) with pytest.raises( ValueError, match="Invalid input BoM. Ensure the document is compliant with the expected XML schema" ): @@ -148,7 +150,7 @@ def test_xml_bom_but_not_version_supported_by_query(self): "bom_xml2301 (http://www.grantadesign.com/23/01/BillOfMaterialsEco) is not supported by this query." ) with pytest.raises(ValueError, match=expected_error): - queries._BomQueryDataManager([queries._BomFormat.bom_xml1711]).bom = sample_bom_2301 + queries._BomQueryDataManager([queries._BomFormat.bom_xml1711]).bom = sample_sustainability_bom_2301 def test_add_boms_sequentially(): @@ -159,9 +161,9 @@ def test_add_boms_sequentially(): assert bom_manager.item_type_name == "bom_xml1711" assert bom_manager._item_definitions[0] == sample_bom_1711 - bom_manager.bom = sample_bom_2301 + bom_manager.bom = sample_sustainability_bom_2301 assert bom_manager.item_type_name == "bom_xml2301" - assert bom_manager._item_definitions[0] == sample_bom_2301 + assert bom_manager._item_definitions[0] == sample_sustainability_bom_2301 class TestBomFormatEnum: diff --git a/tests/test_integration_tests.py b/tests/test_integration_tests.py index 5f67d9b9..ba66a06a 100644 --- a/tests/test_integration_tests.py +++ b/tests/test_integration_tests.py @@ -3,7 +3,12 @@ from ansys.grantami.bomanalytics import GrantaMIException, queries from .common import INDICATORS, LEGISLATIONS -from .inputs import sample_bom_1711, sample_bom_2301, sample_bom_complex, sample_bom_custom_db +from .inputs import ( + sample_bom_1711, + sample_bom_custom_db, + sample_compliance_bom_1711, + sample_sustainability_bom_2301, +) pytestmark = pytest.mark.integration @@ -92,7 +97,7 @@ def bom(self, connection_with_db_variants): if connection_with_db_variants._db_key == "MI_Restricted_Substances_Custom_Tables": return sample_bom_custom_db else: - return sample_bom_complex + return sample_compliance_bom_1711 @pytest.fixture def bom2301(self): @@ -239,7 +244,7 @@ def _check_percentages_add_up(self, items): def test_sustainability_summary_query(self, connection): query = queries.BomSustainabilitySummaryQuery() - query.with_bom(sample_bom_2301) + query.with_bom(sample_sustainability_bom_2301) response = connection.run(query) assert not response.messages, "\n".join([f"{m.severity}: {m.message}" for m in response.messages]) @@ -347,7 +352,7 @@ def test_sustainability_summary_query(self, connection): def test_sustainability_query(self, connection): query = queries.BomSustainabilityQuery() - query.with_bom(sample_bom_2301) + query.with_bom(sample_sustainability_bom_2301) response = connection.run(query) assert not response.messages, "\n".join([f"{m.severity}: {m.message}" for m in response.messages]) diff --git a/tests/test_mocked_responses/test_bom.py b/tests/test_mocked_responses/test_bom.py index fe9b1e73..ee354308 100644 --- a/tests/test_mocked_responses/test_bom.py +++ b/tests/test_mocked_responses/test_bom.py @@ -8,7 +8,7 @@ from ansys.grantami.bomanalytics import indicators, queries -from ..inputs import sample_bom_1711, sample_bom_2301 +from ..inputs import sample_bom_1711, sample_sustainability_bom_2301 from .common import BaseMockTester, MaterialValidator, PartValidator, SubstanceValidator @@ -55,7 +55,7 @@ class TestImpactedSubstances1711(_TestImpactedSubstances): class TestImpactedSubstances2301(_TestImpactedSubstances): # Setting the BoM is required: to pass query validation and to resolve which endpoint to call - query = queries.BomImpactedSubstancesQuery().with_bom(sample_bom_2301) + query = queries.BomImpactedSubstancesQuery().with_bom(sample_sustainability_bom_2301) mock_key = GetImpactedSubstancesForBom2301Response.__name__ @@ -192,6 +192,6 @@ class TestCompliance2301(_TestCompliance): indicators.RoHSIndicator(name="Indicator 2", legislation_ids=["Mock"]), ] ) - .with_bom(sample_bom_2301) + .with_bom(sample_sustainability_bom_2301) ) mock_key = GetComplianceForBom2301Response.__name__ diff --git a/tests/test_mocked_responses/test_sustainability.py b/tests/test_mocked_responses/test_sustainability.py index 7f64f0e0..b95a3ce7 100644 --- a/tests/test_mocked_responses/test_sustainability.py +++ b/tests/test_mocked_responses/test_sustainability.py @@ -14,13 +14,13 @@ BomSustainabilitySummaryQueryResult, ) -from ..inputs import examples_as_dicts, sample_bom_2301 +from ..inputs import examples_as_dicts, sample_sustainability_bom_2301 from .common import BaseMockTester class TestBomSustainability(BaseMockTester): # Use sample BoM to avoid validation error - query = queries.BomSustainabilityQuery().with_bom(sample_bom_2301) + query = queries.BomSustainabilityQuery().with_bom(sample_sustainability_bom_2301) mock_key = GetSustainabilityForBom2301Response.__name__ def test_response_processing(self, mock_connection): @@ -110,7 +110,7 @@ def test_two_root_parts_emits_warning(self, mock_connection): class TestBomSustainabilitySummary(BaseMockTester): # Use sample BoM to avoid validation error - query = queries.BomSustainabilitySummaryQuery().with_bom(sample_bom_2301) + query = queries.BomSustainabilitySummaryQuery().with_bom(sample_sustainability_bom_2301) mock_key = GetSustainabilitySummaryForBom2301Response.__name__ def test_response_processing(self, mock_connection): diff --git a/tests/test_query_builders/test_bom.py b/tests/test_query_builders/test_bom.py index 1c855e90..519b4ed9 100644 --- a/tests/test_query_builders/test_bom.py +++ b/tests/test_query_builders/test_bom.py @@ -2,7 +2,7 @@ from ansys.grantami.bomanalytics import queries -from ..inputs import sample_bom_2301 +from ..inputs import sample_sustainability_bom_2301 all_bom_queries = pytest.mark.parametrize( "query_type", @@ -17,9 +17,9 @@ @all_bom_queries def test_add_bom(query_type): - query = query_type().with_bom(sample_bom_2301) + query = query_type().with_bom(sample_sustainability_bom_2301) assert isinstance(query, query_type) - assert query._data.bom == sample_bom_2301 + assert query._data.bom == sample_sustainability_bom_2301 @all_bom_queries From afb8aeb0dd50c6491c6765517fd2240f8937bd6e Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 26 Oct 2023 12:46:31 +0200 Subject: [PATCH 197/275] Remove duplicated BoM --- tests/inputs/bom-1711-as-2301.xml | 46 ------------------------------- tests/test_bom_handler.py | 12 ++++---- 2 files changed, 6 insertions(+), 52 deletions(-) delete mode 100644 tests/inputs/bom-1711-as-2301.xml diff --git a/tests/inputs/bom-1711-as-2301.xml b/tests/inputs/bom-1711-as-2301.xml deleted file mode 100644 index 6e4fd7aa..00000000 --- a/tests/inputs/bom-1711-as-2301.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - 2.0 - 123456789 - Part One - - - 1.0 - 2.0 - 987654321 - New Part One - - - 66.0 - - MI_Restricted_Substances - af1cb650-6db5-49d6-b4a2-0eee9a090207 - - Lead oxide - - - - - 1.0 - 2.0 - 3333 - Part Two - - - 80.0 - - MI_Restricted_Substances - ab4147f6-0e97-47f0-be53-cb5d17dfa82b - - - - - - - - - Part with substance - Part with substance - - diff --git a/tests/test_bom_handler.py b/tests/test_bom_handler.py index 8d11f763..edcea1cb 100644 --- a/tests/test_bom_handler.py +++ b/tests/test_bom_handler.py @@ -9,6 +9,8 @@ from ansys.grantami.bomanalytics import BoMHandler from ansys.grantami.bomanalytics.bom_types import BaseType, BillOfMaterials +from .inputs import sample_bom_1711 + class _TestableBoMHandler(BoMHandler): def __init__(self, default_namespace: str, namespace_mapping: Dict[str, str]): @@ -94,14 +96,12 @@ def test_roundtrip_parsing_succeeds(self, bom_filename: str): class TestBoMDeserialization: - _bom_location = Path(__file__).parent / "inputs" - @pytest.fixture(scope="class") def simple_bom(self): - bom_path = self._bom_location / "bom-1711-as-2301.xml" - with open(bom_path, "r", encoding="utf8") as fp: - input_bom = fp.read() - + input_bom = sample_bom_1711.replace( + "http://www.grantadesign.com/17/11/BillOfMaterialsEco", + "http://www.grantadesign.com/23/01/BillOfMaterialsEco", + ) bom_handler = BoMHandler() yield bom_handler.load_bom_from_text(input_bom) From e94a9d96c016562344fbb65b4992e4bcaf708d9e Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 26 Oct 2023 13:45:44 +0200 Subject: [PATCH 198/275] Rename paths variables --- tests/inputs/__init__.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/tests/inputs/__init__.py b/tests/inputs/__init__.py index 8ce65880..87a3efd2 100644 --- a/tests/inputs/__init__.py +++ b/tests/inputs/__init__.py @@ -4,18 +4,22 @@ repository_root = pathlib.Path(__file__).parents[2] -_bom_path = pathlib.Path(__file__).parent / "bom.xml" -with open(_bom_path, "r") as f: +_sample_bom_1711_path = pathlib.Path(__file__).parent / "bom.xml" +with open(_sample_bom_1711_path, "r") as f: sample_bom_1711 = f.read() -_complex_bom_path = repository_root / "examples" / "3_Advanced_Topics" / "supporting-files" / "bom-complex.xml" -with open(_complex_bom_path, "r") as f: +_sample_compliance_bom_1711_path = ( + repository_root / "examples" / "3_Advanced_Topics" / "supporting-files" / "bom-complex.xml" +) +with open(_sample_compliance_bom_1711_path, "r") as f: sample_compliance_bom_1711 = f.read() sample_bom_custom_db = sample_compliance_bom_1711.replace( "MI_Restricted_Substances", "MI_Restricted_Substances_Custom_Tables" ) -_bom_2301_path = repository_root / "examples" / "4_Sustainability" / "supporting-files" / "bom-2301-assembly.xml" -with open(_bom_2301_path, "r") as f: +_sample_sustainability_bom_2301_path = ( + repository_root / "examples" / "4_Sustainability" / "supporting-files" / "bom-2301-assembly.xml" +) +with open(_sample_sustainability_bom_2301_path, "r") as f: sample_sustainability_bom_2301 = f.read() From f9bf47609545ef940877dd02acde3e263a4a59c6 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 26 Oct 2023 14:05:38 +0200 Subject: [PATCH 199/275] Add variables for extra boms --- tests/inputs/__init__.py | 11 ++++++++++- tests/test_bom_handler.py | 29 ++++++++++++++--------------- 2 files changed, 24 insertions(+), 16 deletions(-) diff --git a/tests/inputs/__init__.py b/tests/inputs/__init__.py index 87a3efd2..bb230b1f 100644 --- a/tests/inputs/__init__.py +++ b/tests/inputs/__init__.py @@ -3,8 +3,9 @@ from .examples import examples_as_dicts, examples_as_strings repository_root = pathlib.Path(__file__).parents[2] +inputs_dir = pathlib.Path(__file__).parent -_sample_bom_1711_path = pathlib.Path(__file__).parent / "bom.xml" +_sample_bom_1711_path = inputs_dir / "bom.xml" with open(_sample_bom_1711_path, "r") as f: sample_bom_1711 = f.read() @@ -23,3 +24,11 @@ ) with open(_sample_sustainability_bom_2301_path, "r") as f: sample_sustainability_bom_2301 = f.read() + +_large_bom_2301_path = inputs_dir / "medium-test-bom.xml" +with open(_large_bom_2301_path, "r") as f: + large_bom_2301 = f.read() + +_drill_bom_2301_path = inputs_dir / "drill.xml" +with open(_drill_bom_2301_path, "r") as f: + drill_bom_2301 = f.read() diff --git a/tests/test_bom_handler.py b/tests/test_bom_handler.py index edcea1cb..884447f8 100644 --- a/tests/test_bom_handler.py +++ b/tests/test_bom_handler.py @@ -9,7 +9,7 @@ from ansys.grantami.bomanalytics import BoMHandler from ansys.grantami.bomanalytics.bom_types import BaseType, BillOfMaterials -from .inputs import sample_bom_1711 +from .inputs import drill_bom_2301, large_bom_2301, sample_bom_1711, sample_sustainability_bom_2301 class _TestableBoMHandler(BoMHandler): @@ -61,14 +61,13 @@ def _compare_boms(*, source_bom: str, result_bom: str): return output_lines @pytest.mark.parametrize( - "bom_filename", - ["drill.xml", "medium-test-bom.xml"], + "input_bom", + [ + pytest.param(drill_bom_2301, id="drill"), + pytest.param(large_bom_2301, id="large_bom"), + ], ) - def test_roundtrip_with_assertions(self, bom_filename: str): - bom_path = self._bom_location / bom_filename - with open(bom_path, "r", encoding="utf8") as fp: - input_bom = fp.read() - + def test_roundtrip_with_assertions(self, input_bom: str): bom_handler = _TestableBoMHandler( default_namespace=self._default_namespace, namespace_mapping=self._namespace_map ) @@ -80,14 +79,14 @@ def test_roundtrip_with_assertions(self, bom_filename: str): assert len(diff) == 0, "\n".join(diff) @pytest.mark.parametrize( - "bom_filename", - ["drill.xml", "medium-test-bom.xml"], + "input_bom", + [ + pytest.param(drill_bom_2301, id="drill"), + pytest.param(large_bom_2301, id="large_bom"), + pytest.param(sample_sustainability_bom_2301, id="sustainability_bom"), + ], ) - def test_roundtrip_parsing_succeeds(self, bom_filename: str): - bom_path = self._bom_location / bom_filename - with open(bom_path, "r", encoding="utf8") as fp: - input_bom = fp.read() - + def test_roundtrip_parsing_succeeds(self, input_bom: str): bom_handler = BoMHandler() deserialized_bom = bom_handler.load_bom_from_text(input_bom) From f4cd5f70b4373570282a5d96435993100767dd15 Mon Sep 17 00:00:00 2001 From: Andy Grigg Date: Thu, 26 Oct 2023 11:48:08 -0400 Subject: [PATCH 200/275] Use newer version of vale --- .github/workflows/local_checks.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/local_checks.yml b/.github/workflows/local_checks.yml index e3bc4747..eee23074 100644 --- a/.github/workflows/local_checks.yml +++ b/.github/workflows/local_checks.yml @@ -26,7 +26,7 @@ jobs: uses: ansys/actions/doc-style@v4 with: token: ${{ secrets.GITHUB_TOKEN }} - vale-version: 2.28.1 + vale-version: "2.29.6" unit_tests: name: Unit tests From 279f2c3d72e0bf6cc04404ed4890f6f943c19122 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Sat, 14 Oct 2023 16:24:11 +0200 Subject: [PATCH 201/275] Convert to dataclasses --- .../bomanalytics/bom_types/_bom_types.py | 2749 +++-------------- 1 file changed, 482 insertions(+), 2267 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py b/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py index 1d987e10..b10213fa 100644 --- a/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py +++ b/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py @@ -1,19 +1,8 @@ from __future__ import annotations +from dataclasses import dataclass, field from enum import Enum -from typing import ( - TYPE_CHECKING, - Any, - Dict, - Iterable, - List, - Optional, - Protocol, - Tuple, - Type, - Union, - cast, -) +from typing import TYPE_CHECKING, Any, Dict, Iterable, List, Optional, Protocol, Tuple, Union, cast if TYPE_CHECKING: from ._bom_reader import BoMReader @@ -93,7 +82,25 @@ def _process_custom_fields(cls, obj: Dict, bom_reader: BoMReader) -> Dict[str, A Dict[str, Any] Dictionary mapping constructor argument names to values for this type. """ - return {} + props = {} + instance = cls + if hasattr(cls, "internal_id"): + id_obj = bom_reader.get_field(instance, obj, "@id") + if id_obj is not None: + props["internal_id"] = id_obj + if hasattr(cls, "identity"): + identity_obj = bom_reader.get_field(instance, obj, "Identity") + if identity_obj is not None: + props["identity"] = identity_obj + if hasattr(cls, "name"): + name_obj = bom_reader.get_field(instance, obj, "Name") + if name_obj is not None: + props["name"] = name_obj + if hasattr(cls, "external_identity"): + external_identity_obj = bom_reader.get_field(instance, obj, "ExternalIdentity") + if external_identity_obj is not None: + props["external_identity"] = external_identity_obj + return props def _write_custom_fields(self, obj: Dict, bom_writer: BoMWriter) -> None: """ @@ -108,7 +115,24 @@ def _write_custom_fields(self, obj: Dict, bom_writer: BoMWriter) -> None: bom_writer: BoMWriter Helper object that maintains information about the global namespaces. """ - pass + # Temporarily deal with repeated fields in the base class + instance = self + if hasattr(self, "internal_id"): + if self.internal_id is not None: + field_name = bom_writer._get_qualified_name(instance, "@id") + obj[field_name] = self.internal_id + if hasattr(self, "identity"): + if self.identity is not None: + field_name = bom_writer._get_qualified_name(instance, "Identity") + obj[field_name] = self.identity + if hasattr(self, "name"): + if self.name is not None: + field_name = bom_writer._get_qualified_name(instance, "Name") + obj[field_name] = self.name + if hasattr(self, "external_identity"): + if self.external_identity is not None: + field_name = bom_writer._get_qualified_name(instance, "ExternalIdentity") + obj[field_name] = self.external_identity class DimensionType(Enum): @@ -223,87 +247,30 @@ def to_string(self) -> str: return self.name +@dataclass class PartialTableReference(BaseType): """ A type that partially identifies a Table, but does not specify the MI Database. Usually, just one of the several optional fields should be provided; where more than one is provided, the highest priority one is used, where the descending priority order is: tableIdentity, tableGUID, tableName. - - Parameters - ---------- - table_identity: Optional[int] - The identity of the table, this is the fastest way to reference a table. - table_guid: Optional[str] - The GUID of the table, this is likely to be a persistent way to refer to a table. - table_name: Optional[str] - The name of the table, note that table names can vary between localisations of a database, so this may not - be a safe way to refer to a table if the MI Database supports multiple locales. """ _simple_values = [("table_identity", "tableIdentity"), ("table_guid", "tableGuid"), ("table_name", "tableName")] _namespace = "http://www.grantadesign.com/12/05/GrantaBaseTypes" - def __init__( - self, - *, - table_identity: Optional[int] = None, - table_guid: Optional[str] = None, - table_name: Optional[str] = None, - **kwargs: Dict[str, Any], - ): - super().__init__(**kwargs) - self.table_identity = table_identity - self.table_guid = table_guid - self.table_name = table_name - - @property - def table_identity(self) -> Optional[int]: - """ - The identity of the table, this is the fastest way to reference a table. - - Returns - ------- - Optional[int] - """ - return self._table_identity - - @table_identity.setter - def table_identity(self, value: Optional[int]) -> None: - self._table_identity = value - - @property - def table_guid(self) -> Optional[str]: - """ - The GUID of the table, this is likely to be a persistent way to refer to a table. - - Returns - ------- - Optional[str] - """ - return self._table_guid - - @table_guid.setter - def table_guid(self, value: Optional[str]) -> None: - self._table_guid = value - - @property - def table_name(self) -> Optional[str]: - """ - The name of the table, note that table names can vary between localisations of a database, so this may not be a - safe way to refer to a table if the MI Database supports multiple locales. + table_identity: Optional[int] = None + """The identity of the table, this is the fastest way to reference a table.""" - Returns - ------- - Optional[str] - """ - return self._table_name + table_guid: Optional[str] = None + """The GUID of the table, this is likely to be a persistent way to refer to a table.""" - @table_name.setter - def table_name(self, value: Optional[str]) -> None: - self._table_name = value + table_name: Optional[str] = None + """The name of the table, note that table names can vary between localisations of a database, so this may not be a + safe way to refer to a table if the MI Database supports multiple locales.""" +@dataclass class MIAttributeReference(BaseType): """A type that allows identification of a particular Attribute in an MI Database. This may be done directly by specifying the Identity of the Attribute, or indirectly by specifying a lookup that will match (only) the @@ -312,46 +279,30 @@ class MIAttributeReference(BaseType): Note: in certain cases, an MIAttributeReference may match more than one Attribute in the MI Database; depending on the operation, this may be legal or may result in a Fault. - - Parameters - ---------- - db_key: str - The key that uniquely identifies a particular Database on the MI Server. - attribute_identity: Optional[int] - The identity of the attribute within the MI Database. - table_reference: Optional[PartialTableReference] - A reference to the table hosting the attribute. Required if ``attribute_name`` is specified and - ``is_standard`` is not True. - attribute_name: Optional[str] - Name of the Attribute. - pseudo: Optional[PseudoAttribute] - The pseudo-attribute type if referring to a pseudo-attribute. - is_standard: Optional[bool] - If True indicates that the provided ``attribute_name`` is a Standard Name. """ _simple_values = [("db_key", "dbKey"), ("attribute_identity", "attributeIdentity")] _namespace = "http://www.grantadesign.com/12/05/GrantaBaseTypes" - def __init__( - self, - *, - db_key: str, - attribute_identity: Optional[int] = None, - table_reference: Optional[PartialTableReference] = None, - attribute_name: Optional[str] = None, - pseudo: Optional[PseudoAttribute] = None, - is_standard: Optional[bool] = None, - **kwargs: Dict[str, Any], - ): - super().__init__(**kwargs) - self.db_key = db_key - self.attribute_identity = attribute_identity - self.table_reference = table_reference - self.attribute_name = attribute_name - self.pseudo = pseudo - self.is_standard = is_standard + db_key: str + """The key that uniquely identifies a particular Database on the MI Server.""" + + attribute_identity: Optional[int] = None + """The identity of the attribute within the MI Database.""" + + table_reference: Optional[PartialTableReference] = None + """A reference to the table hosting the attribute. Required if ``attribute_name`` is specified and + ``is_standard`` is not True.""" + + attribute_name: Optional[str] = None + """Name of the Attribute.""" + + pseudo: Optional[PseudoAttribute] = None + """The pseudo-attribute type if referring to a pseudo-attribute.""" + + is_standard: Optional[bool] = None + """If True indicates that the provided ``attribute_name`` is a Standard Name.""" @classmethod def _process_custom_fields(cls, obj: Dict, bom_reader: BoMReader) -> Dict[str, Any]: @@ -388,98 +339,8 @@ def _write_custom_fields(self, obj: Dict, bom_writer: BoMWriter) -> None: if name_dict != {}: obj[bom_writer._get_qualified_name(self, "name")] = name_dict - @property - def db_key(self) -> str: - """ - The key that uniquely identifies a particular Database on the MI Server. - - Returns - ------- - str - """ - return self._db_key - - @db_key.setter - def db_key(self, value: str) -> None: - self._db_key = value - - @property - def attribute_identity(self) -> Optional[int]: - """ - The identity of the attribute within the MI Database. - - Returns - ------- - Optional[int] - """ - return self._attribute_identity - - @attribute_identity.setter - def attribute_identity(self, value: Optional[int]) -> None: - self._attribute_identity = value - - @property - def table_reference(self) -> Optional[PartialTableReference]: - """ - A reference to the table hosting the attribute. Required if ``attribute_name`` is specified and ``is_standard`` - is not True. - - Returns - ------- - Optional[PartialTableReference] - """ - return self._table_reference - - @table_reference.setter - def table_reference(self, value: Optional[PartialTableReference]) -> None: - self._table_reference = value - - @property - def attribute_name(self) -> Optional[str]: - """ - Name of the Attribute. - - Returns - ------- - str - """ - return self._attribute_name - - @attribute_name.setter - def attribute_name(self, value: Optional[str]) -> None: - self._attribute_name = value - - @property - def pseudo(self) -> Optional[PseudoAttribute]: - """ - The pseudo-attribute type if referring to a pseudo-attribute. - - Returns - ------- - Optional[PseudoAttribute] - """ - return self._pseudo - - @pseudo.setter - def pseudo(self, value: Optional[PseudoAttribute]) -> None: - self._pseudo = value - - @property - def is_standard(self) -> Optional[bool]: - """ - If True indicates that the provided ``attribute_name`` is a Standard Name. - - Returns - ------- - Optional[bool] - """ - return self._is_standard - - @is_standard.setter - def is_standard(self, value: Optional[bool]) -> None: - self._is_standard = value - +@dataclass class MIRecordReference(BaseType): """A type that allows identification of a particular Record in an MI Database. This may be done directly by specifying the Identity or GUID of the Record, or @@ -490,31 +351,6 @@ class MIRecordReference(BaseType): order of priority is: identity, recordGUID, recordHistoryGUID, lookupValue. The Service Layer does not check that the several elements identifying the record are all referencing the same record, it just picks the highest-priority one and uses that. - - Parameters - ---------- - db_key: str - The key that uniquely identifies a particular Database on the MI Server. - record_history_identity: Optional[int] - This is the best-performing and highest-priority way to reference a record; however, identities might not - be suitable for long-term persistence. - record_version_number: Optional[int] - If omitted, this means the latest version visible to the user. - record_guid: Optional[str] - Identifies a particular version of a record by its GUID, this is a more persistent way to refer to a record. - record_history_guid: Optional[str] - Identifies a record history, the latest visible version will be returned. ``record_version_number`` has no - effect on references that use ``record_history_guid``. - lookup_attribute_reference: Optional[MIAttributeReference] - When provided in combination with ``lookup_value`` identifies a record by a unique short-text attribute. - Specifies the attribute to be used for the lookup operation. - lookup_value: Optional[str] - When provided in combination with ``lookup_attribute_reference`` identifies a record by a unique short-text - attribute. Specifies the value to be used for the lookup operation. If this is not unique an error will be - returned. - record_uid: Optional[str] - The recordUID may be used to identify a particular XML element representing a record. It does not represent - any property or attribute of an actual MI Record. """ _simple_values = [ @@ -526,28 +362,35 @@ class MIRecordReference(BaseType): _namespace = "http://www.grantadesign.com/12/05/GrantaBaseTypes" - def __init__( - self, - *, - db_key: str, - record_history_identity: Optional[int] = None, - record_version_number: Optional[int] = None, - record_guid: Optional[str] = None, - record_history_guid: Optional[str] = None, - lookup_attribute_reference: Optional[MIAttributeReference] = None, - lookup_value: Optional[str] = None, - record_uid: Optional[str] = None, - **kwargs: Dict[str, Any], - ): - super().__init__(**kwargs) - self.db_key = db_key - self.record_history_identity = record_history_identity - self.record_version_number = record_version_number - self.record_guid = record_guid - self.record_history_guid = record_history_guid - self.lookup_attribute_reference = lookup_attribute_reference - self.lookup_value = lookup_value - self.record_uid = record_uid + db_key: str + """The key that uniquely identifies a particular Database on the MI Server.""" + + record_history_identity: Optional[int] = None + """This is the best-performing and highest-priority way to reference a record; however, identities might not + be suitable for long-term persistence.""" + + record_version_number: Optional[int] = None + """If omitted, this means the latest version visible to the user.""" + + record_guid: Optional[str] = None + """Identifies a particular version of a record by its GUID, this is a more persistent way to refer to a record.""" + + record_history_guid: Optional[str] = None + """Identifies a record history, the latest visible version will be returned. ``record_version_number`` has no + effect on references that use ``record_history_guid``.""" + + lookup_attribute_reference: Optional[MIAttributeReference] = None + """When provided in combination with ``lookup_value`` identifies a record by a unique short-text attribute. + Specifies the attribute to be used for the lookup operation.""" + + lookup_value: Optional[str] = None + """When provided in combination with ``lookup_attribute_reference`` identifies a record by a unique short-text + attribute. Specifies the value to be used for the lookup operation. If this is not unique an error will be + returned.""" + + record_uid: Optional[str] = None + """The recordUID may be used to identify a particular XML element representing a record. It does not represent + any property or attribute of an actual MI Record.""" @classmethod def _process_custom_fields(cls, obj: Dict, bom_reader: BoMReader) -> Dict[str, Any]: @@ -585,1038 +428,231 @@ def _write_custom_fields(self, obj: Dict, bom_writer: BoMWriter) -> None: } obj[bom_writer._get_qualified_name(self, "lookupValue")] = lookup_dict - @property - def db_key(self) -> str: - """ - Identifies the database to which this record belongs. - Returns - ------- - str - """ - return self._db_key +@dataclass +class EndOfLifeFate(BaseType): + """ + The fate of a material at the end-of-life of the product. For example if a material can be recycled, and what + fraction of the total mass or volume can be recycled. + """ - @db_key.setter - def db_key(self, value: str) -> None: - self._db_key = value + _simple_values = [("fraction", "Fraction")] - @property - def record_history_identity(self) -> Optional[int]: - """ - Identifies a record by its history identity. + _props = [("MIRecordReference", "mi_end_of_life_reference", "MIEndOfLifeReference")] - Returns - ------- - Optional[int] - """ - return self._record_history_identity + mi_end_of_life_reference: MIRecordReference + """Reference identifying the applicable fate within the MI Database.""" - @record_history_identity.setter - def record_history_identity(self, value: Optional[int]) -> None: - self._record_history_identity = value + fraction: float + """Fraction of the total mass or volume of material to which this fate applies.""" - @property - def record_version_number(self) -> Optional[int]: - """ - If ``record_history_identity`` is provided, identifies a specific version of that record history. - Returns - ------- - Optional[int] - """ - return self._record_version_number +@dataclass +class UnittedValue(BaseType): + """ + A physical quantity with a unit. If provided in a input then the unit should exist within the MI database, + otherwise an error will be raised. + """ - @record_version_number.setter - def record_version_number(self, value: Optional[int]) -> None: - self._record_version_number = value + _simple_values = [("value", "$"), ("unit", "@Unit")] - @property - def record_guid(self) -> Optional[str]: - """ - Identifies a record by its GUID, gets a specific version. + value: float + """The value of the quantity in specified units.""" - Returns - ------- - Optional[str] - """ - return self._record_guid + unit: Optional[str] = None + """If provided, specifies the unit symbol applying to the quantity. If absent the quantity will be treated as + dimensionless.""" - @record_guid.setter - def record_guid(self, value: Optional[str]) -> None: - self._record_guid = value - @property - def record_history_guid(self) -> Optional[str]: - """ - Identifies a record by its history GUID, returns the latest released version of the record the user can see. +@dataclass +class Location(BaseType): + _props = [("MIRecordReference", "mi_location_reference", "MILocationReference")] - Returns - ------- - Optional[str] - """ - return self._record_history_guid + mi_location_reference: Optional[MIRecordReference] = None # TODO not optional though + """Reference to a record in the MI database representing the manufacturing location.""" - @record_history_guid.setter - def record_history_guid(self, value: Optional[str]) -> None: - self._record_history_guid = value + identity: Optional[str] = None + """A display identity for the object.""" - @property - def lookup_attribute_reference(self) -> Optional[MIAttributeReference]: - """ - Identifies a record by a short-text attribute value. Specifies which attribute should be used to perform this - lookup. This should be either a Short-Text Attribute, or a compatible Pseudo-Attribute. + name: Optional[str] = None + """A display name for the object.""" - Returns - ------- - Optional[MIAttributeReference] - """ - return self._lookup_attribute_reference + external_identity: Optional[str] = None + """A temporary reference populated and used by applications to refer to the item within the BoM.""" - @lookup_attribute_reference.setter - def lookup_attribute_reference(self, value: Optional[MIAttributeReference]) -> None: - self._lookup_attribute_reference = value + internal_id: Optional[str] = None + """A unique identity for this object in this BoM. This identity is only for internal use, allowing other elements + to reference this element.""" - @property - def lookup_value(self) -> Optional[str]: - """ - Identifies a record by a short-text attribute value. Specifies the value of the attribute should be used to - perform this lookup. - Returns - ------- - Optional[str] - """ - return self._lookup_value +@dataclass +class ElectricityMix(BaseType): + """ + If the product consumes electrical power, then the amount of CO2 produced to generate depends upon the mix of + fossil fuel burning power stations in the region of use. This type lets you specify the electrical generation + mix by either specifying the region or country of use or by specifying the percentage of power that comes from + fossil fuel sources. + """ - @lookup_value.setter - def lookup_value(self, value: Optional[str]) -> None: - self._lookup_value = value + _props = [("MIRecordReference", "mi_region_reference", "MIRegionReference")] + _simple_values = [("percentage_fossil_fuels", "PercentageFossilFuels")] - @property - def record_uid(self) -> Optional[str]: - """ - Identifies a record with an additional identifier, this is not used by the database, but will be returned - in any response unchanged. Used to correlate requests with responses from the server. + mi_region_reference: Optional[MIRecordReference] = None + """Reference to a record in the MI database representing the electricity mix for the destination country.""" - Returns - ------- - Optional[str] - """ - return self._record_uid + percentage_fossil_fuels: Optional[float] = None + """The percentage of electrical power production within the destination country that comes from fossil fuels.""" - @record_uid.setter - def record_uid(self, value: Optional[str]) -> None: - self._record_uid = value +@dataclass +class MobileMode(BaseType): + """ + If the product is transported as part of its use then this type contains details about the way in which it is + transported. + """ -# TODO - I don't like having a nice method to add props then replicating it here, can we do something better with -# inheritance? -class InternalIdentifierMixin(SupportsCustomFields): - """A unique identity for this object in this BoM. This identity is only for internal use, allowing other - elements to reference this element. + _props = [ + ("MIRecordReference", "mi_transport_reference", "MITransportReference"), + ("UnittedValue", "distance_travelled_per_day", "DistanceTravelledPerDay"), + ] + _simple_values = [("days_user_per_year", "DaysUsedPerYear")] - Parameters - ---------- - internal_id: Optional[str] - The identifier to assign to this object. - """ + mi_transport_reference: MIRecordReference + """Reference to a record in the MI database representing the means of transport for this product during use.""" - def __init__(self, *, internal_id: Optional[str] = None, **kwargs: Dict[str, Any]): - super().__init__(**kwargs) - self.internal_id = internal_id + days_used_per_year: float + """The number of days in a year the product will be transported during use.""" - @classmethod - def _process_custom_fields(cls, obj: Dict, bom_reader: BoMReader) -> Dict[str, Any]: - props = super()._process_custom_fields(obj, bom_reader) - instance = cast(Type[BaseType], cls) - id_obj = bom_reader.get_field(instance, obj, "@id") - if id_obj is not None: - props["internal_id"] = id_obj - return props + distance_travelled_per_day: UnittedValue + """The distance the product will be transported each day as part of its use.""" - def _write_custom_fields(self, obj: Dict, bom_writer: BoMWriter) -> None: - super()._write_custom_fields(obj, bom_writer) - if self._internal_id is not None: - instance = cast(BaseType, self) - field_name = bom_writer._get_qualified_name(instance, "@id") - obj[field_name] = self._internal_id - @property - def internal_id(self) -> Optional[str]: - """ - Internal identity used to refer to this object in references. +@dataclass +class StaticMode(BaseType): + """ + Specifies the primary energy conversion that occurs during the product's use. + """ - Returns - ------- - str - """ - return self._internal_id + _props = [ + ("MIRecordReference", "mi_energy_conversion_reference", "MIEnergyConversionReference"), + ("UnittedValue", "power_rating", "PowerRating"), + ] + _simple_values = [("days_used_per_year", "DaysUsedPerYear"), ("hours_used_per_day", "HoursUsedPerDay")] - @internal_id.setter - def internal_id(self, value: Optional[str]) -> None: - self._internal_id = value + mi_energy_conversion_reference: MIRecordReference + """Reference to a record in the MI database representing the primary energy conversion taking place when the + product is in use.""" + power_rating: UnittedValue + """The power rating of the product whilst in use.""" -class CommonIdentifiersMixin(SupportsCustomFields): - """ - A set of identifiers used by external applications to reference and display parts of the BoM. + days_used_per_year: float + """The number of days per year that the product will be used.""" - Parameters - ---------- - identity: Optional[str] - A display identity for the object. - name: Optional[str] - A display name for the object. - external_identity: Optional[str] - A temporary reference populated and used by applications to refer to the item within the BoM. - """ + hours_used_per_day: float + """The number of hours per day of use that the product will be used.""" - def __init__( - self, - *, - identity: Optional[str] = None, - name: Optional[str] = None, - external_identity: Optional[str] = None, - **kwargs: Dict[str, Any], - ): - super().__init__(**kwargs) - self.identity = identity - self.name = name - self.external_identity = external_identity - def _write_custom_fields(self, obj: Dict, bom_writer: BoMWriter) -> None: - super()._write_custom_fields(obj, bom_writer) - instance = cast(BaseType, self) - if self._identity is not None: - field_name = bom_writer._get_qualified_name(instance, "Identity") - obj[field_name] = self._identity - if self._name is not None: - field_name = bom_writer._get_qualified_name(instance, "Name") - obj[field_name] = self._name - if self._external_identity is not None: - field_name = bom_writer._get_qualified_name(instance, "ExternalIdentity") - obj[field_name] = self._external_identity +@dataclass +class UtilitySpecification(BaseType): + """ + Specifies how much use can be obtained from the product represented by this BoM in comparison to a + representative industry average. + """ - @classmethod - def _process_custom_fields(cls, obj: Dict, bom_reader: BoMReader) -> Dict[str, Any]: - props = super()._process_custom_fields(obj, bom_reader) - instance = cast(Type[BaseType], cls) - identity_obj = bom_reader.get_field(instance, obj, "Identity") - if identity_obj is not None: - props["identity"] = identity_obj - name_obj = bom_reader.get_field(instance, obj, "Name") - if name_obj is not None: - props["name"] = name_obj - external_identity_obj = bom_reader.get_field(instance, obj, "ExternalIdentity") - if external_identity_obj is not None: - props["external_identity"] = external_identity_obj - return props + _simple_values = [ + ("industry_average_duration_years", "IndustryAverageDurationYears"), + ("industry_average_number_of_functional_units", "IndustryAverageNumberOfFunctionalUnits"), + ("utility", "Utility"), + ] - @property - def identity(self) -> Optional[str]: - """ - A display identity for this object. + industry_average_duration_years: Optional[float] = None + """The average lifespan of all examples, throughout the industry, of the kind of product described herein.""" - Returns - ------- - Optional[str] - """ - return self._identity + industry_average_number_of_functional_units: Optional[float] = None + """The average number of functional units delivered, in their lifespan, by all examples, throughout the + industry, of the kind of product represented by this object.""" - @identity.setter - def identity(self, value: Optional[str]) -> None: - self._identity = value + utility: Optional[float] = None + """Directly specifies the utility.""" - @property - def name(self) -> Optional[str]: - """ - A display name for this object. - Returns - ------- - Optional[str] - """ - return self._name +@dataclass +class ProductLifeSpan(BaseType): + """ + Specifies the average life span for the product represented by the BoM. + """ - @name.setter - def name(self, value: Optional[str]) -> None: - self._name = value + _props = [("UtilitySpecification", "utility", "Utility")] + _simple_values = [ + ("duration_years", "DurationYears"), + ("number_of_functional_units", "NumberOfFunctionalUnits"), + ("functional_unit_description", "FunctionalUnitDescription"), + ] + duration_years: float + """The product lifespan in years.""" - @property - def external_identity(self) -> Optional[str]: - """ - A temporary reference populated and used by applications to refer to this object within the BoM. + number_of_functional_units: Optional[float] = None + """The number of functional units delivered in the lifespan of the product represented by the BoM.""" - Returns - ------- - Optional[str] - """ - return self._external_identity + functional_unit_description: Optional[str] = None + """A short (ideally one-word) description of a single functional unit.""" - @external_identity.setter - def external_identity(self, value: Optional[str]) -> None: - self._external_identity = value + utility: Optional[UtilitySpecification] = None + """Indicates how much use can be obtained from the product represented by the BoM, compared to an + industry-average example.""" -class EndOfLifeFate(BaseType): +class UsePhase(BaseType): """ - The fate of a material at the end-of-life of the product. For example if a material can be recycled, and what - fraction of the total mass or volume can be recycled. - - Parameters - ---------- - mi_end_of_life_reference : MIRecordReference - Reference identifying the applicable fate within the MI Database. - fraction : float - Fraction of the total mass or volume of material to which this fate applies. + Provides information about the sustainability of the product whilst in use, including electricity use, emissions + due to transport, emissions due to electricity consumption, and the expected life span of the product. """ - _simple_values = [("fraction", "Fraction")] + _props = [ + ("ProductLifeSpan", "product_life_span", "ProductLifeSpan"), + ("ElectricityMix", "electricity_mix", "ElectricityMix"), + ("StaticMode", "static_mode", "StaticMode"), + ("MobileMode", "mobile_mode", "MobileMode"), + ] - _props = [("MIRecordReference", "mi_end_of_life_reference", "MIEndOfLifeReference")] + product_life_span: ProductLifeSpan + """Specifies the expected life span of the product.""" - def __init__( - self, *, mi_end_of_life_reference: MIRecordReference, fraction: float, **kwargs: Dict[str, Any] - ) -> None: - super().__init__(**kwargs) - self.mi_end_of_life_reference = mi_end_of_life_reference - self.fraction = fraction + electricity_mix: Optional[ElectricityMix] = None + """ Specifies the proportion of electricity within the destination country that comes from fossil fuels.""" - @property - def mi_end_of_life_reference(self) -> MIRecordReference: - """ - Reference identifying the applicable fate within the MI Database. + static_mode: Optional[StaticMode] = None + """Provides information about the expected static use of the product.""" - Returns - ------- - MIRecordReference - """ - return self._mi_end_of_life_reference + mobile_mode: Optional[MobileMode] = None + """Provides information about the expected mobile use of the product.""" - @mi_end_of_life_reference.setter - def mi_end_of_life_reference(self, value: MIRecordReference) -> None: - self._mi_end_of_life_reference = value - @property - def fraction(self) -> float: - """ - Fraction of the total mass or volume of material to which this fate applies. +@dataclass +class BoMDetails(BaseType): + """ + Explanatory information about a BoM. + """ - Returns - ------- - float - """ - return self._fraction + _simple_values = [("notes", "Notes"), ("picture_url", "PictureUrl"), ("product_name", "ProductName")] - @fraction.setter - def fraction(self, value: float) -> None: - self._fraction = value + notes: Optional[str] = None + """General notes for the BoM object.""" + picture_url: Optional[str] = None + """The URL of an image to include at the top of the report. This URL must be accessible from the reporting + services server.""" -class UnittedValue(BaseType): - """ - A physical quantity with a unit. If provided in a input then the unit should exist within the MI database, - otherwise an error will be raised. - - Parameters - ---------- - value: float - The value of the quantity in specified units. - unit: Optional[str] - If provided, specifies the unit symbol applying to the quantity. If absent the quantity will be treated as - dimensionless. - """ - - _simple_values = [("value", "$"), ("unit", "@Unit")] - - def __init__(self, *, value: float, unit: Optional[str] = None, **kwargs: Dict[str, Any]) -> None: - super().__init__(**kwargs) - self.value = value - self.unit = unit - - def __repr__(self) -> str: - if self._unit is None: - return f"" - else: - return f"" - - @property - def value(self) -> float: - """ - The value of the quantity in the provided unit. - - Returns - ------- - float - """ - return self._value - - @value.setter - def value(self, value: float) -> None: - self._value = value - - @property - def unit(self) -> Optional[str]: - """ - The unit symbol applying to the quantity. - - Returns - ------- - Optional[str] - """ - return self._unit - - @unit.setter - def unit(self, value: Optional[str]) -> None: - self._unit = value - - -class Location(CommonIdentifiersMixin, InternalIdentifierMixin, BaseType): - """ - Defines the manufacturing location for the BoM for use in process calculations. - - Parameters - ---------- - mi_location_reference: Optional[MIRecordReference] - Reference to a record in the MI database representing the manufacturing location. - """ - - _props = [("MIRecordReference", "mi_location_reference", "MILocationReference")] - - def __init__(self, *, mi_location_reference: Optional[MIRecordReference] = None, **kwargs: Any) -> None: - super().__init__(**kwargs) - self.mi_location_reference = mi_location_reference - - @property - def mi_location_reference(self) -> Optional[MIRecordReference]: - """ - Reference to a record in the MI database representing the manufacturing location. - - Returns - ------- - Optional[MIRecordReference] - """ - return self._mi_location_reference - - @mi_location_reference.setter - def mi_location_reference(self, value: Optional[MIRecordReference]) -> None: - self._mi_location_reference = value - - -class ElectricityMix(BaseType): - """ - If the product consumes electrical power, then the amount of CO2 produced to generate depends upon the mix of - fossil fuel burning power stations in the region of use. This type lets you specify the electrical generation - mix by either specifying the region or country of use or by specifying the percentage of power that comes from - fossil fuel sources. - - Parameters - ---------- - mi_region_reference: Optional[MIRecordReference] - Reference to a record in the MI database representing the electricity mix for the destination country. - percentage_fossil_fuels: Optional[float] - The percentage of electrical power production within the destination country that comes from fossil fuels. - """ - - _props = [("MIRecordReference", "mi_region_reference", "MIRegionReference")] - _simple_values = [("percentage_fossil_fuels", "PercentageFossilFuels")] - - def __init__( - self, - *, - mi_region_reference: Optional[MIRecordReference] = None, - percentage_fossil_fuels: Optional[float] = None, - **kwargs: Dict[str, Any], - ) -> None: - super().__init__(**kwargs) - self.mi_region_reference = mi_region_reference - self.percentage_fossil_fuels = percentage_fossil_fuels - - @property - def mi_region_reference(self) -> Optional[MIRecordReference]: - """ - Reference to a record in the MI database representing the electricity mix for the destination country. - - Returns - ------- - Optional[MIRecordReference] - """ - return self._mi_region_reference - - @mi_region_reference.setter - def mi_region_reference(self, value: Optional[MIRecordReference]) -> None: - self._mi_region_reference = value - - @property - def percentage_fossil_fuels(self) -> Optional[float]: - """ - The percentage of electrical power production within the destination country that comes from fossil fuels. - - Returns - ------- - Optional[float] - """ - return self._percentage_fossil_fuels - - @percentage_fossil_fuels.setter - def percentage_fossil_fuels(self, value: Optional[float]) -> None: - self._percentage_fossil_fuels = value - - -class MobileMode(BaseType): - """ - If the product is transported as part of its use then this type contains details about the way in which it is - transported. - - Parameters - ---------- - mi_transport_reference: MIRecordReference - Reference to a record in the MI database representing the means of transport for this product during use. - days_used_per_year: float - The number of days in a year the product will be transported during use. - distance_travelled_per_day: UnittedValue - The distance the product will be transported each day as part of its use. - """ - - _props = [ - ("MIRecordReference", "mi_transport_reference", "MITransportReference"), - ("UnittedValue", "distance_travelled_per_day", "DistanceTravelledPerDay"), - ] - _simple_values = [("days_user_per_year", "DaysUsedPerYear")] - - def __init__( - self, - *, - mi_transport_reference: MIRecordReference, - days_used_per_year: float, - distance_travelled_per_day: UnittedValue, - **kwargs: Dict[str, Any], - ) -> None: - super().__init__(**kwargs) - self.mi_transport_reference = mi_transport_reference - self.days_used_per_year = days_used_per_year - self.distance_travelled_per_day = distance_travelled_per_day - - @property - def mi_transport_reference(self) -> MIRecordReference: - """ - Reference to a record in the MI database representing the means of transport for this product during use. - - Returns - ------- - MIRecordReference - """ - return self._mi_transport_reference - - @mi_transport_reference.setter - def mi_transport_reference(self, value: MIRecordReference) -> None: - self._mi_transport_reference = value - - @property - def days_used_per_year(self) -> float: - """ - The number of days in a year the product will be transported during use. - - Returns - ------- - float - """ - return self._days_used_per_year - - @days_used_per_year.setter - def days_used_per_year(self, value: float) -> None: - self._days_used_per_year = value - - @property - def distance_travelled_per_day(self) -> UnittedValue: - """ - The distance the product will be transported each day as part of its use. + product_name: Optional[str] = None + """The product name.""" - Returns - ------- - UnittedValue - """ - return self._distance_travelled_per_day - - @distance_travelled_per_day.setter - def distance_travelled_per_day(self, value: UnittedValue) -> None: - self._distance_travelled_per_day = value - -class StaticMode(BaseType): - """ - Specifies the primary energy conversion that occurs during the product's use. - - Parameters - ---------- - mi_energy_conversion_reference: MIRecordReference - Reference to a record in the MI database representing the primary energy conversion taking place when the - product is in use. - power_rating: UnittedValue - The power rating of the product whilst in use. - days_used_per_year: float - The number of days per year that the product will be used. - hours_used_per_day: float - The number of hours per day of use that the product will be used. - """ - - _props = [ - ("MIRecordReference", "mi_energy_conversion_reference", "MIEnergyConversionReference"), - ("UnittedValue", "power_rating", "PowerRating"), - ] - _simple_values = [("days_used_per_year", "DaysUsedPerYear"), ("hours_used_per_day", "HoursUsedPerDay")] - - def __init__( - self, - *, - mi_energy_conversion_reference: MIRecordReference, - power_rating: UnittedValue, - days_used_per_year: float, - hours_used_per_day: float, - **kwargs: Dict[str, Any], - ) -> None: - super().__init__(**kwargs) - self.mi_energy_conversion_reference = mi_energy_conversion_reference - self.power_rating = power_rating - self.days_used_per_year = days_used_per_year - self.hours_used_per_day = hours_used_per_day - - @property - def mi_energy_conversion_reference(self) -> MIRecordReference: - """ - Reference to a record in the MI database representing the primary energy conversion taking place when the - product is in use. - - Returns - ------- - MIRecordReference - """ - return self._mi_energy_conversion_reference - - @mi_energy_conversion_reference.setter - def mi_energy_conversion_reference(self, value: MIRecordReference) -> None: - self._mi_energy_conversion_reference = value - - @property - def power_rating(self) -> UnittedValue: - """ - The power rating of the product whilst in use. - - Returns - ------- - UnittedValue - """ - return self._power_rating - - @power_rating.setter - def power_rating(self, value: UnittedValue) -> None: - self._power_rating = value - - @property - def days_used_per_year(self) -> float: - """ - The number of days per year that the product will be used. - - Returns - ------- - float - """ - return self._days_used_per_year - - @days_used_per_year.setter - def days_used_per_year(self, value: float) -> None: - self._days_used_per_year = value - - @property - def hours_used_per_day(self) -> float: - """ - The number of hours per day of use that the product will be used. - - Returns - ------- - float - """ - return self._hours_used_per_day - - @hours_used_per_day.setter - def hours_used_per_day(self, value: float) -> None: - self._hours_used_per_day = value - - -class UtilitySpecification(BaseType): - """ - Specifies how much use can be obtained from the product represented by this BoM in comparison to a - representative industry average. - - Parameters - ---------- - industry_average_duration_years: Optional[float] - The average lifespan of all examples, throughout the industry, of the kind of product described herein. - industry_average_number_of_functional_units: Optional[float] - The average number of functional units delivered, in their lifespan, by all examples, throughout the - industry, of the kind of product represented by this object. - utility: Optional[float] - Directly specifies the utility. - """ - - _simple_values = [ - ("industry_average_duration_years", "IndustryAverageDurationYears"), - ("industry_average_number_of_functional_units", "IndustryAverageNumberOfFunctionalUnits"), - ("utility", "Utility"), - ] - - def __init__( - self, - *, - industry_average_duration_years: Optional[float] = None, - industry_average_number_of_functional_units: Optional[float] = None, - utility: Optional[float] = None, - **kwargs: Dict[str, Any], - ) -> None: - super().__init__(**kwargs) - self.industry_average_duration_years = industry_average_duration_years - self.industry_average_number_of_functional_units = industry_average_number_of_functional_units - self.utility = utility - - @property - def industry_average_duration_years(self) -> Optional[float]: - """ - The average lifespan of all examples, throughout the industry, of the kind of product described herein. - - Returns - ------- - Optional[float] - """ - return self._industry_average_duration_years - - @industry_average_duration_years.setter - def industry_average_duration_years(self, value: Optional[float]) -> None: - self._industry_average_duration_years = value - - @property - def industry_average_number_of_functional_units(self) -> Optional[float]: - """ - The average number of functional units delivered, in their lifespan, by all examples, throughout the industry, - of the kind of product represented by this object. - - Returns - ------- - Optional[float] - """ - return self._industry_average_number_of_functional_units - - @industry_average_number_of_functional_units.setter - def industry_average_number_of_functional_units(self, value: Optional[float]) -> None: - self._industry_average_number_of_functional_units = value - - @property - def utility(self) -> Optional[float]: - """ - Directly specifies the utility. - - Returns - ------- - float - """ - return self._utility - - @utility.setter - def utility(self, value: Optional[float]) -> None: - self._utility = value - - -class ProductLifeSpan(BaseType): - """ - Specifies the average life span for the product represented by the BoM. - - Parameters - ---------- - duration_years: float - The product lifespan in years. - number_of_functional_units: Optional[float] - The number of functional units delivered in the lifespan of the product represented by the BoM. - functional_unit_description: Optional[str] - A short (ideally one-word) description of a single functional unit. - utility: Optional[UtilitySpecification] - Indicates how much use can be obtained from the product represented by the BoM, compared to an - industry-average example. - """ - - _props = [("UtilitySpecification", "utility", "Utility")] - _simple_values = [ - ("duration_years", "DurationYears"), - ("number_of_functional_units", "NumberOfFunctionalUnits"), - ("functional_unit_description", "FunctionalUnitDescription"), - ] - - def __init__( - self, - *, - duration_years: float, - number_of_functional_units: Optional[float] = None, - functional_unit_description: Optional[str] = None, - utility: Optional[UtilitySpecification] = None, - **kwargs: Dict[str, Any], - ) -> None: - super().__init__(**kwargs) - self.duration_years = duration_years - self.number_of_functional_units = number_of_functional_units - self.functional_unit_description = functional_unit_description - self.utility = utility - - @property - def duration_years(self) -> float: - """ - The product lifespan in years. - - Returns - ------- - float - """ - return self._duration_years - - @duration_years.setter - def duration_years(self, value: float) -> None: - self._duration_years = value - - @property - def number_of_functional_units(self) -> Optional[float]: - """ - The number of functional units delivered in the lifespan of the product represented by the BoM. - - Returns - ------- - Optional[float] - """ - return self._number_of_functional_units - - @number_of_functional_units.setter - def number_of_functional_units(self, value: Optional[float]) -> None: - self._number_of_functional_units = value - - @property - def functional_unit_description(self) -> Optional[str]: - """ - A short (ideally one-word) description of a single functional unit. - - Returns - ------- - Optional[str] - """ - return self._functional_unit_description - - @functional_unit_description.setter - def functional_unit_description(self, value: Optional[str]) -> None: - self._functional_unit_description = value - - @property - def utility(self) -> Optional[UtilitySpecification]: - """ - Indicates how much use can be obtained from the product represented by the BoM, compared to an industry-average - example. - - Returns - ------- - Optional[UtilitySpecification] - """ - return self._utility - - @utility.setter - def utility(self, value: Optional[UtilitySpecification]) -> None: - self._utility = value - - -class UsePhase(BaseType): - """ - Provides information about the sustainability of the product whilst in use, including electricity use, emissions - due to transport, emissions due to electricity consumption, and the expected life span of the product. - - Parameters - ---------- - product_life_span: ProductLifeSpan - Specifies the expected life span of the product. - electricity_mix: Optional[ElectricityMix] - Specifies the proportion of electricity within the destination country that comes from fossil fuels. - static_mode: Optional[StaticMode] - Provides information about the expected static use of the product. - mobile_mode: Optional[MobileMode] - Provides information about the expected mobile use of the product. - """ - - _props = [ - ("ProductLifeSpan", "product_life_span", "ProductLifeSpan"), - ("ElectricityMix", "electricity_mix", "ElectricityMix"), - ("StaticMode", "static_mode", "StaticMode"), - ("MobileMode", "mobile_mode", "MobileMode"), - ] - - def __init__( - self, - *, - product_life_span: ProductLifeSpan, - electricity_mix: Optional[ElectricityMix] = None, - static_mode: Optional[StaticMode] = None, - mobile_mode: Optional[MobileMode] = None, - **kwargs: Dict[str, Any], - ) -> None: - super().__init__(**kwargs) - self.product_life_span = product_life_span - self.electricity_mix = electricity_mix - self.static_mode = static_mode - self.mobile_mode = mobile_mode - - @property - def product_life_span(self) -> ProductLifeSpan: - """ - Specifies the expected life span of the product. - - Returns - ------- - ProductLifeSpan - """ - return self._product_life_span - - @product_life_span.setter - def product_life_span(self, value: ProductLifeSpan) -> None: - self._product_life_span = value - - @property - def electricity_mix(self) -> Optional[ElectricityMix]: - """ - Specifies the proportion of electricity within the destination country that comes from fossil fuels. - - Returns - ------- - Optional[ElectricityMix] - """ - return self._electricity_mix - - @electricity_mix.setter - def electricity_mix(self, value: Optional[ElectricityMix]) -> None: - self._electricity_mix = value - - @property - def static_mode(self) -> Optional[StaticMode]: - """ - Provides information about the expected static use of the product. - - Returns - ------- - Optional[StaticMode] - """ - return self._static_mode - - @static_mode.setter - def static_mode(self, value: Optional[StaticMode]) -> None: - self._static_mode = value - - @property - def mobile_mode(self) -> Optional[MobileMode]: - """ - Provides information about the expected mobile use of the product. - - Returns - ------- - Optional[MobileMode] - """ - return self._mobile_mode - - @mobile_mode.setter - def mobile_mode(self, value: Optional[MobileMode]) -> None: - self._mobile_mode = value - - -class BoMDetails(BaseType): - """ - Explanatory information about a BoM. - - Parameters - ---------- - notes: Optional[str] - General notes for the BoM object. - picture_url: Optional[str] - The URL of an image to include at the top of the report. This URL must be accessible from the reporting - services server. - product_name: Optional[str] - The product name. - """ - - _simple_values = [("notes", "Notes"), ("picture_url", "PictureUrl"), ("product_name", "ProductName")] - - def __init__( - self, - *, - notes: Optional[str] = None, - picture_url: Optional[str] = None, - product_name: Optional[str] = None, - **kwargs: Dict[str, Any], - ) -> None: - super().__init__(**kwargs) - self.notes = notes - self.picture_url = picture_url - self.product_name = product_name - - @property - def notes(self) -> Optional[str]: - """ - General notes for the BoM object. - - Returns - ------- - Optional[str] - """ - return self._notes - - @notes.setter - def notes(self, value: Optional[str]) -> None: - self._notes = value - - @property - def picture_url(self) -> Optional[str]: - """ - The URL of an image to include at the top of the report. This URL must be accessible from the reporting - services server. - - Returns - ------- - Optional[str] - """ - return self._picture_url - - @picture_url.setter - def picture_url(self, value: Optional[str]) -> None: - self._picture_url = value - - @property - def product_name(self) -> Optional[str]: - """ - The product name. - - Returns - ------- - Optional[str] - """ - return self._product_name - - @product_name.setter - def product_name(self, value: Optional[str]) -> None: - self._product_name = value - - -class TransportStage(InternalIdentifierMixin, BaseType): +@dataclass +class TransportStage(BaseType): """ Defines the transportation applied to an object, in terms of the generic transportation type (stored in the Database) and the amount of that transport used in this instance. - - Parameters - ---------- - name: str - Name of this transportation stage, used only to identify the stage within the BoM. - mi_transport_reference: MIRecordReference - Reference to a record in the MI Database representing the means of transportation for this stage. - distance: UnittedValue - The distance covered by this transportation stage. - """ _props = [ @@ -1625,76 +661,25 @@ class TransportStage(InternalIdentifierMixin, BaseType): ] _simple_values = [("name", "Name")] - def __init__( - self, - *, - name: str, - mi_transport_reference: MIRecordReference, - distance: UnittedValue, - **kwargs: Any, - ) -> None: - super().__init__(**kwargs) - self.name = name - self.mi_transport_reference = mi_transport_reference - self.distance = distance - - @property - def name(self) -> str: - """ - Name of this transportation stage, used only to identify the stage within the BoM. - - Returns - ------- - str - """ - return self._name - - @name.setter - def name(self, value: str) -> None: - self._name = value - - @property - def mi_transport_reference(self) -> MIRecordReference: - """ - Reference to a record in the MI Database representing the means of transportation for this stage. - - Returns - ------- - MIRecordReference - """ - return self._mi_transport_reference - - @mi_transport_reference.setter - def mi_transport_reference(self, value: MIRecordReference) -> None: - self._mi_transport_reference = value + name: str + """Name of this transportation stage, used only to identify the stage within the BoM.""" - @property - def distance(self) -> UnittedValue: - """ - The distance covered by this transportation stage. + mi_transport_reference: MIRecordReference + """Reference to a record in the MI Database representing the means of transportation for this stage.""" - Returns - ------- - UnittedValue - """ - return self._distance + distance: UnittedValue + """The distance covered by this transportation stage.""" - @distance.setter - def distance(self, value: UnittedValue) -> None: - self._distance = value + internal_id: Optional[str] = None + """A unique identity for this object in this BoM. This identity is only for internal use, allowing other elements + to reference this element.""" -class Specification(CommonIdentifiersMixin, InternalIdentifierMixin, BaseType): +@dataclass +class Specification(BaseType): """ A specification for a part, process, or material. Refers to a record with the MI Database storing the details of the specification and its impact. - - Parameters - ---------- - mi_specification_reference: MIRecordReference - Reference identifying the record representing this specification in the MI Database. - quantity: Optional[UnittedValue] - A quantification of the specification, if applicable. """ _props = [ @@ -1702,125 +687,58 @@ class Specification(CommonIdentifiersMixin, InternalIdentifierMixin, BaseType): ("UnittedValue", "quantity", "Quantity"), ] - def __init__( - self, - *, - mi_specification_reference: MIRecordReference, - quantity: Optional[UnittedValue] = None, - **kwargs: Any, - ) -> None: - super().__init__(**kwargs) - self.mi_specification_reference = mi_specification_reference - self.quantity = quantity - - @property - def mi_specification_reference(self) -> MIRecordReference: - """ - Reference identifying the record representing this specification in the MI Database. + mi_specification_reference: MIRecordReference + """Reference identifying the record representing this specification in the MI Database.""" - Returns - ------- - MIRecordReference - """ - return self._mi_specification_reference + quantity: Optional[UnittedValue] = None + """A quantification of the specification, if applicable.""" - @mi_specification_reference.setter - def mi_specification_reference(self, value: MIRecordReference) -> None: - self._mi_specification_reference = value + identity: Optional[str] = None + """A display identity for the object.""" - @property - def quantity(self) -> Optional[UnittedValue]: - """ - A quantification of the specification, if applicable. + name: Optional[str] = None + """A display name for the object.""" - Returns - ------- - Optional[UnittedValue] - """ - return self._quantity + external_identity: Optional[str] = None + """A temporary reference populated and used by applications to refer to the item within the BoM.""" - @quantity.setter - def quantity(self, value: Optional[UnittedValue]) -> None: - self._quantity = value + internal_id: Optional[str] = None + """A unique identity for this object in this BoM. This identity is only for internal use, allowing other elements + to reference this element.""" -class Substance(CommonIdentifiersMixin, InternalIdentifierMixin, BaseType): +@dataclass +class Substance(BaseType): """ A substance within a part, semi-finished part, material or specification. The substance is stored in the - Database. - - Parameters - ---------- - mi_substance_reference: MIRecordReference - Reference identifying the record representing the substance in the MI Database. - percentage: Optional[Float] - If the parent object consists of more than one substance, this defines the percentage of this - substance. - category: Optional[Category] - Represents whether the substance remains present in the material after production. - """ + Database.""" _simple_values = [("percentage", "Percentage")] _props = [("MIRecordReference", "mi_substance_reference", "MISubstanceReference")] - def __init__( - self, - *, - mi_substance_reference: MIRecordReference, - percentage: Optional[float] = None, - category: Optional[Category] = None, - **kwargs: Any, - ) -> None: - super().__init__(**kwargs) - self.mi_substance_reference = mi_substance_reference - self.percentage = percentage - self.category = category - - @property - def mi_substance_reference(self) -> MIRecordReference: - """ - Reference identifying the record representing the substance in the MI Database. - - Returns - ------- - MIRecordReference - """ - return self._mi_substance_reference + mi_substance_reference: MIRecordReference + """Reference identifying the record representing the substance in the MI Database.""" - @mi_substance_reference.setter - def mi_substance_reference(self, value: MIRecordReference) -> None: - self._mi_substance_reference = value + percentage: Optional[float] = None + """If the parent object consists of more than one substance, this defines the percentage of this + substance.""" - @property - def percentage(self) -> Optional[float]: - """ - If the parent object consists of more than one substance, this defines the percentage of this substance. + category: Optional[Category] = None + """Represents whether the substance remains present in the material after production.""" - Returns - ------- - Optional[float] - """ - return self._percentage + identity: Optional[str] = None + """A display identity for the object.""" - @percentage.setter - def percentage(self, value: Optional[float]) -> None: - self._percentage = value + name: Optional[str] = None + """A display name for the object.""" - @property - def category(self) -> Optional[Category]: - """ - Represents whether the substance remains present in the material after production. + external_identity: Optional[str] = None + """A temporary reference populated and used by applications to refer to the item within the BoM.""" - Returns - ------- - Optional[Category] - """ - return self._category - - @category.setter - def category(self, value: Optional[Category]) -> None: - self._category = value + internal_id: Optional[str] = None + """A unique identity for this object in this BoM. This identity is only for internal use, allowing other elements + to reference this element.""" @classmethod def _process_custom_fields(cls, obj: Dict, bom_reader: BoMReader) -> Dict[str, Any]: @@ -1839,23 +757,11 @@ def _write_custom_fields(self, obj: Dict, bom_writer: BoMWriter) -> None: obj[category_field_name] = self.category.to_string() -class Process(CommonIdentifiersMixin, InternalIdentifierMixin, BaseType): +@dataclass +class Process(BaseType): """ A process that is applied to a subassembly, part, semi-finished part or material. The process is stored in the Database. - - Parameters - ---------- - mi_process_reference: MIRecordReference - Reference identifying a record in the MI Database containing information about this process. - dimension_type: DimensionType - Object defining the dimension affected by the process, for example area for coatings, or mass removed for - machining operations. - percentage: Optional[float] - Fraction of the object affected by the process, with basis specified by ``dimension_type``. Only supported for - dimension types ``Mass`` and ``MassRemoved``. - quantity: Optional[UnittedValue] - A quantification of the process according to its dimension type. """ _simple_values = [("percentage", "Percentage")] @@ -1865,20 +771,32 @@ class Process(CommonIdentifiersMixin, InternalIdentifierMixin, BaseType): ("UnittedValue", "quantity", "Quantity"), ] - def __init__( - self, - *, - mi_process_reference: MIRecordReference, - dimension_type: DimensionType, - percentage: Optional[float] = None, - quantity: Optional[UnittedValue] = None, - **kwargs: Any, - ) -> None: - super().__init__(**kwargs) - self.mi_process_reference = mi_process_reference - self.dimension_type = dimension_type - self.percentage = percentage - self.quantity = quantity + mi_process_reference: MIRecordReference + """Reference identifying a record in the MI Database containing information about this process.""" + + dimension_type: DimensionType + """Object defining the dimension affected by the process, for example area for coatings, or mass removed for + machining operations.""" + + percentage: Optional[float] = None + """Fraction of the object affected by the process, with basis specified by ``dimension_type``. Only supported for + dimension types ``Mass`` and ``MassRemoved``.""" + + quantity: Optional[UnittedValue] = None + """A quantification of the process according to its dimension type.""" + + identity: Optional[str] = None + """A display identity for the object.""" + + name: Optional[str] = None + """A display name for the object.""" + + external_identity: Optional[str] = None + """A temporary reference populated and used by applications to refer to the item within the BoM.""" + + internal_id: Optional[str] = None + """A unique identity for this object in this BoM. This identity is only for internal use, allowing other elements + to reference this element.""" @classmethod def _process_custom_fields(cls, obj: Dict, bom_reader: BoMReader) -> Dict[str, Any]: @@ -1894,90 +812,11 @@ def _write_custom_fields(self, obj: Dict, bom_writer: BoMWriter) -> None: dimension_field_name = bom_writer._get_qualified_name(self, "DimensionType") obj[dimension_field_name] = self.dimension_type.to_string() - @property - def mi_process_reference(self) -> MIRecordReference: - """ - Reference identifying a record in the MI Database containing information about this process. - - Returns - ------- - MIRecordReference - """ - return self._mi_process_reference - - @mi_process_reference.setter - def mi_process_reference(self, value: MIRecordReference) -> None: - self._mi_process_reference = value - - @property - def dimension_type(self) -> DimensionType: - """ - Object defining the dimension affected by the process, for example ``Area`` for coatings, or ``MassRemoved`` for - machining operations. - - Returns - ------- - DimensionType - """ - return self._dimension_type - - @dimension_type.setter - def dimension_type(self, value: DimensionType) -> None: - self._dimension_type = value - - @property - def percentage(self) -> Optional[float]: - """ - Fraction of the object affected by the process, with basis specified by ``dimension_type``. Only supported for - dimension types ``Mass`` and ``MassRemoved``. - - Returns - ------- - Optional[float] - """ - return self._percentage - - @percentage.setter - def percentage(self, value: Optional[float]) -> None: - self._percentage = value - - @property - def quantity(self) -> Optional[UnittedValue]: - """ - A quantification of the process according to its dimension type. - - Returns - ------- - Optional[UnittedValue] - """ - return self._quantity - - @quantity.setter - def quantity(self, value: Optional[UnittedValue]) -> None: - self._quantity = value - -class Material(CommonIdentifiersMixin, InternalIdentifierMixin, BaseType): +@dataclass +class Material(BaseType): """ A Material within a part or semi-finished part. The material is stored in the Database. - - Parameters - ---------- - mi_material_reference: MIRecordReference - Reference identifying the material record within the MI Database. - percentage: Optional[float] - The fraction of the part consisting of this material. Provide either this or ``mass``. - mass: Optional[UnittedValue] - The mass of this material present within the part. Provide either this or ``percentage``. - recycle_content_is_typical: Optional[bool] - If True, indicates that the material's recyclability is typical, the value in the MI record will be used. - recycle_content_percentage: Optional[float] - If the recyclability is not typical for this material, or no typical value is available in the MI Database, - this value indicates which percentage of this material can be recycled. - processes: List[Process] - Any processes associated with the production and preparation of this material. - end_of_life_fates: List[EndOfLifeFate] - The fates of this material once the product is disposed of. """ _simple_values = [("percentage", "Percentage")] @@ -1994,212 +833,74 @@ class Material(CommonIdentifiersMixin, InternalIdentifierMixin, BaseType): "EndOfLifeFate", ), ] + mi_material_reference: MIRecordReference + """Reference identifying the material record within the MI Database.""" - def __init__( - self, - *, - mi_material_reference: MIRecordReference, - percentage: Optional[float] = None, - mass: Optional[UnittedValue] = None, - recycle_content_is_typical: Optional[bool] = None, - recycle_content_percentage: Optional[float] = None, - processes: Optional[List[Process]] = None, - end_of_life_fates: Optional[List[EndOfLifeFate]] = None, - **kwargs: Any, - ) -> None: - super().__init__(**kwargs) - self.percentage = percentage - self.mass = mass - self.mi_material_reference = mi_material_reference - self.recycle_content_is_typical = recycle_content_is_typical - self.recycle_content_percentage = recycle_content_percentage - if processes is None: - processes = [] - self.processes = processes - if end_of_life_fates is None: - end_of_life_fates = [] - self.end_of_life_fates = end_of_life_fates - - @classmethod - def _process_custom_fields(cls, obj: Dict, bom_reader: BoMReader) -> Dict[str, Any]: - props = super()._process_custom_fields(obj, bom_reader) - - recycle_content_obj = bom_reader.get_field(Material, obj, "RecycleContent") - if recycle_content_obj is not None: - typical_obj = bom_reader.get_field(Material, recycle_content_obj, "Typical") - if typical_obj is not None: - props["recycle_content_is_typical"] = typical_obj - percentage_obj = bom_reader.get_field(Material, recycle_content_obj, "Percentage") - if percentage_obj is not None: - props["recycle_content_percentage"] = percentage_obj - return props - - def _write_custom_fields(self, obj: Dict, bom_writer: BoMWriter) -> None: - super()._write_custom_fields(obj, bom_writer) - recycle_content_name = bom_writer._get_qualified_name(self, "RecycleContent") - recycle_element = {} - if self._recycle_content_is_typical is not None: - typical_name = bom_writer._get_qualified_name(self, "Typical") - recycle_element[typical_name] = self._recycle_content_is_typical - elif self._recycle_content_is_typical is not None: - percentage_name = bom_writer._get_qualified_name(self, "Percentage") - recycle_element[percentage_name] = self._recycle_content_percentage - else: - return - obj[recycle_content_name] = recycle_element - - @property - def mi_material_reference(self) -> MIRecordReference: - """ - Reference identifying the material record within the MI Database. - - Returns - ------- - MIRecordReference - """ - return self._mi_material_reference - - @mi_material_reference.setter - def mi_material_reference(self, value: MIRecordReference) -> None: - self._mi_material_reference = value - - @property - def percentage(self) -> Optional[float]: - """ - The fraction of the part consisting of this material. Provide either this or ``mass``. - - Returns - ------- - Optional[float] - """ - return self._percentage + percentage: Optional[float] = None + """The fraction of the part consisting of this material. Provide either this or ``mass``.""" - @percentage.setter - def percentage(self, value: Optional[float]) -> None: - self._percentage = value + mass: Optional[UnittedValue] = None + """The mass of this material present within the part. Provide either this or ``percentage``.""" - @property - def mass(self) -> Optional[UnittedValue]: - """ - The mass of this material present within the part. Provide either this or ``percentage``. + recycle_content_is_typical: Optional[bool] = None + """If True, indicates that the material's recyclability is typical, the value in the MI record will be used.""" - Returns - ------- - Optional[UnittedValue] - """ - return self._mass + recycle_content_percentage: Optional[float] = None + """If the recyclability is not typical for this material, or no typical value is available in the MI Database, + this value indicates which percentage of this material can be recycled.""" - @mass.setter - def mass(self, value: Optional[UnittedValue]) -> None: - self._mass = value + processes: List[Process] = field(default_factory=list) + """Any processes associated with the production and preparation of this material.""" - @property - def recycle_content_is_typical(self) -> Optional[bool]: - """ - If True, indicates that the material's recyclability is typical, the value in the MI record will be used. If - False or not provided then you must provide the ``recycle_content_percentage`` value to manually specify what - fraction of the material is recyclable. + end_of_life_fates: List[EndOfLifeFate] = field(default_factory=list) + """The fates of this material once the product is disposed of.""" - Returns - ------- - Optional[bool] - """ - return self._recycle_content_is_typical + identity: Optional[str] = None + """A display identity for the object.""" - @recycle_content_is_typical.setter - def recycle_content_is_typical(self, value: Optional[bool]) -> None: - self._recycle_content_is_typical = value + name: Optional[str] = None + """A display name for the object.""" - @property - def recycle_content_percentage(self) -> Optional[float]: - """ - If the recyclability is not typical for this material, or no typical value is available in the MI Database, this - value indicates which percentage of this material can be recycled. + external_identity: Optional[str] = None + """A temporary reference populated and used by applications to refer to the item within the BoM.""" - Returns - ------- - Optional[float] - """ - return self._recycle_content_percentage - - @recycle_content_percentage.setter - def recycle_content_percentage(self, value: Optional[float]) -> None: - self._recycle_content_percentage = value - - @property - def processes(self) -> List[Process]: - """ - Any processes associated with the production and preparation of this material. - - Returns - ------- - List[Process] - """ - return self._processes + internal_id: Optional[str] = None + """A unique identity for this object in this BoM. This identity is only for internal use, allowing other elements + to reference this element.""" - @processes.setter - def processes(self, value: List[Process]) -> None: - self._processes = value - - @property - def end_of_life_fates(self) -> List[EndOfLifeFate]: - """ - The fates of this material once the product is disposed of. + @classmethod + def _process_custom_fields(cls, obj: Dict, bom_reader: BoMReader) -> Dict[str, Any]: + props = super()._process_custom_fields(obj, bom_reader) - Returns - ------- - List[EndOfLifeFate] - """ - return self._end_of_life_fates + recycle_content_obj = bom_reader.get_field(Material, obj, "RecycleContent") + if recycle_content_obj is not None: + typical_obj = bom_reader.get_field(Material, recycle_content_obj, "Typical") + if typical_obj is not None: + props["recycle_content_is_typical"] = typical_obj + percentage_obj = bom_reader.get_field(Material, recycle_content_obj, "Percentage") + if percentage_obj is not None: + props["recycle_content_percentage"] = percentage_obj + return props - @end_of_life_fates.setter - def end_of_life_fates(self, value: List[EndOfLifeFate]) -> None: - self._end_of_life_fates = value + def _write_custom_fields(self, obj: Dict, bom_writer: BoMWriter) -> None: + super()._write_custom_fields(obj, bom_writer) + recycle_content_name = bom_writer._get_qualified_name(self, "RecycleContent") + recycle_element = {} + if self.recycle_content_is_typical is not None: + typical_name = bom_writer._get_qualified_name(self, "Typical") + recycle_element[typical_name] = self.recycle_content_is_typical + elif self.recycle_content_is_typical is not None: + percentage_name = bom_writer._get_qualified_name(self, "Percentage") + recycle_element[percentage_name] = self.recycle_content_percentage + else: + return + obj[recycle_content_name] = recycle_element -class Part(InternalIdentifierMixin, BaseType): +@dataclass +class Part(BaseType): """ A single part which may or may not be stored in the MI Database. - - Parameters - ---------- - part_number: str - The Part Number associated with this part. - quantity: Optional[UnittedValue] - The quantity of part(s) used in the parent part. For discrete parts, this will be the part count - an - integer with a blank unit (or "Each"). For continuous parts, it will be a mass, length, area or volume - a - float value with an appropriate units. - mass_per_unit_of_measure: Optional[UnittedValue] - The mass of the part, after processing, relative to the unit that Quantity is given in. If MassPerUom is - specified and VolumePerUom is not, then specifying materials within this part is interpreted to be - percentage by mass. - volume_per_unit_of_measure: Optional[UnittedValue] - The volume of the part, after processing, relative to the unit that Quantity is given in. If VolumePerUom - is specified and MassPerUom is not, then specifying materials within this part is interpreted to be - percentage by volume. - mi_part_reference: Optional[MIRecordReference] - A reference identifying a part stored in the MI Database. - non_mi_part_reference: Optional[Union[str, int]] - A reference to a part stored in another system, for informational purposes only. - part_name: Optional[str] - Display name for the part. - external_identity: Optional[str] - A temporary reference populated and used by applications to refer to the item within the BoM. - components: List[Part] - List of subcomponents for this part. - specifications: List[Specification] - List of specifications applying to this part. - materials: List[Material] - List of constituent materials making up this part. - substances: List[Substances] - List of substances contained within this part. - processes: List[Process] - List of processes used in the manufacture of this part. - rohs_exemptions: List[str] - If the part has a RoHS exemption, provide one or more justifications for the exemptions here. If the part is - analyzed as **Non-Compliant** then the RoHS indicator will return **Compliant with Exemptions** instead. - end_of_life_fates: List[EndOfLifeFate] - The fate(s) of the part, at the end-of-life of the product. """ _props = [ @@ -2232,61 +933,61 @@ class Part(InternalIdentifierMixin, BaseType): ), ] - def __init__( - self, - *, - part_number: str, - quantity: Optional[UnittedValue] = None, - mass_per_unit_of_measure: Optional[UnittedValue] = None, - volume_per_unit_of_measure: Optional[UnittedValue] = None, - mi_part_reference: Optional[MIRecordReference] = None, - non_mi_part_reference: Optional[Union[str, int]] = None, - part_name: Optional[str] = None, - external_identity: Optional[str] = None, - components: Optional[List[Part]] = None, - specifications: Optional[List[Specification]] = None, - materials: Optional[List[Material]] = None, - substances: Optional[List[Substance]] = None, - processes: Optional[List[Process]] = None, - rohs_exemptions: Optional[List[str]] = None, - end_of_life_fates: Optional[List[EndOfLifeFate]] = None, - **kwargs: Any, - ): - super().__init__(**kwargs) - self.quantity = quantity - self.mass_per_unit_of_measure = mass_per_unit_of_measure - self.volume_per_unit_of_measure = volume_per_unit_of_measure - self.mi_part_reference = mi_part_reference - self.non_mi_part_reference = non_mi_part_reference - self.part_number = part_number - self.part_name = part_name - self.external_identity = external_identity - if components is None: - components = [] - self.components = components - if specifications is None: - specifications = [] - self.specifications = specifications - if materials is None: - materials = [] - self.materials = materials - if substances is None: - substances = [] - self.substances = substances - if processes is None: - processes = [] - self.processes = processes - if rohs_exemptions is None: - rohs_exemptions = [] - self.rohs_exemptions = rohs_exemptions - if end_of_life_fates is None: - end_of_life_fates = [] - self.end_of_life_fates = end_of_life_fates - - def __repr__(self) -> str: - if len(self._components) == 0: - return f"" - return f"" + part_number: str + """The Part Number associated with this part.""" + + quantity: Optional[UnittedValue] = None + """The quantity of part(s) used in the parent part. For discrete parts, this will be the part count - an + integer with a blank unit (or "Each"). For continuous parts, it will be a mass, length, area or volume - a + float value with an appropriate units.""" + + mass_per_unit_of_measure: Optional[UnittedValue] = None + """The mass of the part, after processing, relative to the unit that Quantity is given in. If MassPerUom is + specified and VolumePerUom is not, then specifying materials within this part is interpreted to be + percentage by mass.""" + + volume_per_unit_of_measure: Optional[UnittedValue] = None + """The volume of the part, after processing, relative to the unit that Quantity is given in. If VolumePerUom + is specified and MassPerUom is not, then specifying materials within this part is interpreted to be + percentage by volume.""" + + mi_part_reference: Optional[MIRecordReference] = None + """A reference identifying a part stored in the MI Database.""" + + non_mi_part_reference: Optional[Union[str, int]] = None + """A reference to a part stored in another system, for informational purposes only.""" + + part_name: Optional[str] = None + """Display name for the part.""" + + external_identity: Optional[str] = None + """A temporary reference populated and used by applications to refer to the item within the BoM.""" # TODO? + + components: List[Part] = field(default_factory=list) + """List of subcomponents for this part.""" + + specifications: List[Specification] = field(default_factory=list) + """List of specifications applying to this part.""" + + materials: List[Material] = field(default_factory=list) + """List of constituent materials making up this part.""" + + substances: List[Substance] = field(default_factory=list) + """List of substances contained within this part.""" + + processes: List[Process] = field(default_factory=list) + """List of processes used in the manufacture of this part.""" + + rohs_exemptions: List[str] = field(default_factory=list) + """If the part has a RoHS exemption, provide one or more justifications for the exemptions here. If the part is + analyzed as **Non-Compliant** then the RoHS indicator will return **Compliant with Exemptions** instead.""" + + end_of_life_fates: List[EndOfLifeFate] = field(default_factory=list) + """The fate(s) of the part, at the end-of-life of the product.""" + + internal_id: Optional[str] = None + """A unique identity for this object in this BoM. This identity is only for internal use, allowing other elements + to reference this element.""" @classmethod def _process_custom_fields(cls, obj: Dict, bom_reader: BoMReader) -> Dict[str, Any]: @@ -2306,280 +1007,40 @@ def _process_custom_fields(cls, obj: Dict, bom_reader: BoMReader) -> Dict[str, A def _write_custom_fields(self, obj: Dict, bom_writer: BoMWriter) -> None: super()._write_custom_fields(obj, bom_writer) - if self._non_mi_part_reference is not None: + if self.non_mi_part_reference is not None: non_mi_field_name = bom_writer._get_qualified_name(self, "NonMIPartReference") - obj[non_mi_field_name] = self._non_mi_part_reference - if len(self._rohs_exemptions) > 0: + obj[non_mi_field_name] = self.non_mi_part_reference + if len(self.rohs_exemptions) > 0: rohs_exemptions_field_name = bom_writer._get_qualified_name(self, "RohsExemptions") rohs_exemption_field_name = bom_writer._get_qualified_name(self, "RohsExemption") - rohs_exemptions = {rohs_exemption_field_name: self._rohs_exemptions} + rohs_exemptions = {rohs_exemption_field_name: self.rohs_exemptions} obj[rohs_exemptions_field_name] = rohs_exemptions - @property - def quantity(self) -> Optional[UnittedValue]: - """ - The quantity of part(s) used in the parent part. For discrete parts, this will be the part count - an integer - with a blank unit (or "Each"). For continuous parts, it will be a mass, length, area or volume - a float value - with appropriate units. - - Returns - ------- - Optional[UnittedValue] - """ - return self._quantity - - @quantity.setter - def quantity(self, value: Optional[UnittedValue]) -> None: - self._quantity = value - - @property - def mass_per_unit_of_measure(self) -> Optional[UnittedValue]: - """ - The mass of the part, after processing, relative to the unit that Quantity is given in. If MassPerUom is - specified and VolumePerUom is not, then specifying materials within this part is interpreted to be percentage - by mass. - - Returns - ------- - Optional[UnittedValue] - """ - return self._mass_per_unit_of_measure - - @mass_per_unit_of_measure.setter - def mass_per_unit_of_measure(self, value: Optional[UnittedValue]) -> None: - self._mass_per_unit_of_measure = value - - @property - def volume_per_unit_of_measure(self) -> Optional[UnittedValue]: - """ - The volume of the part, after processing, relative to the unit that Quantity is given in. If VolumePerUom is - specified and MassPerUom is not, then specifying materials within this part is interpreted to be percentage by - volume. - - Returns - ------- - Optional[UnittedValue] - """ - return self._volume_per_unit_of_measure - - @volume_per_unit_of_measure.setter - def volume_per_unit_of_measure(self, value: Optional[UnittedValue]) -> None: - self._volume_per_unit_of_measure = value - - @property - def mi_part_reference(self) -> Optional[MIRecordReference]: - """ - A reference identifying a part stored in the MI Database. - - Returns - ------- - Optional[MIRecordReference] - """ - return self._mi_part_reference - - @mi_part_reference.setter - def mi_part_reference(self, value: Optional[MIRecordReference]) -> None: - self._mi_part_reference = value - - @property - def non_mi_part_reference(self) -> Optional[Union[str, int]]: - """ - A reference to a part stored in another system, for informational purposes only. - - Returns - ------- - Optional[Union[str, int]] - """ - return self._non_mi_part_reference - - @non_mi_part_reference.setter - def non_mi_part_reference(self, value: Optional[Union[str, int]]) -> None: - self._non_mi_part_reference = value - - @property - def part_number(self) -> str: - """ - The Part Number associated with this part. - - Returns - ------- - str - """ - return self._part_number - - @part_number.setter - def part_number(self, value: str) -> None: - self._part_number = value - - @property - def part_name(self) -> Optional[str]: - """ - Display name for the part. - - Returns - ------- - Optional[str] - """ - return self._name - - @part_name.setter - def part_name(self, value: Optional[str]) -> None: - self._name = value - - @property - def external_identity(self) -> Optional[str]: - """ - A temporary reference populated and used by applications to refer to the item within the BoM. - - Returns - ------- - Optional[str] - """ - return self._external_identity - - @external_identity.setter - def external_identity(self, value: Optional[str]) -> None: - self._external_identity = value - - @property - def components(self) -> List[Part]: - """ - List of subcomponents for this part. - - Returns - ------- - List[Part] - """ - return self._components - - @components.setter - def components(self, value: List[Part]) -> None: - self._components = value - - @property - def specifications(self) -> List[Specification]: - """ - List of substances contained within this part. - - Returns - ------- - List[Specification] - """ - - return self._specifications - - @specifications.setter - def specifications(self, value: List[Specification]) -> None: - self._specifications = value - - @property - def materials(self) -> List[Material]: - """ - List of constituent materials making up this part. - - Returns - ------- - List[Material] - """ - return self._materials - - @materials.setter - def materials(self, value: List[Material]) -> None: - self._materials = value - - @property - def substances(self) -> List[Substance]: - """ - List of substances contained within this part. - - Returns - ------- - List[Substance] - """ - return self._substances - - @substances.setter - def substances(self, value: List[Substance]) -> None: - self._substances = value - - @property - def processes(self) -> List[Process]: - """ - List of processes used in the manufacture of this part. - - Returns - ------- - List[Process] - """ - return self._processes - - @processes.setter - def processes(self, value: List[Process]) -> None: - self._processes = value - - @property - def rohs_exemptions(self) -> List[str]: - """ - If the part has a RoHS exemption, provide one or more justifications for the exemptions here. If the part is - analyzed as **Non-Compliant** then the RoHS indicator will return **Compliant with Exemptions** instead. - - Returns - ------- - List[str] - """ - return self._rohs_exemptions - - @rohs_exemptions.setter - def rohs_exemptions(self, value: List[str]) -> None: - self._rohs_exemptions = value - - @property - def end_of_life_fates(self) -> List[EndOfLifeFate]: - """ - The fate(s) of the part, at the end-of-life of the product. - - Returns - ------- - List[EndOfLifeFate] - """ - return self._end_of_life_fates - - @end_of_life_fates.setter - def end_of_life_fates(self, value: List[EndOfLifeFate]) -> None: - self._end_of_life_fates = value - -class AnnotationSource(InternalIdentifierMixin, BaseType): +@dataclass +class AnnotationSource(BaseType): """ An element indicating the source of annotations in the BoM. Each source may be referenced by zero or more annotations. The producer and consumer(s) of the BoM must agree the understood annotation source semantics, particularly regarding the untyped data therein. When a tool consumes and re-produces BoMs, it should generally retain any annotation sources that it does not understand (of course, it can also decide whether to keep, modify or discard those annotation sources that it does understand). + """ - The parameter documentation below is the suggested convention. + _simple_values = [("name", "Name"), ("method", "Method")] - Parameters - ---------- name: str - The name of the software package that generated this annotation. - method: Optional[str] - The calculation method used to generate this annotation. - data: List[Any] - Data that the consumer of the BoM may require. - """ + """The name of the software package that generated this annotation.""" - _simple_values = [("name", "Name"), ("method", "Method")] + method: Optional[str] = None + """The calculation method used to generate this annotation.""" + + data: List[Any] = field(default_factory=list) + """Data that the consumer of the BoM may require.""" - def __init__( - self, *, name: str, method: Optional[str] = None, data: Optional[List[Any]] = None, **kwargs: Any - ) -> None: - super().__init__(**kwargs) - self.name = name - self.method = method - if data is None: - data = [] - self.data = data + internal_id: Optional[str] = None + """A unique identity for this object in this BoM. This identity is only for internal use, allowing other elements + to reference this element.""" @classmethod def _process_custom_fields(cls, obj: Dict, bom_reader: BoMReader) -> Dict[str, Any]: @@ -2591,56 +1052,12 @@ def _process_custom_fields(cls, obj: Dict, bom_reader: BoMReader) -> Dict[str, A return props def _write_custom_fields(self, obj: Dict, bom_writer: BoMWriter) -> None: - if len(self._data) > 0: + if len(self.data) > 0: data_field_name = bom_writer._get_qualified_name(self, "Data") - obj[data_field_name] = self._data - - @property - def name(self) -> str: - """ - The name of the software package that generated this annotation. - - Returns - ------- - str - """ - return self._name - - @name.setter - def name(self, value: str) -> None: - self._name = value - - @property - def method(self) -> Optional[str]: - """ - The calculation method used to generate this annotation. - - Returns - ------- - Optional[str] - """ - return self._method - - @method.setter - def method(self, value: Optional[str]) -> None: - self._method = value - - @property - def data(self) -> List[Any]: - """ - Data that the consumer of the BoM may require. - - Returns - ------- - List[Any] - """ - return self._data - - @data.setter - def data(self, value: List[Any]) -> None: - self._data = value + obj[data_field_name] = self.data +@dataclass class Annotation(BaseType): """ An annotation that can be attached to objects within a BoM. The understood annotation types must be agreed @@ -2652,123 +1069,31 @@ class Annotation(BaseType): Annotations can either be pure textual data, providing additional data or context for an object, or they can provide additional indicators, for example Embodied Energy of Production, or Cost of Raw Materials. - - Parameters - ---------- - target_id: str - The ``internal_identity`` of exactly one element to which the annotation applies. - source_id: Optional[str] - If provided, is the ``internal_identity`` of exactly one ``AnnotationSource`` object describing the source - of the annotation. If absent, no source information is provided. - type_: str - A string value indicating the type of the annotation, the accepted values for this parameter must be agreed - between the produced and consumer(s) of the BoM. - value: Union[str, UnittedValue] - The content of this annotation. """ _props = [("UnittedValue", "value", "Value")] _simple_values = [("type", "type"), ("target_id", "targetId"), ("source_id", "sourceId")] - def __init__( - self, - *, - target_id: str, - source_id: Optional[str] = None, - type_: str, - value: Union[str, UnittedValue], - **kwargs: Dict[str, Any], - ) -> None: - super().__init__(**kwargs) - self.target_id = target_id - self.source_id = source_id - self.type_ = type_ - self.value = value - - @property - def target_id(self) -> str: - """ - The ``internal_identity`` of exactly one element to which the annotation applies. - - Returns - ------- - str - """ - return self._target_id - - @target_id.setter - def target_id(self, value: str) -> None: - self._target_id = value - - @property - def source_id(self) -> Optional[str]: - """ - If provided, is the ``internal_identity`` of exactly one ``AnnotationSource`` object describing the source of - the annotation. If absent, no source information is provided. - - Returns - ------- - str - """ - return self.source_id - - @source_id.setter - def source_id(self, value: Optional[str]) -> None: - self._source_id = value - - @property - def type_(self) -> str: - """ - A string value indicating the type of the annotation, the accepted values for this parameter must be agreed - between the produced and consumer(s) of the BoM. - - Returns - ------- - str - """ - return self._type_ - - @type_.setter - def type_(self, value: str) -> None: - self._type_ = value + target_id: str + """The ``internal_identity`` of exactly one element to which the annotation applies.""" - @property - def value(self) -> Union[str, UnittedValue]: - """ - The content of this annotation + type_: str + """A string value indicating the type of the annotation, the accepted values for this parameter must be agreed + between the produced and consumer(s) of the BoM.""" - Returns - ------- - Union[str, UnittedValue] - """ - return self._value + value: Union[str, UnittedValue] + """The content of this annotation.""" - @value.setter - def value(self, value: Union[str, UnittedValue]) -> None: - self._value = value + source_id: Optional[str] = None + """If provided, is the ``internal_identity`` of exactly one ``AnnotationSource`` object describing the source + of the annotation. If absent, no source information is provided.""" -class BillOfMaterials(InternalIdentifierMixin, BaseType): +@dataclass +class BillOfMaterials(BaseType): """ Type representing the root Bill of Materials object. - - Parameters - ---------- - components: List[Part] - The parts contained within this BoM. - transport_phase: List[TransportStage] - The different forms of transport to which the parts are subject. - use_phase: Optional[UsePhase] - The type of use to which this product is subject. - location: Optional[Location] - The location in which the object represented by the BoM is assembled. - notes: Optional[BoMDetails] - Any optional notes about this BoM. - annotations: List[Annotation] - Any annotations that are associated with objects within the BoM. - annotation_sources: List[AnnotationSource] - Sources for annotations present within the BoM. """ _props = [ @@ -2787,137 +1112,27 @@ class BillOfMaterials(InternalIdentifierMixin, BaseType): ), ] - def __init__( - self, - *, - components: List[Part], - transport_phase: Optional[List[TransportStage]] = None, - use_phase: Optional[UsePhase] = None, - location: Optional[Location] = None, - notes: Optional[BoMDetails] = None, - annotations: Optional[List[Annotation]] = None, - annotation_sources: Optional[List[AnnotationSource]] = None, - **kwargs: Any, - ) -> None: - super().__init__(**kwargs) - self.components = components - if transport_phase is None: - transport_phase = [] - self.transport_phase = transport_phase - self.use_phase = use_phase - self.location = location - self.notes = notes - if annotations is None: - annotations = [] - self.annotations = annotations - if annotation_sources is None: - annotation_sources = [] - self.annotation_sources = annotation_sources - - def __repr__(self) -> str: - return f"" - - @property - def components(self) -> List[Part]: - """ - The parts contained within this BoM. - - Returns - ------- - List[Part] - """ - return self._components - - @components.setter - def components(self, value: List[Part]) -> None: - self._components = value - - @property - def transport_phase(self) -> List[TransportStage]: - """ - The different forms of transport to which the parts are subject. - - Returns - ------- - List[TransportStage] - """ - return self._transport_phase - - @transport_phase.setter - def transport_phase(self, value: List[TransportStage]) -> None: - self._transport_phase = value - - @property - def use_phase(self) -> Optional[UsePhase]: - """ - The type of use to which this product is subject. - - Returns - ------- - Optional[UsePhase] - """ - return self._use_phase - - @use_phase.setter - def use_phase(self, value: Optional[UsePhase]) -> None: - self._use_phase = value - - @property - def location(self) -> Optional[Location]: - """ - The location in which the object represented by the BoM is assembled. - - Returns - ------- - Optional[Location] - """ - return self._location - - @location.setter - def location(self, value: Optional[Location]) -> None: - self._location = value - - @property - def notes(self) -> Optional[BoMDetails]: - """ - Any optional notes about this BoM. - - Returns - ------- - Optional[BoMDetails] - """ - return self._notes + components: List[Part] + """The parts contained within this BoM.""" - @notes.setter - def notes(self, value: Optional[BoMDetails]) -> None: - self._notes = value + transport_phase: List[TransportStage] = field(default_factory=list) + """The different forms of transport to which the parts are subject.""" - @property - def annotations(self) -> List[Annotation]: - """ - Any annotations that are associated with objects within the BoM. + use_phase: Optional[UsePhase] = None + """The type of use to which this product is subject.""" - Returns - ------- - List[Annotation] - """ - return self._annotations + location: Optional[Location] = None + """The location in which the object represented by the BoM is assembled.""" - @annotations.setter - def annotations(self, value: List[Annotation]) -> None: - self._annotations = value + notes: Optional[BoMDetails] = None + """Any optional notes about this BoM.""" - @property - def annotation_sources(self) -> List[AnnotationSource]: - """ - Sources for annotations present within the BoM. + annotations: List[Annotation] = field(default_factory=list) + """Any annotations that are associated with objects within the BoM.""" - Returns - ------- - List[AnnotationSource] - """ - return self._annotation_sources + annotation_sources: List[AnnotationSource] = field(default_factory=list) + """Sources for annotations present within the BoM.""" - @annotation_sources.setter - def annotation_sources(self, value: List[AnnotationSource]) -> None: - self._annotation_sources = value + internal_id: Optional[str] = None + """A unique identity for this object in this BoM. This identity is only for internal use, allowing other elements + to reference this element.""" From f4ced58eaaef9aeeb023090558bb0a2079e3145d Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Fri, 27 Oct 2023 12:16:56 +0200 Subject: [PATCH 202/275] Update bom types docs Remove protocols and base class --- doc/source/api/bom_builder/api.rst | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/doc/source/api/bom_builder/api.rst b/doc/source/api/bom_builder/api.rst index 2044a04c..3b251260 100644 --- a/doc/source/api/bom_builder/api.rst +++ b/doc/source/api/bom_builder/api.rst @@ -6,9 +6,10 @@ BoM Object Model .. _ref_grantami_bomanalytics_api_billofmaterials: .. autoclass:: ansys.grantami.bomanalytics.bom_types._bom_types.BillOfMaterials :inherited-members: - :member-order: by_mro_by_source + :member-order: bysource .. automodule:: ansys.grantami.bomanalytics.bom_types._bom_types - :exclude-members: BillOfMaterials + :exclude-members: BillOfMaterials, BaseType, HasNamespace, SupportsCustomFields :inherited-members: + :member-order: bysource From f0ad8ccf00b360d50d32be9a0ffc077a17742bec Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Fri, 27 Oct 2023 17:52:53 +0200 Subject: [PATCH 203/275] Fix bom types issues --- .../bomanalytics/bom_types/_bom_types.py | 27 +++++++++++++++---- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py b/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py index b10213fa..61d900b3 100644 --- a/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py +++ b/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py @@ -255,7 +255,7 @@ class PartialTableReference(BaseType): descending priority order is: tableIdentity, tableGUID, tableName. """ - _simple_values = [("table_identity", "tableIdentity"), ("table_guid", "tableGuid"), ("table_name", "tableName")] + _simple_values = [("table_identity", "tableIdentity"), ("table_guid", "tableGUID"), ("table_name", "tableName")] _namespace = "http://www.grantadesign.com/12/05/GrantaBaseTypes" @@ -515,7 +515,7 @@ class MobileMode(BaseType): ("MIRecordReference", "mi_transport_reference", "MITransportReference"), ("UnittedValue", "distance_travelled_per_day", "DistanceTravelledPerDay"), ] - _simple_values = [("days_user_per_year", "DaysUsedPerYear")] + _simple_values = [("days_used_per_year", "DaysUsedPerYear")] mi_transport_reference: MIRecordReference """Reference to a record in the MI database representing the means of transport for this product during use.""" @@ -537,7 +537,6 @@ class StaticMode(BaseType): ("MIRecordReference", "mi_energy_conversion_reference", "MIEnergyConversionReference"), ("UnittedValue", "power_rating", "PowerRating"), ] - _simple_values = [("days_used_per_year", "DaysUsedPerYear"), ("hours_used_per_day", "HoursUsedPerDay")] mi_energy_conversion_reference: MIRecordReference """Reference to a record in the MI database representing the primary energy conversion taking place when the @@ -552,6 +551,23 @@ class StaticMode(BaseType): hours_used_per_day: float """The number of hours per day of use that the product will be used.""" + @classmethod + def _process_custom_fields(cls, obj: Dict, bom_reader: BoMReader) -> Dict[str, Any]: + props = super()._process_custom_fields(obj, bom_reader) + usage_obj = bom_reader.get_field(cls, obj, "Usage") + if usage_obj is not None: + props["hours_used_per_day"] = bom_reader.get_field(cls, usage_obj, "HoursUsedPerDay") + props["days_used_per_year"] = bom_reader.get_field(cls, usage_obj, "DaysUsedPerYear") + return props + + def _write_custom_fields(self, obj: Dict, bom_writer: BoMWriter) -> None: + super()._write_custom_fields(obj, bom_writer) + usage_dict = { + bom_writer._get_qualified_name(self, "DaysUsedPerYear"): self.days_used_per_year, + bom_writer._get_qualified_name(self, "HoursUsedPerDay"): self.hours_used_per_day, + } + obj[bom_writer._get_qualified_name(self, "Usage")] = usage_dict + @dataclass class UtilitySpecification(BaseType): @@ -603,6 +619,7 @@ class ProductLifeSpan(BaseType): industry-average example.""" +@dataclass class UsePhase(BaseType): """ Provides information about the sustainability of the product whilst in use, including electricity use, emissions @@ -889,7 +906,7 @@ def _write_custom_fields(self, obj: Dict, bom_writer: BoMWriter) -> None: if self.recycle_content_is_typical is not None: typical_name = bom_writer._get_qualified_name(self, "Typical") recycle_element[typical_name] = self.recycle_content_is_typical - elif self.recycle_content_is_typical is not None: + elif self.recycle_content_percentage is not None: percentage_name = bom_writer._get_qualified_name(self, "Percentage") recycle_element[percentage_name] = self.recycle_content_percentage else: @@ -1073,7 +1090,7 @@ class Annotation(BaseType): _props = [("UnittedValue", "value", "Value")] - _simple_values = [("type", "type"), ("target_id", "targetId"), ("source_id", "sourceId")] + _simple_values = [("type_", "type"), ("target_id", "targetId"), ("source_id", "sourceId")] target_id: str """The ``internal_identity`` of exactly one element to which the annotation applies.""" From 276f32d0f0248ef344b55f94a21de0fdee8a7b9e Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Fri, 27 Oct 2023 17:58:10 +0200 Subject: [PATCH 204/275] Comment out troublesome properties NonMIPartReference and BoM annotations --- .../bomanalytics/bom_types/_bom_types.py | 29 ++++++++++--------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py b/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py index 61d900b3..637660e3 100644 --- a/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py +++ b/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py @@ -971,8 +971,8 @@ class Part(BaseType): mi_part_reference: Optional[MIRecordReference] = None """A reference identifying a part stored in the MI Database.""" - non_mi_part_reference: Optional[Union[str, int]] = None - """A reference to a part stored in another system, for informational purposes only.""" + # non_mi_part_reference: Optional[str] = None + # """A reference to a part stored in another system, for informational purposes only.""" part_name: Optional[str] = None """Display name for the part.""" @@ -1010,9 +1010,9 @@ class Part(BaseType): def _process_custom_fields(cls, obj: Dict, bom_reader: BoMReader) -> Dict[str, Any]: props = super()._process_custom_fields(obj, bom_reader) - non_mi_part_ref_obj = bom_reader.get_field(Part, obj, "NonMIPartReference") - if non_mi_part_ref_obj is not None: - props["non_mi_part_reference"] = non_mi_part_ref_obj + # non_mi_part_ref_obj = bom_reader.get_field(Part, obj, "NonMIPartReference") + # if non_mi_part_ref_obj is not None: + # props["non_mi_part_reference"] = non_mi_part_ref_obj rohs_exemptions_obj = bom_reader.get_field(Part, obj, "RohsExemptions") if rohs_exemptions_obj is not None: rohs_exemption_obj = bom_reader.get_field( @@ -1024,9 +1024,9 @@ def _process_custom_fields(cls, obj: Dict, bom_reader: BoMReader) -> Dict[str, A def _write_custom_fields(self, obj: Dict, bom_writer: BoMWriter) -> None: super()._write_custom_fields(obj, bom_writer) - if self.non_mi_part_reference is not None: - non_mi_field_name = bom_writer._get_qualified_name(self, "NonMIPartReference") - obj[non_mi_field_name] = self.non_mi_part_reference + # if self.non_mi_part_reference is not None: + # non_mi_field_name = bom_writer._get_qualified_name(self, "NonMIPartReference") + # obj[non_mi_field_name] = self.non_mi_part_reference if len(self.rohs_exemptions) > 0: rohs_exemptions_field_name = bom_writer._get_qualified_name(self, "RohsExemptions") rohs_exemption_field_name = bom_writer._get_qualified_name(self, "RohsExemption") @@ -1093,7 +1093,7 @@ class Annotation(BaseType): _simple_values = [("type_", "type"), ("target_id", "targetId"), ("source_id", "sourceId")] target_id: str - """The ``internal_identity`` of exactly one element to which the annotation applies.""" + """The ``internal_identity`` of exactly one element to which the annotation applies.""" # TODO internal_identity doesn't exist type_: str """A string value indicating the type of the annotation, the accepted values for this parameter must be agreed @@ -1144,11 +1144,12 @@ class BillOfMaterials(BaseType): notes: Optional[BoMDetails] = None """Any optional notes about this BoM.""" - annotations: List[Annotation] = field(default_factory=list) - """Any annotations that are associated with objects within the BoM.""" - - annotation_sources: List[AnnotationSource] = field(default_factory=list) - """Sources for annotations present within the BoM.""" + # TODO fix annotations + # annotations: List[Annotation] = field(default_factory=list) + # """Any annotations that are associated with objects within the BoM.""" + # + # annotation_sources: List[AnnotationSource] = field(default_factory=list) + # """Sources for annotations present within the BoM.""" internal_id: Optional[str] = None """A unique identity for this object in this BoM. This identity is only for internal use, allowing other elements From 94c91b9b01dc7ab72c8c6a792b7ba28cf2d79d98 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Fri, 27 Oct 2023 17:59:15 +0200 Subject: [PATCH 205/275] Add test --- tests/test_bom_handler.py | 280 +++++++++++++++++++++++++++++++++++++- 1 file changed, 277 insertions(+), 3 deletions(-) diff --git a/tests/test_bom_handler.py b/tests/test_bom_handler.py index 8d11f763..a29867ee 100644 --- a/tests/test_bom_handler.py +++ b/tests/test_bom_handler.py @@ -2,12 +2,12 @@ from pathlib import Path import re from typing import Any, Dict - +import uuid from lxml import etree import pytest from ansys.grantami.bomanalytics import BoMHandler -from ansys.grantami.bomanalytics.bom_types import BaseType, BillOfMaterials +from ansys.grantami.bomanalytics.bom_types import * class _TestableBoMHandler(BoMHandler): @@ -90,7 +90,9 @@ def test_roundtrip_parsing_succeeds(self, bom_filename: str): deserialized_bom = bom_handler.load_bom_from_text(input_bom) rendered_bom = bom_handler.dump_bom(deserialized_bom) - bom_handler.load_bom_from_text(rendered_bom) + deserialized_bom_roundtriped = bom_handler.load_bom_from_text(rendered_bom) + + assert deserialized_bom == deserialized_bom_roundtriped class TestBoMDeserialization: @@ -167,3 +169,275 @@ def get_field(self, obj: BaseType, p_path: str) -> Any: def test_simple_bom(self, simple_bom: BillOfMaterials, query: str, value: Any) -> None: deserialized_field = self.get_field(simple_bom, query) assert deserialized_field == value + + +@pytest.fixture +def empty_bom(): + return BillOfMaterials( + components=[], + transport_phase=[], + use_phase=None, + location=None, + notes=None, + internal_id="BomId" + ) + + +@pytest.mark.xfail(reason="Empty BoMs can be instantiated and serialized, but not deserialized.") +def test_empty_bom(empty_bom): + bom_handler = BoMHandler() + text = bom_handler.dump_bom(empty_bom) + + rebuilt = bom_handler.load_bom_from_text(text) + assert rebuilt == empty_bom + + +@pytest.fixture +def full_bom(): + class Counter: + """Used to generate unique identities and test values.""" + def __init__(self): + self._int = 0 + self._float = 0.1 + + def get_int(self) -> int: + self._int += 1 + return self._int + + def get_float(self) -> float: + self._float += 0.1 + return self._float + + counter = Counter() + + # Very invalid BoM for any query, but aims to exercise all fields of all types + # TODO add non mi part reference + return BillOfMaterials( + components=[ + Part( + components=[ + Part( + part_number="SubPart0", + ) + ], + part_number="RootPartNumber", + part_name="RootPartName", + internal_id="RootPartId", + mass_per_unit_of_measure=UnittedValue(counter.get_float(), "RootPartMassPerUnitOfMeasure"), + quantity=UnittedValue(counter.get_float(), "RootPartQuantity"), + volume_per_unit_of_measure=UnittedValue(counter.get_float(), "RootPartVolumePerUnitOfMeasure"), + # Exercise all attributes of all references + mi_part_reference=MIRecordReference( + db_key="RootPartRefDbKey", + record_guid=str(uuid.uuid4()), + record_history_guid=str(uuid.uuid4()), + record_version_number=counter.get_int(), + record_history_identity=counter.get_int(), + record_uid="RootPartRefRecordUID", + lookup_value="RootPartRefLookupValue", + lookup_attribute_reference=MIAttributeReference( + db_key="RootPartRefLookupRefDbKey", + attribute_name="RootPartRefLookupRefAttributeName", + # attribute_identity=counter.get_int(), # TODO Choice with AttName + table_reference=PartialTableReference( + table_identity=counter.get_int(), + table_guid=str(uuid.uuid4()), + table_name="RootPartRefLookupRefTableRefName", + ), + # pseudo=PseudoAttribute.Name, # TODO choice with AttName + is_standard=False, + ), + ), + materials=[ + Material( + mi_material_reference=MIRecordReference( + db_key="RootPartMaterial0RefDbKey", + record_guid=str(uuid.uuid4()), + ), + percentage=counter.get_float(), + # mass=UnittedValue(counter.get_float(), "RootPartMaterial0MassUnit"), # CHoice percentage + # recycle_content_is_typical=True, # TODO choice with recycle_content_percentage, need a second material + recycle_content_percentage=counter.get_float(), + end_of_life_fates=[ + EndOfLifeFate( + mi_end_of_life_reference=MIRecordReference( + db_key="RootPartMaterial0EOLFRefDbKey", + record_guid=str(uuid.uuid4()), + ), + fraction=counter.get_float(), + ) + ], + external_identity="RootPartMaterial0ExternalIdentity", + internal_id="RootPartMaterial0Id", + identity="RootPartMaterial0Identity", + name="RootPartMaterial0Name", + processes=[ + Process( # Process with all fields + mi_process_reference=MIRecordReference( + db_key="RootPartMaterial0Process0RefDbKey", + record_guid=str(uuid.uuid4()), + ), + identity="RootPartMaterial0Process0Identity", + external_identity="RootPartMaterial0Process0ExternalIdentity", + internal_id="RootPartMaterial0Process0Id", + name="RootPartMaterial0Process0Name", + dimension_type=DimensionType.MassRemoved, + percentage=counter.get_float(), + # TODO choice, make another process to test quantity + # quantity=UnittedValue( + # counter.get_float(), + # unit="RootPartMaterial0Process0QuantityUnit", + # ) + ) + ] + ) + ], + processes=[ + Process( # Minimal process + mi_process_reference=MIRecordReference( + db_key="RootPartProcess0RefDbKey", + record_guid=str(uuid.uuid4()), + ), + dimension_type=DimensionType.Mass, + # TODO process requires either Percentage/Quantity, but that's not reflected in typing + percentage=counter.get_float() + ) + ], + specifications=[ + Specification( + mi_specification_reference=MIRecordReference( + db_key="RootPartSpec0RefDbKey", + record_guid=str(uuid.uuid4()), + ), + quantity=UnittedValue(counter.get_float(), "RootPartSpec0QuantityUnit"), + identity="RootPartSpec0Identity", + external_identity="RootPartSpec0ExternalIdentity", + internal_id="RootPartSpec0Id", + name="RootPartSpec0Name", + ) + ], + substances=[ + Substance( + mi_substance_reference=MIRecordReference( + db_key="RootPartSubstance0RefDbKey", + record_guid=str(uuid.uuid4()), + ), + percentage=counter.get_float(), + category=Category.Incorporated, + identity="RootPartSubstance0Identity", + external_identity="RootPartSubstance0ExternalIdentity", + internal_id="RootPartSubstance0Id", + name="RootPartSubstance0Name", + ) + ], + rohs_exemptions=[ + "RootPartRohsExemption0" + "RootPartRohsExemption1" + ], + end_of_life_fates=[ + EndOfLifeFate( + mi_end_of_life_reference=MIRecordReference( + db_key="RootPartEOLFRefDbKey", + record_guid=str(uuid.uuid4()), + ), + fraction=counter.get_float(), + ) + ], + ), + ], + transport_phase=[ + TransportStage( + mi_transport_reference=MIRecordReference( + db_key="Transport0RefDbKey", + record_guid=str(uuid.uuid4()), + ), + name="Transport0Name", + distance=UnittedValue(counter.get_float(), "Transport0DistanceUnit"), + internal_id="Transport0Id", + ), + ], + use_phase=UsePhase( + product_life_span=ProductLifeSpan( + duration_years=counter.get_float(), + number_of_functional_units=counter.get_float(), + functional_unit_description="UsePhaseFunctionalUnitDescription", + utility=UtilitySpecification( + # TODO choice between the three + # industry_average_number_of_functional_units=counter.get_float(), + # industry_average_duration_years=counter.get_float(), + utility=counter.get_float(), + ) + ), + electricity_mix=ElectricityMix( + mi_region_reference=MIRecordReference( + db_key="UsePhaseElectricityMixRefDbKey", + record_guid=str(uuid.uuid4()), + ) + ), + mobile_mode=MobileMode( + mi_transport_reference=MIRecordReference( + db_key="UsePhaseMobileModeRefDbKey", + record_guid=str(uuid.uuid4()), + ), + days_used_per_year=counter.get_float(), + distance_travelled_per_day=UnittedValue( + value=counter.get_float(), + unit="UsePhaseMobileDistancePerDayUnit", + ), + ), + static_mode=StaticMode( + mi_energy_conversion_reference=MIRecordReference( + db_key="UsePhaseStaticModeRefDbKey", + record_guid=str(uuid.uuid4()), + ), + days_used_per_year=counter.get_float(), + hours_used_per_day=counter.get_float(), + power_rating=UnittedValue(counter.get_float(), "UsePhaseStaticModePowerRating"), + ), + ), + location=Location( + mi_location_reference=MIRecordReference( + db_key="LocationRefDbKey", + record_guid=str(uuid.uuid4()), + ), + identity="LocationIdentity", + name="LocationName", + external_identity="LocationExternalIdentity", + internal_id="LocationId", + ), + notes=BoMDetails( + notes="BomNotes", + picture_url="https://www.ansys.com/", + product_name="ProductName", + ), + # annotations=[ # TODO annotations differ quite a lot from schema + # Annotation( + # target_id="RootPartId", + # type_="Annotation0Type", + # source_id="AnnotationSource0Id", + # value="Annotation0", + # ) + # ], + # annotation_sources=[ + # AnnotationSource( + # name="AnnotationSource0Name", + # method="AnnotationSource0Method", + # data=[ + # "AnnotationSource0Data0" + # ], + # internal_id="AnnotationSource0Id" + # ) + # ], + internal_id="BomId" + ) + +# TODO fix annotations + + +def test_everything_bom(full_bom): + bom_handler = BoMHandler() + text = bom_handler.dump_bom(full_bom) + + rebuilt = bom_handler.load_bom_from_text(text) + assert rebuilt == full_bom + From 56e7869c122cf9a643345257fc89dbdfe743c3d2 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Fri, 27 Oct 2023 18:07:30 +0200 Subject: [PATCH 206/275] Fix typing and formatting --- .../bomanalytics/bom_types/_bom_types.py | 6 +- tests/test_bom_handler.py | 135 +++++++++--------- 2 files changed, 69 insertions(+), 72 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py b/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py index 637660e3..6ce325e9 100644 --- a/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py +++ b/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py @@ -908,7 +908,7 @@ def _write_custom_fields(self, obj: Dict, bom_writer: BoMWriter) -> None: recycle_element[typical_name] = self.recycle_content_is_typical elif self.recycle_content_percentage is not None: percentage_name = bom_writer._get_qualified_name(self, "Percentage") - recycle_element[percentage_name] = self.recycle_content_percentage + recycle_element[percentage_name] = self.recycle_content_percentage # type: ignore else: return obj[recycle_content_name] = recycle_element @@ -1093,7 +1093,7 @@ class Annotation(BaseType): _simple_values = [("type_", "type"), ("target_id", "targetId"), ("source_id", "sourceId")] target_id: str - """The ``internal_identity`` of exactly one element to which the annotation applies.""" # TODO internal_identity doesn't exist + """The ``internal_id`` of exactly one element to which the annotation applies.""" type_: str """A string value indicating the type of the annotation, the accepted values for this parameter must be agreed @@ -1103,7 +1103,7 @@ class Annotation(BaseType): """The content of this annotation.""" source_id: Optional[str] = None - """If provided, is the ``internal_identity`` of exactly one ``AnnotationSource`` object describing the source + """If provided, is the ``internal_id`` of exactly one ``AnnotationSource`` object describing the source of the annotation. If absent, no source information is provided.""" diff --git a/tests/test_bom_handler.py b/tests/test_bom_handler.py index a29867ee..452db947 100644 --- a/tests/test_bom_handler.py +++ b/tests/test_bom_handler.py @@ -3,11 +3,11 @@ import re from typing import Any, Dict import uuid + from lxml import etree import pytest -from ansys.grantami.bomanalytics import BoMHandler -from ansys.grantami.bomanalytics.bom_types import * +from ansys.grantami.bomanalytics import BoMHandler, bom_types class _TestableBoMHandler(BoMHandler): @@ -16,7 +16,7 @@ def __init__(self, default_namespace: str, namespace_mapping: Dict[str, str]): self._default_namespace = default_namespace self._namespace_mapping = namespace_mapping - def dump_bom(self, bom: BillOfMaterials) -> str: + def dump_bom(self, bom: bom_types.BillOfMaterials) -> str: raw = super().dump_bom(bom) root = etree.fromstring(raw) @@ -107,7 +107,7 @@ def simple_bom(self): bom_handler = BoMHandler() yield bom_handler.load_bom_from_text(input_bom) - def get_field(self, obj: BaseType, p_path: str) -> Any: + def get_field(self, obj: bom_types.BaseType, p_path: str) -> Any: tokens = p_path.split("/") while True: try: @@ -166,20 +166,15 @@ def get_field(self, obj: BaseType, p_path: str) -> Any: ), ], ) - def test_simple_bom(self, simple_bom: BillOfMaterials, query: str, value: Any) -> None: + def test_simple_bom(self, simple_bom: bom_types.BillOfMaterials, query: str, value: Any) -> None: deserialized_field = self.get_field(simple_bom, query) assert deserialized_field == value @pytest.fixture def empty_bom(): - return BillOfMaterials( - components=[], - transport_phase=[], - use_phase=None, - location=None, - notes=None, - internal_id="BomId" + return bom_types.BillOfMaterials( + components=[], transport_phase=[], use_phase=None, location=None, notes=None, internal_id="BomId" ) @@ -196,6 +191,7 @@ def test_empty_bom(empty_bom): def full_bom(): class Counter: """Used to generate unique identities and test values.""" + def __init__(self): self._int = 0 self._float = 0.1 @@ -212,22 +208,24 @@ def get_float(self) -> float: # Very invalid BoM for any query, but aims to exercise all fields of all types # TODO add non mi part reference - return BillOfMaterials( + return bom_types.BillOfMaterials( components=[ - Part( + bom_types.Part( components=[ - Part( + bom_types.Part( part_number="SubPart0", ) ], part_number="RootPartNumber", part_name="RootPartName", internal_id="RootPartId", - mass_per_unit_of_measure=UnittedValue(counter.get_float(), "RootPartMassPerUnitOfMeasure"), - quantity=UnittedValue(counter.get_float(), "RootPartQuantity"), - volume_per_unit_of_measure=UnittedValue(counter.get_float(), "RootPartVolumePerUnitOfMeasure"), + mass_per_unit_of_measure=bom_types.UnittedValue(counter.get_float(), "RootPartMassPerUnitOfMeasure"), + quantity=bom_types.UnittedValue(counter.get_float(), "RootPartQuantity"), + volume_per_unit_of_measure=bom_types.UnittedValue( + counter.get_float(), "RootPartVolumePerUnitOfMeasure" + ), # Exercise all attributes of all references - mi_part_reference=MIRecordReference( + mi_part_reference=bom_types.MIRecordReference( db_key="RootPartRefDbKey", record_guid=str(uuid.uuid4()), record_history_guid=str(uuid.uuid4()), @@ -235,11 +233,11 @@ def get_float(self) -> float: record_history_identity=counter.get_int(), record_uid="RootPartRefRecordUID", lookup_value="RootPartRefLookupValue", - lookup_attribute_reference=MIAttributeReference( + lookup_attribute_reference=bom_types.MIAttributeReference( db_key="RootPartRefLookupRefDbKey", attribute_name="RootPartRefLookupRefAttributeName", # attribute_identity=counter.get_int(), # TODO Choice with AttName - table_reference=PartialTableReference( + table_reference=bom_types.PartialTableReference( table_identity=counter.get_int(), table_guid=str(uuid.uuid4()), table_name="RootPartRefLookupRefTableRefName", @@ -249,18 +247,20 @@ def get_float(self) -> float: ), ), materials=[ - Material( - mi_material_reference=MIRecordReference( + bom_types.Material( + mi_material_reference=bom_types.MIRecordReference( db_key="RootPartMaterial0RefDbKey", record_guid=str(uuid.uuid4()), ), percentage=counter.get_float(), - # mass=UnittedValue(counter.get_float(), "RootPartMaterial0MassUnit"), # CHoice percentage - # recycle_content_is_typical=True, # TODO choice with recycle_content_percentage, need a second material + # TODO Choice with percentage + # mass=UnittedValue(counter.get_float(), "RootPartMaterial0MassUnit"), + # TODO choice with recycle_content_percentage, need a second material + # recycle_content_is_typical=True, recycle_content_percentage=counter.get_float(), end_of_life_fates=[ - EndOfLifeFate( - mi_end_of_life_reference=MIRecordReference( + bom_types.EndOfLifeFate( + mi_end_of_life_reference=bom_types.MIRecordReference( db_key="RootPartMaterial0EOLFRefDbKey", record_guid=str(uuid.uuid4()), ), @@ -272,8 +272,8 @@ def get_float(self) -> float: identity="RootPartMaterial0Identity", name="RootPartMaterial0Name", processes=[ - Process( # Process with all fields - mi_process_reference=MIRecordReference( + bom_types.Process( # Process with all fields + mi_process_reference=bom_types.MIRecordReference( db_key="RootPartMaterial0Process0RefDbKey", record_guid=str(uuid.uuid4()), ), @@ -281,7 +281,7 @@ def get_float(self) -> float: external_identity="RootPartMaterial0Process0ExternalIdentity", internal_id="RootPartMaterial0Process0Id", name="RootPartMaterial0Process0Name", - dimension_type=DimensionType.MassRemoved, + dimension_type=bom_types.DimensionType.MassRemoved, percentage=counter.get_float(), # TODO choice, make another process to test quantity # quantity=UnittedValue( @@ -289,27 +289,27 @@ def get_float(self) -> float: # unit="RootPartMaterial0Process0QuantityUnit", # ) ) - ] + ], ) ], processes=[ - Process( # Minimal process - mi_process_reference=MIRecordReference( + bom_types.Process( # Minimal process + mi_process_reference=bom_types.MIRecordReference( db_key="RootPartProcess0RefDbKey", record_guid=str(uuid.uuid4()), ), - dimension_type=DimensionType.Mass, + dimension_type=bom_types.DimensionType.Mass, # TODO process requires either Percentage/Quantity, but that's not reflected in typing - percentage=counter.get_float() + percentage=counter.get_float(), ) ], specifications=[ - Specification( - mi_specification_reference=MIRecordReference( + bom_types.Specification( + mi_specification_reference=bom_types.MIRecordReference( db_key="RootPartSpec0RefDbKey", record_guid=str(uuid.uuid4()), ), - quantity=UnittedValue(counter.get_float(), "RootPartSpec0QuantityUnit"), + quantity=bom_types.UnittedValue(counter.get_float(), "RootPartSpec0QuantityUnit"), identity="RootPartSpec0Identity", external_identity="RootPartSpec0ExternalIdentity", internal_id="RootPartSpec0Id", @@ -317,26 +317,23 @@ def get_float(self) -> float: ) ], substances=[ - Substance( - mi_substance_reference=MIRecordReference( + bom_types.Substance( + mi_substance_reference=bom_types.MIRecordReference( db_key="RootPartSubstance0RefDbKey", record_guid=str(uuid.uuid4()), ), percentage=counter.get_float(), - category=Category.Incorporated, + category=bom_types.Category.Incorporated, identity="RootPartSubstance0Identity", external_identity="RootPartSubstance0ExternalIdentity", internal_id="RootPartSubstance0Id", name="RootPartSubstance0Name", ) ], - rohs_exemptions=[ - "RootPartRohsExemption0" - "RootPartRohsExemption1" - ], + rohs_exemptions=["RootPartRohsExemption0" "RootPartRohsExemption1"], end_of_life_fates=[ - EndOfLifeFate( - mi_end_of_life_reference=MIRecordReference( + bom_types.EndOfLifeFate( + mi_end_of_life_reference=bom_types.MIRecordReference( db_key="RootPartEOLFRefDbKey", record_guid=str(uuid.uuid4()), ), @@ -346,57 +343,57 @@ def get_float(self) -> float: ), ], transport_phase=[ - TransportStage( - mi_transport_reference=MIRecordReference( + bom_types.TransportStage( + mi_transport_reference=bom_types.MIRecordReference( db_key="Transport0RefDbKey", record_guid=str(uuid.uuid4()), ), name="Transport0Name", - distance=UnittedValue(counter.get_float(), "Transport0DistanceUnit"), + distance=bom_types.UnittedValue(counter.get_float(), "Transport0DistanceUnit"), internal_id="Transport0Id", ), ], - use_phase=UsePhase( - product_life_span=ProductLifeSpan( + use_phase=bom_types.UsePhase( + product_life_span=bom_types.ProductLifeSpan( duration_years=counter.get_float(), number_of_functional_units=counter.get_float(), functional_unit_description="UsePhaseFunctionalUnitDescription", - utility=UtilitySpecification( + utility=bom_types.UtilitySpecification( # TODO choice between the three # industry_average_number_of_functional_units=counter.get_float(), # industry_average_duration_years=counter.get_float(), utility=counter.get_float(), - ) + ), ), - electricity_mix=ElectricityMix( - mi_region_reference=MIRecordReference( + electricity_mix=bom_types.ElectricityMix( + mi_region_reference=bom_types.MIRecordReference( db_key="UsePhaseElectricityMixRefDbKey", record_guid=str(uuid.uuid4()), ) ), - mobile_mode=MobileMode( - mi_transport_reference=MIRecordReference( + mobile_mode=bom_types.MobileMode( + mi_transport_reference=bom_types.MIRecordReference( db_key="UsePhaseMobileModeRefDbKey", record_guid=str(uuid.uuid4()), ), days_used_per_year=counter.get_float(), - distance_travelled_per_day=UnittedValue( + distance_travelled_per_day=bom_types.UnittedValue( value=counter.get_float(), unit="UsePhaseMobileDistancePerDayUnit", ), ), - static_mode=StaticMode( - mi_energy_conversion_reference=MIRecordReference( + static_mode=bom_types.StaticMode( + mi_energy_conversion_reference=bom_types.MIRecordReference( db_key="UsePhaseStaticModeRefDbKey", record_guid=str(uuid.uuid4()), ), days_used_per_year=counter.get_float(), hours_used_per_day=counter.get_float(), - power_rating=UnittedValue(counter.get_float(), "UsePhaseStaticModePowerRating"), + power_rating=bom_types.UnittedValue(counter.get_float(), "UsePhaseStaticModePowerRating"), ), ), - location=Location( - mi_location_reference=MIRecordReference( + location=bom_types.Location( + mi_location_reference=bom_types.MIRecordReference( db_key="LocationRefDbKey", record_guid=str(uuid.uuid4()), ), @@ -405,13 +402,13 @@ def get_float(self) -> float: external_identity="LocationExternalIdentity", internal_id="LocationId", ), - notes=BoMDetails( + notes=bom_types.BoMDetails( notes="BomNotes", picture_url="https://www.ansys.com/", product_name="ProductName", ), # annotations=[ # TODO annotations differ quite a lot from schema - # Annotation( + # bom_types.Annotation( # target_id="RootPartId", # type_="Annotation0Type", # source_id="AnnotationSource0Id", @@ -419,7 +416,7 @@ def get_float(self) -> float: # ) # ], # annotation_sources=[ - # AnnotationSource( + # bom_types.AnnotationSource( # name="AnnotationSource0Name", # method="AnnotationSource0Method", # data=[ @@ -428,9 +425,10 @@ def get_float(self) -> float: # internal_id="AnnotationSource0Id" # ) # ], - internal_id="BomId" + internal_id="BomId", ) + # TODO fix annotations @@ -440,4 +438,3 @@ def test_everything_bom(full_bom): rebuilt = bom_handler.load_bom_from_text(text) assert rebuilt == full_bom - From 1b05f80a2bdc00b885f7a07e7cd179a56a1c6cd8 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Mon, 30 Oct 2023 10:46:07 +0100 Subject: [PATCH 207/275] Apply suggestions from code review Co-authored-by: Andy Grigg --- doc/source/getting_started/index.rst | 2 +- doc/source/index/intro.rst | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/source/getting_started/index.rst b/doc/source/getting_started/index.rst index 3264afce..794cf14a 100644 --- a/doc/source/getting_started/index.rst +++ b/doc/source/getting_started/index.rst @@ -48,7 +48,7 @@ Substances and Sustainability Reports Bundle. Licensing ~~~~~~~~~ ``MI Restricted Substances`` and ``MI Sustainability`` are licensed separately. -Endpoints available to end users depend on the licenses purchased by their organization. +Endpoints available to end users depend on the available licenses. Verify your installation ~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/doc/source/index/intro.rst b/doc/source/index/intro.rst index 79fcb154..b53a40c8 100644 --- a/doc/source/index/intro.rst +++ b/doc/source/index/intro.rst @@ -20,7 +20,7 @@ The expected use cases for this package are as follows: - Allowing compliance to be determined for BoMs (Bills of Materials) stored in third-party systems, such as PLM or ERP systems. -Starting in version 2024R1, Granta MI provides a method for managing +Starting in version 2024 R1, Granta MI provides a method for managing sustainability data as part of the Restricted Substances and Sustainability solution. The ``grantami-bomanalytics`` package now also exposes an API allowing to evaluate the sustainability performance of BoMs (Bills of Materials). @@ -32,7 +32,7 @@ The Granta MI Restricted Substances solution includes a REST API for evaluating compliance of products, assemblies, specifications, and materials against legislations. The Granta MI Sustainability solution includes a REST API for evaluating the environmental -performance of products, assemblies, materials, manufacturing and transports. +performance of products, assemblies, materials, manufacturing and transport stages. This package automatically abstracts generated code into an easy-to-use client library. From 425572187dfc1761a29dc331a027881293b6d444 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Fri, 27 Oct 2023 18:16:17 +0200 Subject: [PATCH 208/275] Remove special handling for ids --- .../bomanalytics/bom_types/_bom_types.py | 88 +++++++++---------- 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py b/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py index 6ce325e9..a4002e7f 100644 --- a/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py +++ b/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py @@ -82,25 +82,7 @@ def _process_custom_fields(cls, obj: Dict, bom_reader: BoMReader) -> Dict[str, A Dict[str, Any] Dictionary mapping constructor argument names to values for this type. """ - props = {} - instance = cls - if hasattr(cls, "internal_id"): - id_obj = bom_reader.get_field(instance, obj, "@id") - if id_obj is not None: - props["internal_id"] = id_obj - if hasattr(cls, "identity"): - identity_obj = bom_reader.get_field(instance, obj, "Identity") - if identity_obj is not None: - props["identity"] = identity_obj - if hasattr(cls, "name"): - name_obj = bom_reader.get_field(instance, obj, "Name") - if name_obj is not None: - props["name"] = name_obj - if hasattr(cls, "external_identity"): - external_identity_obj = bom_reader.get_field(instance, obj, "ExternalIdentity") - if external_identity_obj is not None: - props["external_identity"] = external_identity_obj - return props + return {} def _write_custom_fields(self, obj: Dict, bom_writer: BoMWriter) -> None: """ @@ -115,24 +97,7 @@ def _write_custom_fields(self, obj: Dict, bom_writer: BoMWriter) -> None: bom_writer: BoMWriter Helper object that maintains information about the global namespaces. """ - # Temporarily deal with repeated fields in the base class - instance = self - if hasattr(self, "internal_id"): - if self.internal_id is not None: - field_name = bom_writer._get_qualified_name(instance, "@id") - obj[field_name] = self.internal_id - if hasattr(self, "identity"): - if self.identity is not None: - field_name = bom_writer._get_qualified_name(instance, "Identity") - obj[field_name] = self.identity - if hasattr(self, "name"): - if self.name is not None: - field_name = bom_writer._get_qualified_name(instance, "Name") - obj[field_name] = self.name - if hasattr(self, "external_identity"): - if self.external_identity is not None: - field_name = bom_writer._get_qualified_name(instance, "ExternalIdentity") - obj[field_name] = self.external_identity + pass class DimensionType(Enum): @@ -467,6 +432,12 @@ class UnittedValue(BaseType): @dataclass class Location(BaseType): _props = [("MIRecordReference", "mi_location_reference", "MILocationReference")] + _simple_values = [ + ("identity", "Identity"), + ("name", "Name"), + ("external_identity", "ExternalIdentity"), + ("internal_id", "@id"), + ] mi_location_reference: Optional[MIRecordReference] = None # TODO not optional though """Reference to a record in the MI database representing the manufacturing location.""" @@ -676,7 +647,7 @@ class TransportStage(BaseType): ("MIRecordReference", "mi_transport_reference", "MITransportReference"), ("UnittedValue", "distance", "Distance"), ] - _simple_values = [("name", "Name")] + _simple_values = [("name", "Name"), ("internal_id", "@id")] name: str """Name of this transportation stage, used only to identify the stage within the BoM.""" @@ -703,6 +674,12 @@ class Specification(BaseType): ("MIRecordReference", "mi_specification_reference", "MISpecificationReference"), ("UnittedValue", "quantity", "Quantity"), ] + _simple_values = [ + ("identity", "Identity"), + ("name", "Name"), + ("external_identity", "ExternalIdentity"), + ("internal_id", "@id"), + ] mi_specification_reference: MIRecordReference """Reference identifying the record representing this specification in the MI Database.""" @@ -730,8 +707,13 @@ class Substance(BaseType): A substance within a part, semi-finished part, material or specification. The substance is stored in the Database.""" - _simple_values = [("percentage", "Percentage")] - + _simple_values = [ + ("percentage", "Percentage"), + ("identity", "Identity"), + ("name", "Name"), + ("external_identity", "ExternalIdentity"), + ("internal_id", "@id"), + ] _props = [("MIRecordReference", "mi_substance_reference", "MISubstanceReference")] mi_substance_reference: MIRecordReference @@ -781,7 +763,13 @@ class Process(BaseType): Database. """ - _simple_values = [("percentage", "Percentage")] + _simple_values = [ + ("percentage", "Percentage"), + ("identity", "Identity"), + ("name", "Name"), + ("external_identity", "ExternalIdentity"), + ("internal_id", "@id"), + ] _props = [ ("MIRecordReference", "mi_process_reference", "MIProcessReference"), @@ -836,7 +824,13 @@ class Material(BaseType): A Material within a part or semi-finished part. The material is stored in the Database. """ - _simple_values = [("percentage", "Percentage")] + _simple_values = [ + ("percentage", "Percentage"), + ("identity", "Identity"), + ("name", "Name"), + ("external_identity", "ExternalIdentity"), + ("internal_id", "@id"), + ] _props = [("UnittedValue", "mass", "Mass"), ("MIRecordReference", "mi_material_reference", "MIMaterialReference")] @@ -927,7 +921,12 @@ class Part(BaseType): ("MIRecordReference", "mi_part_reference", "MIPartReference"), ] - _simple_values = [("part_number", "PartNumber"), ("part_name", "Name"), ("external_identity", "ExternalIdentity")] + _simple_values = [ + ("part_number", "PartNumber"), + ("part_name", "Name"), + ("external_identity", "ExternalIdentity"), + ("internal_id", "@id"), + ] _list_props = [ ("Part", "components", "Components", "http://www.grantadesign.com/23/01/BillOfMaterialsEco", "Part"), @@ -978,7 +977,7 @@ class Part(BaseType): """Display name for the part.""" external_identity: Optional[str] = None - """A temporary reference populated and used by applications to refer to the item within the BoM.""" # TODO? + """A temporary reference populated and used by applications to refer to the item within the BoM.""" components: List[Part] = field(default_factory=list) """List of subcomponents for this part.""" @@ -1113,6 +1112,7 @@ class BillOfMaterials(BaseType): Type representing the root Bill of Materials object. """ + _simple_values = [("internal_id", "@id")] _props = [ ("UsePhase", "use_phase", "UsePhase"), ("Location", "location", "Location"), From 7b38d8d85cefeabd473fd125c5d94ad8c9543f52 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Mon, 30 Oct 2023 13:03:13 +0100 Subject: [PATCH 209/275] Comment out annotations --- .../bomanalytics/bom_types/_bom_types.py | 144 +++++++++--------- 1 file changed, 72 insertions(+), 72 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py b/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py index a4002e7f..ab762472 100644 --- a/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py +++ b/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py @@ -2,7 +2,7 @@ from dataclasses import dataclass, field from enum import Enum -from typing import TYPE_CHECKING, Any, Dict, Iterable, List, Optional, Protocol, Tuple, Union, cast +from typing import TYPE_CHECKING, Any, Dict, Iterable, List, Optional, Protocol, Tuple, cast if TYPE_CHECKING: from ._bom_reader import BoMReader @@ -1033,77 +1033,77 @@ def _write_custom_fields(self, obj: Dict, bom_writer: BoMWriter) -> None: obj[rohs_exemptions_field_name] = rohs_exemptions -@dataclass -class AnnotationSource(BaseType): - """ - An element indicating the source of annotations in the BoM. Each source may be - referenced by zero or more annotations. The producer and consumer(s) of the BoM must agree the - understood annotation source semantics, particularly regarding the untyped data therein. When a tool consumes - and re-produces BoMs, it should generally retain any annotation sources that it does not understand (of course, - it can also decide whether to keep, modify or discard those annotation sources that it does understand). - """ - - _simple_values = [("name", "Name"), ("method", "Method")] - - name: str - """The name of the software package that generated this annotation.""" - - method: Optional[str] = None - """The calculation method used to generate this annotation.""" - - data: List[Any] = field(default_factory=list) - """Data that the consumer of the BoM may require.""" - - internal_id: Optional[str] = None - """A unique identity for this object in this BoM. This identity is only for internal use, allowing other elements - to reference this element.""" - - @classmethod - def _process_custom_fields(cls, obj: Dict, bom_reader: BoMReader) -> Dict[str, Any]: - props = super()._process_custom_fields(obj, bom_reader) - - data_obj = bom_reader.get_field(AnnotationSource, obj, "Data") - if data_obj is not None: - props["data"] = data_obj - return props - - def _write_custom_fields(self, obj: Dict, bom_writer: BoMWriter) -> None: - if len(self.data) > 0: - data_field_name = bom_writer._get_qualified_name(self, "Data") - obj[data_field_name] = self.data - - -@dataclass -class Annotation(BaseType): - """ - An annotation that can be attached to objects within a BoM. The understood annotation types must be agreed - between the producer and consumer(s) of the BoM. The producer and consumer(s) must also agree whether a - particular type of annotation is allowed to have multiple instances assigned to a single element, or whether - only a single annotation of that type per element is allowed. When a tool consumes and re-produces BoMs, it - should generally retain any annotations that it does not understand (of course, it can also decide whether to - keep, modify or discard those annotations that it does understand). - - Annotations can either be pure textual data, providing additional data or context for an object, or they can - provide additional indicators, for example Embodied Energy of Production, or Cost of Raw Materials. - """ - - _props = [("UnittedValue", "value", "Value")] - - _simple_values = [("type_", "type"), ("target_id", "targetId"), ("source_id", "sourceId")] - - target_id: str - """The ``internal_id`` of exactly one element to which the annotation applies.""" - - type_: str - """A string value indicating the type of the annotation, the accepted values for this parameter must be agreed - between the produced and consumer(s) of the BoM.""" - - value: Union[str, UnittedValue] - """The content of this annotation.""" - - source_id: Optional[str] = None - """If provided, is the ``internal_id`` of exactly one ``AnnotationSource`` object describing the source - of the annotation. If absent, no source information is provided.""" +# @dataclass +# class AnnotationSource(BaseType): +# """ +# An element indicating the source of annotations in the BoM. Each source may be +# referenced by zero or more annotations. The producer and consumer(s) of the BoM must agree the +# understood annotation source semantics, particularly regarding the untyped data therein. When a tool consumes +# and re-produces BoMs, it should generally retain any annotation sources that it does not understand (of course, +# it can also decide whether to keep, modify or discard those annotation sources that it does understand). +# """ +# +# _simple_values = [("name", "Name"), ("method", "Method")] +# +# name: str +# """The name of the software package that generated this annotation.""" +# +# method: Optional[str] = None +# """The calculation method used to generate this annotation.""" +# +# data: List[Any] = field(default_factory=list) +# """Data that the consumer of the BoM may require.""" +# +# internal_id: Optional[str] = None +# """A unique identity for this object in this BoM. This identity is only for internal use, allowing other elements +# to reference this element.""" +# +# @classmethod +# def _process_custom_fields(cls, obj: Dict, bom_reader: BoMReader) -> Dict[str, Any]: +# props = super()._process_custom_fields(obj, bom_reader) +# +# data_obj = bom_reader.get_field(AnnotationSource, obj, "Data") +# if data_obj is not None: +# props["data"] = data_obj +# return props +# +# def _write_custom_fields(self, obj: Dict, bom_writer: BoMWriter) -> None: +# if len(self.data) > 0: +# data_field_name = bom_writer._get_qualified_name(self, "Data") +# obj[data_field_name] = self.data +# +# +# @dataclass +# class Annotation(BaseType): +# """ +# An annotation that can be attached to objects within a BoM. The understood annotation types must be agreed +# between the producer and consumer(s) of the BoM. The producer and consumer(s) must also agree whether a +# particular type of annotation is allowed to have multiple instances assigned to a single element, or whether +# only a single annotation of that type per element is allowed. When a tool consumes and re-produces BoMs, it +# should generally retain any annotations that it does not understand (of course, it can also decide whether to +# keep, modify or discard those annotations that it does understand). +# +# Annotations can either be pure textual data, providing additional data or context for an object, or they can +# provide additional indicators, for example Embodied Energy of Production, or Cost of Raw Materials. +# """ +# +# _props = [("UnittedValue", "value", "Value")] +# +# _simple_values = [("type_", "@type"), ("target_id", "@targetId"), ("source_id", "@sourceId")] +# +# target_id: str +# """The ``internal_id`` of exactly one element to which the annotation applies.""" +# +# type_: str +# """A string value indicating the type of the annotation, the accepted values for this parameter must be agreed +# between the produced and consumer(s) of the BoM.""" +# +# value: Union[str, UnittedValue] +# """The content of this annotation.""" +# +# source_id: Optional[str] = None +# """If provided, is the ``internal_id`` of exactly one ``AnnotationSource`` object describing the source +# of the annotation. If absent, no source information is provided.""" @dataclass From 7b38cf6eb0f9ade49c622b9007ea1a4e102e6ec2 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Mon, 30 Oct 2023 15:30:51 +0100 Subject: [PATCH 210/275] Address more small issues Remove typical content on materials --- .../bomanalytics/bom_types/_bom_types.py | 49 +- tests/test_bom_handler.py | 485 +++++++++--------- 2 files changed, 277 insertions(+), 257 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py b/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py index ab762472..1ca04a7c 100644 --- a/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py +++ b/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py @@ -284,7 +284,7 @@ def _process_custom_fields(cls, obj: Dict, bom_reader: BoMReader) -> Dict[str, A props["attribute_name"] = attribute_name_obj pseudo_obj = bom_reader.get_field(MIAttributeReference, name_obj, "pseudo") if pseudo_obj is not None: - props["pseudo"] = pseudo_obj + props["pseudo"] = PseudoAttribute.from_string(pseudo_obj) is_standard_obj = bom_reader.get_field(MIAttributeReference, name_obj, "@isStandard") if is_standard_obj is not None: props["is_standard"] = is_standard_obj @@ -377,20 +377,23 @@ def _process_custom_fields(cls, obj: Dict, bom_reader: BoMReader) -> Dict[str, A def _write_custom_fields(self, obj: Dict, bom_writer: BoMWriter) -> None: super()._write_custom_fields(obj, bom_writer) + # Always write the wrapper object, even if incomplete. This way, users get an error when serializing, rather + # than the serialization ignoring a populated value. + identity_dict = {} if self.record_history_identity is not None: - identity_dict = { - bom_writer._get_qualified_name(self, "recordHistoryIdentity"): self.record_history_identity - } - if self.record_version_number is not None: - identity_dict[bom_writer._get_qualified_name(self, "version")] = self.record_version_number + identity_dict[bom_writer._get_qualified_name(self, "recordHistoryIdentity")] = self.record_history_identity + if self.record_version_number is not None: + identity_dict[bom_writer._get_qualified_name(self, "version")] = self.record_version_number + if identity_dict: obj[bom_writer._get_qualified_name(self, "identity")] = identity_dict + lookup_dict: Dict[str, Any] = {} if self.lookup_value is not None: - lookup_dict = { - bom_writer._get_qualified_name(self, "attributeReference"): bom_writer._convert_to_dict( - cast(BaseType, self.lookup_attribute_reference) - ), - bom_writer._get_qualified_name(self, "attributeValue"): self.lookup_value, - } + lookup_dict[bom_writer._get_qualified_name(self, "attributeValue")] = self.lookup_value + if self.lookup_attribute_reference is not None: + lookup_dict[bom_writer._get_qualified_name(self, "attributeReference")] = bom_writer._convert_to_dict( + cast(BaseType, self.lookup_attribute_reference) + ) + if lookup_dict: obj[bom_writer._get_qualified_name(self, "lookupValue")] = lookup_dict @@ -853,8 +856,8 @@ class Material(BaseType): mass: Optional[UnittedValue] = None """The mass of this material present within the part. Provide either this or ``percentage``.""" - recycle_content_is_typical: Optional[bool] = None - """If True, indicates that the material's recyclability is typical, the value in the MI record will be used.""" + # recycle_content_is_typical: Optional[bool] = None + # """If True, indicates that the material's recyclability is typical, the value in the MI record will be used.""" recycle_content_percentage: Optional[float] = None """If the recyclability is not typical for this material, or no typical value is available in the MI Database, @@ -886,8 +889,8 @@ def _process_custom_fields(cls, obj: Dict, bom_reader: BoMReader) -> Dict[str, A recycle_content_obj = bom_reader.get_field(Material, obj, "RecycleContent") if recycle_content_obj is not None: typical_obj = bom_reader.get_field(Material, recycle_content_obj, "Typical") - if typical_obj is not None: - props["recycle_content_is_typical"] = typical_obj + # if typical_obj is not None: + # props["recycle_content_is_typical"] = typical_obj percentage_obj = bom_reader.get_field(Material, recycle_content_obj, "Percentage") if percentage_obj is not None: props["recycle_content_percentage"] = percentage_obj @@ -897,15 +900,13 @@ def _write_custom_fields(self, obj: Dict, bom_writer: BoMWriter) -> None: super()._write_custom_fields(obj, bom_writer) recycle_content_name = bom_writer._get_qualified_name(self, "RecycleContent") recycle_element = {} - if self.recycle_content_is_typical is not None: - typical_name = bom_writer._get_qualified_name(self, "Typical") - recycle_element[typical_name] = self.recycle_content_is_typical - elif self.recycle_content_percentage is not None: + # if self.recycle_content_is_typical is not None: + # typical_name = bom_writer._get_qualified_name(self, "Typical") + # recycle_element[typical_name] = self.recycle_content_is_typical + if self.recycle_content_percentage is not None: percentage_name = bom_writer._get_qualified_name(self, "Percentage") - recycle_element[percentage_name] = self.recycle_content_percentage # type: ignore - else: - return - obj[recycle_content_name] = recycle_element + recycle_element[percentage_name] = self.recycle_content_percentage + obj[recycle_content_name] = recycle_element @dataclass diff --git a/tests/test_bom_handler.py b/tests/test_bom_handler.py index 452db947..7742e1cd 100644 --- a/tests/test_bom_handler.py +++ b/tests/test_bom_handler.py @@ -187,254 +187,273 @@ def test_empty_bom(empty_bom): assert rebuilt == empty_bom -@pytest.fixture -def full_bom(): - class Counter: - """Used to generate unique identities and test values.""" - - def __init__(self): - self._int = 0 - self._float = 0.1 - - def get_int(self) -> int: - self._int += 1 - return self._int - - def get_float(self) -> float: - self._float += 0.1 - return self._float - - counter = Counter() - - # Very invalid BoM for any query, but aims to exercise all fields of all types - # TODO add non mi part reference - return bom_types.BillOfMaterials( - components=[ - bom_types.Part( - components=[ - bom_types.Part( - part_number="SubPart0", - ) - ], - part_number="RootPartNumber", - part_name="RootPartName", - internal_id="RootPartId", - mass_per_unit_of_measure=bom_types.UnittedValue(counter.get_float(), "RootPartMassPerUnitOfMeasure"), - quantity=bom_types.UnittedValue(counter.get_float(), "RootPartQuantity"), - volume_per_unit_of_measure=bom_types.UnittedValue( - counter.get_float(), "RootPartVolumePerUnitOfMeasure" - ), - # Exercise all attributes of all references - mi_part_reference=bom_types.MIRecordReference( - db_key="RootPartRefDbKey", - record_guid=str(uuid.uuid4()), - record_history_guid=str(uuid.uuid4()), - record_version_number=counter.get_int(), - record_history_identity=counter.get_int(), - record_uid="RootPartRefRecordUID", - lookup_value="RootPartRefLookupValue", - lookup_attribute_reference=bom_types.MIAttributeReference( - db_key="RootPartRefLookupRefDbKey", - attribute_name="RootPartRefLookupRefAttributeName", - # attribute_identity=counter.get_int(), # TODO Choice with AttName - table_reference=bom_types.PartialTableReference( - table_identity=counter.get_int(), - table_guid=str(uuid.uuid4()), - table_name="RootPartRefLookupRefTableRefName", - ), - # pseudo=PseudoAttribute.Name, # TODO choice with AttName - is_standard=False, +class BoMFactory: + def __init__(self): + self._int = 0 + self._float = 0.1 + + def get_int(self) -> int: + self._int += 1 + return self._int + + def get_float(self) -> float: + self._float += 0.1 + return self._float + + def get_guid(self) -> str: + return str(uuid.uuid4()) + + def make_full_bom(self, use_phase_utility_kwarg) -> bom_types.BillOfMaterials: + # Very invalid BoM for any query, but attempts to exercise all fields of all types + # TODO add non mi part reference + return bom_types.BillOfMaterials( + components=[ + bom_types.Part( + components=[ + bom_types.Part( + part_number="SubPart0", + ) + ], + part_number="RootPartNumber", + part_name="RootPartName", + internal_id="RootPartId", + mass_per_unit_of_measure=bom_types.UnittedValue(self.get_float(), "RootPartMassPerUnitOfMeasure"), + quantity=bom_types.UnittedValue(self.get_float(), "RootPartQuantity"), + volume_per_unit_of_measure=bom_types.UnittedValue( + self.get_float(), "RootPartVolumePerUnitOfMeasure" ), - ), - materials=[ - bom_types.Material( - mi_material_reference=bom_types.MIRecordReference( - db_key="RootPartMaterial0RefDbKey", - record_guid=str(uuid.uuid4()), + # Exercise as many attributes as possible for references + mi_part_reference=bom_types.MIRecordReference( + db_key="RootPartRefDbKey", + record_guid=self.get_guid(), + record_history_guid=self.get_guid(), + record_version_number=self.get_int(), + record_history_identity=self.get_int(), + record_uid="RootPartRefRecordUID", + lookup_value="RootPartRefLookupValue", + lookup_attribute_reference=bom_types.MIAttributeReference( + db_key="RootPartRefLookupRefDbKey", + # Choice attribute_name | attribute_identity | pseudo + attribute_name="RootPartRefLookupRefAttributeName", + table_reference=bom_types.PartialTableReference( + table_identity=self.get_int(), + table_guid=self.get_guid(), + table_name="RootPartRefLookupRefTableRefName", + ), + is_standard=False, ), - percentage=counter.get_float(), - # TODO Choice with percentage - # mass=UnittedValue(counter.get_float(), "RootPartMaterial0MassUnit"), - # TODO choice with recycle_content_percentage, need a second material - # recycle_content_is_typical=True, - recycle_content_percentage=counter.get_float(), - end_of_life_fates=[ - bom_types.EndOfLifeFate( - mi_end_of_life_reference=bom_types.MIRecordReference( - db_key="RootPartMaterial0EOLFRefDbKey", - record_guid=str(uuid.uuid4()), - ), - fraction=counter.get_float(), - ) - ], - external_identity="RootPartMaterial0ExternalIdentity", - internal_id="RootPartMaterial0Id", - identity="RootPartMaterial0Identity", - name="RootPartMaterial0Name", - processes=[ - bom_types.Process( # Process with all fields - mi_process_reference=bom_types.MIRecordReference( - db_key="RootPartMaterial0Process0RefDbKey", - record_guid=str(uuid.uuid4()), + ), + materials=[ + bom_types.Material( + mi_material_reference=bom_types.MIRecordReference( + db_key="RootPartMaterial0RefDbKey", + lookup_value="RootPartMaterial0RefLookupValue", + lookup_attribute_reference=bom_types.MIAttributeReference( + db_key="RootPartMaterial0RefDbKey", + # Choice attribute_name | attribute_identity | pseudo + attribute_identity=self.get_int(), ), - identity="RootPartMaterial0Process0Identity", - external_identity="RootPartMaterial0Process0ExternalIdentity", - internal_id="RootPartMaterial0Process0Id", - name="RootPartMaterial0Process0Name", - dimension_type=bom_types.DimensionType.MassRemoved, - percentage=counter.get_float(), - # TODO choice, make another process to test quantity - # quantity=UnittedValue( - # counter.get_float(), - # unit="RootPartMaterial0Process0QuantityUnit", - # ) - ) - ], - ) - ], - processes=[ - bom_types.Process( # Minimal process - mi_process_reference=bom_types.MIRecordReference( - db_key="RootPartProcess0RefDbKey", - record_guid=str(uuid.uuid4()), - ), - dimension_type=bom_types.DimensionType.Mass, - # TODO process requires either Percentage/Quantity, but that's not reflected in typing - percentage=counter.get_float(), - ) - ], - specifications=[ - bom_types.Specification( - mi_specification_reference=bom_types.MIRecordReference( - db_key="RootPartSpec0RefDbKey", - record_guid=str(uuid.uuid4()), - ), - quantity=bom_types.UnittedValue(counter.get_float(), "RootPartSpec0QuantityUnit"), - identity="RootPartSpec0Identity", - external_identity="RootPartSpec0ExternalIdentity", - internal_id="RootPartSpec0Id", - name="RootPartSpec0Name", - ) - ], - substances=[ - bom_types.Substance( - mi_substance_reference=bom_types.MIRecordReference( - db_key="RootPartSubstance0RefDbKey", - record_guid=str(uuid.uuid4()), + ), + # Choice percentage | mass + percentage=self.get_float(), + # Choice recycle_content_is_typical | recycle_content_percentage + recycle_content_percentage=self.get_float(), + end_of_life_fates=[ + bom_types.EndOfLifeFate( + mi_end_of_life_reference=bom_types.MIRecordReference( + db_key="RootPartMaterial0EOLFRefDbKey", + record_guid=self.get_guid(), + ), + fraction=self.get_float(), + ) + ], + external_identity="RootPartMaterial0ExternalIdentity", + internal_id="RootPartMaterial0Id", + identity="RootPartMaterial0Identity", + name="RootPartMaterial0Name", + processes=[ + bom_types.Process( # Process with all fields + mi_process_reference=bom_types.MIRecordReference( + db_key="RootPartMaterial0Process0RefDbKey", + record_guid=self.get_guid(), + ), + identity="RootPartMaterial0Process0Identity", + external_identity="RootPartMaterial0Process0ExternalIdentity", + internal_id="RootPartMaterial0Process0Id", + name="RootPartMaterial0Process0Name", + dimension_type=bom_types.DimensionType.MassRemoved, + # Choice quantity|percentage: another process defines percentage. + quantity=bom_types.UnittedValue( + self.get_float(), + unit="RootPartMaterial0Process0QuantityUnit", + ), + ) + ], ), - percentage=counter.get_float(), - category=bom_types.Category.Incorporated, - identity="RootPartSubstance0Identity", - external_identity="RootPartSubstance0ExternalIdentity", - internal_id="RootPartSubstance0Id", - name="RootPartSubstance0Name", - ) - ], - rohs_exemptions=["RootPartRohsExemption0" "RootPartRohsExemption1"], - end_of_life_fates=[ - bom_types.EndOfLifeFate( - mi_end_of_life_reference=bom_types.MIRecordReference( - db_key="RootPartEOLFRefDbKey", - record_guid=str(uuid.uuid4()), + bom_types.Material( + mi_material_reference=bom_types.MIRecordReference( + db_key="RootPartMaterial1RefDbKey", + lookup_value="RootPartMaterial1RefLookupValue", + lookup_attribute_reference=bom_types.MIAttributeReference( + db_key="RootPartMaterial0RefDbKey", + # Choice attribute_name | attribute_identity | pseudo + pseudo=bom_types.PseudoAttribute.Name, + ), + ), + # Choice percentage | mass + mass=bom_types.UnittedValue(self.get_float(), "RootPartMaterial1MassUnit"), + # Choice recycle_content_is_typical | recycle_content_percentage + # recycle_content_is_typical=True, # TODO broken ), - fraction=counter.get_float(), - ) - ], - ), - ], - transport_phase=[ - bom_types.TransportStage( - mi_transport_reference=bom_types.MIRecordReference( - db_key="Transport0RefDbKey", - record_guid=str(uuid.uuid4()), + ], + processes=[ + bom_types.Process( # Minimal process + mi_process_reference=bom_types.MIRecordReference( + db_key="RootPartProcess0RefDbKey", + record_guid=self.get_guid(), + ), + dimension_type=bom_types.DimensionType.Mass, + # Choice quantity|percentage: another process defines quantity. + percentage=self.get_float(), + ) + ], + specifications=[ + bom_types.Specification( + mi_specification_reference=bom_types.MIRecordReference( + db_key="RootPartSpec0RefDbKey", + record_guid=self.get_guid(), + ), + quantity=bom_types.UnittedValue(self.get_float(), "RootPartSpec0QuantityUnit"), + identity="RootPartSpec0Identity", + external_identity="RootPartSpec0ExternalIdentity", + internal_id="RootPartSpec0Id", + name="RootPartSpec0Name", + ) + ], + substances=[ + bom_types.Substance( + mi_substance_reference=bom_types.MIRecordReference( + db_key="RootPartSubstance0RefDbKey", + record_guid=self.get_guid(), + ), + percentage=self.get_float(), + category=bom_types.Category.Incorporated, + identity="RootPartSubstance0Identity", + external_identity="RootPartSubstance0ExternalIdentity", + internal_id="RootPartSubstance0Id", + name="RootPartSubstance0Name", + ) + ], + rohs_exemptions=["RootPartRohsExemption0" "RootPartRohsExemption1"], + end_of_life_fates=[ + bom_types.EndOfLifeFate( + mi_end_of_life_reference=bom_types.MIRecordReference( + db_key="RootPartEOLFRefDbKey", + record_guid=self.get_guid(), + ), + fraction=self.get_float(), + ) + ], ), - name="Transport0Name", - distance=bom_types.UnittedValue(counter.get_float(), "Transport0DistanceUnit"), - internal_id="Transport0Id", - ), - ], - use_phase=bom_types.UsePhase( - product_life_span=bom_types.ProductLifeSpan( - duration_years=counter.get_float(), - number_of_functional_units=counter.get_float(), - functional_unit_description="UsePhaseFunctionalUnitDescription", - utility=bom_types.UtilitySpecification( - # TODO choice between the three - # industry_average_number_of_functional_units=counter.get_float(), - # industry_average_duration_years=counter.get_float(), - utility=counter.get_float(), + ], + transport_phase=[ + bom_types.TransportStage( + mi_transport_reference=bom_types.MIRecordReference( + db_key="Transport0RefDbKey", + record_guid=self.get_guid(), + ), + name="Transport0Name", + distance=bom_types.UnittedValue(self.get_float(), "Transport0DistanceUnit"), + internal_id="Transport0Id", ), - ), - electricity_mix=bom_types.ElectricityMix( - mi_region_reference=bom_types.MIRecordReference( - db_key="UsePhaseElectricityMixRefDbKey", - record_guid=str(uuid.uuid4()), - ) - ), - mobile_mode=bom_types.MobileMode( - mi_transport_reference=bom_types.MIRecordReference( - db_key="UsePhaseMobileModeRefDbKey", - record_guid=str(uuid.uuid4()), + ], + use_phase=bom_types.UsePhase( + product_life_span=bom_types.ProductLifeSpan( + duration_years=self.get_float(), + number_of_functional_units=self.get_float(), + functional_unit_description="UsePhaseFunctionalUnitDescription", + utility=bom_types.UtilitySpecification( + **{use_phase_utility_kwarg: self.get_float()}, + ), ), - days_used_per_year=counter.get_float(), - distance_travelled_per_day=bom_types.UnittedValue( - value=counter.get_float(), - unit="UsePhaseMobileDistancePerDayUnit", + electricity_mix=bom_types.ElectricityMix( + mi_region_reference=bom_types.MIRecordReference( + db_key="UsePhaseElectricityMixRefDbKey", + record_guid=self.get_guid(), + ) + ), + mobile_mode=bom_types.MobileMode( + mi_transport_reference=bom_types.MIRecordReference( + db_key="UsePhaseMobileModeRefDbKey", + record_guid=self.get_guid(), + ), + days_used_per_year=self.get_float(), + distance_travelled_per_day=bom_types.UnittedValue( + value=self.get_float(), + unit="UsePhaseMobileDistancePerDayUnit", + ), + ), + static_mode=bom_types.StaticMode( + mi_energy_conversion_reference=bom_types.MIRecordReference( + db_key="UsePhaseStaticModeRefDbKey", + record_guid=self.get_guid(), + ), + days_used_per_year=self.get_float(), + hours_used_per_day=self.get_float(), + power_rating=bom_types.UnittedValue(self.get_float(), "UsePhaseStaticModePowerRating"), ), ), - static_mode=bom_types.StaticMode( - mi_energy_conversion_reference=bom_types.MIRecordReference( - db_key="UsePhaseStaticModeRefDbKey", - record_guid=str(uuid.uuid4()), + location=bom_types.Location( + mi_location_reference=bom_types.MIRecordReference( + db_key="LocationRefDbKey", + record_guid=self.get_guid(), ), - days_used_per_year=counter.get_float(), - hours_used_per_day=counter.get_float(), - power_rating=bom_types.UnittedValue(counter.get_float(), "UsePhaseStaticModePowerRating"), + identity="LocationIdentity", + name="LocationName", + external_identity="LocationExternalIdentity", + internal_id="LocationId", ), - ), - location=bom_types.Location( - mi_location_reference=bom_types.MIRecordReference( - db_key="LocationRefDbKey", - record_guid=str(uuid.uuid4()), + notes=bom_types.BoMDetails( + notes="BomNotes", + picture_url="https://www.ansys.com/", + product_name="ProductName", ), - identity="LocationIdentity", - name="LocationName", - external_identity="LocationExternalIdentity", - internal_id="LocationId", - ), - notes=bom_types.BoMDetails( - notes="BomNotes", - picture_url="https://www.ansys.com/", - product_name="ProductName", - ), - # annotations=[ # TODO annotations differ quite a lot from schema - # bom_types.Annotation( - # target_id="RootPartId", - # type_="Annotation0Type", - # source_id="AnnotationSource0Id", - # value="Annotation0", - # ) - # ], - # annotation_sources=[ - # bom_types.AnnotationSource( - # name="AnnotationSource0Name", - # method="AnnotationSource0Method", - # data=[ - # "AnnotationSource0Data0" - # ], - # internal_id="AnnotationSource0Id" - # ) - # ], - internal_id="BomId", - ) - - -# TODO fix annotations + # annotations=[ + # bom_types.Annotation( + # target_id="RootPartId", + # type_="Annotation0Type", + # source_id="AnnotationSource0Id", + # value="Annotation0", + # ) + # ], + # annotation_sources=[ + # bom_types.AnnotationSource( + # name="AnnotationSource0Name", + # method="AnnotationSource0Method", + # data=[ + # "AnnotationSource0Data0" + # ], + # internal_id="AnnotationSource0Id" + # ) + # ], + internal_id="BomId", + ) -def test_everything_bom(full_bom): +# Utility appears only once in BoM, so the whole test is repeated to exercise the three mutually exclusive possible +# choices. +@pytest.mark.parametrize( + "use_phase_utility_kwarg", + [ + "industry_average_number_of_functional_units", + "industry_average_duration_years", + "utility", + ], +) +def test_everything_bom(use_phase_utility_kwarg): + bom = BoMFactory().make_full_bom(use_phase_utility_kwarg) bom_handler = BoMHandler() - text = bom_handler.dump_bom(full_bom) + text = bom_handler.dump_bom(bom) rebuilt = bom_handler.load_bom_from_text(text) - assert rebuilt == full_bom + assert rebuilt == bom From be2576fa703ec2b38c848552d5083b19342500f0 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Mon, 30 Oct 2023 17:49:31 +0100 Subject: [PATCH 211/275] Add comment about BoM "update" --- tests/test_bom_handler.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/test_bom_handler.py b/tests/test_bom_handler.py index 884447f8..7e80df14 100644 --- a/tests/test_bom_handler.py +++ b/tests/test_bom_handler.py @@ -97,6 +97,8 @@ def test_roundtrip_parsing_succeeds(self, input_bom: str): class TestBoMDeserialization: @pytest.fixture(scope="class") def simple_bom(self): + # 17/11 and 23/01 are quite similar, and in the context of this particular BoM and test, substituting the + # namespace is sufficient to obtain a valid 23/01 BoM. input_bom = sample_bom_1711.replace( "http://www.grantadesign.com/17/11/BillOfMaterialsEco", "http://www.grantadesign.com/23/01/BillOfMaterialsEco", From 34dfbbaa67111bfb30302dbc88f056e657c20693 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Tue, 31 Oct 2023 10:36:03 +0100 Subject: [PATCH 212/275] Add TODOs with issue ID --- .../grantami/bomanalytics/bom_types/_bom_types.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py b/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py index 1ca04a7c..b020a1ca 100644 --- a/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py +++ b/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py @@ -856,6 +856,7 @@ class Material(BaseType): mass: Optional[UnittedValue] = None """The mass of this material present within the part. Provide either this or ``percentage``.""" + # TODO support recycle content (issue #95) # recycle_content_is_typical: Optional[bool] = None # """If True, indicates that the material's recyclability is typical, the value in the MI record will be used.""" @@ -888,7 +889,8 @@ def _process_custom_fields(cls, obj: Dict, bom_reader: BoMReader) -> Dict[str, A recycle_content_obj = bom_reader.get_field(Material, obj, "RecycleContent") if recycle_content_obj is not None: - typical_obj = bom_reader.get_field(Material, recycle_content_obj, "Typical") + # TODO support recycle content (issue #95) + # typical_obj = bom_reader.get_field(Material, recycle_content_obj, "Typical") # if typical_obj is not None: # props["recycle_content_is_typical"] = typical_obj percentage_obj = bom_reader.get_field(Material, recycle_content_obj, "Percentage") @@ -900,6 +902,7 @@ def _write_custom_fields(self, obj: Dict, bom_writer: BoMWriter) -> None: super()._write_custom_fields(obj, bom_writer) recycle_content_name = bom_writer._get_qualified_name(self, "RecycleContent") recycle_element = {} + # TODO support recycle content (issue #95) # if self.recycle_content_is_typical is not None: # typical_name = bom_writer._get_qualified_name(self, "Typical") # recycle_element[typical_name] = self.recycle_content_is_typical @@ -971,6 +974,7 @@ class Part(BaseType): mi_part_reference: Optional[MIRecordReference] = None """A reference identifying a part stored in the MI Database.""" + # TODO support non_mi_part_reference (issue #95) # non_mi_part_reference: Optional[str] = None # """A reference to a part stored in another system, for informational purposes only.""" @@ -1009,7 +1013,7 @@ class Part(BaseType): @classmethod def _process_custom_fields(cls, obj: Dict, bom_reader: BoMReader) -> Dict[str, Any]: props = super()._process_custom_fields(obj, bom_reader) - + # TODO support non_mi_part_reference (issue #95) # non_mi_part_ref_obj = bom_reader.get_field(Part, obj, "NonMIPartReference") # if non_mi_part_ref_obj is not None: # props["non_mi_part_reference"] = non_mi_part_ref_obj @@ -1024,6 +1028,7 @@ def _process_custom_fields(cls, obj: Dict, bom_reader: BoMReader) -> Dict[str, A def _write_custom_fields(self, obj: Dict, bom_writer: BoMWriter) -> None: super()._write_custom_fields(obj, bom_writer) + # TODO support non_mi_part_reference (issue #95) # if self.non_mi_part_reference is not None: # non_mi_field_name = bom_writer._get_qualified_name(self, "NonMIPartReference") # obj[non_mi_field_name] = self.non_mi_part_reference @@ -1145,7 +1150,7 @@ class BillOfMaterials(BaseType): notes: Optional[BoMDetails] = None """Any optional notes about this BoM.""" - # TODO fix annotations + # TODO support annotations (issue #95) # annotations: List[Annotation] = field(default_factory=list) # """Any annotations that are associated with objects within the BoM.""" # From d18eb15829de9478efc71ef98eeab89fb2e71d79 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Tue, 31 Oct 2023 11:26:39 +0100 Subject: [PATCH 213/275] Ignore numpydoc warning --- doc/source/conf.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/source/conf.py b/doc/source/conf.py index d70dfd16..ac13755a 100755 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -80,6 +80,10 @@ "RT02", # The first line of the Returns section should contain only the # type, unless multiple values are being returned" } +# Ignore missing docstring warning on dataclasses parameters. +numpydoc_validation_exclude = { + "^ansys\.grantami\.bomanalytics\.bom_types\._bom_types\.[\w]+\.[\w]+$" +} extlinks = { 'MI_docs': ( From 245dbb0bf9f40e45834e98256f53c4e1c66b36ef Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Tue, 31 Oct 2023 11:30:22 +0100 Subject: [PATCH 214/275] Add missing docstrings --- .../bomanalytics/bom_types/_bom_types.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py b/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py index b020a1ca..5f079ee7 100644 --- a/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py +++ b/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py @@ -101,6 +101,10 @@ def _write_custom_fields(self, obj: Dict, bom_writer: BoMWriter) -> None: class DimensionType(Enum): + """ + Valid values for DimensionType. + """ + Mass = 0 # If the process affects the bulk of the material or part (e.g. it is a shaping process) then # the amount of material affected by the process should be specified. The amount may be # specified as a percentage by weight or an absolute value. @@ -139,6 +143,10 @@ def to_string(self) -> str: class PseudoAttribute(Enum): + """ + Valid values for PseudoAttribute. + """ + Name = 0 ShortName = 1 Subsets = 2 @@ -181,6 +189,10 @@ def to_string(self) -> str: class Category(Enum): + """ + Valid values for Category. + """ + Null = 0 Incorporated = 1 MayBeIncorporated = 2 @@ -434,6 +446,10 @@ class UnittedValue(BaseType): @dataclass class Location(BaseType): + """ + Defines the manufacturing location for the BoM for use in process calculations. + """ + _props = [("MIRecordReference", "mi_location_reference", "MILocationReference")] _simple_values = [ ("identity", "Identity"), From 139f36f6039bd621d85d805ab8dd7dac981cd27c Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Tue, 31 Oct 2023 12:23:02 +0100 Subject: [PATCH 215/275] Address vale issues --- doc/source/api/bom_builder/api.rst | 2 +- doc/source/api/bom_builder/builders.rst | 10 +++++----- doc/source/api/bom_builder/helpers.rst | 2 +- doc/source/api/bom_builder/index.rst | 2 +- doc/source/api/record_identification.rst | 12 ++++++------ doc/styles/Vocab/ANSYS/accept.txt | 2 ++ 6 files changed, 16 insertions(+), 14 deletions(-) diff --git a/doc/source/api/bom_builder/api.rst b/doc/source/api/bom_builder/api.rst index 2044a04c..f89b2e59 100644 --- a/doc/source/api/bom_builder/api.rst +++ b/doc/source/api/bom_builder/api.rst @@ -1,6 +1,6 @@ .. _ref_grantami_bomanalytics_bom_api: -BoM Object Model +BoM object model ================ .. _ref_grantami_bomanalytics_api_billofmaterials: diff --git a/doc/source/api/bom_builder/builders.rst b/doc/source/api/bom_builder/builders.rst index 6a01b357..75f923af 100644 --- a/doc/source/api/bom_builder/builders.rst +++ b/doc/source/api/bom_builder/builders.rst @@ -1,10 +1,10 @@ .. _ref_grantami_bomanalytics_bom_builders: -BoM Reference Builders +BoM reference builders ====================== -RecordReferenceBuilder ----------------------- +Record reference builder +------------------------ Many types of entity are referenced within a Granta MI database, these references can use several different ways of identifying the target object. The RecordReferenceBuilder helps to ensure that a reference contains the required @@ -16,8 +16,8 @@ information and to reduce the risk of ambiguous references being provided. -AttributeReferenceBuilder -------------------------- +Attribute reference builder +--------------------------- Records can be referred to by a unique text value, this must be accompanied by a reference to the attribute containing the value. The AttributeReferenceBuilder helps to ensure that this reference contains the required information and to diff --git a/doc/source/api/bom_builder/helpers.rst b/doc/source/api/bom_builder/helpers.rst index a8cb9137..44b45e60 100644 --- a/doc/source/api/bom_builder/helpers.rst +++ b/doc/source/api/bom_builder/helpers.rst @@ -1,6 +1,6 @@ .. _ref_grantami_bomanalytics_api_bomhandler: -BoM Handler +BoM handler =========== The BoM handler provides the serialization and deserialization of BillOfMaterial objects to and from XML format, this diff --git a/doc/source/api/bom_builder/index.rst b/doc/source/api/bom_builder/index.rst index 7769387a..664cda2e 100644 --- a/doc/source/api/bom_builder/index.rst +++ b/doc/source/api/bom_builder/index.rst @@ -1,6 +1,6 @@ .. _ref_grantami_bomanalytics_bom_helpers_index: -BoM Helpers +BoM helpers ============== This section provides an introduction to the BoM Helpers. These represent a BoM (bill of materials) in Ansys Granta diff --git a/doc/source/api/record_identification.rst b/doc/source/api/record_identification.rst index 36920802..1b3c7a84 100644 --- a/doc/source/api/record_identification.rst +++ b/doc/source/api/record_identification.rst @@ -23,7 +23,7 @@ For example, a ``MIMaterialReference`` in an input BoM using a ``recordGUID`` 2086f56a-4f4d-4850-9891-3d6ad155d1f9 -which is used in a :class:`~ansys.grantami.bomanalytics.queries.BomSustainabilityQuery`, will result in a +which is used in a :class:`~ansys.grantami.bomanalytics.queries.BomSustainabilityQuery`, results in a :class:`~ansys.grantami.bomanalytics._item_results.MaterialWithSustainabilityResult`, where only the :attr:`~ansys.grantami.bomanalytics._item_results.MaterialWithSustainabilityResult.record_guid` is populated. @@ -47,7 +47,7 @@ If the record reference in an input BoM is defined via a ``lookupValue``: -then the objects in the response will be identified by ``record_guid``, unless the attribute used for the lookup is a +then the objects in the response are identified by ``record_guid``, unless the attribute used for the lookup is a special identifier such as: - ``part_number`` @@ -79,16 +79,16 @@ Returned request items Queries that accept record references as inputs, such as :class:`~PartComplianceQuery`, allow the input records to be defined via different identifiers. -The corresponding item in the query result will be identified by the same identifier than the one used in the request. +The corresponding item in the query result is identified by the same identifier than the one used in the request. -For example, parts added to the query with :meth:`~.PartComplianceQuery.with_part_numbers` will be identified in the +For example, parts added to the query with :meth:`~.PartComplianceQuery.with_part_numbers` are identified in the query result by their ``part_number`` property, and parts added with :meth:`~.PartComplianceQuery.with_record_guids` -will be identified in the query result by their ``record_guid`` property. +are identified in the query result by their ``record_guid`` property. Expanded items ~~~~~~~~~~~~~~ Item queries expand children based on the links defined in MI records. For example, during the processing of a -:class:`~.PartComplianceQuery`, children parts of the requested MI Part records will be expanded. +:class:`~.PartComplianceQuery`, children parts of the requested MI Part records are expanded. Expanded items are identified by the ``record_history_identity`` property. diff --git a/doc/styles/Vocab/ANSYS/accept.txt b/doc/styles/Vocab/ANSYS/accept.txt index 98d88b99..d5f3d8dd 100644 --- a/doc/styles/Vocab/ANSYS/accept.txt +++ b/doc/styles/Vocab/ANSYS/accept.txt @@ -1,7 +1,9 @@ (?i)ansys +API PyGranta BoM Analytics BoM BoM Analytics +Granta MI legislations RoHS [Dd]eserialization From f9843677f71eaf5bf8712136e33eb366a54413f3 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Tue, 31 Oct 2023 12:34:44 +0100 Subject: [PATCH 216/275] Update accept.txt --- doc/styles/Vocab/ANSYS/accept.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/styles/Vocab/ANSYS/accept.txt b/doc/styles/Vocab/ANSYS/accept.txt index d5f3d8dd..48f03973 100644 --- a/doc/styles/Vocab/ANSYS/accept.txt +++ b/doc/styles/Vocab/ANSYS/accept.txt @@ -1,9 +1,9 @@ (?i)ansys API -PyGranta BoM Analytics BoM BoM Analytics +[Dd]eserialization Granta MI legislations +PyGranta BoM Analytics RoHS -[Dd]eserialization From 0b60a495da2e6b65f96d8b481339fb3438e33f2d Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Tue, 31 Oct 2023 12:39:48 +0100 Subject: [PATCH 217/275] Update accept.txt --- doc/styles/Vocab/ANSYS/accept.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/styles/Vocab/ANSYS/accept.txt b/doc/styles/Vocab/ANSYS/accept.txt index 48f03973..842273f3 100644 --- a/doc/styles/Vocab/ANSYS/accept.txt +++ b/doc/styles/Vocab/ANSYS/accept.txt @@ -1,7 +1,7 @@ (?i)ansys API +Analytics BoM -BoM Analytics [Dd]eserialization Granta MI legislations From cabdf864303876b9fec718b2f15946a2691a10e6 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Tue, 31 Oct 2023 14:22:11 +0100 Subject: [PATCH 218/275] Add test for unexpected args --- tests/test_bom_handler.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/test_bom_handler.py b/tests/test_bom_handler.py index d39091a9..2838f267 100644 --- a/tests/test_bom_handler.py +++ b/tests/test_bom_handler.py @@ -458,3 +458,8 @@ def test_everything_bom(use_phase_utility_kwarg): rebuilt = bom_handler.load_bom_from_text(text) assert rebuilt == bom + + +def test_unexpected_args_raises_error(): + with pytest.raises(TypeError, match="unexpected keyword argument 'unexpected_kwarg'"): + bom_types.Part(part_number="PartNumber", unexpected_kwarg="UnexpectedKwargValue") From 956cd24898f4575351cb06ca3b57deb585fb05f5 Mon Sep 17 00:00:00 2001 From: Andy Grigg Date: Tue, 31 Oct 2023 20:32:41 -0400 Subject: [PATCH 219/275] Script tweaks --- cicd/get_cleaned_db_entries.py | 13 +++++++++---- cicd/prepare_rs_db.py | 2 +- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/cicd/get_cleaned_db_entries.py b/cicd/get_cleaned_db_entries.py index 15cf11d4..f015c776 100644 --- a/cicd/get_cleaned_db_entries.py +++ b/cicd/get_cleaned_db_entries.py @@ -65,14 +65,19 @@ "Coatings": {"layout": "All properties", "subset": "All coatings"}, "Restricted Substances": {"layout": "Restricted substances", "subset": "All substances"}, "Legislations and Lists": {"layout": "Legislations", "subset": "All legislations"}, + "Locations": {"layout": "All locations", "subset": "All locations"}, + "ProcessUniverse": {"layout": "All processes", "subset": "All processes"}, + "Transport": {"layout": "All transport", "subset": "All transport"}, } # Generally static unless the BoM Analytics Servers logic has changed, or these attributes have been added to the layout # Both of these scenarios are unlikely +# dict[Table name: list[Attribute name]] extra_attributes = {"Coatings": ["Coating Code"], "Legislations and Lists": ["Legislation ID", "Short title"]} -# Will generally be different for each release, and will likely be empty. -renamed_attributes = {} +# Will generally be different for each release, and may be empty. +# dict[Table name: dict[Current attribute name: New attribute name]] +renamed_attributes = {"Products and parts": {"General comments": "Comments"}} info = {} logger.info(f"Reading records and attributes from database '{DB_KEY}'") @@ -97,7 +102,7 @@ database_key=DB_KEY, table_guid=table_info.guid, layout_guid=layout_item.guid, show_full_detail=True ) ) - layout_info = [section.to_dict() for section in sections_response.layout_sections] + layout_info = [section.to_dict() for section in sections_response.layout_sections if section.section_items] if table_name in extra_attributes: # Add extra attribute information to a section in the layout table_attributes = attributes_api.v1alpha_databases_database_key_tables_table_guid_attributes_get( @@ -134,7 +139,7 @@ for item in section["section_items"]: if item["name"] in renamed_attributes_for_table: new_name = renamed_attributes_for_table[item["name"]] - logger.info(f"------Renaming attribute '{item['name']}' to '{new_name}") + logger.info(f"------Renaming attribute '{item['name']}' to '{new_name}'") item["name"] = renamed_attributes_for_table[item["name"]] if "tabular_columns" in item and item["tabular_columns"] is not None: for column in item["tabular_columns"]: diff --git a/cicd/prepare_rs_db.py b/cicd/prepare_rs_db.py index 90921d8a..ab36e225 100644 --- a/cicd/prepare_rs_db.py +++ b/cicd/prepare_rs_db.py @@ -153,7 +153,7 @@ def _process_association_chain_link(self, chain_link): def _process_attribute(self, layout_item: Mapping): attribute_name = layout_item["name"] logger.info(f"--Attribute - '{attribute_name}'") - meta_names = layout_item["meta_attributes"] + meta_names = [i["name"] for i in layout_item["meta_attributes"]] attribute_guid = self._attribute_name_map[attribute_name] new_section_item = models.GrantaServerApiSchemaLayoutsNewLayoutAttributeItem(attribute_guid=attribute_guid) From a9d37e79673a7ff141159bb1d7f39522f5468f2a Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 2 Nov 2023 10:53:55 +0100 Subject: [PATCH 220/275] Update .vale.ini --- doc/.vale.ini | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/.vale.ini b/doc/.vale.ini index f4f8b29e..009c8245 100644 --- a/doc/.vale.ini +++ b/doc/.vale.ini @@ -26,3 +26,6 @@ Vocab = ANSYS # Apply the following styles BasedOnStyles = Vale, Google + +# Ignore cross references directives +TokenIgnores = (:.*:`.*`) \ No newline at end of file From 70aecafcf6cf553c85dc134f41620ee0ac0f0a79 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 2 Nov 2023 11:43:22 +0100 Subject: [PATCH 221/275] Update common identifiers documentation --- .../bomanalytics/_item_definitions.py | 25 ++++++++++++++++--- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/_item_definitions.py b/src/ansys/grantami/bomanalytics/_item_definitions.py index 123dc486..a7554bf2 100644 --- a/src/ansys/grantami/bomanalytics/_item_definitions.py +++ b/src/ansys/grantami/bomanalytics/_item_definitions.py @@ -36,7 +36,12 @@ def __init__(self, identity: Optional[str] = None, **kwargs: Any) -> None: @property def identity(self) -> Optional[str]: - """Item identity.""" + """Item unique identifier. + + This property can only be populated on BoM queries results and is equal to the ``id`` attribute of the + corresponding input BoM item. If no ''id'' has been defined on the BoM item, a unique value is assigned during + analysis. + """ return self._identity @@ -48,12 +53,20 @@ def __init__(self, external_identity: Optional[str] = None, name: Optional[str] @property def external_identity(self) -> Optional[str]: - """Item external identity.""" + """Item external identity. + + This property can only be populated on BoM queries results and is equal to the ```` element of + the corresponding input BoM item. + """ return self._external_identity @property def name(self) -> Optional[str]: - """Item name.""" + """Item name. + + This property can only be populated on BoM queries results and is equal to the ```` element of + the corresponding input BoM item. + """ return self._name @@ -154,7 +167,11 @@ def __init__(self, input_part_number: Optional[str] = None, **kwargs: Any): @property def input_part_number(self) -> Optional[str]: - """Input part number.""" + """Input part number. + + This property can only be populated on BoM queries results and is equal to the ```` element of + the corresponding input BoM item. + """ return self._input_part_number From 9145c55f190708e70cac9f58961e7db79a9be10f Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 2 Nov 2023 11:45:26 +0100 Subject: [PATCH 222/275] Add missing punctuation --- src/ansys/grantami/bomanalytics/_item_results.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ansys/grantami/bomanalytics/_item_results.py b/src/ansys/grantami/bomanalytics/_item_results.py index d3177483..ab0f6b07 100644 --- a/src/ansys/grantami/bomanalytics/_item_results.py +++ b/src/ansys/grantami/bomanalytics/_item_results.py @@ -1291,7 +1291,7 @@ class CoatingWithComplianceResult( class ValueWithUnit: - """Describes a value obtained from the API""" + """Describes a value obtained from the API.""" def __init__( self, From 2daae27fbab2a100adb8ca296451d0336d1f0721 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 2 Nov 2023 14:08:43 +0100 Subject: [PATCH 223/275] Wording feedback --- src/ansys/grantami/bomanalytics/_item_definitions.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/_item_definitions.py b/src/ansys/grantami/bomanalytics/_item_definitions.py index a7554bf2..980e939d 100644 --- a/src/ansys/grantami/bomanalytics/_item_definitions.py +++ b/src/ansys/grantami/bomanalytics/_item_definitions.py @@ -38,9 +38,9 @@ def __init__(self, identity: Optional[str] = None, **kwargs: Any) -> None: def identity(self) -> Optional[str]: """Item unique identifier. - This property can only be populated on BoM queries results and is equal to the ``id`` attribute of the - corresponding input BoM item. If no ''id'' has been defined on the BoM item, a unique value is assigned during - analysis. + This property is only populated on BoM queries results and is equal to the ``id`` attribute of the + corresponding input BoM item. If no ''id'' has been defined on the BoM item, a unique auto-generated value is + assigned during analysis. """ return self._identity @@ -55,7 +55,7 @@ def __init__(self, external_identity: Optional[str] = None, name: Optional[str] def external_identity(self) -> Optional[str]: """Item external identity. - This property can only be populated on BoM queries results and is equal to the ```` element of + This property is only populated on BoM queries results and is equal to the ```` element of the corresponding input BoM item. """ return self._external_identity @@ -64,7 +64,7 @@ def external_identity(self) -> Optional[str]: def name(self) -> Optional[str]: """Item name. - This property can only be populated on BoM queries results and is equal to the ```` element of + This property is only populated on BoM queries results and is equal to the ```` element of the corresponding input BoM item. """ return self._name @@ -169,7 +169,7 @@ def __init__(self, input_part_number: Optional[str] = None, **kwargs: Any): def input_part_number(self) -> Optional[str]: """Input part number. - This property can only be populated on BoM queries results and is equal to the ```` element of + This property is only populated on BoM queries results and is equal to the ```` element of the corresponding input BoM item. """ return self._input_part_number From d61bb22e6a91559485d98718cc3430b833873ef4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 3 Nov 2023 09:54:31 +0000 Subject: [PATCH 224/275] Bump actions/checkout from 3 to 4 Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/dependabot_approve.yml | 2 +- .github/workflows/local_checks.yml | 6 +++--- .github/workflows/server_checks.yml | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/dependabot_approve.yml b/.github/workflows/dependabot_approve.yml index 6ec3a538..e2402f2d 100644 --- a/.github/workflows/dependabot_approve.yml +++ b/.github/workflows/dependabot_approve.yml @@ -11,7 +11,7 @@ jobs: - name: Dependabot metadata id: dependabot-metadata uses: dependabot/fetch-metadata@v1.6.0 - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Approve a PR if not already approved run: | gh pr checkout "$PR_URL" # sets the upstream metadata for `gh pr status` diff --git a/.github/workflows/local_checks.yml b/.github/workflows/local_checks.yml index eee23074..10066a67 100644 --- a/.github/workflows/local_checks.yml +++ b/.github/workflows/local_checks.yml @@ -36,7 +36,7 @@ jobs: matrix: python-version: [ '3.8', '3.9', '3.10', '3.11' ] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Install kerberos headers run: sudo apt install libkrb5-dev @@ -66,7 +66,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Python ${{ env.MAIN_PYTHON_VERSION }} uses: actions/setup-python@v4 @@ -95,7 +95,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Python ${{ env.MAIN_PYTHON_VERSION }} uses: actions/setup-python@v4 diff --git a/.github/workflows/server_checks.yml b/.github/workflows/server_checks.yml index 66e946a5..27e5efda 100644 --- a/.github/workflows/server_checks.yml +++ b/.github/workflows/server_checks.yml @@ -43,7 +43,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Start VM with Azure CLI id: azure_cli @@ -75,7 +75,7 @@ jobs: os: [ubuntu-latest, windows-latest] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Python 3.9 uses: actions/setup-python@v4 @@ -116,7 +116,7 @@ jobs: needs: integration_tests steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Python 3.9 uses: actions/setup-python@v4 From 62e84a9d5376b3b0581363564aaf35350dd8a31b Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Fri, 3 Nov 2023 14:41:22 +0100 Subject: [PATCH 225/275] Remove test bom --- tests/inputs/__init__.py | 4 ---- tests/test_bom_handler.py | 6 +----- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/tests/inputs/__init__.py b/tests/inputs/__init__.py index bb230b1f..a85a1bdd 100644 --- a/tests/inputs/__init__.py +++ b/tests/inputs/__init__.py @@ -28,7 +28,3 @@ _large_bom_2301_path = inputs_dir / "medium-test-bom.xml" with open(_large_bom_2301_path, "r") as f: large_bom_2301 = f.read() - -_drill_bom_2301_path = inputs_dir / "drill.xml" -with open(_drill_bom_2301_path, "r") as f: - drill_bom_2301 = f.read() diff --git a/tests/test_bom_handler.py b/tests/test_bom_handler.py index 2838f267..7a270ea3 100644 --- a/tests/test_bom_handler.py +++ b/tests/test_bom_handler.py @@ -1,5 +1,4 @@ from difflib import context_diff -from pathlib import Path import re from typing import Any, Dict import uuid @@ -9,7 +8,7 @@ from ansys.grantami.bomanalytics import BoMHandler, bom_types -from .inputs import drill_bom_2301, large_bom_2301, sample_bom_1711, sample_sustainability_bom_2301 +from .inputs import large_bom_2301, sample_bom_1711, sample_sustainability_bom_2301 class _TestableBoMHandler(BoMHandler): @@ -43,7 +42,6 @@ def dump_bom(self, bom: bom_types.BillOfMaterials) -> str: class TestRoundTripBoM: - _bom_location = Path(__file__).parent / "inputs" _namespace_map = {"gbt": "http://www.grantadesign.com/12/05/GrantaBaseTypes"} _default_namespace = "http://www.grantadesign.com/23/01/BillOfMaterialsEco" @@ -63,7 +61,6 @@ def _compare_boms(*, source_bom: str, result_bom: str): @pytest.mark.parametrize( "input_bom", [ - pytest.param(drill_bom_2301, id="drill"), pytest.param(large_bom_2301, id="large_bom"), ], ) @@ -81,7 +78,6 @@ def test_roundtrip_with_assertions(self, input_bom: str): @pytest.mark.parametrize( "input_bom", [ - pytest.param(drill_bom_2301, id="drill"), pytest.param(large_bom_2301, id="large_bom"), pytest.param(sample_sustainability_bom_2301, id="sustainability_bom"), ], From 4eb44019b5c82e5065eed0e0538616bf02bf05b5 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Fri, 3 Nov 2023 14:48:59 +0100 Subject: [PATCH 226/275] Fix doc header --- doc/source/api/bom_builder/schemas.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/source/api/bom_builder/schemas.rst b/doc/source/api/bom_builder/schemas.rst index 5ece1bb9..287c574e 100644 --- a/doc/source/api/bom_builder/schemas.rst +++ b/doc/source/api/bom_builder/schemas.rst @@ -1,6 +1,6 @@ .. _ref_grantami_bomanalytics_api_bomschemas: -BoM Schemas +BoM schemas =========== .. automodule:: ansys.grantami.bomanalytics.schemas From 1403b41cf89460f3aa373d22481985bf26374dee Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Fri, 3 Nov 2023 16:23:28 +0100 Subject: [PATCH 227/275] Add badges to README --- README.rst | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/README.rst b/README.rst index 9d781761..a6ce9723 100644 --- a/README.rst +++ b/README.rst @@ -1,3 +1,34 @@ +|pyansys| |python| |pypi| |GH-CI| |codecov| |MIT| |black| + +.. |pyansys| image:: https://img.shields.io/badge/Py-Ansys-ffc107.svg?labelColor=black&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAABDklEQVQ4jWNgoDfg5mD8vE7q/3bpVyskbW0sMRUwofHD7Dh5OBkZGBgW7/3W2tZpa2tLQEOyOzeEsfumlK2tbVpaGj4N6jIs1lpsDAwMJ278sveMY2BgCA0NFRISwqkhyQ1q/Nyd3zg4OBgYGNjZ2ePi4rB5loGBhZnhxTLJ/9ulv26Q4uVk1NXV/f///////69du4Zdg78lx//t0v+3S88rFISInD59GqIH2esIJ8G9O2/XVwhjzpw5EAam1xkkBJn/bJX+v1365hxxuCAfH9+3b9/+////48cPuNehNsS7cDEzMTAwMMzb+Q2u4dOnT2vWrMHu9ZtzxP9vl/69RVpCkBlZ3N7enoDXBwEAAA+YYitOilMVAAAAAElFTkSuQmCC + :target: https://docs.pyansys.com/ + :alt: PyAnsys + +.. |python| image:: https://img.shields.io/pypi/pyversions/ansys-grantami-bomanalytics?logo=pypi + :target: https://pypi.org/project/ansys-grantami-bomanalytics/ + :alt: Python + +.. |pypi| image:: https://img.shields.io/pypi/v/ansys-grantami-bomanalytics.svg?logo=python&logoColor=white + :target: https://pypi.org/project/ansys-grantami-bomanalytics + :alt: PyPI + +.. |codecov| image:: https://codecov.io/gh/ansys/grantami-bomanalytics/branch/main/graph/badge.svg + :target: https://codecov.io/gh/ansys/grantami-bomanalytics + :alt: Codecov + +.. |GH-CI| image:: https://github.com/ansys/grantami-bomanalytics/actions/workflows/ci_cd.yml/badge.svg + :target: https://github.com/ansys/grantami-bomanalytics/actions/workflows/ci_cd.yml + :alt: GH-CI + +.. |MIT| image:: https://img.shields.io/badge/License-MIT-yellow.svg + :target: https://opensource.org/licenses/MIT + :alt: MIT + +.. |black| image:: https://img.shields.io/badge/code%20style-black-000000.svg?style=flat + :target: https://github.com/psf/black + :alt: Black + + ansys-grantami-bomanalytics ########################### From dc46301623414f8a5db646158961b6d280b07a56 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Mon, 6 Nov 2023 12:42:28 +0100 Subject: [PATCH 228/275] Sustainability docs tweaks --- .../bomanalytics/_item_definitions.py | 8 +++++--- .../grantami/bomanalytics/_item_results.py | 19 +++++++------------ 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/_item_definitions.py b/src/ansys/grantami/bomanalytics/_item_definitions.py index 980e939d..cce7e918 100644 --- a/src/ansys/grantami/bomanalytics/_item_definitions.py +++ b/src/ansys/grantami/bomanalytics/_item_definitions.py @@ -39,7 +39,7 @@ def identity(self) -> Optional[str]: """Item unique identifier. This property is only populated on BoM queries results and is equal to the ``id`` attribute of the - corresponding input BoM item. If no ''id'' has been defined on the BoM item, a unique auto-generated value is + corresponding input BoM item. If no ``id`` has been defined on the BoM item, a unique auto-generated value is assigned during analysis. """ return self._identity @@ -147,7 +147,7 @@ def _definition(self) -> models.ModelBase: class PartReference(RecordReference): - """Represents a reference to a part record from the concrete :class:`RecordReference` subclass. + """Represents a reference to a Part record. This class extends the base class to also support part numbers. """ @@ -390,7 +390,9 @@ class ProcessReferenceWithIdentifiers(CommonIdentifiersMixin, ProcessReference): class TransportReference(RecordReference): - """Extends RecordReference without changes, to re-define the class name, because it appears in the repr.""" + """Represents a reference to a Transport record.""" + + # Extends RecordReference without changes, to re-define the class name, because it appears in the repr class TransportReferenceWithIdentifier(IdentifierMixin, TransportReference): diff --git a/src/ansys/grantami/bomanalytics/_item_results.py b/src/ansys/grantami/bomanalytics/_item_results.py index ab0f6b07..fa9639f2 100644 --- a/src/ansys/grantami/bomanalytics/_item_results.py +++ b/src/ansys/grantami/bomanalytics/_item_results.py @@ -1372,9 +1372,7 @@ class MassResultMixin: ---------- reported_mass: Indicates a mass value that is calculated by the analysis, that represents the total mass for the quantity of - the item specified in the BoM, taking into account the quantities of parent assemblies. For example, for a part - in the BoM, the Reported mass is for the number of parts specified in the Quantity column, multiplied by the - Quantity of its parent assembly, and similarly by the Quantity of each of its ancestors in the BoM hierarchy. + the item specified in the BoM, taking into account the quantities of parent assemblies. **kwargs Contains arguments handled by other mixins or base classes, e.g. ``reference_type`` and ``reference_value`` for ``RecordDefinition``-based objects. @@ -1392,9 +1390,7 @@ def __init__( def reported_mass(self) -> ValueWithUnit: """ Indicates a mass value that is calculated by the analysis, that represents the total mass for the quantity of - the item specified in the BoM, taking into account the quantities of parent assemblies. For example, for a part - in the BoM, the Reported mass is for the number of parts specified in the Quantity column, multiplied by the - Quantity of its parent assembly, and similarly by the Quantity of each of its ancestors in the BoM hierarchy. + the item specified in the BoM, taking into account the quantities of parent assemblies. """ return self._reported_mass @@ -1784,7 +1780,9 @@ def __repr__(self) -> str: class ContributingComponentResult: """ - Identifies a Part as one the largest contributors to the environmental footprint of a material. + Describes a Part item of the BoM. + + Listed as :attr:`~.MaterialSummaryResult.contributors` of a :class:`~.MaterialSummaryResult`. """ def __init__( @@ -1874,8 +1872,7 @@ def material_reference(self) -> MaterialReference: @property def mass_before_processing(self) -> ValueWithUnit: """ - Original mass of material prior to any subtractive processing (i.e. removal of material). Environmental - footprint for primary production of material and/or primary processing is calculated based on this mass. + Original mass of material prior to any subtractive processing. """ return self._mass_before_processing @@ -1886,9 +1883,7 @@ def mass_after_processing(self) -> ValueWithUnit: @property def contributors(self) -> List[ContributingComponentResult]: - """Components containing the most of this material.""" - # TODO document aggregation method? - # TODO translate docstring to actual English + """Top three parts of the BoM, which are made of this material (by :attr:`.mass_before_processing`).""" return self._contributors def __repr__(self) -> str: From 5f7b40eff9d0917a9282f320242c3d5ca8b32e35 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Mon, 6 Nov 2023 15:13:16 +0100 Subject: [PATCH 229/275] Fix/ignore reference warnings --- doc/source/api/bom_builder/index.rst | 4 ++-- doc/source/conf.py | 15 +++++++++++++++ src/ansys/grantami/bomanalytics/_bom_helper.py | 10 +++++----- .../grantami/bomanalytics/bom_types/_builders.py | 4 ++-- 4 files changed, 24 insertions(+), 9 deletions(-) diff --git a/doc/source/api/bom_builder/index.rst b/doc/source/api/bom_builder/index.rst index 45696fb2..aa2bdf67 100644 --- a/doc/source/api/bom_builder/index.rst +++ b/doc/source/api/bom_builder/index.rst @@ -6,13 +6,13 @@ BoM helpers This section provides an introduction to the BoM Helpers. These represent a BoM (bill of materials) in Ansys Granta MI 2301 XML BoM format and support reading and writing these files. -The :class:`ansys.grantami.bomanalytics.bom_types.BillOfMaterials` represents the root object in a BoM hierarchy, and can +The :class:`~ansys.grantami.bomanalytics.bom_types._bom_types.BillOfMaterials` represents the root object in a BoM hierarchy, and can be used to programmatically generate a BoM. To aid in manipulation of these objects, builders have been provided for Granta MI object references, these assist in the correct formation of these reference objects, depending on how you need to refer to these entities. -Serialization and Deserialization of BoM objects can be performed using the :class:`ansys.grantami.bomanalytics.BoMHandler` +Serialization and Deserialization of BoM objects can be performed using the :class:`~ansys.grantami.bomanalytics._bom_helper.BoMHandler` this exposes methods to read a BoM from a string or a file, and to write to a string or a file. The resulting BoM can be passed to either a Sustainability or a Compliance query. diff --git a/doc/source/conf.py b/doc/source/conf.py index ac13755a..c7dfa653 100755 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -42,6 +42,14 @@ # sphinx add_module_names = False +nitpick_ignore = [ + # Ignore "Query Result", the type of the Returns section of client.run() + ("py:obj", "Query"), + ("py:obj", "Result"), + # Ignore `available_flags` on indicator classes, as sphinx seems to struggle with a type as a class attribute. The + # link is generated correctly, but a warning is emitted. + ('py:obj', 'available_flags'), +] # sphinx.ext.autodoc autodoc_typehints = "description" @@ -62,6 +70,13 @@ # numpydoc configuration numpydoc_show_class_members = False numpydoc_xref_param_type = True +numpydoc_xref_ignore = { + "optional", + # TODO Are these classes necessary? They add a lot of confusion + "_FinalAttributeReferenceBuilder", + "_FinalRecordReferenceBuilder", + "_AttributeReferenceByNameBuilder", +} # Consider enabling numpydoc validation. See: # https://numpydoc.readthedocs.io/en/latest/validation.html# diff --git a/src/ansys/grantami/bomanalytics/_bom_helper.py b/src/ansys/grantami/bomanalytics/_bom_helper.py index 906a926c..29113f5b 100644 --- a/src/ansys/grantami/bomanalytics/_bom_helper.py +++ b/src/ansys/grantami/bomanalytics/_bom_helper.py @@ -31,12 +31,12 @@ def load_bom_from_file(self, file_path: Path) -> "BillOfMaterials": Parameters ---------- - file_path: Path + file_path : :class:`~pathlib.Path` Location of the BoM XML file. Returns ------- - BillOfMaterials + :class:`~._bom_types.BillOfMaterials` """ with open(file_path, "r", encoding="utf8") as fp: obj, errors = self._schema.decode(fp, validation="lax") @@ -55,12 +55,12 @@ def load_bom_from_text(self, bom_text: str) -> "BillOfMaterials": Parameters ---------- - bom_text: str + bom_text : str String object containing an XML representation of a BoM. Returns ------- - BillOfMaterials + :class:`~._bom_types.BillOfMaterials` """ obj, errors = self._schema.decode(bom_text, validation="lax", keep_empty=True) @@ -78,7 +78,7 @@ def dump_bom(self, bom: "BillOfMaterials") -> str: Parameters ---------- - bom: BillOfMaterials + bom : :class:`~._bom_types.BillOfMaterials` Returns ------- diff --git a/src/ansys/grantami/bomanalytics/bom_types/_builders.py b/src/ansys/grantami/bomanalytics/bom_types/_builders.py index bc34bbc6..01f30d0f 100644 --- a/src/ansys/grantami/bomanalytics/bom_types/_builders.py +++ b/src/ansys/grantami/bomanalytics/bom_types/_builders.py @@ -123,7 +123,7 @@ def as_pseudo_attribute(self, pseudo_attribute: PseudoAttribute) -> _FinalAttrib Parameters ---------- - pseudo_attribute : PseudoAttribute + pseudo_attribute : :class:`~._bom_types.PseudoAttribute` Returns ------- @@ -244,7 +244,7 @@ def with_lookup_value( ---------- lookup_value : str The value identifying the record. - lookup_attribute_reference : MIAttributeReference + lookup_attribute_reference : :class:`.MIAttributeReference` The short-text attribute or compatible pseudo-attribute to use for the lookup. Returns From f7826d741b03a719e5ab75183068b8eaad464956 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Mon, 6 Nov 2023 16:07:41 +0100 Subject: [PATCH 230/275] Typo in example --- examples/4_Sustainability/4-2_BoM_Sustainability.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/4_Sustainability/4-2_BoM_Sustainability.py b/examples/4_Sustainability/4-2_BoM_Sustainability.py index ea1e52bb..25fc2f57 100644 --- a/examples/4_Sustainability/4-2_BoM_Sustainability.py +++ b/examples/4_Sustainability/4-2_BoM_Sustainability.py @@ -127,8 +127,8 @@ # ### The `BomSustainabilityQueryResult.transport` property # # The ``BomSustainabilityQueryResult.transport`` property contains the transport stages in the input -# BoM, defined as a list of ``TrasportWithSustainabilityResult`` objects. Transport stages contain no -# BoM properties. The environmental footprint of a traansport stage is just the environmental +# BoM, defined as a list of ``TransportWithSustainabilityResult`` objects. Transport stages contain no +# BoM properties. The environmental footprint of a transport stage is just the environmental # footprint associated with the transport stage itself. # ## Process the ``BomSustainabilityQueryResult`` object From e23a65bbaa076242cbf5ddd15c4f36ea32459063 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Mon, 6 Nov 2023 16:33:52 +0100 Subject: [PATCH 231/275] Clarify env. footprint hierarchy --- examples/4_Sustainability/4-2_BoM_Sustainability.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/examples/4_Sustainability/4-2_BoM_Sustainability.py b/examples/4_Sustainability/4-2_BoM_Sustainability.py index 25fc2f57..1e7c04c7 100644 --- a/examples/4_Sustainability/4-2_BoM_Sustainability.py +++ b/examples/4_Sustainability/4-2_BoM_Sustainability.py @@ -115,14 +115,15 @@ # - ``.processes``: the primary and secondary processes applied to the mass of material, defined as a # list of ``ProcessWithSustainabilityResult`` objects. # -# The environmental footprint of a material includes the environmental footprint associated with the -# mass of material used. +# The environmental footprint of a material is calculated from database data and the mass of material used. +# Even though processes appear as children of materials in the hierarchy, their environmental footprint is +# not summed up in the parent material's footprint, as opposed to the environmental footprint of parts. # #### **Processes** # -# Processes are represented by ``ProcessWithSustainabilityResult`` objects. Processes contain no BoM -# properties. The environmental footprint of a process is just the environmental footprint associated -# with the processes itself. +# Processes are represented by ``ProcessWithSustainabilityResult`` objects. Processes are child items +# in the BoM and have no children themselves. The environmental footprint of a process is calculated +# from database data and masses defined in the BoM. # ### The `BomSustainabilityQueryResult.transport` property # From c9ea44dc21371807979cc69305cfbdcdd67d048f Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Tue, 7 Nov 2023 10:59:05 +0100 Subject: [PATCH 232/275] Remove TODO --- doc/source/conf.py | 1 - 1 file changed, 1 deletion(-) diff --git a/doc/source/conf.py b/doc/source/conf.py index c7dfa653..5c65af74 100755 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -72,7 +72,6 @@ numpydoc_xref_param_type = True numpydoc_xref_ignore = { "optional", - # TODO Are these classes necessary? They add a lot of confusion "_FinalAttributeReferenceBuilder", "_FinalRecordReferenceBuilder", "_AttributeReferenceByNameBuilder", From fcf2f7ddea9988be059c99a3b6821dcc5e0531bf Mon Sep 17 00:00:00 2001 From: Andy Grigg Date: Mon, 13 Nov 2023 17:27:48 -0500 Subject: [PATCH 233/275] Updates to bom builder example script --- .../3-1_Working_with_XML_BoMs.py | 3 + .../3-5_Creating_a_Bill_of_Materials.py | 349 ++++++++++++++++++ .../3-5_Using_the_BoM_builder.py | 339 ----------------- examples/3_Advanced_Topics/index.rst | 2 +- 4 files changed, 353 insertions(+), 340 deletions(-) create mode 100644 examples/3_Advanced_Topics/3-5_Creating_a_Bill_of_Materials.py delete mode 100644 examples/3_Advanced_Topics/3-5_Using_the_BoM_builder.py diff --git a/examples/3_Advanced_Topics/3-1_Working_with_XML_BoMs.py b/examples/3_Advanced_Topics/3-1_Working_with_XML_BoMs.py index df11aeb4..39f71777 100644 --- a/examples/3_Advanced_Topics/3-1_Working_with_XML_BoMs.py +++ b/examples/3_Advanced_Topics/3-1_Working_with_XML_BoMs.py @@ -19,6 +19,9 @@ # of Granta MI records. The BoM must be in the Granta 17/11 format or Granta 23/01 format. This example shows how to use # the ``lxml`` package with the XSD XML schema file to validate the XML format. +# For help on constructing an XML BoM, consult the +# [Creating a Bill of Materials from an external data source](3-5_Creating_a_Bill_of_Materials.py) example. + # If the XML file is generated by a Granta MI product and has not been modified, it is possible to skip this step before # submitting the query. However, it is strongly advised to validate the XML BoM in all situations to avoid unexpected # server-side failures. If an invalid XML file is used in a query, an exception is raised by the ``requests`` HTTP diff --git a/examples/3_Advanced_Topics/3-5_Creating_a_Bill_of_Materials.py b/examples/3_Advanced_Topics/3-5_Creating_a_Bill_of_Materials.py new file mode 100644 index 00000000..4b3934d6 --- /dev/null +++ b/examples/3_Advanced_Topics/3-5_Creating_a_Bill_of_Materials.py @@ -0,0 +1,349 @@ +# --- +# jupyter: +# jupytext: +# formats: ipynb,py:light +# text_representation: +# extension: .py +# format_name: light +# format_version: '1.5' +# jupytext_version: 1.15.1 +# kernelspec: +# display_name: Python 3 (ipykernel) +# language: python +# name: python3 +# --- + +# # Creating a Bill of Materials from an external data source + +# This example demonstrates how to use the ``bom_types`` sub-package to create a valid Granta MI XML +# BoM. This sub-package can be used to help construct a Granta 23/01-compliant XML BoM file to be +# used with the BoM queries provided by this package. The code in this example shows how to generate +# a BoM from a representative JSON data source, and so the general approach can be applied to data +# in other formats or provided by other APIs. + +# You can download the external data source used in this example +# [here](supporting-files/source_data_sustainability.json). + +# The result of this example is a Granta 23/01-compliant XML BoM file that is suitable for +# sustainability analysis with the Granta MI BoM Analytics API. For further information about the +# expected content of XML BoMs, consult the online Granta MI documentation or your ACE +# representative. + +# ## Load the external data + +# First load the JSON file and use the ``json`` module, which converts the text into a hierarchical +# structure of ``dict`` and ``list`` objects. + +# + +import json +from pprint import pprint + +with open("supporting-files/source_data_sustainability.json") as f: + data = json.load(f) +pprint(data[:3]) +# - + +# ## Inspect the external data +# The external data source defines a flat list of items. Each item has at least the following: +# +# - A ``type`` field, which identifies the type of the item. +# - A ``parent_part_identifier`` field, which identifies the parent part in the hierarchy. +# +# Items that refer to components do not have an equivalent record in Granta MI, and so they +# contain only the fields described above, and the quantity and mass field. +# +# Items that refer to materials, processes, and transport steps correspond to records in Granta MI +# which contain the relevant sustainability metrics for these items. As a result, these items +# contain both a human-readable ``name`` field and a ``Granta_MI_Record_GUID`` field. In this +# scenario, the system that provided the data source contains the direct material assignments from +# Granta MI. + +# ### Components +# The external data source defines three different types of component: +# +# - A single item of type ``Product``. The external data source describes the bill of materials for +# this product. All other items are expected to be children of this item. +# - Items of type ``Assembly``. +# - Items of type ``Part``. +# +# Extract the items into separate lists based on the ``type`` field. The ``Product`` item is stored +# in a variable directly because there can only be one product per BoM by definition. + +source_product = next(item for item in data if item["type"] == "Product") +source_product + +source_assemblies = [item for item in data if item["type"] == "Assembly"] +source_assemblies[0] + +source_parts = [item for item in data if item["type"] == "Part"] +source_parts[0] + +# ### Materials +# The third-party system only allows assignment of a single material per part, and so there is no +# 'quantity' associated with the material. It is assumed that the part is made entirely of the +# referenced material. +# +# Extract the material items into a list based on the ``type`` field. + +source_materials = [item for item in data if item["type"] == "Material"] +source_materials[0] + +# ### Processes +# The external data source defines three different types of process: +# +# - ``MaterialFormingStep`` items describe a process which forms a mass of material into a shaped +# component. In this scenario, the third party system defines a single forming process for each +# part. These processes will be mapped to ``Primary processes`` in the Granta MI BoM. +# - ``MaterialProcessingStep`` items describe extra processing steps applied after the main forming +# processing step. These items include ``step_order`` and ``mass_removed_in_kg`` fields, which +# together fully describe the material removal. These processes will be mapped to +# ``Secondary processes`` in the Granta MI BoM. +# - ``PartProcessingStep`` items describe processes applied directly to parts. These processes will +# be mapped to ``Joining & Finishing processes`` in the Granta MI BoM. +# +# Extract the process items into lists based on their ``type`` fields. + +source_primary_processes = [item for item in data if item["type"] == "MaterialFormingStep"] +source_primary_processes[0] + +source_secondary_processes = [item for item in data if item["type"] == "MaterialProcessingStep"] +source_secondary_processes[0] + +source_joining_processes = [item for item in data if item["type"] == "PartProcessingStep"] +source_joining_processes[0] + +# ### Transports +# The external data source defines transport stages. These items of type ``Transport`` contain a +# ``distance_in_km`` field which contains the distance covered by the transport step. +# +# Extract the transport items into a list based on their ``type`` fields. + +source_transports = [item for item in data if item["type"] == "Transport"] +source_transports[0] + +# ## Build the BillOfMaterials object +# +# The PyGranta BoM Analytics package provides the ``bom_types`` sub-package, which implements +# serialization and deserialization between the Granta 23/01 BoM XML schema and Python objects. This +# section shows how data from the external data source is processed to create BoM Python objects, +# which can then be serialized to an XML BoM. + +# If you are using a customized database, change the database key value in the following cell +# and refer to the +# [Database specific configuration](3-3_Database-specific_configuration.ipynb) example to +# appropriately configure the connection before running any queries. + +from ansys.grantami.bomanalytics import bom_types +DB_KEY = "MI_Restricted_Substances" + +# ### Components +# +# The external system defines a ``part_identifier`` field that uniquely identifies parts. However, +# the Granta MI BoM schema requires a Part to define a ``Part number``. Use the external +# ``part_identifier`` as a part number. +# +# First, create a ``bom_types.Part`` object for every item that maps to a BoM Part, and add it to a +# dictionary indexed by the part number. This will allow us to identify the correct parent part +# when adding materials and processes. + +# + +components = {} + +# Product +product_id = source_product["part_identifier"] +components[product_id] = bom_types.Part( + part_number=product_id, + quantity=bom_types.UnittedValue( + value=1.0, + unit="Each" + ) +) + +# Assemblies +for item in source_assemblies: + item_id = item["part_identifier"] + components[item_id] = bom_types.Part( + part_number=item_id, + quantity=bom_types.UnittedValue( + value=item["quantity_in_parent"], + unit="Each", + ) + ) + +# Parts +for item in source_parts: + item_id = item["part_identifier"] + components[item_id] = bom_types.Part( + part_number=item_id, + quantity=bom_types.UnittedValue( + value=item["quantity_in_parent"], + unit="Each", + ), + mass_per_unit_of_measure=bom_types.UnittedValue( + value=item["part_mass_in_kg"], + unit="kg/Each" + ) + ) + +print(f"The components dict contains {len(components)} items.") +# - + +# Next, define the hierarchy. The external data source defines a hierarchy by reference (i.e. the +# child part contains the identity of the parent part), but the Granta MI BoM represents the +# hierarchy via the BoM structure (i.e. a parent part contains all child parts as properties on the +# parent). +# +# The following cell iterates over all source parts and assemblies again, and appends child parts to +# their parents' ``components`` property. + +for item in source_assemblies + source_parts: + item_id = item["part_identifier"] + parent_item_id = item["parent_part_identifier"] + item_bom_definition = components[item_id] + parent_item_bom_definition = components[parent_item_id] + parent_item_bom_definition.components.append(item_bom_definition) + +# ### Materials +# +# Next, create ``bom_types.Material`` objects for each material, and add the materials to their +# parent part object. +# +# There are multiple possible ways of identifying Granta MI records in the BoM. In this example, the +# external data source holds references to Granta MI records by record GUIDs, and so the GUIDs will +# be used to instantiate the required ``MIRecordReference`` objects. + +# + +def make_record_reference(item, db_key=DB_KEY): + return bom_types.MIRecordReference( + db_key=db_key, + record_guid=item["Granta_MI_Record_GUID"] + ) + + +for item in source_materials: + parent_part_id = item["parent_part_identifier"] + material = bom_types.Material( + mi_material_reference=make_record_reference(item), + identity=item["name"], + percentage=100.0, + ) + components[parent_part_id].materials.append(material) +# - + +# ### Processes +# +# In general, the order in which processes are applied is significant and can affect the result. To +# ensure consistency, the external system defines a ``step_order`` field, which represents the order +# in which processes are applied to the parent part or material. The cells in this section first +# sort the processes by ``step_order`` to ensure that they are added to the BoM correctly. +# +# First, apply primary and secondary processes to materials. In the external data source, the parent +# of a process item is always the parent part, but sustainability analysis expects only a single +# material can be assigned to each part. As a result, the process can be moved from the part to the +# material when constructing the Granta BoM. +# +# ``MaterialFormingStep`` processes from the external data source are all mapped to ``Process`` with +# a ``Mass`` dimension type. This is the default value for processes whose environmental impact is +# calculated based on the mass of material that goes through the process. This mass is calculated +# from the final mass of the part and mass removed during additional processing steps. See the +# online Granta MI documentation for more information about mass calculations. + +for item in source_primary_processes: + process = bom_types.Process( + mi_process_reference=make_record_reference(item), + identity=item["name"], + dimension_type=bom_types.DimensionType.Mass, + percentage=100.0 + ) + # Use the parent part identifier to retrieve the part created earlier + parent_part_id = item["parent_part_identifier"] + # Append the process to the part via the assigned material + components[parent_part_id].materials[0].processes.append(process) + +# Next, apply secondary processes to materials. These are added sequentially to the list of +# processes on the material object, in the same order as defined by the ``step_order`` field. +# +# ``MaterialProcessingStep`` processes from the external data source are mapped to ``Process`` with +# a ``MassRemoved`` dimension type. For this type of processes, the environmental impact is +# calculated based on the mass of material removed. + +# Sort the list of secondary processes by the ``step_order`` field. +source_secondary_processes.sort(key=lambda item: (item["parent_part_identifier"], item["step_order"])) +for item in source_secondary_processes: + process = bom_types.Process( + mi_process_reference=make_record_reference(item), + identity=item["name"], + dimension_type=bom_types.DimensionType.MassRemoved, + quantity=bom_types.UnittedValue( + value=item["mass_removed_in_kg"], + unit="kg", + ) + ) + parent_part_id = item["parent_part_identifier"] + components[parent_part_id].materials[0].processes.append(process) + +# Finally, apply joining and finishing processes to the part. +# +# The example external data only includes part processes characterized by the length dimension. +# However, the Granta MI BoM schema has support for different ``DimensionType`` values depending on +# the process. For example, welding is typically defined by a welding path length, but a coating +# operation would be best quantified by an area. + +# + +unit_to_dimension_type = { + "m": bom_types.DimensionType.Length, +} + +source_joining_processes.sort(key=lambda item: (item["parent_part_identifier"], item["step_order"])) + +for item in source_joining_processes: + process = bom_types.Process( + mi_process_reference=make_record_reference(item), + identity=item["name"], + # Map the unit in the input file to the DimensionType enum. + dimension_type=unit_to_dimension_type[item["quantity_unit"]], + quantity=bom_types.UnittedValue( + value=item["quantity"], + unit=item["quantity_unit"] + ), + ) + parent_part_id = item["parent_part_identifier"] + components[parent_part_id].processes.append(process) +# - + +# ### BillOfMaterials +# +# The original root part can now be retrieved from the ``components`` dictionary. This ``Part`` item +# contains the entire structure of parts, materials, and process objects. The cell below extracts +# this component from the dictionary of all components, deletes the dictionary, and prints +# an arbitrary property of the root component to illustrate this structure. +root_component = components[source_product["part_identifier"]] +del components +print(root_component.components[0].components[1].materials[0].processes[1].identity) +# +# The final step is to create a ``BillOfMaterials`` object and add the root component and transport +# stages. Note that the transport stages are added to the ``BillOfMaterials`` object itself, not to +# a specific component. + +# + +bom = bom_types.BillOfMaterials(components=[root_component]) + +transports = [ + bom_types.TransportStage( + name=item["name"], + mi_transport_reference=make_record_reference(item), + distance=bom_types.UnittedValue(value=item["distance_in_km"], unit="km") + ) + for item in source_transports +] +bom.transport_phase = transports +# - + +# # Serialize the BoM +# +# Use the ``BomHandler`` helper class to serialize the object to XML. The resulting string can be +# used in a sustainability query. See [Sustainability examples](../4_Sustainability/index.rst). + +from ansys.grantami.bomanalytics import BoMHandler +bom_as_xml = BoMHandler().dump_bom(bom) +print(f"{bom_as_xml[:500]}...") diff --git a/examples/3_Advanced_Topics/3-5_Using_the_BoM_builder.py b/examples/3_Advanced_Topics/3-5_Using_the_BoM_builder.py deleted file mode 100644 index 5fcce946..00000000 --- a/examples/3_Advanced_Topics/3-5_Using_the_BoM_builder.py +++ /dev/null @@ -1,339 +0,0 @@ -# --- -# jupyter: -# jupytext: -# formats: ipynb,py:light -# text_representation: -# extension: .py -# format_name: light -# format_version: '1.5' -# jupytext_version: 1.15.1 -# kernelspec: -# display_name: Python 3 (ipykernel) -# language: python -# name: python3 -# --- - -# # Using the BoM Builder - -# You might have to deal with BoMs or other data structures stored in third-party systems. This -# example desmonstrates how to use the ``bom_types`` sub-package to create a valid Granta MI XML BoM. - -# Although it is unlikely that the data structures and processing presented here match your -# requirements, this example is intended to demonstrate the principles behind using the BoM -# schema Python bindings within your existing processes. It shows how a BoM-like data structure -# can be loaded from a neutral format and converted to the XML format expected by the Granta -# MI BoM Analytics API. The approach is applicable to data in other formats, or data loaded -# from other software platform APIs. - -# You can [download](supporting-files/source_data_sustainability.json) the external data source used in this -# example. -# -# The result of this example is a BoM that is compliant with the XSD XML schema (version 23/01) and that is suitable -# for sustainability analysis with the Granta MI BoM Analytics API. Further information about the expected content of -# XML BoMs can be found on the online Granta MI documentation. - -# ## Load the external data - -# First load the JSON file and use the ``json`` module to convert the text into a hierarchical structure of ``dict`` and -# ``list`` objects. - -# + -import json -from pprint import pprint - -with open("supporting-files/source_data_sustainability.json") as f: - data = json.load(f) -pprint(data[:3]) -# - - -# ## Inspect the external data -# The external data source defines a flat list of items. Each item has a ``type`` field, identifying the type of the -# item, a ``parent_part_identifier`` identifying the parent part in the hierarchy, as well as fields specific to each -# type of item. -# -# ### Components -# The external data source defines multiple types of component: -# -# - A single item of type ``Product``. The external data source describes the bill of materials for this product. All -# other items are expected to be children of this item. -# - Items of type ``Assembly``. -# - Items of type ``Part``. -# - -# + -source_product = next(item for item in data if item["type"] == "Product") -source_product -# - - -# + -source_assemblies = [item for item in data if item["type"] == "Assembly"] -source_assemblies[0] -# - - -# + -source_parts = [item for item in data if item["type"] == "Part"] -source_parts[0] -# - - -# ### Materials -# The third party system allows assignment from Granta MI. Materials are therefore described by a unique identifier to -# a Granta MI record (GUID). This ensures that data isn't duplicated: the material data is stored in Granta MI, and -# other systems refer to it by identifiers. -# -# In the external data source, materials are described by a ``name`` and a field that contains the GUID uniquely -# identifying the assigned material. -# The third-party system allows assignment of a single material per part, so there is no quantity associated with the -# material. It is assumed that the part referenced in the material's ``parent_part_identifier`` is made only of this -# material. - -# + -source_materials = [item for item in data if item["type"] == "Material"] -source_materials[0] -# - - -# ### Processes -# There are multiple types of processes described by the external data source: -# -# - ``MaterialFormingStep`` describes a process which formed a mass of material into a shaped component. The third -# party system defines a single forming process for each part. These processes will be mapped to ``Primary processes`` -# in Granta MI Sustainability. -# -# - ``MaterialProcessingStep`` are optional extra processing steps applied after the main forming processing step. -# Given the format of the data exported from the third party system, processing steps include a ``step_order`` field, -# which describes the order in which processing steps are applied to the parent part. Processing steps define a -# ``mass_removed_in_kg`` field, describing the quantity of material removed during the step. These processes will be -# mapped to ``Secondary processes`` in Granta MI Sustainability. -# - ``PartProcessingStep`` are optional processes applied directly to parts. These processes will be mapped to -# ``Joining & Finishing processes`` in Granta MI sustainability. -# -# All processes are described by a human-readable name and include the GUID of the assigned Granta MI Process record. -# Similarly to materials, the third-party system does not store information about the process other than the reference -# to the Granta MI record, which defines the environmental footprint of the process. - -# + -source_primary_processes = [item for item in data if item["type"] == "MaterialFormingStep"] -source_primary_processes[0] -# - - -# + -source_secondary_processes = [item for item in data if item["type"] == "MaterialProcessingStep"] -source_secondary_processes[0] -# - - -# + -source_joining_processes = [item for item in data if item["type"] == "PartProcessingStep"] -source_joining_processes[0] -# - - -# ### Transports -# The external data source defines transport stages. These items of type ``Transport`` define the distance that -# is travelled during the step, and hold a reference to the assigned Granta MI Transport record, which defines the -# environmental footprint per distance for the transportation mode. - -source_transports = [item for item in data if item["type"] == "Transport"] -source_transports[0] - -# ## Build the BillOfMaterials -# -# The PyGranta BoM Analytics package provides a sub-package ``bom_types``, which implement Python bindings for the BoM -# XML schema. It facilitates serialization and deserialization of Granta MI BoMs to and from Python objects. -# This section shows how data from the external data source is processed to create BoM Python objects, which can then -# be used to generate an XML BoM. - -# If you are using a database with custom names, change the database key value in the following cell and refer -# to the [Database specific configuration](../3_Advanced_Topics/3-3_Database-specific_configuration.ipynb) example to -# appropriately configure the connection before running any queries. - -from ansys.grantami.bomanalytics import bom_types -DB_KEY = "MI_Restricted_Substances" - -# ### Components -# -# The third-party system defines a ``part_identifier`` field that uniquely identifies parts. However, the -# Granta MI BoM schema requires a Part to define a ``Part number``. We will use the external ``part_identifier`` as a -# part number. -# First, create a ``bom_types.Part`` object for every item that maps to a BoM Part, and add it to a mapping indexed -# by the part number. This will allow us to identify the correct parent part to add materials and processes to. - -# + -components = {} - -# Product -product_id = source_product["part_identifier"] -components[product_id] = bom_types.Part(part_number=product_id, quantity=bom_types.UnittedValue(value=1.0, unit="Each")) - -# Assemblies -for item in source_assemblies: - item_id = item["part_identifier"] - components[item_id] = bom_types.Part( - part_number=item_id, - quantity=bom_types.UnittedValue( - value=item["quantity_in_parent"], - unit="Each", - ) - ) - -# Parts -for item in source_parts: - item_id = item["part_identifier"] - components[item_id] = bom_types.Part( - part_number=item_id, - quantity=bom_types.UnittedValue( - value=item["quantity_in_parent"], - unit="Each", - ), - mass_per_unit_of_measure=bom_types.UnittedValue( - value=item["part_mass_in_kg"], - unit="kg/Each" - ) - ) -# - - -pprint(components) - -# Now that all the parts have been instantiated, the hierarchy can be defined. While the external data source defines -# the hierarchy using references between objects in a flat data structure, a Granta MI BoM represents the hierarchy by -# including a child object as a property of the parent. -# The following cell iterates over all source parts and assemblies again, and appends child parts to their -# parents' ``components`` property. - -# + -for item in source_assemblies + source_parts: - item_id = item["part_identifier"] - parent_item_id = item["parent_part_identifier"] - item_bom_definition = components[item_id] - parent_item_bom_definition = components[parent_item_id] - parent_item_bom_definition.components.append(item_bom_definition) - -pprint(components) -# - - -# ### Materials -# -# Materials can now be added to parts. In a Granta MI BoM, the structure is hierarchical and each ``Part`` -# defines its material via the ``Part.materials`` property. ``Material`` objects only then need to define the -# reference to the record in Granta MI. -# -# There are multiple possible ways of identifying Granta MI records in the BoM. In this example, the external data -# source holds references to Granta MI records by record GUIDs. The GUIDs will be used to instantiate -# ``MIRecordReference`` objects. - -def make_record_reference(item, db_key=DB_KEY): - return bom_types.MIRecordReference( - db_key=db_key, - record_guid=item["Granta_MI_Record_GUID"] - ) - - -for item in source_materials: - parent_part_id = item["parent_part_identifier"] - material = bom_types.Material( - mi_material_reference=make_record_reference(item), - identity=item["name"], - percentage=100.0, - ) - components[parent_part_id].materials.append(material) - -# ### Processes -# -# Some processes apply directly to parts and can already be added to parts in the hierarchy. -# The order in which processes are applied can be important. The external system defines a ``step_order`` field, which -# represents the order in which processes are applied to the parent part. We first sort the processes by ``step_order`` -# to ensure that they are added to the ``Part`` in the same order as defined by the external data source. -# -# The example external data only includes one type of part processes, which are quantified using a length. The Granta -# MI BoM schema has support for different ``DimensionType`` values: this is to represent the impact of a process based -# on its most representative dimension. For example, welding generally is defined by the welding path length, whereas -# a coating operation is best quantified by the affected surface area. -# A simple mapping defines a lookup between the unit found in the external data source and the dimension type used in -# the corresponding ``Process``. - -# + -unit_to_dimension_type = { - "m": bom_types.DimensionType.Length, -} - -# Sort items before iterating -source_joining_processes.sort(key=lambda item: (item["parent_part_identifier"], item["step_order"])) - -for item in source_joining_processes: - parent_part_id = item["parent_part_identifier"] - process = bom_types.Process( - mi_process_reference=make_record_reference(item), - identity=item["name"], - dimension_type=unit_to_dimension_type[item["quantity_unit"]], - quantity=bom_types.UnittedValue(value=item["quantity"], unit=item["quantity_unit"]), - ) - components[parent_part_id].processes.append(process) -# - - -# Finally, primary and secondary processes can be added. In the external data source, processes only refer to the -# parent, as it is assumed that there is only a single material per part. -# The Granta MI BoM schema allows multiple materials per part, but sustainability analysis can only be performed on -# BoMs with a single material per part. -# Since there is only one material per part, we can use the ``parent_part_identifier`` of processes to resolve the part -# in the mapping defined earlier, retrieve the single material, and assign the process to the material. -# The single primary process must be the first in the list. Then, secondary processes can be added to the list, in the -# order defined by ``step_order``. -# -# ``MaterialFormingStep`` processes from the external data source are all mapped to ``Process`` with a ``Mass`` -# dimension type. This is the default value for processes whose environmental impact is calculated based on the mass -# of material that goes through the process. This mass is calculated from the final mass of the part and mass removed -# during additional processing steps. See the online Granta MI documentation for more information about mass -# calculations. -# ``MaterialProcessingStep`` processes from the external data source are mapped to ``Process`` with a ``MassRemoved`` -# dimension type. For this type of processes, the environmental impact is calculated from the mass of material removed. - -# + -for item in source_primary_processes: - parent_part_id = item["parent_part_identifier"] - process = bom_types.Process( - mi_process_reference=make_record_reference(item), - identity=item["name"], - dimension_type=bom_types.DimensionType.Mass, - percentage=100.0 - ) - components[parent_part_id].materials[0].processes.append(process) - -source_secondary_processes.sort(key=lambda item: (item["parent_part_identifier"], item["step_order"])) -for item in source_secondary_processes: - parent_part_id = item["parent_part_identifier"] - process = bom_types.Process( - mi_process_reference=make_record_reference(item), - identity=item["name"], - dimension_type=bom_types.DimensionType.MassRemoved, - quantity=bom_types.UnittedValue( - value=item["mass_removed_in_kg"], - unit="kg", - ) - ) - components[parent_part_id].materials[0].processes.append(process) -# - - -# ### BillOfMaterials -# -# Now that the all parts, materials, and processes have been processed and redefined in a hierarchical structure, build -# a ``BillOfMaterials`` object, assign the top-level product as the single component, and add the transport stages, -# which apply to the whole product. - -# + -bom = bom_types.BillOfMaterials(components=[components[product_id]]) - -transports = [ - bom_types.TransportStage( - name=item["name"], - mi_transport_reference=make_record_reference(item), - distance=bom_types.UnittedValue(value=item["distance_in_km"], unit="km") - ) - for item in source_transports -] -bom.transport_phase = transports -# - - - -# Use the ``BomHandler`` helper class to serialize the object to XML. The resulting string can be used in a -# sustainability query. See [Sustainability examples](../4_Sustainability/index.rst). - -from ansys.grantami.bomanalytics import BoMHandler -bom_as_xml = BoMHandler().dump_bom(bom) -print(bom_as_xml) diff --git a/examples/3_Advanced_Topics/index.rst b/examples/3_Advanced_Topics/index.rst index 4105a37b..82d8843e 100644 --- a/examples/3_Advanced_Topics/index.rst +++ b/examples/3_Advanced_Topics/index.rst @@ -12,4 +12,4 @@ These examples demonstrate various advanced functionalities of Granta MI BoM Ana 3-2_Dealing_with_external_data_sources.ipynb 3-3_Database-specific_configuration.ipynb 3-4_Writing_compliance_results_to_a_dataframe.ipynb - 3-5_Using_the_BoM_builder.ipynb \ No newline at end of file + 3-5_Creating_a_Bill_of_Materials.ipynb \ No newline at end of file From 6a787e35a519cc3d0f2940c672534fdca3490e9e Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Tue, 14 Nov 2023 11:03:03 +0100 Subject: [PATCH 234/275] Update package index --- .github/workflows/local_checks.yml | 4 +++- .github/workflows/server_checks.yml | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/local_checks.yml b/.github/workflows/local_checks.yml index 10066a67..c6ed771a 100644 --- a/.github/workflows/local_checks.yml +++ b/.github/workflows/local_checks.yml @@ -39,7 +39,9 @@ jobs: - uses: actions/checkout@v4 - name: Install kerberos headers - run: sudo apt install libkrb5-dev + run: | + sudo apt-get update + sudo apt install libkrb5-dev - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v4 diff --git a/.github/workflows/server_checks.yml b/.github/workflows/server_checks.yml index 27e5efda..1b472b2e 100644 --- a/.github/workflows/server_checks.yml +++ b/.github/workflows/server_checks.yml @@ -84,7 +84,9 @@ jobs: - name: Install kerberos headers (ubuntu only) if: ${{ matrix.os == 'ubuntu-latest' }} - run: sudo apt install libkrb5-dev + run: | + sudo apt-get update + sudo apt install libkrb5-dev - name: Install dependencies run: pip install poetry 'tox<4' --disable-pip-version-check From 69cba749e82b446df43c530f09d7907655a5a240 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Wed, 15 Nov 2023 13:32:10 +0100 Subject: [PATCH 235/275] Add note about item expansion --- doc/source/api/compliance/index.rst | 4 +++- doc/source/api/impacted_substances/index.rst | 8 ++++++-- doc/source/api/sustainability/index.rst | 3 +++ 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/doc/source/api/compliance/index.rst b/doc/source/api/compliance/index.rst index 0c0ffec2..07ed0164 100644 --- a/doc/source/api/compliance/index.rst +++ b/doc/source/api/compliance/index.rst @@ -15,7 +15,9 @@ legislations in an amount that exceeds the threshold, the record is not complian information about possible results, see the definitions of the indicators. The :ref:`ref_grantami_bomanalytics_api_compliance_bom` query accepts a BoM (bill of materials) in XML format and -returns the compliance status of the BoM based on the Granta MI records referenced by it. +returns the compliance status of the BoM based on the Granta MI records referenced by it. As opposed to record based +queries, which expand the request input from linked items in the database,the BoM compliance analysis only considers +items defined in the input BoM and does traverse database links to find linked items. In general, the result of each query is a recursive BoM (or multi-level BoM) that shows the compliance status and impacted substances at each level. If you are looking for a simple determination of the substances indirectly or directly diff --git a/doc/source/api/impacted_substances/index.rst b/doc/source/api/impacted_substances/index.rst index b01149e1..49dc97c1 100644 --- a/doc/source/api/impacted_substances/index.rst +++ b/doc/source/api/impacted_substances/index.rst @@ -8,9 +8,13 @@ This section gives an overview of the API for impacted substances. The :ref:`ref_grantami_bomanalytics_api_impactedsubstances_specifications`, and :ref:`ref_grantami_bomanalytics_api_impactedsubstances_parts` queries accept a list of references to records in a Granta MI database and determine the impacted substances that are directly or indirectly associated with these records via -associated records in the Granta MI database. The :ref:`ref_grantami_bomanalytics_api_impactedsubstances_bom` query is +associated records in the Granta MI database. + +The :ref:`ref_grantami_bomanalytics_api_impactedsubstances_bom` query is similar, but instead of records it accepts a Bill of Materials in XML format, which in turn includes references to -Granta MI records. +Granta MI records. As opposed to record based queries, the BoM impacted substances analysis is only performed on items +directly defined in the input BoM (even for BoM items defined as MI record references, associated records in the MI +database are not taken into account). In all cases, impacted substances are determined by a list of legislations, identified by legislation name. diff --git a/doc/source/api/sustainability/index.rst b/doc/source/api/sustainability/index.rst index f6c5c625..59c079b9 100644 --- a/doc/source/api/sustainability/index.rst +++ b/doc/source/api/sustainability/index.rst @@ -9,6 +9,9 @@ This section provides an overview of the API for sustainability. The can be used to determine the environmental performance of a BoM (bill of materials) in Ansys Granta MI 2301 XML BoM format. +BoM analysis is only performed on items directly defined in the input BoM. Items defined as MI record references might +have associated items defined in the database, but they are not taken into consideration in the analysis. + For more information about BoM item types relevant for sustainability analysis, refer to the :MI_docs:`BoM item types for Sustainability ` section of the online documentation. From 53da47d7c8a62843684c42b13da3365b41f9448e Mon Sep 17 00:00:00 2001 From: Andy Grigg Date: Wed, 15 Nov 2023 08:29:31 -0500 Subject: [PATCH 236/275] Fix error message --- tests/test_integration_tests.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_integration_tests.py b/tests/test_integration_tests.py index ba66a06a..47cf085f 100644 --- a/tests/test_integration_tests.py +++ b/tests/test_integration_tests.py @@ -150,8 +150,8 @@ def test_missing_database_raises_grantami_exception(self, connection_missing_db) ) with pytest.raises( GrantaMIException, - match="DatabaseException encountered: Database with key 'MI_Missing_Database' does not exist.", - ) as e: + match="Legislation ID 'SINList' does not correspond to a legislation record in database 'MI_Missing_Database'", + ): connection_missing_db.run(query) From 6d2d4b78cbe977b49648adf9d624a44775ffb082 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Wed, 15 Nov 2023 14:29:46 +0100 Subject: [PATCH 237/275] Document aggregation criteria --- src/ansys/grantami/bomanalytics/_query_results.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/_query_results.py b/src/ansys/grantami/bomanalytics/_query_results.py index 71529190..4128957f 100644 --- a/src/ansys/grantami/bomanalytics/_query_results.py +++ b/src/ansys/grantami/bomanalytics/_query_results.py @@ -860,7 +860,7 @@ def transport_details(self) -> List[TransportSummaryResult]: @property def material_details(self) -> List[MaterialSummaryResult]: """ - Summary information for aggregated materials. + Summary information for materials, aggregated by ``identity``. Relative and absolute contributions for materials whose relative contributions exceed 2% of the total impact for materials (by :attr:`~.MaterialSummaryResult.embodied_energy_percentage` or @@ -879,7 +879,7 @@ def material_details(self) -> List[MaterialSummaryResult]: @property def primary_processes_details(self) -> List[ProcessSummaryResult]: """ - Summary information for primary processes, aggregated by process and the material it is applied to. + Summary information for primary processes, aggregated by ``process_name`` and ``material_identity``. The returned list includes all primary processes whose relative contributions exceed 5% of the total impact of all primary processes (by :attr:`~.ProcessSummaryResult.embodied_energy_percentage` or @@ -896,7 +896,7 @@ def primary_processes_details(self) -> List[ProcessSummaryResult]: @property def secondary_processes_details(self) -> List[ProcessSummaryResult]: """ - Summary information for secondary processes, aggregated by process and the material it is applied to. + Summary information for secondary processes, aggregated by ``process_name`` and ``material_identity``. The returned list includes all secondary processes whose relative contributions exceed 5% of the total impact of all secondary processes (by :attr:`~.ProcessSummaryResult.embodied_energy_percentage` or @@ -913,8 +913,8 @@ def secondary_processes_details(self) -> List[ProcessSummaryResult]: @property def joining_and_finishing_processes_details(self) -> List[ProcessSummaryResult]: """ - Summary information for joining and finishing processes, aggregated by process and the material it is applied - to. + Summary information for joining and finishing processes, , aggregated by ``process_name`` and + ``material_identity``. The returned list includes all joining and finishing processes whose relative contributions exceed 5% of the total impact of all joining and finishing processes (by From 34eda87c7d57612ff49072273410ca3bdb1fed70 Mon Sep 17 00:00:00 2001 From: Andy Grigg Date: Wed, 15 Nov 2023 08:34:35 -0500 Subject: [PATCH 238/275] Flake8 --- tests/test_integration_tests.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/test_integration_tests.py b/tests/test_integration_tests.py index 47cf085f..4cea96d1 100644 --- a/tests/test_integration_tests.py +++ b/tests/test_integration_tests.py @@ -150,7 +150,8 @@ def test_missing_database_raises_grantami_exception(self, connection_missing_db) ) with pytest.raises( GrantaMIException, - match="Legislation ID 'SINList' does not correspond to a legislation record in database 'MI_Missing_Database'", + match="Legislation ID 'SINList' does not correspond to a legislation record in database" + "'MI_Missing_Database'", ): connection_missing_db.run(query) From 3cf71b8005303713b2e209165017ccd0e311ef0d Mon Sep 17 00:00:00 2001 From: Andy Grigg Date: Wed, 15 Nov 2023 08:49:22 -0500 Subject: [PATCH 239/275] Add space --- tests/test_integration_tests.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_integration_tests.py b/tests/test_integration_tests.py index 4cea96d1..8fd83764 100644 --- a/tests/test_integration_tests.py +++ b/tests/test_integration_tests.py @@ -150,7 +150,7 @@ def test_missing_database_raises_grantami_exception(self, connection_missing_db) ) with pytest.raises( GrantaMIException, - match="Legislation ID 'SINList' does not correspond to a legislation record in database" + match="Legislation ID 'SINList' does not correspond to a legislation record in database " "'MI_Missing_Database'", ): connection_missing_db.run(query) From 5464fd81cf672f8b761caa1c11c2d7e310e4ed0b Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 16 Nov 2023 11:09:50 +0100 Subject: [PATCH 240/275] Language feedback --- doc/source/api/compliance/index.rst | 21 +++++++++++--------- doc/source/api/impacted_substances/index.rst | 18 ++++++++--------- doc/source/api/sustainability/index.rst | 4 ++-- 3 files changed, 23 insertions(+), 20 deletions(-) diff --git a/doc/source/api/compliance/index.rst b/doc/source/api/compliance/index.rst index 07ed0164..153f4ad7 100644 --- a/doc/source/api/compliance/index.rst +++ b/doc/source/api/compliance/index.rst @@ -7,17 +7,20 @@ This section provides an overview of the API for compliance. The :ref:`ref_grantami_bomanalytics_api_compliance_substances`, :ref:`ref_grantami_bomanalytics_api_compliance_materials`, :ref:`ref_grantami_bomanalytics_api_compliance_specifications`, and -:ref:`ref_grantami_bomanalytics_api_compliance_parts` queries -can be used to determine the compliance of records in a Granta MI database based on a number of -:ref:`ref_grantami_bomanalytics_api_compliance_indicators`. An indicator is a collection of one or more legislations and -a threshold. If a certain record directly or indirectly contains substances impacted by one of the specified -legislations in an amount that exceeds the threshold, the record is not compliant with that indicator. For more -information about possible results, see the definitions of the indicators. +:ref:`ref_grantami_bomanalytics_api_compliance_parts` queries (collectively referred to as record-based compliance +queries) can be used to determine the compliance of records in a Granta MI database. These queries will also consider +any additional associated BoM items stored in Granta MI. For example, if the specified part record contains links to +other parts and specifications, these will be included in the analysis. + +Compliance is determined based on a number of :ref:`ref_grantami_bomanalytics_api_compliance_indicators`. An indicator +is a collection of one or more legislations and a threshold. If a certain record directly or indirectly contains +substances impacted by one of the specified legislations in an amount that exceeds the threshold, the record is not +compliant with that indicator. For more information about possible results, see the definitions of the indicators. The :ref:`ref_grantami_bomanalytics_api_compliance_bom` query accepts a BoM (bill of materials) in XML format and -returns the compliance status of the BoM based on the Granta MI records referenced by it. As opposed to record based -queries, which expand the request input from linked items in the database,the BoM compliance analysis only considers -items defined in the input BoM and does traverse database links to find linked items. +returns the compliance status of the BoM based on the BoM's contents. As opposed to record-based queries, the BoM +compliance analysis only considers items explicitly defined in the input BoM. It does not follow links to other BoM +items as in the record-based queries described above. In general, the result of each query is a recursive BoM (or multi-level BoM) that shows the compliance status and impacted substances at each level. If you are looking for a simple determination of the substances indirectly or directly diff --git a/doc/source/api/impacted_substances/index.rst b/doc/source/api/impacted_substances/index.rst index 49dc97c1..e8aecc0e 100644 --- a/doc/source/api/impacted_substances/index.rst +++ b/doc/source/api/impacted_substances/index.rst @@ -6,17 +6,17 @@ Impacted substances API This section gives an overview of the API for impacted substances. The :ref:`ref_grantami_bomanalytics_api_impactedsubstances_materials`, :ref:`ref_grantami_bomanalytics_api_impactedsubstances_specifications`, and -:ref:`ref_grantami_bomanalytics_api_impactedsubstances_parts` queries accept a list of references to records in a -Granta MI database and determine the impacted substances that are directly or indirectly associated with these records via -associated records in the Granta MI database. +:ref:`ref_grantami_bomanalytics_api_impactedsubstances_parts` queries (collectively referred to as record-based +impacted substances queries) accept a list of references to records in a Granta MI database. +These queries will also consider any additional associated BoM items stored in Granta MI. For example, if the specified +part record contains links to other parts and specifications, these will be included in the analysis. -The :ref:`ref_grantami_bomanalytics_api_impactedsubstances_bom` query is -similar, but instead of records it accepts a Bill of Materials in XML format, which in turn includes references to -Granta MI records. As opposed to record based queries, the BoM impacted substances analysis is only performed on items -directly defined in the input BoM (even for BoM items defined as MI record references, associated records in the MI -database are not taken into account). +The :ref:`ref_grantami_bomanalytics_api_impactedsubstances_bom` query accepts a Bill of Materials in XML format, which +includes references to Granta MI records. As opposed to record-based queries, the BoM impacted substances analysis only +considers items explicitly defined in the input BoM. It does not follow links to other BoM items as in the +record-based queries described above. -In all cases, impacted substances are determined by a list of legislations, identified by legislation name. +In all cases, impacted substances are determined by a list of legislations, identified by legislation ID. These queries do not take the quantity of the substance in the parent item into consideration. If the quantity is important, for example to determine compliance against a legislation that imposes a certain threshold, you should diff --git a/doc/source/api/sustainability/index.rst b/doc/source/api/sustainability/index.rst index 59c079b9..5cb44a52 100644 --- a/doc/source/api/sustainability/index.rst +++ b/doc/source/api/sustainability/index.rst @@ -9,8 +9,8 @@ This section provides an overview of the API for sustainability. The can be used to determine the environmental performance of a BoM (bill of materials) in Ansys Granta MI 2301 XML BoM format. -BoM analysis is only performed on items directly defined in the input BoM. Items defined as MI record references might -have associated items defined in the database, but they are not taken into consideration in the analysis. +The BoM analysis only considers items explicitly defined in the input BoM. It does not follow links to other BoM items +as in the record-based queries available for Impacted Substances and Compliance analysis. For more information about BoM item types relevant for sustainability analysis, refer to the :MI_docs:`BoM item types for Sustainability ` section of the online From 50259f67315fc073a62750f3b4c2dc27f96f8da8 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 16 Nov 2023 14:35:53 +0100 Subject: [PATCH 241/275] Re-ordering --- doc/source/api/compliance/index.rst | 10 +++++----- doc/source/api/impacted_substances/index.rst | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/doc/source/api/compliance/index.rst b/doc/source/api/compliance/index.rst index 153f4ad7..b2aa9e87 100644 --- a/doc/source/api/compliance/index.rst +++ b/doc/source/api/compliance/index.rst @@ -12,16 +12,16 @@ queries) can be used to determine the compliance of records in a Granta MI datab any additional associated BoM items stored in Granta MI. For example, if the specified part record contains links to other parts and specifications, these will be included in the analysis. -Compliance is determined based on a number of :ref:`ref_grantami_bomanalytics_api_compliance_indicators`. An indicator -is a collection of one or more legislations and a threshold. If a certain record directly or indirectly contains -substances impacted by one of the specified legislations in an amount that exceeds the threshold, the record is not -compliant with that indicator. For more information about possible results, see the definitions of the indicators. - The :ref:`ref_grantami_bomanalytics_api_compliance_bom` query accepts a BoM (bill of materials) in XML format and returns the compliance status of the BoM based on the BoM's contents. As opposed to record-based queries, the BoM compliance analysis only considers items explicitly defined in the input BoM. It does not follow links to other BoM items as in the record-based queries described above. +In both cases, compliance is determined based on a number of :ref:`ref_grantami_bomanalytics_api_compliance_indicators`. +An indicator is a collection of one or more legislations and a threshold. If a certain record directly or indirectly contains +substances impacted by one of the specified legislations in an amount that exceeds the threshold, the record is not +compliant with that indicator. For more information about possible results, see the definitions of the indicators. + In general, the result of each query is a recursive BoM (or multi-level BoM) that shows the compliance status and impacted substances at each level. If you are looking for a simple determination of the substances indirectly or directly contained within a item represented by a Granta MI record, consider using the diff --git a/doc/source/api/impacted_substances/index.rst b/doc/source/api/impacted_substances/index.rst index e8aecc0e..cda2c363 100644 --- a/doc/source/api/impacted_substances/index.rst +++ b/doc/source/api/impacted_substances/index.rst @@ -16,7 +16,7 @@ includes references to Granta MI records. As opposed to record-based queries, th considers items explicitly defined in the input BoM. It does not follow links to other BoM items as in the record-based queries described above. -In all cases, impacted substances are determined by a list of legislations, identified by legislation ID. +In both cases, impacted substances are determined by a list of legislations, identified by legislation ID. These queries do not take the quantity of the substance in the parent item into consideration. If the quantity is important, for example to determine compliance against a legislation that imposes a certain threshold, you should From a4f953f1d24e110919a629a9d9a51c35bd259580 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 16 Nov 2023 18:51:04 +0100 Subject: [PATCH 242/275] Add missing mian dependencies --- poetry.lock | 4 ++-- pyproject.toml | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/poetry.lock b/poetry.lock index 63f3b9fe..b18905cb 100644 --- a/poetry.lock +++ b/poetry.lock @@ -3551,9 +3551,9 @@ docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.link testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"] [extras] -examples = ["jupyterlab", "lxml", "pandas", "tabulate"] +examples = ["ipywidgets", "jupyterlab", "lxml", "pandas", "plotly", "tabulate"] [metadata] lock-version = "2.0" python-versions = "^3.8.0" -content-hash = "28fe443a026a82b4a579ccc321e1e302c20171b711f4c1d1b423fb07ae49927b" +content-hash = "546063b756471cee5daa3a18a60c8981f0198fc1c7dbac85feed7292bd8e484f" diff --git a/pyproject.toml b/pyproject.toml index b3f115ed..7f0c900f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -41,13 +41,16 @@ python = "^3.8.0" # Packages for core library ansys-openapi-common = "< 2.0.0" ansys-grantami-bomanalytics-openapi = { git = 'https://github.com/ansys/grantami-bomanalytics-openapi-private.git', subdirectory = 'ansys-grantami-bomanalytics-openapi', rev = '16ca550' } +xmlschema = "^2.4.0" # Packages for the examples extra jupyterlab = { version = ">=3,<5", optional = true } lxml = { version = "^4", optional = true } pandas = { version = "^2.0", optional = true } tabulate = { version = "^0.9", optional = true } -xmlschema = "^2.4.0" +plotly = { version = "^5.17.0", optional = true } +ipywidgets = { version = "^8.1.1", optional = true } + [tool.poetry.group.dev.dependencies] # Common packages for test, examples, and docs From 6b9fcb7e01c4cc13dbbee21ee2ca53450f64d2f0 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 16 Nov 2023 18:53:31 +0100 Subject: [PATCH 243/275] Poetry lock with update --- poetry.lock | 1697 +++++++++++++++++++++++++++------------------------ 1 file changed, 892 insertions(+), 805 deletions(-) diff --git a/poetry.lock b/poetry.lock index b18905cb..153559b0 100644 --- a/poetry.lock +++ b/poetry.lock @@ -88,24 +88,24 @@ doc = ["Sphinx (==6.2.1)", "numpydoc (==1.5.0)", "requests (==2.31.0)", "sphinx- [[package]] name = "anyio" -version = "3.7.1" +version = "4.0.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "anyio-3.7.1-py3-none-any.whl", hash = "sha256:91dee416e570e92c64041bd18b900d1d6fa78dff7048769ce5ac5ddad004fbb5"}, - {file = "anyio-3.7.1.tar.gz", hash = "sha256:44a3c9aba0f5defa43261a8b3efb97891f2bd7d804e0e1f56419befa1adfc780"}, + {file = "anyio-4.0.0-py3-none-any.whl", hash = "sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f"}, + {file = "anyio-4.0.0.tar.gz", hash = "sha256:f7ed51751b2c2add651e5747c891b47e26d2a21be5d32d9311dfe9692f3e5d7a"}, ] [package.dependencies] -exceptiongroup = {version = "*", markers = "python_version < \"3.11\""} +exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} idna = ">=2.8" sniffio = ">=1.1" [package.extras] -doc = ["Sphinx", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme (>=1.2.2)", "sphinxcontrib-jquery"] -test = ["anyio[trio]", "coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "mock (>=4)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] -trio = ["trio (<0.22)"] +doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)"] +test = ["anyio[trio]", "coverage[toml] (>=7)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] +trio = ["trio (>=0.22)"] [[package]] name = "apeye" @@ -213,34 +213,40 @@ tests = ["pytest"] [[package]] name = "arrow" -version = "1.2.3" +version = "1.3.0" description = "Better dates & times for Python" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "arrow-1.2.3-py3-none-any.whl", hash = "sha256:5a49ab92e3b7b71d96cd6bfcc4df14efefc9dfa96ea19045815914a6ab6b1fe2"}, - {file = "arrow-1.2.3.tar.gz", hash = "sha256:3934b30ca1b9f292376d9db15b19446088d12ec58629bc3f0da28fd55fb633a1"}, + {file = "arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80"}, + {file = "arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85"}, ] [package.dependencies] python-dateutil = ">=2.7.0" +types-python-dateutil = ">=2.8.10" + +[package.extras] +doc = ["doc8", "sphinx (>=7.0.0)", "sphinx-autobuild", "sphinx-autodoc-typehints", "sphinx_rtd_theme (>=1.3.0)"] +test = ["dateparser (==1.*)", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytz (==2021.1)", "simplejson (==3.*)"] [[package]] name = "asttokens" -version = "2.2.1" +version = "2.4.1" description = "Annotate AST trees with source code positions" optional = false python-versions = "*" files = [ - {file = "asttokens-2.2.1-py2.py3-none-any.whl", hash = "sha256:6b0ac9e93fb0335014d382b8fa9b3afa7df546984258005da0b9e7095b3deb1c"}, - {file = "asttokens-2.2.1.tar.gz", hash = "sha256:4622110b2a6f30b77e1473affaa97e711bc2f07d3f10848420ff1898edbe94f3"}, + {file = "asttokens-2.4.1-py2.py3-none-any.whl", hash = "sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24"}, + {file = "asttokens-2.4.1.tar.gz", hash = "sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0"}, ] [package.dependencies] -six = "*" +six = ">=1.12.0" [package.extras] -test = ["astroid", "pytest"] +astroid = ["astroid (>=1,<2)", "astroid (>=2,<4)"] +test = ["astroid (>=1,<2)", "astroid (>=2,<4)", "pytest"] [[package]] name = "async-lru" @@ -290,17 +296,21 @@ Sphinx = ">=2.2,<8.0" [[package]] name = "babel" -version = "2.12.1" +version = "2.13.1" description = "Internationalization utilities" optional = false python-versions = ">=3.7" files = [ - {file = "Babel-2.12.1-py3-none-any.whl", hash = "sha256:b4246fb7677d3b98f501a39d43396d3cafdc8eadb045f4a31be01863f655c610"}, - {file = "Babel-2.12.1.tar.gz", hash = "sha256:cc2d99999cd01d44420ae725a21c9e3711b3aadc7976d6147f622d8581963455"}, + {file = "Babel-2.13.1-py3-none-any.whl", hash = "sha256:7077a4984b02b6727ac10f1f7294484f737443d7e2e66c5e4380e41a3ae0b4ed"}, + {file = "Babel-2.13.1.tar.gz", hash = "sha256:33e0952d7dd6374af8dbf6768cc4ddf3ccfefc244f9986d4074704f2fbd18900"}, ] [package.dependencies] pytz = {version = ">=2015.7", markers = "python_version < \"3.9\""} +setuptools = {version = "*", markers = "python_version >= \"3.12\""} + +[package.extras] +dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] [[package]] name = "backcall" @@ -333,13 +343,13 @@ lxml = ["lxml"] [[package]] name = "bleach" -version = "6.0.0" +version = "6.1.0" description = "An easy safelist-based HTML-sanitizing tool." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "bleach-6.0.0-py3-none-any.whl", hash = "sha256:33c16e3353dbd13028ab4799a0f89a83f113405c766e9c122df8a06f5b85b3f4"}, - {file = "bleach-6.0.0.tar.gz", hash = "sha256:1a1a85c1595e07d8db14c5f09f09e6433502c51c595970edc090551f0db99414"}, + {file = "bleach-6.1.0-py3-none-any.whl", hash = "sha256:3225f354cfc436b9789c66c4ee030194bee0568fbf9cbdad3bc8b5c26c5f12b6"}, + {file = "bleach-6.1.0.tar.gz", hash = "sha256:0a31f1837963c41d46bbf1331b8778e1308ea0791db03cc4e7357b97cf42a8fe"}, ] [package.dependencies] @@ -347,7 +357,7 @@ six = ">=1.9.0" webencodings = "*" [package.extras] -css = ["tinycss2 (>=1.1.0,<1.2)"] +css = ["tinycss2 (>=1.1.0,<1.3)"] [[package]] name = "cachecontrol" @@ -383,75 +393,63 @@ files = [ [[package]] name = "cffi" -version = "1.15.1" +version = "1.16.0" description = "Foreign Function Interface for Python calling C code." optional = false -python-versions = "*" +python-versions = ">=3.8" files = [ - {file = "cffi-1.15.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2"}, - {file = "cffi-1.15.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2"}, - {file = "cffi-1.15.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914"}, - {file = "cffi-1.15.1-cp27-cp27m-win32.whl", hash = "sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3"}, - {file = "cffi-1.15.1-cp27-cp27m-win_amd64.whl", hash = "sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e"}, - {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162"}, - {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b"}, - {file = "cffi-1.15.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21"}, - {file = "cffi-1.15.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4"}, - {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01"}, - {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e"}, - {file = "cffi-1.15.1-cp310-cp310-win32.whl", hash = "sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2"}, - {file = "cffi-1.15.1-cp310-cp310-win_amd64.whl", hash = "sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d"}, - {file = "cffi-1.15.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac"}, - {file = "cffi-1.15.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c"}, - {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef"}, - {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8"}, - {file = "cffi-1.15.1-cp311-cp311-win32.whl", hash = "sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d"}, - {file = "cffi-1.15.1-cp311-cp311-win_amd64.whl", hash = "sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104"}, - {file = "cffi-1.15.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e"}, - {file = "cffi-1.15.1-cp36-cp36m-win32.whl", hash = "sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf"}, - {file = "cffi-1.15.1-cp36-cp36m-win_amd64.whl", hash = "sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497"}, - {file = "cffi-1.15.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426"}, - {file = "cffi-1.15.1-cp37-cp37m-win32.whl", hash = "sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9"}, - {file = "cffi-1.15.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045"}, - {file = "cffi-1.15.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192"}, - {file = "cffi-1.15.1-cp38-cp38-win32.whl", hash = "sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314"}, - {file = "cffi-1.15.1-cp38-cp38-win_amd64.whl", hash = "sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5"}, - {file = "cffi-1.15.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585"}, - {file = "cffi-1.15.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27"}, - {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76"}, - {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3"}, - {file = "cffi-1.15.1-cp39-cp39-win32.whl", hash = "sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee"}, - {file = "cffi-1.15.1-cp39-cp39-win_amd64.whl", hash = "sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c"}, - {file = "cffi-1.15.1.tar.gz", hash = "sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9"}, + {file = "cffi-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b3d6606d369fc1da4fd8c357d026317fbb9c9b75d36dc16e90e84c26854b088"}, + {file = "cffi-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ac0f5edd2360eea2f1daa9e26a41db02dd4b0451b48f7c318e217ee092a213e9"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7e61e3e4fa664a8588aa25c883eab612a188c725755afff6289454d6362b9673"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a72e8961a86d19bdb45851d8f1f08b041ea37d2bd8d4fd19903bc3083d80c896"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b50bf3f55561dac5438f8e70bfcdfd74543fd60df5fa5f62d94e5867deca684"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7651c50c8c5ef7bdb41108b7b8c5a83013bfaa8a935590c5d74627c047a583c7"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4108df7fe9b707191e55f33efbcb2d81928e10cea45527879a4749cbe472614"}, + {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:32c68ef735dbe5857c810328cb2481e24722a59a2003018885514d4c09af9743"}, + {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:673739cb539f8cdaa07d92d02efa93c9ccf87e345b9a0b556e3ecc666718468d"}, + {file = "cffi-1.16.0-cp310-cp310-win32.whl", hash = "sha256:9f90389693731ff1f659e55c7d1640e2ec43ff725cc61b04b2f9c6d8d017df6a"}, + {file = "cffi-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:e6024675e67af929088fda399b2094574609396b1decb609c55fa58b028a32a1"}, + {file = "cffi-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404"}, + {file = "cffi-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e70f54f1796669ef691ca07d046cd81a29cb4deb1e5f942003f401c0c4a2695d"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5bf44d66cdf9e893637896c7faa22298baebcd18d1ddb6d2626a6e39793a1d56"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e"}, + {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c6a164aa47843fb1b01e941d385aab7215563bb8816d80ff3a363a9f8448a8dc"}, + {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e09f3ff613345df5e8c3667da1d918f9149bd623cd9070c983c013792a9a62eb"}, + {file = "cffi-1.16.0-cp311-cp311-win32.whl", hash = "sha256:2c56b361916f390cd758a57f2e16233eb4f64bcbeee88a4881ea90fca14dc6ab"}, + {file = "cffi-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba"}, + {file = "cffi-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956"}, + {file = "cffi-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:68e7c44931cc171c54ccb702482e9fc723192e88d25a0e133edd7aff8fcd1f6e"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abd808f9c129ba2beda4cfc53bde801e5bcf9d6e0f22f095e45327c038bfe68e"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88e2b3c14bdb32e440be531ade29d3c50a1a59cd4e51b1dd8b0865c54ea5d2e2"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7be2d771cdba2942e13215c4e340bfd76398e9227ad10402a8767ab1865d2e6"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e715596e683d2ce000574bae5d07bd522c781a822866c20495e52520564f0969"}, + {file = "cffi-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2d92b25dbf6cae33f65005baf472d2c245c050b1ce709cc4588cdcdd5495b520"}, + {file = "cffi-1.16.0-cp312-cp312-win32.whl", hash = "sha256:b2ca4e77f9f47c55c194982e10f058db063937845bb2b7a86c84a6cfe0aefa8b"}, + {file = "cffi-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:68678abf380b42ce21a5f2abde8efee05c114c2fdb2e9eef2efdb0257fba1235"}, + {file = "cffi-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a09582f178759ee8128d9270cd1344154fd473bb77d94ce0aeb2a93ebf0feaf0"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e760191dd42581e023a68b758769e2da259b5d52e3103c6060ddc02c9edb8d7b"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80876338e19c951fdfed6198e70bc88f1c9758b94578d5a7c4c91a87af3cf31c"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6a14b17d7e17fa0d207ac08642c8820f84f25ce17a442fd15e27ea18d67c59b"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6602bc8dc6f3a9e02b6c22c4fc1e47aa50f8f8e6d3f78a5e16ac33ef5fefa324"}, + {file = "cffi-1.16.0-cp38-cp38-win32.whl", hash = "sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a"}, + {file = "cffi-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:31d13b0f99e0836b7ff893d37af07366ebc90b678b6664c955b54561fc36ef36"}, + {file = "cffi-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:582215a0e9adbe0e379761260553ba11c58943e4bbe9c36430c4ca6ac74b15ed"}, + {file = "cffi-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b29ebffcf550f9da55bec9e02ad430c992a87e5f512cd63388abb76f1036d8d2"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dc9b18bf40cc75f66f40a7379f6a9513244fe33c0e8aa72e2d56b0196a7ef872"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cb4a35b3642fc5c005a6755a5d17c6c8b6bcb6981baf81cea8bfbc8903e8ba8"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b86851a328eedc692acf81fb05444bdf1891747c25af7529e39ddafaf68a4f3f"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c0f31130ebc2d37cdd8e44605fb5fa7ad59049298b3f745c74fa74c62fbfcfc4"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f8e709127c6c77446a8c0a8c8bf3c8ee706a06cd44b1e827c3e6a2ee6b8c098"}, + {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:748dcd1e3d3d7cd5443ef03ce8685043294ad6bd7c02a38d1bd367cfd968e000"}, + {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8895613bcc094d4a1b2dbe179d88d7fb4a15cee43c052e8885783fac397d91fe"}, + {file = "cffi-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed86a35631f7bfbb28e108dd96773b9d5a6ce4811cf6ea468bb6a359b256b1e4"}, + {file = "cffi-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8"}, + {file = "cffi-1.16.0.tar.gz", hash = "sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0"}, ] [package.dependencies] @@ -459,86 +457,101 @@ pycparser = "*" [[package]] name = "charset-normalizer" -version = "3.2.0" +version = "3.3.2" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7.0" files = [ - {file = "charset-normalizer-3.2.0.tar.gz", hash = "sha256:3bb3d25a8e6c0aedd251753a79ae98a093c7e7b471faa3aa9a93a81431987ace"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b87549028f680ca955556e3bd57013ab47474c3124dc069faa0b6545b6c9710"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7c70087bfee18a42b4040bb9ec1ca15a08242cf5867c58726530bdf3945672ed"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a103b3a7069b62f5d4890ae1b8f0597618f628b286b03d4bc9195230b154bfa9"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94aea8eff76ee6d1cdacb07dd2123a68283cb5569e0250feab1240058f53b623"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:db901e2ac34c931d73054d9797383d0f8009991e723dab15109740a63e7f902a"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b0dac0ff919ba34d4df1b6131f59ce95b08b9065233446be7e459f95554c0dc8"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:193cbc708ea3aca45e7221ae58f0fd63f933753a9bfb498a3b474878f12caaad"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09393e1b2a9461950b1c9a45d5fd251dc7c6f228acab64da1c9c0165d9c7765c"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:baacc6aee0b2ef6f3d308e197b5d7a81c0e70b06beae1f1fcacffdbd124fe0e3"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:bf420121d4c8dce6b889f0e8e4ec0ca34b7f40186203f06a946fa0276ba54029"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c04a46716adde8d927adb9457bbe39cf473e1e2c2f5d0a16ceb837e5d841ad4f"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:aaf63899c94de41fe3cf934601b0f7ccb6b428c6e4eeb80da72c58eab077b19a"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d62e51710986674142526ab9f78663ca2b0726066ae26b78b22e0f5e571238dd"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-win32.whl", hash = "sha256:04e57ab9fbf9607b77f7d057974694b4f6b142da9ed4a199859d9d4d5c63fe96"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:48021783bdf96e3d6de03a6e39a1171ed5bd7e8bb93fc84cc649d11490f87cea"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4957669ef390f0e6719db3613ab3a7631e68424604a7b448f079bee145da6e09"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:46fb8c61d794b78ec7134a715a3e564aafc8f6b5e338417cb19fe9f57a5a9bf2"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f779d3ad205f108d14e99bb3859aa7dd8e9c68874617c72354d7ecaec2a054ac"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f25c229a6ba38a35ae6e25ca1264621cc25d4d38dca2942a7fce0b67a4efe918"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2efb1bd13885392adfda4614c33d3b68dee4921fd0ac1d3988f8cbb7d589e72a"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f30b48dd7fa1474554b0b0f3fdfdd4c13b5c737a3c6284d3cdc424ec0ffff3a"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:246de67b99b6851627d945db38147d1b209a899311b1305dd84916f2b88526c6"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bd9b3b31adcb054116447ea22caa61a285d92e94d710aa5ec97992ff5eb7cf3"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8c2f5e83493748286002f9369f3e6607c565a6a90425a3a1fef5ae32a36d749d"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:3170c9399da12c9dc66366e9d14da8bf7147e1e9d9ea566067bbce7bb74bd9c2"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7a4826ad2bd6b07ca615c74ab91f32f6c96d08f6fcc3902ceeedaec8cdc3bcd6"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:3b1613dd5aee995ec6d4c69f00378bbd07614702a315a2cf6c1d21461fe17c23"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9e608aafdb55eb9f255034709e20d5a83b6d60c054df0802fa9c9883d0a937aa"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-win32.whl", hash = "sha256:f2a1d0fd4242bd8643ce6f98927cf9c04540af6efa92323e9d3124f57727bfc1"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:681eb3d7e02e3c3655d1b16059fbfb605ac464c834a0c629048a30fad2b27489"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c57921cda3a80d0f2b8aec7e25c8aa14479ea92b5b51b6876d975d925a2ea346"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41b25eaa7d15909cf3ac4c96088c1f266a9a93ec44f87f1d13d4a0e86c81b982"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f058f6963fd82eb143c692cecdc89e075fa0828db2e5b291070485390b2f1c9c"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7647ebdfb9682b7bb97e2a5e7cb6ae735b1c25008a70b906aecca294ee96cf4"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eef9df1eefada2c09a5e7a40991b9fc6ac6ef20b1372abd48d2794a316dc0449"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e03b8895a6990c9ab2cdcd0f2fe44088ca1c65ae592b8f795c3294af00a461c3"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:ee4006268ed33370957f55bf2e6f4d263eaf4dc3cfc473d1d90baff6ed36ce4a"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c4983bf937209c57240cff65906b18bb35e64ae872da6a0db937d7b4af845dd7"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:3bb7fda7260735efe66d5107fb7e6af6a7c04c7fce9b2514e04b7a74b06bf5dd"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:72814c01533f51d68702802d74f77ea026b5ec52793c791e2da806a3844a46c3"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:70c610f6cbe4b9fce272c407dd9d07e33e6bf7b4aa1b7ffb6f6ded8e634e3592"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-win32.whl", hash = "sha256:a401b4598e5d3f4a9a811f3daf42ee2291790c7f9d74b18d75d6e21dda98a1a1"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:c0b21078a4b56965e2b12f247467b234734491897e99c1d51cee628da9786959"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:95eb302ff792e12aba9a8b8f8474ab229a83c103d74a750ec0bd1c1eea32e669"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1a100c6d595a7f316f1b6f01d20815d916e75ff98c27a01ae817439ea7726329"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6339d047dab2780cc6220f46306628e04d9750f02f983ddb37439ca47ced7149"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4b749b9cc6ee664a3300bb3a273c1ca8068c46be705b6c31cf5d276f8628a94"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a38856a971c602f98472050165cea2cdc97709240373041b69030be15047691f"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89f1b185a01fe560bc8ae5f619e924407efca2191b56ce749ec84982fc59a32a"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e1c8a2f4c69e08e89632defbfabec2feb8a8d99edc9f89ce33c4b9e36ab63037"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2f4ac36d8e2b4cc1aa71df3dd84ff8efbe3bfb97ac41242fbcfc053c67434f46"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a386ebe437176aab38c041de1260cd3ea459c6ce5263594399880bbc398225b2"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:ccd16eb18a849fd8dcb23e23380e2f0a354e8daa0c984b8a732d9cfaba3a776d"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:e6a5bf2cba5ae1bb80b154ed68a3cfa2fa00fde979a7f50d6598d3e17d9ac20c"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:45de3f87179c1823e6d9e32156fb14c1927fcc9aba21433f088fdfb555b77c10"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-win32.whl", hash = "sha256:1000fba1057b92a65daec275aec30586c3de2401ccdcd41f8a5c1e2c87078706"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:8b2c760cfc7042b27ebdb4a43a4453bd829a5742503599144d54a032c5dc7e9e"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:855eafa5d5a2034b4621c74925d89c5efef61418570e5ef9b37717d9c796419c"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:203f0c8871d5a7987be20c72442488a0b8cfd0f43b7973771640fc593f56321f"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e857a2232ba53ae940d3456f7533ce6ca98b81917d47adc3c7fd55dad8fab858"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e86d77b090dbddbe78867a0275cb4df08ea195e660f1f7f13435a4649e954e5"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c4fb39a81950ec280984b3a44f5bd12819953dc5fa3a7e6fa7a80db5ee853952"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dee8e57f052ef5353cf608e0b4c871aee320dd1b87d351c28764fc0ca55f9f4"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8700f06d0ce6f128de3ccdbc1acaea1ee264d2caa9ca05daaf492fde7c2a7200"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1920d4ff15ce893210c1f0c0e9d19bfbecb7983c76b33f046c13a8ffbd570252"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c1c76a1743432b4b60ab3358c937a3fe1341c828ae6194108a94c69028247f22"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f7560358a6811e52e9c4d142d497f1a6e10103d3a6881f18d04dbce3729c0e2c"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:c8063cf17b19661471ecbdb3df1c84f24ad2e389e326ccaf89e3fb2484d8dd7e"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:cd6dbe0238f7743d0efe563ab46294f54f9bc8f4b9bcf57c3c666cc5bc9d1299"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1249cbbf3d3b04902ff081ffbb33ce3377fa6e4c7356f759f3cd076cc138d020"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-win32.whl", hash = "sha256:6c409c0deba34f147f77efaa67b8e4bb83d2f11c8806405f76397ae5b8c0d1c9"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:7095f6fbfaa55defb6b733cfeb14efaae7a29f0b59d8cf213be4e7ca0b857b80"}, - {file = "charset_normalizer-3.2.0-py3-none-any.whl", hash = "sha256:8e098148dd37b4ce3baca71fb394c81dc5d9c7728c95df695d2dca218edf40e6"}, + {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, + {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, ] [[package]] @@ -554,82 +567,80 @@ files = [ [[package]] name = "comm" -version = "0.1.4" +version = "0.2.0" description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc." optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "comm-0.1.4-py3-none-any.whl", hash = "sha256:6d52794cba11b36ed9860999cd10fd02d6b2eac177068fdd585e1e2f8a96e67a"}, - {file = "comm-0.1.4.tar.gz", hash = "sha256:354e40a59c9dd6db50c5cc6b4acc887d82e9603787f83b68c01a80a923984d15"}, + {file = "comm-0.2.0-py3-none-any.whl", hash = "sha256:2da8d9ebb8dd7bfc247adaff99f24dce705638a8042b85cb995066793e391001"}, + {file = "comm-0.2.0.tar.gz", hash = "sha256:a517ea2ca28931c7007a7a99c562a0fa5883cfb48963140cf642c41c948498be"}, ] [package.dependencies] traitlets = ">=4" [package.extras] -lint = ["black (>=22.6.0)", "mdformat (>0.7)", "mdformat-gfm (>=0.3.5)", "ruff (>=0.0.156)"] test = ["pytest"] -typing = ["mypy (>=0.990)"] [[package]] name = "coverage" -version = "7.3.0" +version = "7.3.2" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.8" files = [ - {file = "coverage-7.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:db76a1bcb51f02b2007adacbed4c88b6dee75342c37b05d1822815eed19edee5"}, - {file = "coverage-7.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c02cfa6c36144ab334d556989406837336c1d05215a9bdf44c0bc1d1ac1cb637"}, - {file = "coverage-7.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:477c9430ad5d1b80b07f3c12f7120eef40bfbf849e9e7859e53b9c93b922d2af"}, - {file = "coverage-7.3.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ce2ee86ca75f9f96072295c5ebb4ef2a43cecf2870b0ca5e7a1cbdd929cf67e1"}, - {file = "coverage-7.3.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68d8a0426b49c053013e631c0cdc09b952d857efa8f68121746b339912d27a12"}, - {file = "coverage-7.3.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b3eb0c93e2ea6445b2173da48cb548364f8f65bf68f3d090404080d338e3a689"}, - {file = "coverage-7.3.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:90b6e2f0f66750c5a1178ffa9370dec6c508a8ca5265c42fbad3ccac210a7977"}, - {file = "coverage-7.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:96d7d761aea65b291a98c84e1250cd57b5b51726821a6f2f8df65db89363be51"}, - {file = "coverage-7.3.0-cp310-cp310-win32.whl", hash = "sha256:63c5b8ecbc3b3d5eb3a9d873dec60afc0cd5ff9d9f1c75981d8c31cfe4df8527"}, - {file = "coverage-7.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:97c44f4ee13bce914272589b6b41165bbb650e48fdb7bd5493a38bde8de730a1"}, - {file = "coverage-7.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:74c160285f2dfe0acf0f72d425f3e970b21b6de04157fc65adc9fd07ee44177f"}, - {file = "coverage-7.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b543302a3707245d454fc49b8ecd2c2d5982b50eb63f3535244fd79a4be0c99d"}, - {file = "coverage-7.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad0f87826c4ebd3ef484502e79b39614e9c03a5d1510cfb623f4a4a051edc6fd"}, - {file = "coverage-7.3.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:13c6cbbd5f31211d8fdb477f0f7b03438591bdd077054076eec362cf2207b4a7"}, - {file = "coverage-7.3.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fac440c43e9b479d1241fe9d768645e7ccec3fb65dc3a5f6e90675e75c3f3e3a"}, - {file = "coverage-7.3.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3c9834d5e3df9d2aba0275c9f67989c590e05732439b3318fa37a725dff51e74"}, - {file = "coverage-7.3.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4c8e31cf29b60859876474034a83f59a14381af50cbe8a9dbaadbf70adc4b214"}, - {file = "coverage-7.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7a9baf8e230f9621f8e1d00c580394a0aa328fdac0df2b3f8384387c44083c0f"}, - {file = "coverage-7.3.0-cp311-cp311-win32.whl", hash = "sha256:ccc51713b5581e12f93ccb9c5e39e8b5d4b16776d584c0f5e9e4e63381356482"}, - {file = "coverage-7.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:887665f00ea4e488501ba755a0e3c2cfd6278e846ada3185f42d391ef95e7e70"}, - {file = "coverage-7.3.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d000a739f9feed900381605a12a61f7aaced6beae832719ae0d15058a1e81c1b"}, - {file = "coverage-7.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:59777652e245bb1e300e620ce2bef0d341945842e4eb888c23a7f1d9e143c446"}, - {file = "coverage-7.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9737bc49a9255d78da085fa04f628a310c2332b187cd49b958b0e494c125071"}, - {file = "coverage-7.3.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5247bab12f84a1d608213b96b8af0cbb30d090d705b6663ad794c2f2a5e5b9fe"}, - {file = "coverage-7.3.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2ac9a1de294773b9fa77447ab7e529cf4fe3910f6a0832816e5f3d538cfea9a"}, - {file = "coverage-7.3.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:85b7335c22455ec12444cec0d600533a238d6439d8d709d545158c1208483873"}, - {file = "coverage-7.3.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:36ce5d43a072a036f287029a55b5c6a0e9bd73db58961a273b6dc11a2c6eb9c2"}, - {file = "coverage-7.3.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:211a4576e984f96d9fce61766ffaed0115d5dab1419e4f63d6992b480c2bd60b"}, - {file = "coverage-7.3.0-cp312-cp312-win32.whl", hash = "sha256:56afbf41fa4a7b27f6635bc4289050ac3ab7951b8a821bca46f5b024500e6321"}, - {file = "coverage-7.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:7f297e0c1ae55300ff688568b04ff26b01c13dfbf4c9d2b7d0cb688ac60df479"}, - {file = "coverage-7.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ac0dec90e7de0087d3d95fa0533e1d2d722dcc008bc7b60e1143402a04c117c1"}, - {file = "coverage-7.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:438856d3f8f1e27f8e79b5410ae56650732a0dcfa94e756df88c7e2d24851fcd"}, - {file = "coverage-7.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1084393c6bda8875c05e04fce5cfe1301a425f758eb012f010eab586f1f3905e"}, - {file = "coverage-7.3.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49ab200acf891e3dde19e5aa4b0f35d12d8b4bd805dc0be8792270c71bd56c54"}, - {file = "coverage-7.3.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a67e6bbe756ed458646e1ef2b0778591ed4d1fcd4b146fc3ba2feb1a7afd4254"}, - {file = "coverage-7.3.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8f39c49faf5344af36042b293ce05c0d9004270d811c7080610b3e713251c9b0"}, - {file = "coverage-7.3.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:7df91fb24c2edaabec4e0eee512ff3bc6ec20eb8dccac2e77001c1fe516c0c84"}, - {file = "coverage-7.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:34f9f0763d5fa3035a315b69b428fe9c34d4fc2f615262d6be3d3bf3882fb985"}, - {file = "coverage-7.3.0-cp38-cp38-win32.whl", hash = "sha256:bac329371d4c0d456e8d5f38a9b0816b446581b5f278474e416ea0c68c47dcd9"}, - {file = "coverage-7.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:b859128a093f135b556b4765658d5d2e758e1fae3e7cc2f8c10f26fe7005e543"}, - {file = "coverage-7.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fc0ed8d310afe013db1eedd37176d0839dc66c96bcfcce8f6607a73ffea2d6ba"}, - {file = "coverage-7.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61260ec93f99f2c2d93d264b564ba912bec502f679793c56f678ba5251f0393"}, - {file = "coverage-7.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:97af9554a799bd7c58c0179cc8dbf14aa7ab50e1fd5fa73f90b9b7215874ba28"}, - {file = "coverage-7.3.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3558e5b574d62f9c46b76120a5c7c16c4612dc2644c3d48a9f4064a705eaee95"}, - {file = "coverage-7.3.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37d5576d35fcb765fca05654f66aa71e2808d4237d026e64ac8b397ffa66a56a"}, - {file = "coverage-7.3.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:07ea61bcb179f8f05ffd804d2732b09d23a1238642bf7e51dad62082b5019b34"}, - {file = "coverage-7.3.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:80501d1b2270d7e8daf1b64b895745c3e234289e00d5f0e30923e706f110334e"}, - {file = "coverage-7.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4eddd3153d02204f22aef0825409091a91bf2a20bce06fe0f638f5c19a85de54"}, - {file = "coverage-7.3.0-cp39-cp39-win32.whl", hash = "sha256:2d22172f938455c156e9af2612650f26cceea47dc86ca048fa4e0b2d21646ad3"}, - {file = "coverage-7.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:60f64e2007c9144375dd0f480a54d6070f00bb1a28f65c408370544091c9bc9e"}, - {file = "coverage-7.3.0-pp38.pp39.pp310-none-any.whl", hash = "sha256:5492a6ce3bdb15c6ad66cb68a0244854d9917478877a25671d70378bdc8562d0"}, - {file = "coverage-7.3.0.tar.gz", hash = "sha256:49dbb19cdcafc130f597d9e04a29d0a032ceedf729e41b181f51cd170e6ee865"}, + {file = "coverage-7.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d872145f3a3231a5f20fd48500274d7df222e291d90baa2026cc5152b7ce86bf"}, + {file = "coverage-7.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:310b3bb9c91ea66d59c53fa4989f57d2436e08f18fb2f421a1b0b6b8cc7fffda"}, + {file = "coverage-7.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f47d39359e2c3779c5331fc740cf4bce6d9d680a7b4b4ead97056a0ae07cb49a"}, + {file = "coverage-7.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aa72dbaf2c2068404b9870d93436e6d23addd8bbe9295f49cbca83f6e278179c"}, + {file = "coverage-7.3.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:beaa5c1b4777f03fc63dfd2a6bd820f73f036bfb10e925fce067b00a340d0f3f"}, + {file = "coverage-7.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:dbc1b46b92186cc8074fee9d9fbb97a9dd06c6cbbef391c2f59d80eabdf0faa6"}, + {file = "coverage-7.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:315a989e861031334d7bee1f9113c8770472db2ac484e5b8c3173428360a9148"}, + {file = "coverage-7.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d1bc430677773397f64a5c88cb522ea43175ff16f8bfcc89d467d974cb2274f9"}, + {file = "coverage-7.3.2-cp310-cp310-win32.whl", hash = "sha256:a889ae02f43aa45032afe364c8ae84ad3c54828c2faa44f3bfcafecb5c96b02f"}, + {file = "coverage-7.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:c0ba320de3fb8c6ec16e0be17ee1d3d69adcda99406c43c0409cb5c41788a611"}, + {file = "coverage-7.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ac8c802fa29843a72d32ec56d0ca792ad15a302b28ca6203389afe21f8fa062c"}, + {file = "coverage-7.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:89a937174104339e3a3ffcf9f446c00e3a806c28b1841c63edb2b369310fd074"}, + {file = "coverage-7.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e267e9e2b574a176ddb983399dec325a80dbe161f1a32715c780b5d14b5f583a"}, + {file = "coverage-7.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2443cbda35df0d35dcfb9bf8f3c02c57c1d6111169e3c85fc1fcc05e0c9f39a3"}, + {file = "coverage-7.3.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4175e10cc8dda0265653e8714b3174430b07c1dca8957f4966cbd6c2b1b8065a"}, + {file = "coverage-7.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0cbf38419fb1a347aaf63481c00f0bdc86889d9fbf3f25109cf96c26b403fda1"}, + {file = "coverage-7.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:5c913b556a116b8d5f6ef834038ba983834d887d82187c8f73dec21049abd65c"}, + {file = "coverage-7.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1981f785239e4e39e6444c63a98da3a1db8e971cb9ceb50a945ba6296b43f312"}, + {file = "coverage-7.3.2-cp311-cp311-win32.whl", hash = "sha256:43668cabd5ca8258f5954f27a3aaf78757e6acf13c17604d89648ecc0cc66640"}, + {file = "coverage-7.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10c39c0452bf6e694511c901426d6b5ac005acc0f78ff265dbe36bf81f808a2"}, + {file = "coverage-7.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:4cbae1051ab791debecc4a5dcc4a1ff45fc27b91b9aee165c8a27514dd160836"}, + {file = "coverage-7.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:12d15ab5833a997716d76f2ac1e4b4d536814fc213c85ca72756c19e5a6b3d63"}, + {file = "coverage-7.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c7bba973ebee5e56fe9251300c00f1579652587a9f4a5ed8404b15a0471f216"}, + {file = "coverage-7.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fe494faa90ce6381770746077243231e0b83ff3f17069d748f645617cefe19d4"}, + {file = "coverage-7.3.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6e9589bd04d0461a417562649522575d8752904d35c12907d8c9dfeba588faf"}, + {file = "coverage-7.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d51ac2a26f71da1b57f2dc81d0e108b6ab177e7d30e774db90675467c847bbdf"}, + {file = "coverage-7.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:99b89d9f76070237975b315b3d5f4d6956ae354a4c92ac2388a5695516e47c84"}, + {file = "coverage-7.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fa28e909776dc69efb6ed975a63691bc8172b64ff357e663a1bb06ff3c9b589a"}, + {file = "coverage-7.3.2-cp312-cp312-win32.whl", hash = "sha256:289fe43bf45a575e3ab10b26d7b6f2ddb9ee2dba447499f5401cfb5ecb8196bb"}, + {file = "coverage-7.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:7dbc3ed60e8659bc59b6b304b43ff9c3ed858da2839c78b804973f613d3e92ed"}, + {file = "coverage-7.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f94b734214ea6a36fe16e96a70d941af80ff3bfd716c141300d95ebc85339738"}, + {file = "coverage-7.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:af3d828d2c1cbae52d34bdbb22fcd94d1ce715d95f1a012354a75e5913f1bda2"}, + {file = "coverage-7.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:630b13e3036e13c7adc480ca42fa7afc2a5d938081d28e20903cf7fd687872e2"}, + {file = "coverage-7.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c9eacf273e885b02a0273bb3a2170f30e2d53a6d53b72dbe02d6701b5296101c"}, + {file = "coverage-7.3.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8f17966e861ff97305e0801134e69db33b143bbfb36436efb9cfff6ec7b2fd9"}, + {file = "coverage-7.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b4275802d16882cf9c8b3d057a0839acb07ee9379fa2749eca54efbce1535b82"}, + {file = "coverage-7.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:72c0cfa5250f483181e677ebc97133ea1ab3eb68645e494775deb6a7f6f83901"}, + {file = "coverage-7.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:cb536f0dcd14149425996821a168f6e269d7dcd2c273a8bff8201e79f5104e76"}, + {file = "coverage-7.3.2-cp38-cp38-win32.whl", hash = "sha256:307adb8bd3abe389a471e649038a71b4eb13bfd6b7dd9a129fa856f5c695cf92"}, + {file = "coverage-7.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:88ed2c30a49ea81ea3b7f172e0269c182a44c236eb394718f976239892c0a27a"}, + {file = "coverage-7.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b631c92dfe601adf8f5ebc7fc13ced6bb6e9609b19d9a8cd59fa47c4186ad1ce"}, + {file = "coverage-7.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d3d9df4051c4a7d13036524b66ecf7a7537d14c18a384043f30a303b146164e9"}, + {file = "coverage-7.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f7363d3b6a1119ef05015959ca24a9afc0ea8a02c687fe7e2d557705375c01f"}, + {file = "coverage-7.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2f11cc3c967a09d3695d2a6f03fb3e6236622b93be7a4b5dc09166a861be6d25"}, + {file = "coverage-7.3.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:149de1d2401ae4655c436a3dced6dd153f4c3309f599c3d4bd97ab172eaf02d9"}, + {file = "coverage-7.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:3a4006916aa6fee7cd38db3bfc95aa9c54ebb4ffbfc47c677c8bba949ceba0a6"}, + {file = "coverage-7.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9028a3871280110d6e1aa2df1afd5ef003bab5fb1ef421d6dc748ae1c8ef2ebc"}, + {file = "coverage-7.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9f805d62aec8eb92bab5b61c0f07329275b6f41c97d80e847b03eb894f38d083"}, + {file = "coverage-7.3.2-cp39-cp39-win32.whl", hash = "sha256:d1c88ec1a7ff4ebca0219f5b1ef863451d828cccf889c173e1253aa84b1e07ce"}, + {file = "coverage-7.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b4767da59464bb593c07afceaddea61b154136300881844768037fd5e859353f"}, + {file = "coverage-7.3.2-pp38.pp39.pp310-none-any.whl", hash = "sha256:ae97af89f0fbf373400970c0a21eef5aa941ffeed90aee43650b81f7d7f47637"}, + {file = "coverage-7.3.2.tar.gz", hash = "sha256:be32ad29341b0170e795ca590e1c07e81fc061cb5b10c74ce7203491484404ef"}, ] [package.dependencies] @@ -640,34 +651,34 @@ toml = ["tomli"] [[package]] name = "cryptography" -version = "41.0.3" +version = "41.0.5" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." optional = false python-versions = ">=3.7" files = [ - {file = "cryptography-41.0.3-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:652627a055cb52a84f8c448185922241dd5217443ca194d5739b44612c5e6507"}, - {file = "cryptography-41.0.3-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:8f09daa483aedea50d249ef98ed500569841d6498aa9c9f4b0531b9964658922"}, - {file = "cryptography-41.0.3-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4fd871184321100fb400d759ad0cddddf284c4b696568204d281c902fc7b0d81"}, - {file = "cryptography-41.0.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:84537453d57f55a50a5b6835622ee405816999a7113267739a1b4581f83535bd"}, - {file = "cryptography-41.0.3-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:3fb248989b6363906827284cd20cca63bb1a757e0a2864d4c1682a985e3dca47"}, - {file = "cryptography-41.0.3-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:42cb413e01a5d36da9929baa9d70ca90d90b969269e5a12d39c1e0d475010116"}, - {file = "cryptography-41.0.3-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:aeb57c421b34af8f9fe830e1955bf493a86a7996cc1338fe41b30047d16e962c"}, - {file = "cryptography-41.0.3-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:6af1c6387c531cd364b72c28daa29232162010d952ceb7e5ca8e2827526aceae"}, - {file = "cryptography-41.0.3-cp37-abi3-win32.whl", hash = "sha256:0d09fb5356f975974dbcb595ad2d178305e5050656affb7890a1583f5e02a306"}, - {file = "cryptography-41.0.3-cp37-abi3-win_amd64.whl", hash = "sha256:a983e441a00a9d57a4d7c91b3116a37ae602907a7618b882c8013b5762e80574"}, - {file = "cryptography-41.0.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5259cb659aa43005eb55a0e4ff2c825ca111a0da1814202c64d28a985d33b087"}, - {file = "cryptography-41.0.3-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:67e120e9a577c64fe1f611e53b30b3e69744e5910ff3b6e97e935aeb96005858"}, - {file = "cryptography-41.0.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:7efe8041897fe7a50863e51b77789b657a133c75c3b094e51b5e4b5cec7bf906"}, - {file = "cryptography-41.0.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ce785cf81a7bdade534297ef9e490ddff800d956625020ab2ec2780a556c313e"}, - {file = "cryptography-41.0.3-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:57a51b89f954f216a81c9d057bf1a24e2f36e764a1ca9a501a6964eb4a6800dd"}, - {file = "cryptography-41.0.3-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:4c2f0d35703d61002a2bbdcf15548ebb701cfdd83cdc12471d2bae80878a4207"}, - {file = "cryptography-41.0.3-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:23c2d778cf829f7d0ae180600b17e9fceea3c2ef8b31a99e3c694cbbf3a24b84"}, - {file = "cryptography-41.0.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:95dd7f261bb76948b52a5330ba5202b91a26fbac13ad0e9fc8a3ac04752058c7"}, - {file = "cryptography-41.0.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:41d7aa7cdfded09b3d73a47f429c298e80796c8e825ddfadc84c8a7f12df212d"}, - {file = "cryptography-41.0.3-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:d0d651aa754ef58d75cec6edfbd21259d93810b73f6ec246436a21b7841908de"}, - {file = "cryptography-41.0.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:ab8de0d091acbf778f74286f4989cf3d1528336af1b59f3e5d2ebca8b5fe49e1"}, - {file = "cryptography-41.0.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a74fbcdb2a0d46fe00504f571a2a540532f4c188e6ccf26f1f178480117b33c4"}, - {file = "cryptography-41.0.3.tar.gz", hash = "sha256:6d192741113ef5e30d89dcb5b956ef4e1578f304708701b8b73d38e3e1461f34"}, + {file = "cryptography-41.0.5-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:da6a0ff8f1016ccc7477e6339e1d50ce5f59b88905585f77193ebd5068f1e797"}, + {file = "cryptography-41.0.5-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:b948e09fe5fb18517d99994184854ebd50b57248736fd4c720ad540560174ec5"}, + {file = "cryptography-41.0.5-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d38e6031e113b7421db1de0c1b1f7739564a88f1684c6b89234fbf6c11b75147"}, + {file = "cryptography-41.0.5-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e270c04f4d9b5671ebcc792b3ba5d4488bf7c42c3c241a3748e2599776f29696"}, + {file = "cryptography-41.0.5-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:ec3b055ff8f1dce8e6ef28f626e0972981475173d7973d63f271b29c8a2897da"}, + {file = "cryptography-41.0.5-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:7d208c21e47940369accfc9e85f0de7693d9a5d843c2509b3846b2db170dfd20"}, + {file = "cryptography-41.0.5-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:8254962e6ba1f4d2090c44daf50a547cd5f0bf446dc658a8e5f8156cae0d8548"}, + {file = "cryptography-41.0.5-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:a48e74dad1fb349f3dc1d449ed88e0017d792997a7ad2ec9587ed17405667e6d"}, + {file = "cryptography-41.0.5-cp37-abi3-win32.whl", hash = "sha256:d3977f0e276f6f5bf245c403156673db103283266601405376f075c849a0b936"}, + {file = "cryptography-41.0.5-cp37-abi3-win_amd64.whl", hash = "sha256:73801ac9736741f220e20435f84ecec75ed70eda90f781a148f1bad546963d81"}, + {file = "cryptography-41.0.5-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3be3ca726e1572517d2bef99a818378bbcf7d7799d5372a46c79c29eb8d166c1"}, + {file = "cryptography-41.0.5-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:e886098619d3815e0ad5790c973afeee2c0e6e04b4da90b88e6bd06e2a0b1b72"}, + {file = "cryptography-41.0.5-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:573eb7128cbca75f9157dcde974781209463ce56b5804983e11a1c462f0f4e88"}, + {file = "cryptography-41.0.5-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:0c327cac00f082013c7c9fb6c46b7cc9fa3c288ca702c74773968173bda421bf"}, + {file = "cryptography-41.0.5-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:227ec057cd32a41c6651701abc0328135e472ed450f47c2766f23267b792a88e"}, + {file = "cryptography-41.0.5-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:22892cc830d8b2c89ea60148227631bb96a7da0c1b722f2aac8824b1b7c0b6b8"}, + {file = "cryptography-41.0.5-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:5a70187954ba7292c7876734183e810b728b4f3965fbe571421cb2434d279179"}, + {file = "cryptography-41.0.5-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:88417bff20162f635f24f849ab182b092697922088b477a7abd6664ddd82291d"}, + {file = "cryptography-41.0.5-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c707f7afd813478e2019ae32a7c49cd932dd60ab2d2a93e796f68236b7e1fbf1"}, + {file = "cryptography-41.0.5-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:580afc7b7216deeb87a098ef0674d6ee34ab55993140838b14c9b83312b37b86"}, + {file = "cryptography-41.0.5-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:fba1e91467c65fe64a82c689dc6cf58151158993b13eb7a7f3f4b7f395636723"}, + {file = "cryptography-41.0.5-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:0d2a6a598847c46e3e321a7aef8af1436f11c27f1254933746304ff014664d84"}, + {file = "cryptography-41.0.5.tar.gz", hash = "sha256:392cb88b597247177172e02da6b7a63deeff1937fa6fec3bbf902ebd75d97ec7"}, ] [package.dependencies] @@ -685,44 +696,44 @@ test-randomorder = ["pytest-randomly"] [[package]] name = "cssutils" -version = "2.7.1" +version = "2.9.0" description = "A CSS Cascading Style Sheets library for Python" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "cssutils-2.7.1-py3-none-any.whl", hash = "sha256:1e92e0d9dab2ec8af9f38d715393964ba533dc3beacab9b072511dfc241db775"}, - {file = "cssutils-2.7.1.tar.gz", hash = "sha256:340ecfd9835d21df8f98500f0dfcea0aee41cb4e19ecbc2cf94f0a6d36d7cb6c"}, + {file = "cssutils-2.9.0-py3-none-any.whl", hash = "sha256:f8b013169e281c0c6083207366c5005f5dd4549055f7aba840384fb06a78745c"}, + {file = "cssutils-2.9.0.tar.gz", hash = "sha256:89477b3d17d790e97b9fb4def708767061055795aae6f7c82ae32e967c9be4cd"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["cssselect", "importlib-resources", "jaraco.test (>=5.1)", "lxml", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-mypy (>=0.9.1)", "pytest-ruff"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["cssselect", "importlib-resources", "jaraco.test (>=5.1)", "lxml", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-ruff"] [[package]] name = "debugpy" -version = "1.6.7.post1" +version = "1.8.0" description = "An implementation of the Debug Adapter Protocol for Python" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "debugpy-1.6.7.post1-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:903bd61d5eb433b6c25b48eae5e23821d4c1a19e25c9610205f5aeaccae64e32"}, - {file = "debugpy-1.6.7.post1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d16882030860081e7dd5aa619f30dec3c2f9a421e69861125f83cc372c94e57d"}, - {file = "debugpy-1.6.7.post1-cp310-cp310-win32.whl", hash = "sha256:eea8d8cfb9965ac41b99a61f8e755a8f50e9a20330938ad8271530210f54e09c"}, - {file = "debugpy-1.6.7.post1-cp310-cp310-win_amd64.whl", hash = "sha256:85969d864c45f70c3996067cfa76a319bae749b04171f2cdeceebe4add316155"}, - {file = "debugpy-1.6.7.post1-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:890f7ab9a683886a0f185786ffbda3b46495c4b929dab083b8c79d6825832a52"}, - {file = "debugpy-1.6.7.post1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4ac7a4dba28801d184b7fc0e024da2635ca87d8b0a825c6087bb5168e3c0d28"}, - {file = "debugpy-1.6.7.post1-cp37-cp37m-win32.whl", hash = "sha256:3370ef1b9951d15799ef7af41f8174194f3482ee689988379763ef61a5456426"}, - {file = "debugpy-1.6.7.post1-cp37-cp37m-win_amd64.whl", hash = "sha256:65b28435a17cba4c09e739621173ff90c515f7b9e8ea469b92e3c28ef8e5cdfb"}, - {file = "debugpy-1.6.7.post1-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:92b6dae8bfbd497c90596bbb69089acf7954164aea3228a99d7e43e5267f5b36"}, - {file = "debugpy-1.6.7.post1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72f5d2ecead8125cf669e62784ef1e6300f4067b0f14d9f95ee00ae06fc7c4f7"}, - {file = "debugpy-1.6.7.post1-cp38-cp38-win32.whl", hash = "sha256:f0851403030f3975d6e2eaa4abf73232ab90b98f041e3c09ba33be2beda43fcf"}, - {file = "debugpy-1.6.7.post1-cp38-cp38-win_amd64.whl", hash = "sha256:3de5d0f97c425dc49bce4293df6a04494309eedadd2b52c22e58d95107e178d9"}, - {file = "debugpy-1.6.7.post1-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:38651c3639a4e8bbf0ca7e52d799f6abd07d622a193c406be375da4d510d968d"}, - {file = "debugpy-1.6.7.post1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:038c51268367c9c935905a90b1c2d2dbfe304037c27ba9d19fe7409f8cdc710c"}, - {file = "debugpy-1.6.7.post1-cp39-cp39-win32.whl", hash = "sha256:4b9eba71c290852f959d2cf8a03af28afd3ca639ad374d393d53d367f7f685b2"}, - {file = "debugpy-1.6.7.post1-cp39-cp39-win_amd64.whl", hash = "sha256:973a97ed3b434eab0f792719a484566c35328196540676685c975651266fccf9"}, - {file = "debugpy-1.6.7.post1-py2.py3-none-any.whl", hash = "sha256:1093a5c541af079c13ac8c70ab8b24d1d35c8cacb676306cf11e57f699c02926"}, - {file = "debugpy-1.6.7.post1.zip", hash = "sha256:fe87ec0182ef624855d05e6ed7e0b7cb1359d2ffa2a925f8ec2d22e98b75d0ca"}, + {file = "debugpy-1.8.0-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:7fb95ca78f7ac43393cd0e0f2b6deda438ec7c5e47fa5d38553340897d2fbdfb"}, + {file = "debugpy-1.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef9ab7df0b9a42ed9c878afd3eaaff471fce3fa73df96022e1f5c9f8f8c87ada"}, + {file = "debugpy-1.8.0-cp310-cp310-win32.whl", hash = "sha256:a8b7a2fd27cd9f3553ac112f356ad4ca93338feadd8910277aff71ab24d8775f"}, + {file = "debugpy-1.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:5d9de202f5d42e62f932507ee8b21e30d49aae7e46d5b1dd5c908db1d7068637"}, + {file = "debugpy-1.8.0-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:ef54404365fae8d45cf450d0544ee40cefbcb9cb85ea7afe89a963c27028261e"}, + {file = "debugpy-1.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60009b132c91951354f54363f8ebdf7457aeb150e84abba5ae251b8e9f29a8a6"}, + {file = "debugpy-1.8.0-cp311-cp311-win32.whl", hash = "sha256:8cd0197141eb9e8a4566794550cfdcdb8b3db0818bdf8c49a8e8f8053e56e38b"}, + {file = "debugpy-1.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:a64093656c4c64dc6a438e11d59369875d200bd5abb8f9b26c1f5f723622e153"}, + {file = "debugpy-1.8.0-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:b05a6b503ed520ad58c8dc682749113d2fd9f41ffd45daec16e558ca884008cd"}, + {file = "debugpy-1.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c6fb41c98ec51dd010d7ed650accfd07a87fe5e93eca9d5f584d0578f28f35f"}, + {file = "debugpy-1.8.0-cp38-cp38-win32.whl", hash = "sha256:46ab6780159eeabb43c1495d9c84cf85d62975e48b6ec21ee10c95767c0590aa"}, + {file = "debugpy-1.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:bdc5ef99d14b9c0fcb35351b4fbfc06ac0ee576aeab6b2511702e5a648a2e595"}, + {file = "debugpy-1.8.0-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:61eab4a4c8b6125d41a34bad4e5fe3d2cc145caecd63c3fe953be4cc53e65bf8"}, + {file = "debugpy-1.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:125b9a637e013f9faac0a3d6a82bd17c8b5d2c875fb6b7e2772c5aba6d082332"}, + {file = "debugpy-1.8.0-cp39-cp39-win32.whl", hash = "sha256:57161629133113c97b387382045649a2b985a348f0c9366e22217c87b68b73c6"}, + {file = "debugpy-1.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:e3412f9faa9ade82aa64a50b602544efcba848c91384e9f93497a458767e6926"}, + {file = "debugpy-1.8.0-py2.py3-none-any.whl", hash = "sha256:9c9b0ac1ce2a42888199df1a1906e45e6f3c9555497643a85e0bf2406e3ffbc4"}, + {file = "debugpy-1.8.0.zip", hash = "sha256:12af2c55b419521e33d5fb21bd022df0b5eb267c3e178f1d374a63a2a6bdccd0"}, ] [[package]] @@ -775,13 +786,13 @@ files = [ [[package]] name = "domdf-python-tools" -version = "3.6.1" +version = "3.7.0" description = "Helpful functions for Python 🐍 🛠️" optional = false python-versions = ">=3.6" files = [ - {file = "domdf_python_tools-3.6.1-py3-none-any.whl", hash = "sha256:e18158460850957f18e740eb94ede56f580ddb0cb162ab9d9834ed8bbb1b6431"}, - {file = "domdf_python_tools-3.6.1.tar.gz", hash = "sha256:acc04563d23bce4d437dd08af6b9bea788328c412772a044d8ca428a7ad861be"}, + {file = "domdf_python_tools-3.7.0-py3-none-any.whl", hash = "sha256:7b4d1c3bdb7402b872d43953824bf921ae2e52f893adbe5c0052a21a6efa2fe4"}, + {file = "domdf_python_tools-3.7.0.tar.gz", hash = "sha256:df1af9a91649af0fb2a4e7b3a4b0a0936e4f78389dd7280dd6fd2f53a339ca71"}, ] [package.dependencies] @@ -807,17 +818,6 @@ files = [ [package.extras] dev = ["Sphinx", "coverage", "flake8", "lxml", "lxml-stubs", "memory-profiler", "memray", "mypy", "tox", "xmlschema (>=2.0.0)"] -[[package]] -name = "entrypoints" -version = "0.4" -description = "Discover and load entry points from installed packages." -optional = false -python-versions = ">=3.6" -files = [ - {file = "entrypoints-0.4-py3-none-any.whl", hash = "sha256:f174b5ff827504fd3cd97cc3f8649f3693f51538c7e4bdf3ef002c8429d42f9f"}, - {file = "entrypoints-0.4.tar.gz", hash = "sha256:b706eddaa9218a19ebcd67b56818f05bb27589b1ca9e8d797b74affad4ccacd4"}, -] - [[package]] name = "enum-tools" version = "0.10.0" @@ -853,27 +853,27 @@ test = ["pytest (>=6)"] [[package]] name = "executing" -version = "1.2.0" +version = "2.0.1" description = "Get the currently executing AST node of a frame, and other information" optional = false -python-versions = "*" +python-versions = ">=3.5" files = [ - {file = "executing-1.2.0-py2.py3-none-any.whl", hash = "sha256:0314a69e37426e3608aada02473b4161d4caf5a4b244d1d0c48072b8fee7bacc"}, - {file = "executing-1.2.0.tar.gz", hash = "sha256:19da64c18d2d851112f09c287f8d3dbbdf725ab0e569077efb6cdcbd3497c107"}, + {file = "executing-2.0.1-py2.py3-none-any.whl", hash = "sha256:eac49ca94516ccc753f9fb5ce82603156e590b27525a8bc32cce8ae302eb61bc"}, + {file = "executing-2.0.1.tar.gz", hash = "sha256:35afe2ce3affba8ee97f2d69927fa823b08b472b7b994e36a52a964b93d16147"}, ] [package.extras] -tests = ["asttokens", "littleutils", "pytest", "rich"] +tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich"] [[package]] name = "fastjsonschema" -version = "2.18.0" +version = "2.19.0" description = "Fastest Python implementation of JSON schema" optional = false python-versions = "*" files = [ - {file = "fastjsonschema-2.18.0-py3-none-any.whl", hash = "sha256:128039912a11a807068a7c87d0da36660afbfd7202780db26c4aa7153cfdc799"}, - {file = "fastjsonschema-2.18.0.tar.gz", hash = "sha256:e820349dd16f806e4bd1467a138dced9def4bc7d6213a34295272a6cac95b5bd"}, + {file = "fastjsonschema-2.19.0-py3-none-any.whl", hash = "sha256:b9fd1a2dd6971dbc7fee280a95bd199ae0dd9ce22beb91cc75e9c1c528a5170e"}, + {file = "fastjsonschema-2.19.0.tar.gz", hash = "sha256:e25df6647e1bc4a26070b700897b07b542ec898dd4f1f6ea013e7f6a88417225"}, ] [package.extras] @@ -881,18 +881,19 @@ devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benc [[package]] name = "filelock" -version = "3.12.2" +version = "3.13.1" description = "A platform independent file lock." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "filelock-3.12.2-py3-none-any.whl", hash = "sha256:cbb791cdea2a72f23da6ac5b5269ab0a0d161e9ef0100e653b69049a7706d1ec"}, - {file = "filelock-3.12.2.tar.gz", hash = "sha256:002740518d8aa59a26b0c76e10fb8c6e15eae825d34b6fdf670333fd7b938d81"}, + {file = "filelock-3.13.1-py3-none-any.whl", hash = "sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c"}, + {file = "filelock-3.13.1.tar.gz", hash = "sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e"}, ] [package.extras] -docs = ["furo (>=2023.5.20)", "sphinx (>=7.0.1)", "sphinx-autodoc-typehints (>=1.23,!=1.23.4)"] -testing = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "diff-cover (>=7.5)", "pytest (>=7.3.1)", "pytest-cov (>=4.1)", "pytest-mock (>=3.10)", "pytest-timeout (>=2.1)"] +docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.24)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-timeout (>=2.2)"] +typing = ["typing-extensions (>=4.8)"] [[package]] name = "fqdn" @@ -969,21 +970,21 @@ testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs [[package]] name = "importlib-resources" -version = "6.0.1" +version = "6.1.1" description = "Read resources from Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "importlib_resources-6.0.1-py3-none-any.whl", hash = "sha256:134832a506243891221b88b4ae1213327eea96ceb4e407a00d790bb0626f45cf"}, - {file = "importlib_resources-6.0.1.tar.gz", hash = "sha256:4359457e42708462b9626a04657c6208ad799ceb41e5c58c57ffa0e6a098a5d4"}, + {file = "importlib_resources-6.1.1-py3-none-any.whl", hash = "sha256:e8bf90d8213b486f428c9c39714b920041cb02c184686a3dee24905aaa8105d6"}, + {file = "importlib_resources-6.1.1.tar.gz", hash = "sha256:3893a00122eafde6894c59914446a512f728a0c1a45f9bb9b63721b6bacf0b4a"}, ] [package.dependencies] zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-ruff"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-ruff", "zipp (>=3.17)"] [[package]] name = "iniconfig" @@ -998,13 +999,13 @@ files = [ [[package]] name = "ipykernel" -version = "6.25.1" +version = "6.26.0" description = "IPython Kernel for Jupyter" optional = false python-versions = ">=3.8" files = [ - {file = "ipykernel-6.25.1-py3-none-any.whl", hash = "sha256:c8a2430b357073b37c76c21c52184db42f6b4b0e438e1eb7df3c4440d120497c"}, - {file = "ipykernel-6.25.1.tar.gz", hash = "sha256:050391364c0977e768e354bdb60cbbfbee7cbb943b1af1618382021136ffd42f"}, + {file = "ipykernel-6.26.0-py3-none-any.whl", hash = "sha256:3ba3dc97424b87b31bb46586b5167b3161b32d7820b9201a9e698c71e271602c"}, + {file = "ipykernel-6.26.0.tar.gz", hash = "sha256:553856658eb8430bbe9653ea041a41bff63e9606fc4628873fc92a6cf3abd404"}, ] [package.dependencies] @@ -1031,13 +1032,13 @@ test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio" [[package]] name = "ipython" -version = "8.12.2" +version = "8.12.3" description = "IPython: Productive Interactive Computing" optional = false python-versions = ">=3.8" files = [ - {file = "ipython-8.12.2-py3-none-any.whl", hash = "sha256:ea8801f15dfe4ffb76dea1b09b847430ffd70d827b41735c64a0638a04103bfc"}, - {file = "ipython-8.12.2.tar.gz", hash = "sha256:c7b80eb7f5a855a88efc971fda506ff7a91c280b42cdae26643e0f601ea281ea"}, + {file = "ipython-8.12.3-py3-none-any.whl", hash = "sha256:b0340d46a933d27c657b211a329d0be23793c36595acf9e6ef4164bc01a1804c"}, + {file = "ipython-8.12.3.tar.gz", hash = "sha256:3910c4b54543c2ad73d06579aa771041b7d5707b033bd488669b4cf544e3b363"}, ] [package.dependencies] @@ -1105,13 +1106,13 @@ arrow = ">=0.15.0" [[package]] name = "jedi" -version = "0.19.0" +version = "0.19.1" description = "An autocompletion tool for Python that can be used for text editors." optional = false python-versions = ">=3.6" files = [ - {file = "jedi-0.19.0-py2.py3-none-any.whl", hash = "sha256:cb8ce23fbccff0025e9386b5cf85e892f94c9b822378f8da49970471335ac64e"}, - {file = "jedi-0.19.0.tar.gz", hash = "sha256:bcf9894f1753969cbac8022a8c2eaee06bfa3724e4192470aaffe7eb6272b0c4"}, + {file = "jedi-0.19.1-py2.py3-none-any.whl", hash = "sha256:e983c654fe5c02867aef4cdfce5a2fbb4a50adc0af145f70504238f18ef5e7e0"}, + {file = "jedi-0.19.1.tar.gz", hash = "sha256:cf0496f3651bc65d7174ac1b7d043eff454892c708a87d1b683e57b569927ffd"}, ] [package.dependencies] @@ -1120,7 +1121,7 @@ parso = ">=0.8.3,<0.9.0" [package.extras] docs = ["Jinja2 (==2.11.3)", "MarkupSafe (==1.1.1)", "Pygments (==2.8.1)", "alabaster (==0.7.12)", "babel (==2.9.1)", "chardet (==4.0.0)", "commonmark (==0.8.1)", "docutils (==0.17.1)", "future (==0.18.2)", "idna (==2.10)", "imagesize (==1.2.0)", "mock (==1.0.1)", "packaging (==20.9)", "pyparsing (==2.4.7)", "pytz (==2021.1)", "readthedocs-sphinx-ext (==2.1.4)", "recommonmark (==0.5.0)", "requests (==2.25.1)", "six (==1.15.0)", "snowballstemmer (==2.1.0)", "sphinx (==1.8.5)", "sphinx-rtd-theme (==0.4.3)", "sphinxcontrib-serializinghtml (==1.1.4)", "sphinxcontrib-websupport (==1.2.4)", "urllib3 (==1.26.4)"] qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"] -testing = ["Django (<3.1)", "attrs", "colorama", "docopt", "pytest (<7.0.0)"] +testing = ["Django", "attrs", "colorama", "docopt", "pytest (<7.0.0)"] [[package]] name = "jinja2" @@ -1166,13 +1167,13 @@ files = [ [[package]] name = "jsonschema" -version = "4.19.0" +version = "4.20.0" description = "An implementation of JSON Schema validation for Python" optional = false python-versions = ">=3.8" files = [ - {file = "jsonschema-4.19.0-py3-none-any.whl", hash = "sha256:043dc26a3845ff09d20e4420d6012a9c91c9aa8999fa184e7efcfeccb41e32cb"}, - {file = "jsonschema-4.19.0.tar.gz", hash = "sha256:6e1e7569ac13be8139b2dd2c21a55d350066ee3f80df06c608b398cdc6f30e8f"}, + {file = "jsonschema-4.20.0-py3-none-any.whl", hash = "sha256:ed6231f0429ecf966f5bc8dfef245998220549cbbcf140f913b7464c52c3b6b3"}, + {file = "jsonschema-4.20.0.tar.gz", hash = "sha256:4f614fd46d8d61258610998997743ec5492a648b33cf478c1ddc23ed4598a5fa"}, ] [package.dependencies] @@ -1197,52 +1198,51 @@ format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339- [[package]] name = "jsonschema-specifications" -version = "2023.7.1" +version = "2023.11.1" description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" optional = false python-versions = ">=3.8" files = [ - {file = "jsonschema_specifications-2023.7.1-py3-none-any.whl", hash = "sha256:05adf340b659828a004220a9613be00fa3f223f2b82002e273dee62fd50524b1"}, - {file = "jsonschema_specifications-2023.7.1.tar.gz", hash = "sha256:c91a50404e88a1f6ba40636778e2ee08f6e24c5613fe4c53ac24578a5a7f72bb"}, + {file = "jsonschema_specifications-2023.11.1-py3-none-any.whl", hash = "sha256:f596778ab612b3fd29f72ea0d990393d0540a5aab18bf0407a46632eab540779"}, + {file = "jsonschema_specifications-2023.11.1.tar.gz", hash = "sha256:c9b234904ffe02f079bf91b14d79987faa685fd4b39c377a0996954c0090b9ca"}, ] [package.dependencies] importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""} -referencing = ">=0.28.0" +referencing = ">=0.31.0" [[package]] name = "jupyter-client" -version = "7.4.9" +version = "8.6.0" description = "Jupyter protocol implementation and client libraries" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "jupyter_client-7.4.9-py3-none-any.whl", hash = "sha256:214668aaea208195f4c13d28eb272ba79f945fc0cf3f11c7092c20b2ca1980e7"}, - {file = "jupyter_client-7.4.9.tar.gz", hash = "sha256:52be28e04171f07aed8f20e1616a5a552ab9fee9cbbe6c1896ae170c3880d392"}, + {file = "jupyter_client-8.6.0-py3-none-any.whl", hash = "sha256:909c474dbe62582ae62b758bca86d6518c85234bdee2d908c778db6d72f39d99"}, + {file = "jupyter_client-8.6.0.tar.gz", hash = "sha256:0642244bb83b4764ae60d07e010e15f0e2d275ec4e918a8f7b80fbbef3ca60c7"}, ] [package.dependencies] -entrypoints = "*" -jupyter-core = ">=4.9.2" -nest-asyncio = ">=1.5.4" +importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""} +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" python-dateutil = ">=2.8.2" pyzmq = ">=23.0" tornado = ">=6.2" -traitlets = "*" +traitlets = ">=5.3" [package.extras] -doc = ["ipykernel", "myst-parser", "sphinx (>=1.3.6)", "sphinx-rtd-theme", "sphinxcontrib-github-alt"] -test = ["codecov", "coverage", "ipykernel (>=6.12)", "ipython", "mypy", "pre-commit", "pytest", "pytest-asyncio (>=0.18)", "pytest-cov", "pytest-timeout"] +docs = ["ipykernel", "myst-parser", "pydata-sphinx-theme", "sphinx (>=4)", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] +test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pytest", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"] [[package]] name = "jupyter-core" -version = "5.3.1" +version = "5.5.0" description = "Jupyter core package. A base package on which Jupyter projects rely." optional = false python-versions = ">=3.8" files = [ - {file = "jupyter_core-5.3.1-py3-none-any.whl", hash = "sha256:ae9036db959a71ec1cac33081eeb040a79e681f08ab68b0883e9a676c7a90dce"}, - {file = "jupyter_core-5.3.1.tar.gz", hash = "sha256:5ba5c7938a7f97a6b0481463f7ff0dbac7c15ba48cf46fa4035ca6e838aa1aba"}, + {file = "jupyter_core-5.5.0-py3-none-any.whl", hash = "sha256:e11e02cd8ae0a9de5c6c44abf5727df9f2581055afe00b22183f621ba3585805"}, + {file = "jupyter_core-5.5.0.tar.gz", hash = "sha256:880b86053bf298a8724994f95e99b99130659022a4f7f45f563084b6223861d3"}, ] [package.dependencies] @@ -1251,18 +1251,18 @@ pywin32 = {version = ">=300", markers = "sys_platform == \"win32\" and platform_ traitlets = ">=5.3" [package.extras] -docs = ["myst-parser", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "traitlets"] +docs = ["myst-parser", "pydata-sphinx-theme", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "traitlets"] test = ["ipykernel", "pre-commit", "pytest", "pytest-cov", "pytest-timeout"] [[package]] name = "jupyter-events" -version = "0.7.0" +version = "0.9.0" description = "Jupyter Event System library" optional = false python-versions = ">=3.8" files = [ - {file = "jupyter_events-0.7.0-py3-none-any.whl", hash = "sha256:4753da434c13a37c3f3c89b500afa0c0a6241633441421f6adafe2fb2e2b924e"}, - {file = "jupyter_events-0.7.0.tar.gz", hash = "sha256:7be27f54b8388c03eefea123a4f79247c5b9381c49fb1cd48615ee191eb12615"}, + {file = "jupyter_events-0.9.0-py3-none-any.whl", hash = "sha256:d853b3c10273ff9bc8bb8b30076d65e2c9685579db736873de6c2232dde148bf"}, + {file = "jupyter_events-0.9.0.tar.gz", hash = "sha256:81ad2e4bc710881ec274d31c6c50669d71bbaa5dd9d01e600b56faa85700d399"}, ] [package.dependencies] @@ -1296,13 +1296,13 @@ jupyter-server = ">=1.1.2" [[package]] name = "jupyter-server" -version = "2.7.2" +version = "2.10.1" description = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications." optional = false python-versions = ">=3.8" files = [ - {file = "jupyter_server-2.7.2-py3-none-any.whl", hash = "sha256:98a375347b580e837e7016007c24680a4261ed8ad7cd35196ac087d229f48e5a"}, - {file = "jupyter_server-2.7.2.tar.gz", hash = "sha256:d64fb4e593907290e5df916e3c9399c15ab2cd7bdb71cbcd1d36452dbfb30523"}, + {file = "jupyter_server-2.10.1-py3-none-any.whl", hash = "sha256:20519e355d951fc5e1b6ac5952854fe7620d0cfb56588fa4efe362a758977ed3"}, + {file = "jupyter_server-2.10.1.tar.gz", hash = "sha256:e6da2657a954a7879eed28cc08e0817b01ffd81d7eab8634660397b55f926472"}, ] [package.dependencies] @@ -1311,7 +1311,7 @@ argon2-cffi = "*" jinja2 = "*" jupyter-client = ">=7.4.4" jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" -jupyter-events = ">=0.6.0" +jupyter-events = ">=0.9.0" jupyter-server-terminals = "*" nbconvert = ">=6.4.4" nbformat = ">=5.3.0" @@ -1351,13 +1351,13 @@ test = ["coverage", "jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-cov", [[package]] name = "jupyterlab" -version = "4.0.5" +version = "4.0.8" description = "JupyterLab computational environment" optional = false python-versions = ">=3.8" files = [ - {file = "jupyterlab-4.0.5-py3-none-any.whl", hash = "sha256:13b3a326e7b95d72746fe20dbe80ee1e71165d6905e01ceaf1320eb809cb1b47"}, - {file = "jupyterlab-4.0.5.tar.gz", hash = "sha256:de49deb75f9b9aec478ed04754cbefe9c5d22fd796a5783cdc65e212983d3611"}, + {file = "jupyterlab-4.0.8-py3-none-any.whl", hash = "sha256:2ff5aa2a51eb21df241d6011c236e88bd1ff9a5dbb75bebc54472f9c18bfffa4"}, + {file = "jupyterlab-4.0.8.tar.gz", hash = "sha256:c4fe93f977bcc987bd395d7fae5ab02e0c042bf4e0f7c95196f3e2e578c2fb3a"}, ] [package.dependencies] @@ -1377,8 +1377,8 @@ tornado = ">=6.2.0" traitlets = "*" [package.extras] -dev = ["black[jupyter] (==23.3.0)", "build", "bump2version", "coverage", "hatch", "pre-commit", "pytest-cov", "ruff (==0.0.271)"] -docs = ["jsx-lexer", "myst-parser", "pydata-sphinx-theme (>=0.13.0)", "pytest", "pytest-check-links", "pytest-tornasync", "sphinx (>=1.8)", "sphinx-copybutton"] +dev = ["black[jupyter] (==23.10.1)", "build", "bump2version", "coverage", "hatch", "pre-commit", "pytest-cov", "ruff (==0.0.292)"] +docs = ["jsx-lexer", "myst-parser", "pydata-sphinx-theme (>=0.13.0)", "pytest", "pytest-check-links", "pytest-tornasync", "sphinx (>=1.8,<7.2.0)", "sphinx-copybutton"] docs-screenshots = ["altair (==5.0.1)", "ipython (==8.14.0)", "ipywidgets (==8.0.6)", "jupyterlab-geojson (==3.4.0)", "jupyterlab-language-pack-zh-cn (==4.0.post0)", "matplotlib (==3.7.1)", "nbconvert (>=7.0.0)", "pandas (==2.0.2)", "scipy (==1.10.1)", "vega-datasets (==0.9.0)"] test = ["coverage", "pytest (>=7.0)", "pytest-check-links (>=0.7)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter (>=0.5.3)", "pytest-timeout", "pytest-tornasync", "requests", "requests-cache", "virtualenv"] @@ -1395,13 +1395,13 @@ files = [ [[package]] name = "jupyterlab-server" -version = "2.24.0" +version = "2.25.1" description = "A set of server components for JupyterLab and JupyterLab like applications." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "jupyterlab_server-2.24.0-py3-none-any.whl", hash = "sha256:5f077e142bb8dc9b843d960f940c513581bceca3793a0d80f9c67d9522c4e876"}, - {file = "jupyterlab_server-2.24.0.tar.gz", hash = "sha256:4e6f99e0a5579bbbc32e449c4dbb039561d4f1a7827d5733273ed56738f21f07"}, + {file = "jupyterlab_server-2.25.1-py3-none-any.whl", hash = "sha256:dce9714d91fb3e53d2b37d0e0619fa26ed223c8e7b8c81cca112926de19b53a4"}, + {file = "jupyterlab_server-2.25.1.tar.gz", hash = "sha256:6491283b0000698eae1a38c48507930560dfcf7461aea0015368698aab34dd9c"}, ] [package.dependencies] @@ -1409,15 +1409,15 @@ babel = ">=2.10" importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""} jinja2 = ">=3.0.3" json5 = ">=0.9.0" -jsonschema = ">=4.17.3" +jsonschema = ">=4.18.0" jupyter-server = ">=1.21,<3" packaging = ">=21.3" -requests = ">=2.28" +requests = ">=2.31" [package.extras] docs = ["autodoc-traits", "jinja2 (<3.2.0)", "mistune (<4)", "myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-copybutton", "sphinxcontrib-openapi (>0.8)"] -openapi = ["openapi-core (>=0.16.1,<0.17.0)", "ruamel-yaml"] -test = ["hatch", "ipykernel", "jupyterlab-server[openapi]", "openapi-spec-validator (>=0.5.1,<0.7.0)", "pytest (>=7.0)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter[server] (>=0.6.2)", "pytest-timeout", "requests-mock", "sphinxcontrib-spelling", "strict-rfc3339", "werkzeug"] +openapi = ["openapi-core (>=0.18.0,<0.19.0)", "ruamel-yaml"] +test = ["hatch", "ipykernel", "openapi-core (>=0.18.0,<0.19.0)", "openapi-spec-validator (>=0.6.0,<0.8.0)", "pytest (>=7.0)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter[server] (>=0.6.2)", "pytest-timeout", "requests-mock", "ruamel-yaml", "sphinxcontrib-spelling", "strict-rfc3339", "werkzeug"] [[package]] name = "jupyterlab-widgets" @@ -1688,85 +1688,78 @@ files = [ [[package]] name = "mistune" -version = "3.0.1" +version = "3.0.2" description = "A sane and fast Markdown parser with useful plugins and renderers" optional = false python-versions = ">=3.7" files = [ - {file = "mistune-3.0.1-py3-none-any.whl", hash = "sha256:b9b3e438efbb57c62b5beb5e134dab664800bdf1284a7ee09e8b12b13eb1aac6"}, - {file = "mistune-3.0.1.tar.gz", hash = "sha256:e912116c13aa0944f9dc530db38eb88f6a77087ab128f49f84a48f4c05ea163c"}, + {file = "mistune-3.0.2-py3-none-any.whl", hash = "sha256:71481854c30fdbc938963d3605b72501f5c10a9320ecd412c121c163a1c7d205"}, + {file = "mistune-3.0.2.tar.gz", hash = "sha256:fc7f93ded930c92394ef2cb6f04a8aabab4117a91449e72dcc8dfa646a508be8"}, ] [[package]] name = "msgpack" -version = "1.0.5" +version = "1.0.7" description = "MessagePack serializer" optional = false -python-versions = "*" +python-versions = ">=3.8" files = [ - {file = "msgpack-1.0.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:525228efd79bb831cf6830a732e2e80bc1b05436b086d4264814b4b2955b2fa9"}, - {file = "msgpack-1.0.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4f8d8b3bf1ff2672567d6b5c725a1b347fe838b912772aa8ae2bf70338d5a198"}, - {file = "msgpack-1.0.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cdc793c50be3f01106245a61b739328f7dccc2c648b501e237f0699fe1395b81"}, - {file = "msgpack-1.0.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cb47c21a8a65b165ce29f2bec852790cbc04936f502966768e4aae9fa763cb7"}, - {file = "msgpack-1.0.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e42b9594cc3bf4d838d67d6ed62b9e59e201862a25e9a157019e171fbe672dd3"}, - {file = "msgpack-1.0.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:55b56a24893105dc52c1253649b60f475f36b3aa0fc66115bffafb624d7cb30b"}, - {file = "msgpack-1.0.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:1967f6129fc50a43bfe0951c35acbb729be89a55d849fab7686004da85103f1c"}, - {file = "msgpack-1.0.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:20a97bf595a232c3ee6d57ddaadd5453d174a52594bf9c21d10407e2a2d9b3bd"}, - {file = "msgpack-1.0.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d25dd59bbbbb996eacf7be6b4ad082ed7eacc4e8f3d2df1ba43822da9bfa122a"}, - {file = "msgpack-1.0.5-cp310-cp310-win32.whl", hash = "sha256:382b2c77589331f2cb80b67cc058c00f225e19827dbc818d700f61513ab47bea"}, - {file = "msgpack-1.0.5-cp310-cp310-win_amd64.whl", hash = "sha256:4867aa2df9e2a5fa5f76d7d5565d25ec76e84c106b55509e78c1ede0f152659a"}, - {file = "msgpack-1.0.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9f5ae84c5c8a857ec44dc180a8b0cc08238e021f57abdf51a8182e915e6299f0"}, - {file = "msgpack-1.0.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9e6ca5d5699bcd89ae605c150aee83b5321f2115695e741b99618f4856c50898"}, - {file = "msgpack-1.0.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5494ea30d517a3576749cad32fa27f7585c65f5f38309c88c6d137877fa28a5a"}, - {file = "msgpack-1.0.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ab2f3331cb1b54165976a9d976cb251a83183631c88076613c6c780f0d6e45a"}, - {file = "msgpack-1.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28592e20bbb1620848256ebc105fc420436af59515793ed27d5c77a217477705"}, - {file = "msgpack-1.0.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fe5c63197c55bce6385d9aee16c4d0641684628f63ace85f73571e65ad1c1e8d"}, - {file = "msgpack-1.0.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ed40e926fa2f297e8a653c954b732f125ef97bdd4c889f243182299de27e2aa9"}, - {file = "msgpack-1.0.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:b2de4c1c0538dcb7010902a2b97f4e00fc4ddf2c8cda9749af0e594d3b7fa3d7"}, - {file = "msgpack-1.0.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:bf22a83f973b50f9d38e55c6aade04c41ddda19b00c4ebc558930d78eecc64ed"}, - {file = "msgpack-1.0.5-cp311-cp311-win32.whl", hash = "sha256:c396e2cc213d12ce017b686e0f53497f94f8ba2b24799c25d913d46c08ec422c"}, - {file = "msgpack-1.0.5-cp311-cp311-win_amd64.whl", hash = "sha256:6c4c68d87497f66f96d50142a2b73b97972130d93677ce930718f68828b382e2"}, - {file = "msgpack-1.0.5-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:a2b031c2e9b9af485d5e3c4520f4220d74f4d222a5b8dc8c1a3ab9448ca79c57"}, - {file = "msgpack-1.0.5-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f837b93669ce4336e24d08286c38761132bc7ab29782727f8557e1eb21b2080"}, - {file = "msgpack-1.0.5-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1d46dfe3832660f53b13b925d4e0fa1432b00f5f7210eb3ad3bb9a13c6204a6"}, - {file = "msgpack-1.0.5-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:366c9a7b9057e1547f4ad51d8facad8b406bab69c7d72c0eb6f529cf76d4b85f"}, - {file = "msgpack-1.0.5-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:4c075728a1095efd0634a7dccb06204919a2f67d1893b6aa8e00497258bf926c"}, - {file = "msgpack-1.0.5-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:f933bbda5a3ee63b8834179096923b094b76f0c7a73c1cfe8f07ad608c58844b"}, - {file = "msgpack-1.0.5-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:36961b0568c36027c76e2ae3ca1132e35123dcec0706c4b7992683cc26c1320c"}, - {file = "msgpack-1.0.5-cp36-cp36m-win32.whl", hash = "sha256:b5ef2f015b95f912c2fcab19c36814963b5463f1fb9049846994b007962743e9"}, - {file = "msgpack-1.0.5-cp36-cp36m-win_amd64.whl", hash = "sha256:288e32b47e67f7b171f86b030e527e302c91bd3f40fd9033483f2cacc37f327a"}, - {file = "msgpack-1.0.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:137850656634abddfb88236008339fdaba3178f4751b28f270d2ebe77a563b6c"}, - {file = "msgpack-1.0.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0c05a4a96585525916b109bb85f8cb6511db1c6f5b9d9cbcbc940dc6b4be944b"}, - {file = "msgpack-1.0.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56a62ec00b636583e5cb6ad313bbed36bb7ead5fa3a3e38938503142c72cba4f"}, - {file = "msgpack-1.0.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef8108f8dedf204bb7b42994abf93882da1159728a2d4c5e82012edd92c9da9f"}, - {file = "msgpack-1.0.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1835c84d65f46900920b3708f5ba829fb19b1096c1800ad60bae8418652a951d"}, - {file = "msgpack-1.0.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:e57916ef1bd0fee4f21c4600e9d1da352d8816b52a599c46460e93a6e9f17086"}, - {file = "msgpack-1.0.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:17358523b85973e5f242ad74aa4712b7ee560715562554aa2134d96e7aa4cbbf"}, - {file = "msgpack-1.0.5-cp37-cp37m-win32.whl", hash = "sha256:cb5aaa8c17760909ec6cb15e744c3ebc2ca8918e727216e79607b7bbce9c8f77"}, - {file = "msgpack-1.0.5-cp37-cp37m-win_amd64.whl", hash = "sha256:ab31e908d8424d55601ad7075e471b7d0140d4d3dd3272daf39c5c19d936bd82"}, - {file = "msgpack-1.0.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:b72d0698f86e8d9ddf9442bdedec15b71df3598199ba33322d9711a19f08145c"}, - {file = "msgpack-1.0.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:379026812e49258016dd84ad79ac8446922234d498058ae1d415f04b522d5b2d"}, - {file = "msgpack-1.0.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:332360ff25469c346a1c5e47cbe2a725517919892eda5cfaffe6046656f0b7bb"}, - {file = "msgpack-1.0.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:476a8fe8fae289fdf273d6d2a6cb6e35b5a58541693e8f9f019bfe990a51e4ba"}, - {file = "msgpack-1.0.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9985b214f33311df47e274eb788a5893a761d025e2b92c723ba4c63936b69b1"}, - {file = "msgpack-1.0.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:48296af57cdb1d885843afd73c4656be5c76c0c6328db3440c9601a98f303d87"}, - {file = "msgpack-1.0.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:addab7e2e1fcc04bd08e4eb631c2a90960c340e40dfc4a5e24d2ff0d5a3b3edb"}, - {file = "msgpack-1.0.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:916723458c25dfb77ff07f4c66aed34e47503b2eb3188b3adbec8d8aa6e00f48"}, - {file = "msgpack-1.0.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:821c7e677cc6acf0fd3f7ac664c98803827ae6de594a9f99563e48c5a2f27eb0"}, - {file = "msgpack-1.0.5-cp38-cp38-win32.whl", hash = "sha256:1c0f7c47f0087ffda62961d425e4407961a7ffd2aa004c81b9c07d9269512f6e"}, - {file = "msgpack-1.0.5-cp38-cp38-win_amd64.whl", hash = "sha256:bae7de2026cbfe3782c8b78b0db9cbfc5455e079f1937cb0ab8d133496ac55e1"}, - {file = "msgpack-1.0.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:20c784e66b613c7f16f632e7b5e8a1651aa5702463d61394671ba07b2fc9e025"}, - {file = "msgpack-1.0.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:266fa4202c0eb94d26822d9bfd7af25d1e2c088927fe8de9033d929dd5ba24c5"}, - {file = "msgpack-1.0.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:18334484eafc2b1aa47a6d42427da7fa8f2ab3d60b674120bce7a895a0a85bdd"}, - {file = "msgpack-1.0.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:57e1f3528bd95cc44684beda696f74d3aaa8a5e58c816214b9046512240ef437"}, - {file = "msgpack-1.0.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:586d0d636f9a628ddc6a17bfd45aa5b5efaf1606d2b60fa5d87b8986326e933f"}, - {file = "msgpack-1.0.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a740fa0e4087a734455f0fc3abf5e746004c9da72fbd541e9b113013c8dc3282"}, - {file = "msgpack-1.0.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:3055b0455e45810820db1f29d900bf39466df96ddca11dfa6d074fa47054376d"}, - {file = "msgpack-1.0.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:a61215eac016f391129a013c9e46f3ab308db5f5ec9f25811e811f96962599a8"}, - {file = "msgpack-1.0.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:362d9655cd369b08fda06b6657a303eb7172d5279997abe094512e919cf74b11"}, - {file = "msgpack-1.0.5-cp39-cp39-win32.whl", hash = "sha256:ac9dd47af78cae935901a9a500104e2dea2e253207c924cc95de149606dc43cc"}, - {file = "msgpack-1.0.5-cp39-cp39-win_amd64.whl", hash = "sha256:06f5174b5f8ed0ed919da0e62cbd4ffde676a374aba4020034da05fab67b9164"}, - {file = "msgpack-1.0.5.tar.gz", hash = "sha256:c075544284eadc5cddc70f4757331d99dcbc16b2bbd4849d15f8aae4cf36d31c"}, + {file = "msgpack-1.0.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:04ad6069c86e531682f9e1e71b71c1c3937d6014a7c3e9edd2aa81ad58842862"}, + {file = "msgpack-1.0.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:cca1b62fe70d761a282496b96a5e51c44c213e410a964bdffe0928e611368329"}, + {file = "msgpack-1.0.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e50ebce52f41370707f1e21a59514e3375e3edd6e1832f5e5235237db933c98b"}, + {file = "msgpack-1.0.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a7b4f35de6a304b5533c238bee86b670b75b03d31b7797929caa7a624b5dda6"}, + {file = "msgpack-1.0.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28efb066cde83c479dfe5a48141a53bc7e5f13f785b92ddde336c716663039ee"}, + {file = "msgpack-1.0.7-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4cb14ce54d9b857be9591ac364cb08dc2d6a5c4318c1182cb1d02274029d590d"}, + {file = "msgpack-1.0.7-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b573a43ef7c368ba4ea06050a957c2a7550f729c31f11dd616d2ac4aba99888d"}, + {file = "msgpack-1.0.7-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ccf9a39706b604d884d2cb1e27fe973bc55f2890c52f38df742bc1d79ab9f5e1"}, + {file = "msgpack-1.0.7-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:cb70766519500281815dfd7a87d3a178acf7ce95390544b8c90587d76b227681"}, + {file = "msgpack-1.0.7-cp310-cp310-win32.whl", hash = "sha256:b610ff0f24e9f11c9ae653c67ff8cc03c075131401b3e5ef4b82570d1728f8a9"}, + {file = "msgpack-1.0.7-cp310-cp310-win_amd64.whl", hash = "sha256:a40821a89dc373d6427e2b44b572efc36a2778d3f543299e2f24eb1a5de65415"}, + {file = "msgpack-1.0.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:576eb384292b139821c41995523654ad82d1916da6a60cff129c715a6223ea84"}, + {file = "msgpack-1.0.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:730076207cb816138cf1af7f7237b208340a2c5e749707457d70705715c93b93"}, + {file = "msgpack-1.0.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:85765fdf4b27eb5086f05ac0491090fc76f4f2b28e09d9350c31aac25a5aaff8"}, + {file = "msgpack-1.0.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3476fae43db72bd11f29a5147ae2f3cb22e2f1a91d575ef130d2bf49afd21c46"}, + {file = "msgpack-1.0.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d4c80667de2e36970ebf74f42d1088cc9ee7ef5f4e8c35eee1b40eafd33ca5b"}, + {file = "msgpack-1.0.7-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b0bf0effb196ed76b7ad883848143427a73c355ae8e569fa538365064188b8e"}, + {file = "msgpack-1.0.7-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f9a7c509542db4eceed3dcf21ee5267ab565a83555c9b88a8109dcecc4709002"}, + {file = "msgpack-1.0.7-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:84b0daf226913133f899ea9b30618722d45feffa67e4fe867b0b5ae83a34060c"}, + {file = "msgpack-1.0.7-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ec79ff6159dffcc30853b2ad612ed572af86c92b5168aa3fc01a67b0fa40665e"}, + {file = "msgpack-1.0.7-cp311-cp311-win32.whl", hash = "sha256:3e7bf4442b310ff154b7bb9d81eb2c016b7d597e364f97d72b1acc3817a0fdc1"}, + {file = "msgpack-1.0.7-cp311-cp311-win_amd64.whl", hash = "sha256:3f0c8c6dfa6605ab8ff0611995ee30d4f9fcff89966cf562733b4008a3d60d82"}, + {file = "msgpack-1.0.7-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f0936e08e0003f66bfd97e74ee530427707297b0d0361247e9b4f59ab78ddc8b"}, + {file = "msgpack-1.0.7-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:98bbd754a422a0b123c66a4c341de0474cad4a5c10c164ceed6ea090f3563db4"}, + {file = "msgpack-1.0.7-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b291f0ee7961a597cbbcc77709374087fa2a9afe7bdb6a40dbbd9b127e79afee"}, + {file = "msgpack-1.0.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ebbbba226f0a108a7366bf4b59bf0f30a12fd5e75100c630267d94d7f0ad20e5"}, + {file = "msgpack-1.0.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e2d69948e4132813b8d1131f29f9101bc2c915f26089a6d632001a5c1349672"}, + {file = "msgpack-1.0.7-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bdf38ba2d393c7911ae989c3bbba510ebbcdf4ecbdbfec36272abe350c454075"}, + {file = "msgpack-1.0.7-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:993584fc821c58d5993521bfdcd31a4adf025c7d745bbd4d12ccfecf695af5ba"}, + {file = "msgpack-1.0.7-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:52700dc63a4676669b341ba33520f4d6e43d3ca58d422e22ba66d1736b0a6e4c"}, + {file = "msgpack-1.0.7-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e45ae4927759289c30ccba8d9fdce62bb414977ba158286b5ddaf8df2cddb5c5"}, + {file = "msgpack-1.0.7-cp312-cp312-win32.whl", hash = "sha256:27dcd6f46a21c18fa5e5deed92a43d4554e3df8d8ca5a47bf0615d6a5f39dbc9"}, + {file = "msgpack-1.0.7-cp312-cp312-win_amd64.whl", hash = "sha256:7687e22a31e976a0e7fc99c2f4d11ca45eff652a81eb8c8085e9609298916dcf"}, + {file = "msgpack-1.0.7-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5b6ccc0c85916998d788b295765ea0e9cb9aac7e4a8ed71d12e7d8ac31c23c95"}, + {file = "msgpack-1.0.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:235a31ec7db685f5c82233bddf9858748b89b8119bf4538d514536c485c15fe0"}, + {file = "msgpack-1.0.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cab3db8bab4b7e635c1c97270d7a4b2a90c070b33cbc00c99ef3f9be03d3e1f7"}, + {file = "msgpack-1.0.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bfdd914e55e0d2c9e1526de210f6fe8ffe9705f2b1dfcc4aecc92a4cb4b533d"}, + {file = "msgpack-1.0.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36e17c4592231a7dbd2ed09027823ab295d2791b3b1efb2aee874b10548b7524"}, + {file = "msgpack-1.0.7-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:38949d30b11ae5f95c3c91917ee7a6b239f5ec276f271f28638dec9156f82cfc"}, + {file = "msgpack-1.0.7-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:ff1d0899f104f3921d94579a5638847f783c9b04f2d5f229392ca77fba5b82fc"}, + {file = "msgpack-1.0.7-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:dc43f1ec66eb8440567186ae2f8c447d91e0372d793dfe8c222aec857b81a8cf"}, + {file = "msgpack-1.0.7-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:dd632777ff3beaaf629f1ab4396caf7ba0bdd075d948a69460d13d44357aca4c"}, + {file = "msgpack-1.0.7-cp38-cp38-win32.whl", hash = "sha256:4e71bc4416de195d6e9b4ee93ad3f2f6b2ce11d042b4d7a7ee00bbe0358bd0c2"}, + {file = "msgpack-1.0.7-cp38-cp38-win_amd64.whl", hash = "sha256:8f5b234f567cf76ee489502ceb7165c2a5cecec081db2b37e35332b537f8157c"}, + {file = "msgpack-1.0.7-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bfef2bb6ef068827bbd021017a107194956918ab43ce4d6dc945ffa13efbc25f"}, + {file = "msgpack-1.0.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:484ae3240666ad34cfa31eea7b8c6cd2f1fdaae21d73ce2974211df099a95d81"}, + {file = "msgpack-1.0.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3967e4ad1aa9da62fd53e346ed17d7b2e922cba5ab93bdd46febcac39be636fc"}, + {file = "msgpack-1.0.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8dd178c4c80706546702c59529ffc005681bd6dc2ea234c450661b205445a34d"}, + {file = "msgpack-1.0.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6ffbc252eb0d229aeb2f9ad051200668fc3a9aaa8994e49f0cb2ffe2b7867e7"}, + {file = "msgpack-1.0.7-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:822ea70dc4018c7e6223f13affd1c5c30c0f5c12ac1f96cd8e9949acddb48a61"}, + {file = "msgpack-1.0.7-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:384d779f0d6f1b110eae74cb0659d9aa6ff35aaf547b3955abf2ab4c901c4819"}, + {file = "msgpack-1.0.7-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f64e376cd20d3f030190e8c32e1c64582eba56ac6dc7d5b0b49a9d44021b52fd"}, + {file = "msgpack-1.0.7-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5ed82f5a7af3697b1c4786053736f24a0efd0a1b8a130d4c7bfee4b9ded0f08f"}, + {file = "msgpack-1.0.7-cp39-cp39-win32.whl", hash = "sha256:f26a07a6e877c76a88e3cecac8531908d980d3d5067ff69213653649ec0f60ad"}, + {file = "msgpack-1.0.7-cp39-cp39-win_amd64.whl", hash = "sha256:1dc93e8e4653bdb5910aed79f11e165c85732067614f180f70534f056da97db3"}, + {file = "msgpack-1.0.7.tar.gz", hash = "sha256:572efc93db7a4d27e404501975ca6d2d9775705c2d922390d878fcf768d92c87"}, ] [[package]] @@ -1786,13 +1779,13 @@ icu = ["PyICU (>=1.0.0)"] [[package]] name = "nbclient" -version = "0.8.0" +version = "0.9.0" description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor." optional = false python-versions = ">=3.8.0" files = [ - {file = "nbclient-0.8.0-py3-none-any.whl", hash = "sha256:25e861299e5303a0477568557c4045eccc7a34c17fc08e7959558707b9ebe548"}, - {file = "nbclient-0.8.0.tar.gz", hash = "sha256:f9b179cd4b2d7bca965f900a2ebf0db4a12ebff2f36a711cb66861e4ae158e55"}, + {file = "nbclient-0.9.0-py3-none-any.whl", hash = "sha256:a3a1ddfb34d4a9d17fc744d655962714a866639acd30130e9be84191cd97cd15"}, + {file = "nbclient-0.9.0.tar.gz", hash = "sha256:4b28c207877cf33ef3a9838cdc7a54c5ceff981194a82eac59d558f05487295e"}, ] [package.dependencies] @@ -1808,13 +1801,13 @@ test = ["flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "nbconvert (>= [[package]] name = "nbconvert" -version = "7.7.4" +version = "7.11.0" description = "Converting Jupyter Notebooks" optional = false python-versions = ">=3.8" files = [ - {file = "nbconvert-7.7.4-py3-none-any.whl", hash = "sha256:ace26f4386d08eb5c55833596a942048c5502a95e05590cb523826a749a40a37"}, - {file = "nbconvert-7.7.4.tar.gz", hash = "sha256:1113d039fa3fc3a846ffa5a3b0a019e85aaa94c566a09fa0c400fb7638e46087"}, + {file = "nbconvert-7.11.0-py3-none-any.whl", hash = "sha256:d1d417b7f34a4e38887f8da5bdfd12372adf3b80f995d57556cb0972c68909fe"}, + {file = "nbconvert-7.11.0.tar.gz", hash = "sha256:abedc01cf543177ffde0bfc2a69726d5a478f6af10a332fc1bf29fcb4f0cf000"}, ] [package.dependencies] @@ -1841,7 +1834,7 @@ docs = ["ipykernel", "ipython", "myst-parser", "nbsphinx (>=0.2.12)", "pydata-sp qtpdf = ["nbconvert[qtpng]"] qtpng = ["pyqtwebengine (>=5.15)"] serve = ["tornado (>=6.1)"] -test = ["flaky", "ipykernel", "ipywidgets (>=7)", "pre-commit", "pytest", "pytest-dependency"] +test = ["flaky", "ipykernel", "ipywidgets (>=7)", "pytest"] webpdf = ["playwright"] [[package]] @@ -1886,13 +1879,13 @@ traitlets = ">=5" [[package]] name = "nest-asyncio" -version = "1.5.7" +version = "1.5.8" description = "Patch asyncio to allow nested event loops" optional = false python-versions = ">=3.5" files = [ - {file = "nest_asyncio-1.5.7-py3-none-any.whl", hash = "sha256:5301c82941b550b3123a1ea772ba9a1c80bad3a182be8c1a5ae6ad3be57a9657"}, - {file = "nest_asyncio-1.5.7.tar.gz", hash = "sha256:6a80f7b98f24d9083ed24608977c09dd608d83f91cccc24c9d2cba6d10e01c10"}, + {file = "nest_asyncio-1.5.8-py3-none-any.whl", hash = "sha256:accda7a339a70599cb08f9dd09a67e0c2ef8d8d6f4c07f96ab203f2ae254e48d"}, + {file = "nest_asyncio-1.5.8.tar.gz", hash = "sha256:25aa2ca0d2a5b5531956b9e273b45cf664cae2b145101d73b86b199978d48fdb"}, ] [[package]] @@ -1951,36 +1944,47 @@ files = [ [[package]] name = "numpy" -version = "1.25.2" +version = "1.26.2" description = "Fundamental package for array computing in Python" optional = false python-versions = ">=3.9" files = [ - {file = "numpy-1.25.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:db3ccc4e37a6873045580d413fe79b68e47a681af8db2e046f1dacfa11f86eb3"}, - {file = "numpy-1.25.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:90319e4f002795ccfc9050110bbbaa16c944b1c37c0baeea43c5fb881693ae1f"}, - {file = "numpy-1.25.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dfe4a913e29b418d096e696ddd422d8a5d13ffba4ea91f9f60440a3b759b0187"}, - {file = "numpy-1.25.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f08f2e037bba04e707eebf4bc934f1972a315c883a9e0ebfa8a7756eabf9e357"}, - {file = "numpy-1.25.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bec1e7213c7cb00d67093247f8c4db156fd03075f49876957dca4711306d39c9"}, - {file = "numpy-1.25.2-cp310-cp310-win32.whl", hash = "sha256:7dc869c0c75988e1c693d0e2d5b26034644399dd929bc049db55395b1379e044"}, - {file = "numpy-1.25.2-cp310-cp310-win_amd64.whl", hash = "sha256:834b386f2b8210dca38c71a6e0f4fd6922f7d3fcff935dbe3a570945acb1b545"}, - {file = "numpy-1.25.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c5462d19336db4560041517dbb7759c21d181a67cb01b36ca109b2ae37d32418"}, - {file = "numpy-1.25.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c5652ea24d33585ea39eb6a6a15dac87a1206a692719ff45d53c5282e66d4a8f"}, - {file = "numpy-1.25.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d60fbae8e0019865fc4784745814cff1c421df5afee233db6d88ab4f14655a2"}, - {file = "numpy-1.25.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60e7f0f7f6d0eee8364b9a6304c2845b9c491ac706048c7e8cf47b83123b8dbf"}, - {file = "numpy-1.25.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:bb33d5a1cf360304754913a350edda36d5b8c5331a8237268c48f91253c3a364"}, - {file = "numpy-1.25.2-cp311-cp311-win32.whl", hash = "sha256:5883c06bb92f2e6c8181df7b39971a5fb436288db58b5a1c3967702d4278691d"}, - {file = "numpy-1.25.2-cp311-cp311-win_amd64.whl", hash = "sha256:5c97325a0ba6f9d041feb9390924614b60b99209a71a69c876f71052521d42a4"}, - {file = "numpy-1.25.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b79e513d7aac42ae918db3ad1341a015488530d0bb2a6abcbdd10a3a829ccfd3"}, - {file = "numpy-1.25.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:eb942bfb6f84df5ce05dbf4b46673ffed0d3da59f13635ea9b926af3deb76926"}, - {file = "numpy-1.25.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e0746410e73384e70d286f93abf2520035250aad8c5714240b0492a7302fdca"}, - {file = "numpy-1.25.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7806500e4f5bdd04095e849265e55de20d8cc4b661b038957354327f6d9b295"}, - {file = "numpy-1.25.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8b77775f4b7df768967a7c8b3567e309f617dd5e99aeb886fa14dc1a0791141f"}, - {file = "numpy-1.25.2-cp39-cp39-win32.whl", hash = "sha256:2792d23d62ec51e50ce4d4b7d73de8f67a2fd3ea710dcbc8563a51a03fb07b01"}, - {file = "numpy-1.25.2-cp39-cp39-win_amd64.whl", hash = "sha256:76b4115d42a7dfc5d485d358728cdd8719be33cc5ec6ec08632a5d6fca2ed380"}, - {file = "numpy-1.25.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:1a1329e26f46230bf77b02cc19e900db9b52f398d6722ca853349a782d4cff55"}, - {file = "numpy-1.25.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c3abc71e8b6edba80a01a52e66d83c5d14433cbcd26a40c329ec7ed09f37901"}, - {file = "numpy-1.25.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:1b9735c27cea5d995496f46a8b1cd7b408b3f34b6d50459d9ac8fe3a20cc17bf"}, - {file = "numpy-1.25.2.tar.gz", hash = "sha256:fd608e19c8d7c55021dffd43bfe5492fab8cc105cc8986f813f8c3c048b38760"}, + {file = "numpy-1.26.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3703fc9258a4a122d17043e57b35e5ef1c5a5837c3db8be396c82e04c1cf9b0f"}, + {file = "numpy-1.26.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cc392fdcbd21d4be6ae1bb4475a03ce3b025cd49a9be5345d76d7585aea69440"}, + {file = "numpy-1.26.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:36340109af8da8805d8851ef1d74761b3b88e81a9bd80b290bbfed61bd2b4f75"}, + {file = "numpy-1.26.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bcc008217145b3d77abd3e4d5ef586e3bdfba8fe17940769f8aa09b99e856c00"}, + {file = "numpy-1.26.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3ced40d4e9e18242f70dd02d739e44698df3dcb010d31f495ff00a31ef6014fe"}, + {file = "numpy-1.26.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b272d4cecc32c9e19911891446b72e986157e6a1809b7b56518b4f3755267523"}, + {file = "numpy-1.26.2-cp310-cp310-win32.whl", hash = "sha256:22f8fc02fdbc829e7a8c578dd8d2e15a9074b630d4da29cda483337e300e3ee9"}, + {file = "numpy-1.26.2-cp310-cp310-win_amd64.whl", hash = "sha256:26c9d33f8e8b846d5a65dd068c14e04018d05533b348d9eaeef6c1bd787f9919"}, + {file = "numpy-1.26.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b96e7b9c624ef3ae2ae0e04fa9b460f6b9f17ad8b4bec6d7756510f1f6c0c841"}, + {file = "numpy-1.26.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:aa18428111fb9a591d7a9cc1b48150097ba6a7e8299fb56bdf574df650e7d1f1"}, + {file = "numpy-1.26.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:06fa1ed84aa60ea6ef9f91ba57b5ed963c3729534e6e54055fc151fad0423f0a"}, + {file = "numpy-1.26.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96ca5482c3dbdd051bcd1fce8034603d6ebfc125a7bd59f55b40d8f5d246832b"}, + {file = "numpy-1.26.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:854ab91a2906ef29dc3925a064fcd365c7b4da743f84b123002f6139bcb3f8a7"}, + {file = "numpy-1.26.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f43740ab089277d403aa07567be138fc2a89d4d9892d113b76153e0e412409f8"}, + {file = "numpy-1.26.2-cp311-cp311-win32.whl", hash = "sha256:a2bbc29fcb1771cd7b7425f98b05307776a6baf43035d3b80c4b0f29e9545186"}, + {file = "numpy-1.26.2-cp311-cp311-win_amd64.whl", hash = "sha256:2b3fca8a5b00184828d12b073af4d0fc5fdd94b1632c2477526f6bd7842d700d"}, + {file = "numpy-1.26.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a4cd6ed4a339c21f1d1b0fdf13426cb3b284555c27ac2f156dfdaaa7e16bfab0"}, + {file = "numpy-1.26.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5d5244aabd6ed7f312268b9247be47343a654ebea52a60f002dc70c769048e75"}, + {file = "numpy-1.26.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a3cdb4d9c70e6b8c0814239ead47da00934666f668426fc6e94cce869e13fd7"}, + {file = "numpy-1.26.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa317b2325f7aa0a9471663e6093c210cb2ae9c0ad824732b307d2c51983d5b6"}, + {file = "numpy-1.26.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:174a8880739c16c925799c018f3f55b8130c1f7c8e75ab0a6fa9d41cab092fd6"}, + {file = "numpy-1.26.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f79b231bf5c16b1f39c7f4875e1ded36abee1591e98742b05d8a0fb55d8a3eec"}, + {file = "numpy-1.26.2-cp312-cp312-win32.whl", hash = "sha256:4a06263321dfd3598cacb252f51e521a8cb4b6df471bb12a7ee5cbab20ea9167"}, + {file = "numpy-1.26.2-cp312-cp312-win_amd64.whl", hash = "sha256:b04f5dc6b3efdaab541f7857351aac359e6ae3c126e2edb376929bd3b7f92d7e"}, + {file = "numpy-1.26.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4eb8df4bf8d3d90d091e0146f6c28492b0be84da3e409ebef54349f71ed271ef"}, + {file = "numpy-1.26.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1a13860fdcd95de7cf58bd6f8bc5a5ef81c0b0625eb2c9a783948847abbef2c2"}, + {file = "numpy-1.26.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64308ebc366a8ed63fd0bf426b6a9468060962f1a4339ab1074c228fa6ade8e3"}, + {file = "numpy-1.26.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baf8aab04a2c0e859da118f0b38617e5ee65d75b83795055fb66c0d5e9e9b818"}, + {file = "numpy-1.26.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d73a3abcac238250091b11caef9ad12413dab01669511779bc9b29261dd50210"}, + {file = "numpy-1.26.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b361d369fc7e5e1714cf827b731ca32bff8d411212fccd29ad98ad622449cc36"}, + {file = "numpy-1.26.2-cp39-cp39-win32.whl", hash = "sha256:bd3f0091e845164a20bd5a326860c840fe2af79fa12e0469a12768a3ec578d80"}, + {file = "numpy-1.26.2-cp39-cp39-win_amd64.whl", hash = "sha256:2beef57fb031dcc0dc8fa4fe297a742027b954949cabb52a2a376c144e5e6060"}, + {file = "numpy-1.26.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:1cc3d5029a30fb5f06704ad6b23b35e11309491c999838c31f124fee32107c79"}, + {file = "numpy-1.26.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94cc3c222bb9fb5a12e334d0479b97bb2df446fbe622b470928f5284ffca3f8d"}, + {file = "numpy-1.26.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fe6b44fb8fcdf7eda4ef4461b97b3f63c466b27ab151bec2366db8b197387841"}, + {file = "numpy-1.26.2.tar.gz", hash = "sha256:f65738447676ab5777f11e6bbbdb8ce11b785e105f690bc45966574816b6d3ea"}, ] [[package]] @@ -2014,13 +2018,13 @@ files = [ [[package]] name = "packaging" -version = "23.1" +version = "23.2" description = "Core utilities for Python packages" optional = false python-versions = ">=3.7" files = [ - {file = "packaging-23.1-py3-none-any.whl", hash = "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61"}, - {file = "packaging-23.1.tar.gz", hash = "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f"}, + {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, + {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, ] [[package]] @@ -2060,8 +2064,8 @@ files = [ [package.dependencies] numpy = [ {version = ">=1.20.3", markers = "python_version < \"3.10\""}, - {version = ">=1.23.2", markers = "python_version >= \"3.11\""}, {version = ">=1.21.0", markers = "python_version >= \"3.10\" and python_version < \"3.11\""}, + {version = ">=1.23.2", markers = "python_version >= \"3.11\""}, ] python-dateutil = ">=2.8.2" pytz = ">=2020.1" @@ -2154,13 +2158,13 @@ files = [ [[package]] name = "platformdirs" -version = "3.10.0" +version = "4.0.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." optional = false python-versions = ">=3.7" files = [ - {file = "platformdirs-3.10.0-py3-none-any.whl", hash = "sha256:d7c24979f292f916dc9cbf8648319032f551ea8c49a4c9bf2fb556a02070ec1d"}, - {file = "platformdirs-3.10.0.tar.gz", hash = "sha256:b45696dab2d7cc691a3226759c0d3b00c47c8b6e293d96f6436f733303f77f6d"}, + {file = "platformdirs-4.0.0-py3-none-any.whl", hash = "sha256:118c954d7e949b35437270383a3f2531e99dd93cf7ce4dc8340d3356d30f173b"}, + {file = "platformdirs-4.0.0.tar.gz", hash = "sha256:cb633b2bcf10c51af60beb0ab06d2f1d69064b43abf4c185ca6b28865f3f9731"}, ] [package.extras] @@ -2169,13 +2173,13 @@ test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-co [[package]] name = "plotly" -version = "5.17.0" +version = "5.18.0" description = "An open-source, interactive data visualization library for Python" optional = false python-versions = ">=3.6" files = [ - {file = "plotly-5.17.0-py2.py3-none-any.whl", hash = "sha256:7c84cdf11da162423da957bb093287134f2d6f170eb9a74f1459f825892247c3"}, - {file = "plotly-5.17.0.tar.gz", hash = "sha256:290d796bf7bab87aad184fe24b86096234c4c95dcca6ecbca02d02bdf17d3d97"}, + {file = "plotly-5.18.0-py3-none-any.whl", hash = "sha256:23aa8ea2f4fb364a20d34ad38235524bd9d691bf5299e800bca608c31e8db8de"}, + {file = "plotly-5.18.0.tar.gz", hash = "sha256:360a31e6fbb49d12b007036eb6929521343d6bee2236f8459915821baefa2cbb"}, ] [package.dependencies] @@ -2184,13 +2188,13 @@ tenacity = ">=6.2.0" [[package]] name = "pluggy" -version = "1.2.0" +version = "1.3.0" description = "plugin and hook calling mechanisms for python" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pluggy-1.2.0-py3-none-any.whl", hash = "sha256:c2fd55a7d7a3863cba1a013e4e2414658b1d07b6bc57b3919e0c63c9abb99849"}, - {file = "pluggy-1.2.0.tar.gz", hash = "sha256:d12f0c4b579b15f5e054301bb226ee85eeeba08ffec228092f8defbaa3a4c4b3"}, + {file = "pluggy-1.3.0-py3-none-any.whl", hash = "sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7"}, + {file = "pluggy-1.3.0.tar.gz", hash = "sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12"}, ] [package.extras] @@ -2199,13 +2203,13 @@ testing = ["pytest", "pytest-benchmark"] [[package]] name = "prometheus-client" -version = "0.17.1" +version = "0.18.0" description = "Python client for the Prometheus monitoring system." optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "prometheus_client-0.17.1-py3-none-any.whl", hash = "sha256:e537f37160f6807b8202a6fc4764cdd19bac5480ddd3e0d463c3002b34462101"}, - {file = "prometheus_client-0.17.1.tar.gz", hash = "sha256:21e674f39831ae3f8acde238afd9a27a37d0d2fb5a28ea094f0ce25d2cbf2091"}, + {file = "prometheus_client-0.18.0-py3-none-any.whl", hash = "sha256:8de3ae2755f890826f4b6479e5571d4f74ac17a81345fe69a6778fdb92579184"}, + {file = "prometheus_client-0.18.0.tar.gz", hash = "sha256:35f7a8c22139e2bb7ca5a698e92d38145bc8dc74c1c0bf56f25cca886a764e17"}, ] [package.extras] @@ -2213,13 +2217,13 @@ twisted = ["twisted"] [[package]] name = "prompt-toolkit" -version = "3.0.39" +version = "3.0.41" description = "Library for building powerful interactive command lines in Python" optional = false python-versions = ">=3.7.0" files = [ - {file = "prompt_toolkit-3.0.39-py3-none-any.whl", hash = "sha256:9dffbe1d8acf91e3de75f3b544e4842382fc06c6babe903ac9acb74dc6e08d88"}, - {file = "prompt_toolkit-3.0.39.tar.gz", hash = "sha256:04505ade687dc26dc4284b1ad19a83be2f2afe83e7a828ace0c72f3a1df72aac"}, + {file = "prompt_toolkit-3.0.41-py3-none-any.whl", hash = "sha256:f36fe301fafb7470e86aaf90f036eef600a3210be4decf461a5b1ca8403d3cb2"}, + {file = "prompt_toolkit-3.0.41.tar.gz", hash = "sha256:941367d97fc815548822aa26c2a269fdc4eb21e9ec05fc5d447cf09bad5d75f0"}, ] [package.dependencies] @@ -2227,25 +2231,27 @@ wcwidth = "*" [[package]] name = "psutil" -version = "5.9.5" +version = "5.9.6" description = "Cross-platform lib for process and system monitoring in Python." optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ - {file = "psutil-5.9.5-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:be8929ce4313f9f8146caad4272f6abb8bf99fc6cf59344a3167ecd74f4f203f"}, - {file = "psutil-5.9.5-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:ab8ed1a1d77c95453db1ae00a3f9c50227ebd955437bcf2a574ba8adbf6a74d5"}, - {file = "psutil-5.9.5-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:4aef137f3345082a3d3232187aeb4ac4ef959ba3d7c10c33dd73763fbc063da4"}, - {file = "psutil-5.9.5-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:ea8518d152174e1249c4f2a1c89e3e6065941df2fa13a1ab45327716a23c2b48"}, - {file = "psutil-5.9.5-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:acf2aef9391710afded549ff602b5887d7a2349831ae4c26be7c807c0a39fac4"}, - {file = "psutil-5.9.5-cp27-none-win32.whl", hash = "sha256:5b9b8cb93f507e8dbaf22af6a2fd0ccbe8244bf30b1baad6b3954e935157ae3f"}, - {file = "psutil-5.9.5-cp27-none-win_amd64.whl", hash = "sha256:8c5f7c5a052d1d567db4ddd231a9d27a74e8e4a9c3f44b1032762bd7b9fdcd42"}, - {file = "psutil-5.9.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:3c6f686f4225553615612f6d9bc21f1c0e305f75d7d8454f9b46e901778e7217"}, - {file = "psutil-5.9.5-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7a7dd9997128a0d928ed4fb2c2d57e5102bb6089027939f3b722f3a210f9a8da"}, - {file = "psutil-5.9.5-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89518112647f1276b03ca97b65cc7f64ca587b1eb0278383017c2a0dcc26cbe4"}, - {file = "psutil-5.9.5-cp36-abi3-win32.whl", hash = "sha256:104a5cc0e31baa2bcf67900be36acde157756b9c44017b86b2c049f11957887d"}, - {file = "psutil-5.9.5-cp36-abi3-win_amd64.whl", hash = "sha256:b258c0c1c9d145a1d5ceffab1134441c4c5113b2417fafff7315a917a026c3c9"}, - {file = "psutil-5.9.5-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:c607bb3b57dc779d55e1554846352b4e358c10fff3abf3514a7a6601beebdb30"}, - {file = "psutil-5.9.5.tar.gz", hash = "sha256:5410638e4df39c54d957fc51ce03048acd8e6d60abc0f5107af51e5fb566eb3c"}, + {file = "psutil-5.9.6-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:fb8a697f11b0f5994550555fcfe3e69799e5b060c8ecf9e2f75c69302cc35c0d"}, + {file = "psutil-5.9.6-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:91ecd2d9c00db9817a4b4192107cf6954addb5d9d67a969a4f436dbc9200f88c"}, + {file = "psutil-5.9.6-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:10e8c17b4f898d64b121149afb136c53ea8b68c7531155147867b7b1ac9e7e28"}, + {file = "psutil-5.9.6-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:18cd22c5db486f33998f37e2bb054cc62fd06646995285e02a51b1e08da97017"}, + {file = "psutil-5.9.6-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:ca2780f5e038379e520281e4c032dddd086906ddff9ef0d1b9dcf00710e5071c"}, + {file = "psutil-5.9.6-cp27-none-win32.whl", hash = "sha256:70cb3beb98bc3fd5ac9ac617a327af7e7f826373ee64c80efd4eb2856e5051e9"}, + {file = "psutil-5.9.6-cp27-none-win_amd64.whl", hash = "sha256:51dc3d54607c73148f63732c727856f5febec1c7c336f8f41fcbd6315cce76ac"}, + {file = "psutil-5.9.6-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c69596f9fc2f8acd574a12d5f8b7b1ba3765a641ea5d60fb4736bf3c08a8214a"}, + {file = "psutil-5.9.6-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:92e0cc43c524834af53e9d3369245e6cc3b130e78e26100d1f63cdb0abeb3d3c"}, + {file = "psutil-5.9.6-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:748c9dd2583ed86347ed65d0035f45fa8c851e8d90354c122ab72319b5f366f4"}, + {file = "psutil-5.9.6-cp36-cp36m-win32.whl", hash = "sha256:3ebf2158c16cc69db777e3c7decb3c0f43a7af94a60d72e87b2823aebac3d602"}, + {file = "psutil-5.9.6-cp36-cp36m-win_amd64.whl", hash = "sha256:ff18b8d1a784b810df0b0fff3bcb50ab941c3b8e2c8de5726f9c71c601c611aa"}, + {file = "psutil-5.9.6-cp37-abi3-win32.whl", hash = "sha256:a6f01f03bf1843280f4ad16f4bde26b817847b4c1a0db59bf6419807bc5ce05c"}, + {file = "psutil-5.9.6-cp37-abi3-win_amd64.whl", hash = "sha256:6e5fb8dc711a514da83098bc5234264e551ad980cec5f85dabf4d38ed6f15e9a"}, + {file = "psutil-5.9.6-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:daecbcbd29b289aac14ece28eca6a3e60aa361754cf6da3dfb20d4d32b6c7f57"}, + {file = "psutil-5.9.6.tar.gz", hash = "sha256:e4b92ddcd7dd4cdd3f900180ea1e104932c7bce234fb88976e2a3b296441225a"}, ] [package.extras] @@ -2276,17 +2282,6 @@ files = [ [package.extras] tests = ["pytest"] -[[package]] -name = "py" -version = "1.11.0" -description = "library with cross-python path, ini-parsing, io, code, log facilities" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -files = [ - {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, - {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, -] - [[package]] name = "pycparser" version = "2.21" @@ -2368,27 +2363,18 @@ pywin32 = ">=223" [[package]] name = "pyspnego" -version = "0.9.1" +version = "0.10.2" description = "Windows Negotiate Authentication Client and Server" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pyspnego-0.9.1-cp310-cp310-win32.whl", hash = "sha256:aa43f00ed1c3b8e16a658613e2557a3ff9bea26acef867705eb4ee7f5e469ac3"}, - {file = "pyspnego-0.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:d031a7fa9c9ab3b67725e35affc90f8e6504518fb3ffe21573504e72b5a2fb5e"}, - {file = "pyspnego-0.9.1-cp311-cp311-win32.whl", hash = "sha256:58a17f7ba17f6cee72149911df6cc785ce7072744a386483957b74c62da654d8"}, - {file = "pyspnego-0.9.1-cp311-cp311-win_amd64.whl", hash = "sha256:e7a92321272e3613c30f55a3324ef6d780bba8b723be8d50c35aac8409fc4028"}, - {file = "pyspnego-0.9.1-cp37-cp37m-win32.whl", hash = "sha256:87a2c23e640f4f6ae3c391d1f56e287b72908080a0e6376f2f365da5a2117dca"}, - {file = "pyspnego-0.9.1-cp37-cp37m-win_amd64.whl", hash = "sha256:ff4fecf488369d6634afb20f9e56eb3b187fb3c883d6551601bbad4f4badab62"}, - {file = "pyspnego-0.9.1-cp38-cp38-win32.whl", hash = "sha256:7515f00418324809eb1adec0afac93da006c03baba6c6fd1a981b5401b798f56"}, - {file = "pyspnego-0.9.1-cp38-cp38-win_amd64.whl", hash = "sha256:6366e39ba251889e2573c7d037e7feec8af86aea6c3b32f22a8af33bf88265b6"}, - {file = "pyspnego-0.9.1-cp39-cp39-win32.whl", hash = "sha256:07417f90328fb57c19a383e59b65060d4fc101441b74c34dbe4ba860775b0a3a"}, - {file = "pyspnego-0.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:4b79d5ba55ada38833d2421c44ed30a7313c00cbf34fa919dd106049616307d3"}, - {file = "pyspnego-0.9.1-py3-none-any.whl", hash = "sha256:c6aebe1fdc3990be2c137f3c3e041062243871b8161bc7adf4d269c3b6deda35"}, - {file = "pyspnego-0.9.1.tar.gz", hash = "sha256:6eea64f511bdfa192c2f80593ddf124258b0ea560327468953d18420e0ab3597"}, + {file = "pyspnego-0.10.2-py3-none-any.whl", hash = "sha256:3d5c5c28dbd0cd6a679acf45219630254db3c0e5ad4a16de521caa0585b088c0"}, + {file = "pyspnego-0.10.2.tar.gz", hash = "sha256:9a22c23aeae7b4424fdb2482450d3f8302ac012e2644e1cfe735cf468fcd12ed"}, ] [package.dependencies] cryptography = "*" +sspilib = {version = ">=0.1.0", markers = "sys_platform == \"win32\""} [package.extras] kerberos = ["gssapi (>=1.6.0)", "krb5 (>=0.3.0)"] @@ -2396,13 +2382,13 @@ yaml = ["ruamel.yaml"] [[package]] name = "pytest" -version = "7.4.0" +version = "7.4.3" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.7" files = [ - {file = "pytest-7.4.0-py3-none-any.whl", hash = "sha256:78bf16451a2eb8c7a2ea98e32dc119fd2aa758f1d5d66dbf0a59d69a3969df32"}, - {file = "pytest-7.4.0.tar.gz", hash = "sha256:b4bf8c45bd59934ed84001ad51e11b4ee40d40a1229d2c79f9c592b0a3f6bd8a"}, + {file = "pytest-7.4.3-py3-none-any.whl", hash = "sha256:0d009c083ea859a71b76adf7c1d502e4bc170b80a8ef002da5806527b9591fac"}, + {file = "pytest-7.4.3.tar.gz", hash = "sha256:d989d136982de4e3b29dabcc838ad581c64e8ed52c11fbe86ddebd9da0818cd5"}, ] [package.dependencies] @@ -2461,13 +2447,13 @@ files = [ [[package]] name = "pytz" -version = "2023.3" +version = "2023.3.post1" description = "World timezone definitions, modern and historical" optional = false python-versions = "*" files = [ - {file = "pytz-2023.3-py2.py3-none-any.whl", hash = "sha256:a151b3abb88eda1d4e34a9814df37de2a80e301e68ba0fd856fb9b46bfbbbffb"}, - {file = "pytz-2023.3.tar.gz", hash = "sha256:1d8ce29db189191fb55338ee6d0387d82ab59f3d00eac103412d64e0ebd0c588"}, + {file = "pytz-2023.3.post1-py2.py3-none-any.whl", hash = "sha256:ce42d816b81b68506614c11e8937d3aa9e41007ceb50bfdcb0749b921bf646c7"}, + {file = "pytz-2023.3.post1.tar.gz", hash = "sha256:7b4fddbeb94a1eba4b557da24f19fdf9db575192544270a9101d8509f9f43d7b"}, ] [[package]] @@ -2495,16 +2481,17 @@ files = [ [[package]] name = "pywinpty" -version = "2.0.11" +version = "2.0.12" description = "Pseudo terminal support for Windows from Python." optional = false python-versions = ">=3.8" files = [ - {file = "pywinpty-2.0.11-cp310-none-win_amd64.whl", hash = "sha256:452f10ac9ff8ab9151aa8cea9e491a9612a12250b1899278c6a56bc184afb47f"}, - {file = "pywinpty-2.0.11-cp311-none-win_amd64.whl", hash = "sha256:6701867d42aec1239bc0fedf49a336570eb60eb886e81763db77ea2b6c533cc3"}, - {file = "pywinpty-2.0.11-cp38-none-win_amd64.whl", hash = "sha256:0ffd287751ad871141dc9724de70ea21f7fc2ff1af50861e0d232cf70739d8c4"}, - {file = "pywinpty-2.0.11-cp39-none-win_amd64.whl", hash = "sha256:e4e7f023c28ca7aa8e1313e53ba80a4d10171fe27857b7e02f99882dfe3e8638"}, - {file = "pywinpty-2.0.11.tar.gz", hash = "sha256:e244cffe29a894876e2cd251306efd0d8d64abd5ada0a46150a4a71c0b9ad5c5"}, + {file = "pywinpty-2.0.12-cp310-none-win_amd64.whl", hash = "sha256:21319cd1d7c8844fb2c970fb3a55a3db5543f112ff9cfcd623746b9c47501575"}, + {file = "pywinpty-2.0.12-cp311-none-win_amd64.whl", hash = "sha256:853985a8f48f4731a716653170cd735da36ffbdc79dcb4c7b7140bce11d8c722"}, + {file = "pywinpty-2.0.12-cp312-none-win_amd64.whl", hash = "sha256:1617b729999eb6713590e17665052b1a6ae0ad76ee31e60b444147c5b6a35dca"}, + {file = "pywinpty-2.0.12-cp38-none-win_amd64.whl", hash = "sha256:189380469ca143d06e19e19ff3fba0fcefe8b4a8cc942140a6b863aed7eebb2d"}, + {file = "pywinpty-2.0.12-cp39-none-win_amd64.whl", hash = "sha256:7520575b6546db23e693cbd865db2764097bd6d4ef5dc18c92555904cd62c3d4"}, + {file = "pywinpty-2.0.12.tar.gz", hash = "sha256:8197de460ae8ebb7f5d1701dfa1b5df45b157bb832e92acba316305e18ca00dd"}, ] [[package]] @@ -2568,100 +2555,118 @@ files = [ [[package]] name = "pyzmq" -version = "24.0.1" +version = "25.1.1" description = "Python bindings for 0MQ" optional = false python-versions = ">=3.6" files = [ - {file = "pyzmq-24.0.1-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:28b119ba97129d3001673a697b7cce47fe6de1f7255d104c2f01108a5179a066"}, - {file = "pyzmq-24.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bcbebd369493d68162cddb74a9c1fcebd139dfbb7ddb23d8f8e43e6c87bac3a6"}, - {file = "pyzmq-24.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ae61446166983c663cee42c852ed63899e43e484abf080089f771df4b9d272ef"}, - {file = "pyzmq-24.0.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:87f7ac99b15270db8d53f28c3c7b968612993a90a5cf359da354efe96f5372b4"}, - {file = "pyzmq-24.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9dca7c3956b03b7663fac4d150f5e6d4f6f38b2462c1e9afd83bcf7019f17913"}, - {file = "pyzmq-24.0.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8c78bfe20d4c890cb5580a3b9290f700c570e167d4cdcc55feec07030297a5e3"}, - {file = "pyzmq-24.0.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:48f721f070726cd2a6e44f3c33f8ee4b24188e4b816e6dd8ba542c8c3bb5b246"}, - {file = "pyzmq-24.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:afe1f3bc486d0ce40abb0a0c9adb39aed3bbac36ebdc596487b0cceba55c21c1"}, - {file = "pyzmq-24.0.1-cp310-cp310-win32.whl", hash = "sha256:3e6192dbcefaaa52ed81be88525a54a445f4b4fe2fffcae7fe40ebb58bd06bfd"}, - {file = "pyzmq-24.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:86de64468cad9c6d269f32a6390e210ca5ada568c7a55de8e681ca3b897bb340"}, - {file = "pyzmq-24.0.1-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:838812c65ed5f7c2bd11f7b098d2e5d01685a3f6d1f82849423b570bae698c00"}, - {file = "pyzmq-24.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:dfb992dbcd88d8254471760879d48fb20836d91baa90f181c957122f9592b3dc"}, - {file = "pyzmq-24.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7abddb2bd5489d30ffeb4b93a428130886c171b4d355ccd226e83254fcb6b9ef"}, - {file = "pyzmq-24.0.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:94010bd61bc168c103a5b3b0f56ed3b616688192db7cd5b1d626e49f28ff51b3"}, - {file = "pyzmq-24.0.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:8242543c522d84d033fe79be04cb559b80d7eb98ad81b137ff7e0a9020f00ace"}, - {file = "pyzmq-24.0.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ccb94342d13e3bf3ffa6e62f95b5e3f0bc6bfa94558cb37f4b3d09d6feb536ff"}, - {file = "pyzmq-24.0.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6640f83df0ae4ae1104d4c62b77e9ef39be85ebe53f636388707d532bee2b7b8"}, - {file = "pyzmq-24.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a180dbd5ea5d47c2d3b716d5c19cc3fb162d1c8db93b21a1295d69585bfddac1"}, - {file = "pyzmq-24.0.1-cp311-cp311-win32.whl", hash = "sha256:624321120f7e60336be8ec74a172ae7fba5c3ed5bf787cc85f7e9986c9e0ebc2"}, - {file = "pyzmq-24.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:1724117bae69e091309ffb8255412c4651d3f6355560d9af312d547f6c5bc8b8"}, - {file = "pyzmq-24.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:15975747462ec49fdc863af906bab87c43b2491403ab37a6d88410635786b0f4"}, - {file = "pyzmq-24.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b947e264f0e77d30dcbccbb00f49f900b204b922eb0c3a9f0afd61aaa1cedc3d"}, - {file = "pyzmq-24.0.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0ec91f1bad66f3ee8c6deb65fa1fe418e8ad803efedd69c35f3b5502f43bd1dc"}, - {file = "pyzmq-24.0.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:db03704b3506455d86ec72c3358a779e9b1d07b61220dfb43702b7b668edcd0d"}, - {file = "pyzmq-24.0.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:e7e66b4e403c2836ac74f26c4b65d8ac0ca1eef41dfcac2d013b7482befaad83"}, - {file = "pyzmq-24.0.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:7a23ccc1083c260fa9685c93e3b170baba45aeed4b524deb3f426b0c40c11639"}, - {file = "pyzmq-24.0.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:fa0ae3275ef706c0309556061185dd0e4c4cd3b7d6f67ae617e4e677c7a41e2e"}, - {file = "pyzmq-24.0.1-cp36-cp36m-win32.whl", hash = "sha256:f01de4ec083daebf210531e2cca3bdb1608dbbbe00a9723e261d92087a1f6ebc"}, - {file = "pyzmq-24.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:de4217b9eb8b541cf2b7fde4401ce9d9a411cc0af85d410f9d6f4333f43640be"}, - {file = "pyzmq-24.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:78068e8678ca023594e4a0ab558905c1033b2d3e806a0ad9e3094e231e115a33"}, - {file = "pyzmq-24.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77c2713faf25a953c69cf0f723d1b7dd83827b0834e6c41e3fb3bbc6765914a1"}, - {file = "pyzmq-24.0.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8bb4af15f305056e95ca1bd086239b9ebc6ad55e9f49076d27d80027f72752f6"}, - {file = "pyzmq-24.0.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:0f14cffd32e9c4c73da66db97853a6aeceaac34acdc0fae9e5bbc9370281864c"}, - {file = "pyzmq-24.0.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:0108358dab8c6b27ff6b985c2af4b12665c1bc659648284153ee501000f5c107"}, - {file = "pyzmq-24.0.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:d66689e840e75221b0b290b0befa86f059fb35e1ee6443bce51516d4d61b6b99"}, - {file = "pyzmq-24.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ae08ac90aa8fa14caafc7a6251bd218bf6dac518b7bff09caaa5e781119ba3f2"}, - {file = "pyzmq-24.0.1-cp37-cp37m-win32.whl", hash = "sha256:8421aa8c9b45ea608c205db9e1c0c855c7e54d0e9c2c2f337ce024f6843cab3b"}, - {file = "pyzmq-24.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:54d8b9c5e288362ec8595c1d98666d36f2070fd0c2f76e2b3c60fbad9bd76227"}, - {file = "pyzmq-24.0.1-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:acbd0a6d61cc954b9f535daaa9ec26b0a60a0d4353c5f7c1438ebc88a359a47e"}, - {file = "pyzmq-24.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:47b11a729d61a47df56346283a4a800fa379ae6a85870d5a2e1e4956c828eedc"}, - {file = "pyzmq-24.0.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:abe6eb10122f0d746a0d510c2039ae8edb27bc9af29f6d1b05a66cc2401353ff"}, - {file = "pyzmq-24.0.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:07bec1a1b22dacf718f2c0e71b49600bb6a31a88f06527dfd0b5aababe3fa3f7"}, - {file = "pyzmq-24.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0d945a85b70da97ae86113faf9f1b9294efe66bd4a5d6f82f2676d567338b66"}, - {file = "pyzmq-24.0.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:1b7928bb7580736ffac5baf814097be342ba08d3cfdfb48e52773ec959572287"}, - {file = "pyzmq-24.0.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:b946da90dc2799bcafa682692c1d2139b2a96ec3c24fa9fc6f5b0da782675330"}, - {file = "pyzmq-24.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c8840f064b1fb377cffd3efeaad2b190c14d4c8da02316dae07571252d20b31f"}, - {file = "pyzmq-24.0.1-cp38-cp38-win32.whl", hash = "sha256:4854f9edc5208f63f0841c0c667260ae8d6846cfa233c479e29fdc85d42ebd58"}, - {file = "pyzmq-24.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:42d4f97b9795a7aafa152a36fe2ad44549b83a743fd3e77011136def512e6c2a"}, - {file = "pyzmq-24.0.1-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:52afb0ac962963fff30cf1be775bc51ae083ef4c1e354266ab20e5382057dd62"}, - {file = "pyzmq-24.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8bad8210ad4df68c44ff3685cca3cda448ee46e20d13edcff8909eba6ec01ca4"}, - {file = "pyzmq-24.0.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:dabf1a05318d95b1537fd61d9330ef4313ea1216eea128a17615038859da3b3b"}, - {file = "pyzmq-24.0.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5bd3d7dfd9cd058eb68d9a905dec854f86649f64d4ddf21f3ec289341386c44b"}, - {file = "pyzmq-24.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8012bce6836d3f20a6c9599f81dfa945f433dab4dbd0c4917a6fb1f998ab33d"}, - {file = "pyzmq-24.0.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c31805d2c8ade9b11feca4674eee2b9cce1fec3e8ddb7bbdd961a09dc76a80ea"}, - {file = "pyzmq-24.0.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:3104f4b084ad5d9c0cb87445cc8cfd96bba710bef4a66c2674910127044df209"}, - {file = "pyzmq-24.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:df0841f94928f8af9c7a1f0aaaffba1fb74607af023a152f59379c01c53aee58"}, - {file = "pyzmq-24.0.1-cp39-cp39-win32.whl", hash = "sha256:a435ef8a3bd95c8a2d316d6e0ff70d0db524f6037411652803e118871d703333"}, - {file = "pyzmq-24.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:2032d9cb994ce3b4cba2b8dfae08c7e25bc14ba484c770d4d3be33c27de8c45b"}, - {file = "pyzmq-24.0.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:bb5635c851eef3a7a54becde6da99485eecf7d068bd885ac8e6d173c4ecd68b0"}, - {file = "pyzmq-24.0.1-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:83ea1a398f192957cb986d9206ce229efe0ee75e3c6635baff53ddf39bd718d5"}, - {file = "pyzmq-24.0.1-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:941fab0073f0a54dc33d1a0460cb04e0d85893cb0c5e1476c785000f8b359409"}, - {file = "pyzmq-24.0.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e8f482c44ccb5884bf3f638f29bea0f8dc68c97e38b2061769c4cb697f6140d"}, - {file = "pyzmq-24.0.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:613010b5d17906c4367609e6f52e9a2595e35d5cc27d36ff3f1b6fa6e954d944"}, - {file = "pyzmq-24.0.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:65c94410b5a8355cfcf12fd600a313efee46ce96a09e911ea92cf2acf6708804"}, - {file = "pyzmq-24.0.1-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:20e7eeb1166087db636c06cae04a1ef59298627f56fb17da10528ab52a14c87f"}, - {file = "pyzmq-24.0.1-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a2712aee7b3834ace51738c15d9ee152cc5a98dc7d57dd93300461b792ab7b43"}, - {file = "pyzmq-24.0.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a7c280185c4da99e0cc06c63bdf91f5b0b71deb70d8717f0ab870a43e376db8"}, - {file = "pyzmq-24.0.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:858375573c9225cc8e5b49bfac846a77b696b8d5e815711b8d4ba3141e6e8879"}, - {file = "pyzmq-24.0.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:80093b595921eed1a2cead546a683b9e2ae7f4a4592bb2ab22f70d30174f003a"}, - {file = "pyzmq-24.0.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f3f3154fde2b1ff3aa7b4f9326347ebc89c8ef425ca1db8f665175e6d3bd42f"}, - {file = "pyzmq-24.0.1-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abb756147314430bee5d10919b8493c0ccb109ddb7f5dfd2fcd7441266a25b75"}, - {file = "pyzmq-24.0.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44e706bac34e9f50779cb8c39f10b53a4d15aebb97235643d3112ac20bd577b4"}, - {file = "pyzmq-24.0.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:687700f8371643916a1d2c61f3fdaa630407dd205c38afff936545d7b7466066"}, - {file = "pyzmq-24.0.1.tar.gz", hash = "sha256:216f5d7dbb67166759e59b0479bca82b8acf9bed6015b526b8eb10143fb08e77"}, + {file = "pyzmq-25.1.1-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:381469297409c5adf9a0e884c5eb5186ed33137badcbbb0560b86e910a2f1e76"}, + {file = "pyzmq-25.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:955215ed0604dac5b01907424dfa28b40f2b2292d6493445dd34d0dfa72586a8"}, + {file = "pyzmq-25.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:985bbb1316192b98f32e25e7b9958088431d853ac63aca1d2c236f40afb17c83"}, + {file = "pyzmq-25.1.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:afea96f64efa98df4da6958bae37f1cbea7932c35878b185e5982821bc883369"}, + {file = "pyzmq-25.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76705c9325d72a81155bb6ab48d4312e0032bf045fb0754889133200f7a0d849"}, + {file = "pyzmq-25.1.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:77a41c26205d2353a4c94d02be51d6cbdf63c06fbc1295ea57dad7e2d3381b71"}, + {file = "pyzmq-25.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:12720a53e61c3b99d87262294e2b375c915fea93c31fc2336898c26d7aed34cd"}, + {file = "pyzmq-25.1.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:57459b68e5cd85b0be8184382cefd91959cafe79ae019e6b1ae6e2ba8a12cda7"}, + {file = "pyzmq-25.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:292fe3fc5ad4a75bc8df0dfaee7d0babe8b1f4ceb596437213821f761b4589f9"}, + {file = "pyzmq-25.1.1-cp310-cp310-win32.whl", hash = "sha256:35b5ab8c28978fbbb86ea54958cd89f5176ce747c1fb3d87356cf698048a7790"}, + {file = "pyzmq-25.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:11baebdd5fc5b475d484195e49bae2dc64b94a5208f7c89954e9e354fc609d8f"}, + {file = "pyzmq-25.1.1-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:d20a0ddb3e989e8807d83225a27e5c2eb2260eaa851532086e9e0fa0d5287d83"}, + {file = "pyzmq-25.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e1c1be77bc5fb77d923850f82e55a928f8638f64a61f00ff18a67c7404faf008"}, + {file = "pyzmq-25.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d89528b4943d27029a2818f847c10c2cecc79fa9590f3cb1860459a5be7933eb"}, + {file = "pyzmq-25.1.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:90f26dc6d5f241ba358bef79be9ce06de58d477ca8485e3291675436d3827cf8"}, + {file = "pyzmq-25.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c2b92812bd214018e50b6380ea3ac0c8bb01ac07fcc14c5f86a5bb25e74026e9"}, + {file = "pyzmq-25.1.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:2f957ce63d13c28730f7fd6b72333814221c84ca2421298f66e5143f81c9f91f"}, + {file = "pyzmq-25.1.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:047a640f5c9c6ade7b1cc6680a0e28c9dd5a0825135acbd3569cc96ea00b2505"}, + {file = "pyzmq-25.1.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7f7e58effd14b641c5e4dec8c7dab02fb67a13df90329e61c869b9cc607ef752"}, + {file = "pyzmq-25.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c2910967e6ab16bf6fbeb1f771c89a7050947221ae12a5b0b60f3bca2ee19bca"}, + {file = "pyzmq-25.1.1-cp311-cp311-win32.whl", hash = "sha256:76c1c8efb3ca3a1818b837aea423ff8a07bbf7aafe9f2f6582b61a0458b1a329"}, + {file = "pyzmq-25.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:44e58a0554b21fc662f2712814a746635ed668d0fbc98b7cb9d74cb798d202e6"}, + {file = "pyzmq-25.1.1-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:e1ffa1c924e8c72778b9ccd386a7067cddf626884fd8277f503c48bb5f51c762"}, + {file = "pyzmq-25.1.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:1af379b33ef33757224da93e9da62e6471cf4a66d10078cf32bae8127d3d0d4a"}, + {file = "pyzmq-25.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cff084c6933680d1f8b2f3b4ff5bbb88538a4aac00d199ac13f49d0698727ecb"}, + {file = "pyzmq-25.1.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e2400a94f7dd9cb20cd012951a0cbf8249e3d554c63a9c0cdfd5cbb6c01d2dec"}, + {file = "pyzmq-25.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d81f1ddae3858b8299d1da72dd7d19dd36aab654c19671aa8a7e7fb02f6638a"}, + {file = "pyzmq-25.1.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:255ca2b219f9e5a3a9ef3081512e1358bd4760ce77828e1028b818ff5610b87b"}, + {file = "pyzmq-25.1.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a882ac0a351288dd18ecae3326b8a49d10c61a68b01419f3a0b9a306190baf69"}, + {file = "pyzmq-25.1.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:724c292bb26365659fc434e9567b3f1adbdb5e8d640c936ed901f49e03e5d32e"}, + {file = "pyzmq-25.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ca1ed0bb2d850aa8471387882247c68f1e62a4af0ce9c8a1dbe0d2bf69e41fb"}, + {file = "pyzmq-25.1.1-cp312-cp312-win32.whl", hash = "sha256:b3451108ab861040754fa5208bca4a5496c65875710f76789a9ad27c801a0075"}, + {file = "pyzmq-25.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:eadbefd5e92ef8a345f0525b5cfd01cf4e4cc651a2cffb8f23c0dd184975d787"}, + {file = "pyzmq-25.1.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:db0b2af416ba735c6304c47f75d348f498b92952f5e3e8bff449336d2728795d"}, + {file = "pyzmq-25.1.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7c133e93b405eb0d36fa430c94185bdd13c36204a8635470cccc200723c13bb"}, + {file = "pyzmq-25.1.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:273bc3959bcbff3f48606b28229b4721716598d76b5aaea2b4a9d0ab454ec062"}, + {file = "pyzmq-25.1.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:cbc8df5c6a88ba5ae385d8930da02201165408dde8d8322072e3e5ddd4f68e22"}, + {file = "pyzmq-25.1.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:18d43df3f2302d836f2a56f17e5663e398416e9dd74b205b179065e61f1a6edf"}, + {file = "pyzmq-25.1.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:73461eed88a88c866656e08f89299720a38cb4e9d34ae6bf5df6f71102570f2e"}, + {file = "pyzmq-25.1.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:34c850ce7976d19ebe7b9d4b9bb8c9dfc7aac336c0958e2651b88cbd46682123"}, + {file = "pyzmq-25.1.1-cp36-cp36m-win32.whl", hash = "sha256:d2045d6d9439a0078f2a34b57c7b18c4a6aef0bee37f22e4ec9f32456c852c71"}, + {file = "pyzmq-25.1.1-cp36-cp36m-win_amd64.whl", hash = "sha256:458dea649f2f02a0b244ae6aef8dc29325a2810aa26b07af8374dc2a9faf57e3"}, + {file = "pyzmq-25.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7cff25c5b315e63b07a36f0c2bab32c58eafbe57d0dce61b614ef4c76058c115"}, + {file = "pyzmq-25.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1579413ae492b05de5a6174574f8c44c2b9b122a42015c5292afa4be2507f28"}, + {file = "pyzmq-25.1.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3d0a409d3b28607cc427aa5c30a6f1e4452cc44e311f843e05edb28ab5e36da0"}, + {file = "pyzmq-25.1.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:21eb4e609a154a57c520e3d5bfa0d97e49b6872ea057b7c85257b11e78068222"}, + {file = "pyzmq-25.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:034239843541ef7a1aee0c7b2cb7f6aafffb005ede965ae9cbd49d5ff4ff73cf"}, + {file = "pyzmq-25.1.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f8115e303280ba09f3898194791a153862cbf9eef722ad8f7f741987ee2a97c7"}, + {file = "pyzmq-25.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:1a5d26fe8f32f137e784f768143728438877d69a586ddeaad898558dc971a5ae"}, + {file = "pyzmq-25.1.1-cp37-cp37m-win32.whl", hash = "sha256:f32260e556a983bc5c7ed588d04c942c9a8f9c2e99213fec11a031e316874c7e"}, + {file = "pyzmq-25.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:abf34e43c531bbb510ae7e8f5b2b1f2a8ab93219510e2b287a944432fad135f3"}, + {file = "pyzmq-25.1.1-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:87e34f31ca8f168c56d6fbf99692cc8d3b445abb5bfd08c229ae992d7547a92a"}, + {file = "pyzmq-25.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c9c6c9b2c2f80747a98f34ef491c4d7b1a8d4853937bb1492774992a120f475d"}, + {file = "pyzmq-25.1.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5619f3f5a4db5dbb572b095ea3cb5cc035335159d9da950830c9c4db2fbb6995"}, + {file = "pyzmq-25.1.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5a34d2395073ef862b4032343cf0c32a712f3ab49d7ec4f42c9661e0294d106f"}, + {file = "pyzmq-25.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25f0e6b78220aba09815cd1f3a32b9c7cb3e02cb846d1cfc526b6595f6046618"}, + {file = "pyzmq-25.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:3669cf8ee3520c2f13b2e0351c41fea919852b220988d2049249db10046a7afb"}, + {file = "pyzmq-25.1.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:2d163a18819277e49911f7461567bda923461c50b19d169a062536fffe7cd9d2"}, + {file = "pyzmq-25.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:df27ffddff4190667d40de7beba4a950b5ce78fe28a7dcc41d6f8a700a80a3c0"}, + {file = "pyzmq-25.1.1-cp38-cp38-win32.whl", hash = "sha256:a382372898a07479bd34bda781008e4a954ed8750f17891e794521c3e21c2e1c"}, + {file = "pyzmq-25.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:52533489f28d62eb1258a965f2aba28a82aa747202c8fa5a1c7a43b5db0e85c1"}, + {file = "pyzmq-25.1.1-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:03b3f49b57264909aacd0741892f2aecf2f51fb053e7d8ac6767f6c700832f45"}, + {file = "pyzmq-25.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:330f9e188d0d89080cde66dc7470f57d1926ff2fb5576227f14d5be7ab30b9fa"}, + {file = "pyzmq-25.1.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2ca57a5be0389f2a65e6d3bb2962a971688cbdd30b4c0bd188c99e39c234f414"}, + {file = "pyzmq-25.1.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d457aed310f2670f59cc5b57dcfced452aeeed77f9da2b9763616bd57e4dbaae"}, + {file = "pyzmq-25.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c56d748ea50215abef7030c72b60dd723ed5b5c7e65e7bc2504e77843631c1a6"}, + {file = "pyzmq-25.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:8f03d3f0d01cb5a018debeb412441996a517b11c5c17ab2001aa0597c6d6882c"}, + {file = "pyzmq-25.1.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:820c4a08195a681252f46926de10e29b6bbf3e17b30037bd4250d72dd3ddaab8"}, + {file = "pyzmq-25.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:17ef5f01d25b67ca8f98120d5fa1d21efe9611604e8eb03a5147360f517dd1e2"}, + {file = "pyzmq-25.1.1-cp39-cp39-win32.whl", hash = "sha256:04ccbed567171579ec2cebb9c8a3e30801723c575601f9a990ab25bcac6b51e2"}, + {file = "pyzmq-25.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:e61f091c3ba0c3578411ef505992d356a812fb200643eab27f4f70eed34a29ef"}, + {file = "pyzmq-25.1.1-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ade6d25bb29c4555d718ac6d1443a7386595528c33d6b133b258f65f963bb0f6"}, + {file = "pyzmq-25.1.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e0c95ddd4f6e9fca4e9e3afaa4f9df8552f0ba5d1004e89ef0a68e1f1f9807c7"}, + {file = "pyzmq-25.1.1-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:48e466162a24daf86f6b5ca72444d2bf39a5e58da5f96370078be67c67adc978"}, + {file = "pyzmq-25.1.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:abc719161780932c4e11aaebb203be3d6acc6b38d2f26c0f523b5b59d2fc1996"}, + {file = "pyzmq-25.1.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:1ccf825981640b8c34ae54231b7ed00271822ea1c6d8ba1090ebd4943759abf5"}, + {file = "pyzmq-25.1.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:c2f20ce161ebdb0091a10c9ca0372e023ce24980d0e1f810f519da6f79c60800"}, + {file = "pyzmq-25.1.1-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:deee9ca4727f53464daf089536e68b13e6104e84a37820a88b0a057b97bba2d2"}, + {file = "pyzmq-25.1.1-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:aa8d6cdc8b8aa19ceb319aaa2b660cdaccc533ec477eeb1309e2a291eaacc43a"}, + {file = "pyzmq-25.1.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:019e59ef5c5256a2c7378f2fb8560fc2a9ff1d315755204295b2eab96b254d0a"}, + {file = "pyzmq-25.1.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:b9af3757495c1ee3b5c4e945c1df7be95562277c6e5bccc20a39aec50f826cd0"}, + {file = "pyzmq-25.1.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:548d6482dc8aadbe7e79d1b5806585c8120bafa1ef841167bc9090522b610fa6"}, + {file = "pyzmq-25.1.1-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:057e824b2aae50accc0f9a0570998adc021b372478a921506fddd6c02e60308e"}, + {file = "pyzmq-25.1.1-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2243700cc5548cff20963f0ca92d3e5e436394375ab8a354bbea2b12911b20b0"}, + {file = "pyzmq-25.1.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79986f3b4af059777111409ee517da24a529bdbd46da578b33f25580adcff728"}, + {file = "pyzmq-25.1.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:11d58723d44d6ed4dd677c5615b2ffb19d5c426636345567d6af82be4dff8a55"}, + {file = "pyzmq-25.1.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:49d238cf4b69652257db66d0c623cd3e09b5d2e9576b56bc067a396133a00d4a"}, + {file = "pyzmq-25.1.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fedbdc753827cf014c01dbbee9c3be17e5a208dcd1bf8641ce2cd29580d1f0d4"}, + {file = "pyzmq-25.1.1-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bc16ac425cc927d0a57d242589f87ee093884ea4804c05a13834d07c20db203c"}, + {file = "pyzmq-25.1.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11c1d2aed9079c6b0c9550a7257a836b4a637feb334904610f06d70eb44c56d2"}, + {file = "pyzmq-25.1.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e8a701123029cc240cea61dd2d16ad57cab4691804143ce80ecd9286b464d180"}, + {file = "pyzmq-25.1.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:61706a6b6c24bdece85ff177fec393545a3191eeda35b07aaa1458a027ad1304"}, + {file = "pyzmq-25.1.1.tar.gz", hash = "sha256:259c22485b71abacdfa8bf79720cd7bcf4b9d128b30ea554f01ae71fdbfdaa23"}, ] [package.dependencies] cffi = {version = "*", markers = "implementation_name == \"pypy\""} -py = {version = "*", markers = "implementation_name == \"pypy\""} [[package]] name = "referencing" -version = "0.30.2" +version = "0.31.0" description = "JSON Referencing + Python" optional = false python-versions = ">=3.8" files = [ - {file = "referencing-0.30.2-py3-none-any.whl", hash = "sha256:449b6669b6121a9e96a7f9e410b245d471e8d48964c67113ce9afe50c8dd7bdf"}, - {file = "referencing-0.30.2.tar.gz", hash = "sha256:794ad8003c65938edcdbc027f1933215e0d0ccc0291e3ce20a4d87432b59efc0"}, + {file = "referencing-0.31.0-py3-none-any.whl", hash = "sha256:381b11e53dd93babb55696c71cf42aef2d36b8a150c49bf0bc301e36d536c882"}, + {file = "referencing-0.31.0.tar.gz", hash = "sha256:cc28f2c88fbe7b961a7817a0abc034c09a1e36358f82fedb4ffdf29a25398863"}, ] [package.dependencies] @@ -2768,171 +2773,187 @@ files = [ [[package]] name = "rpds-py" -version = "0.9.2" +version = "0.13.0" description = "Python bindings to Rust's persistent data structures (rpds)" optional = false python-versions = ">=3.8" files = [ - {file = "rpds_py-0.9.2-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:ab6919a09c055c9b092798ce18c6c4adf49d24d4d9e43a92b257e3f2548231e7"}, - {file = "rpds_py-0.9.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d55777a80f78dd09410bd84ff8c95ee05519f41113b2df90a69622f5540c4f8b"}, - {file = "rpds_py-0.9.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a216b26e5af0a8e265d4efd65d3bcec5fba6b26909014effe20cd302fd1138fa"}, - {file = "rpds_py-0.9.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:29cd8bfb2d716366a035913ced99188a79b623a3512292963d84d3e06e63b496"}, - {file = "rpds_py-0.9.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:44659b1f326214950a8204a248ca6199535e73a694be8d3e0e869f820767f12f"}, - {file = "rpds_py-0.9.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:745f5a43fdd7d6d25a53ab1a99979e7f8ea419dfefebcab0a5a1e9095490ee5e"}, - {file = "rpds_py-0.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a987578ac5214f18b99d1f2a3851cba5b09f4a689818a106c23dbad0dfeb760f"}, - {file = "rpds_py-0.9.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bf4151acb541b6e895354f6ff9ac06995ad9e4175cbc6d30aaed08856558201f"}, - {file = "rpds_py-0.9.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:03421628f0dc10a4119d714a17f646e2837126a25ac7a256bdf7c3943400f67f"}, - {file = "rpds_py-0.9.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:13b602dc3e8dff3063734f02dcf05111e887f301fdda74151a93dbbc249930fe"}, - {file = "rpds_py-0.9.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fae5cb554b604b3f9e2c608241b5d8d303e410d7dfb6d397c335f983495ce7f6"}, - {file = "rpds_py-0.9.2-cp310-none-win32.whl", hash = "sha256:47c5f58a8e0c2c920cc7783113df2fc4ff12bf3a411d985012f145e9242a2764"}, - {file = "rpds_py-0.9.2-cp310-none-win_amd64.whl", hash = "sha256:4ea6b73c22d8182dff91155af018b11aac9ff7eca085750455c5990cb1cfae6e"}, - {file = "rpds_py-0.9.2-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:e564d2238512c5ef5e9d79338ab77f1cbbda6c2d541ad41b2af445fb200385e3"}, - {file = "rpds_py-0.9.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f411330a6376fb50e5b7a3e66894e4a39e60ca2e17dce258d53768fea06a37bd"}, - {file = "rpds_py-0.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e7521f5af0233e89939ad626b15278c71b69dc1dfccaa7b97bd4cdf96536bb7"}, - {file = "rpds_py-0.9.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8d3335c03100a073883857e91db9f2e0ef8a1cf42dc0369cbb9151c149dbbc1b"}, - {file = "rpds_py-0.9.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d25b1c1096ef0447355f7293fbe9ad740f7c47ae032c2884113f8e87660d8f6e"}, - {file = "rpds_py-0.9.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6a5d3fbd02efd9cf6a8ffc2f17b53a33542f6b154e88dd7b42ef4a4c0700fdad"}, - {file = "rpds_py-0.9.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c5934e2833afeaf36bd1eadb57256239785f5af0220ed8d21c2896ec4d3a765f"}, - {file = "rpds_py-0.9.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:095b460e117685867d45548fbd8598a8d9999227e9061ee7f012d9d264e6048d"}, - {file = "rpds_py-0.9.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:91378d9f4151adc223d584489591dbb79f78814c0734a7c3bfa9c9e09978121c"}, - {file = "rpds_py-0.9.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:24a81c177379300220e907e9b864107614b144f6c2a15ed5c3450e19cf536fae"}, - {file = "rpds_py-0.9.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:de0b6eceb46141984671802d412568d22c6bacc9b230174f9e55fc72ef4f57de"}, - {file = "rpds_py-0.9.2-cp311-none-win32.whl", hash = "sha256:700375326ed641f3d9d32060a91513ad668bcb7e2cffb18415c399acb25de2ab"}, - {file = "rpds_py-0.9.2-cp311-none-win_amd64.whl", hash = "sha256:0766babfcf941db8607bdaf82569ec38107dbb03c7f0b72604a0b346b6eb3298"}, - {file = "rpds_py-0.9.2-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:b1440c291db3f98a914e1afd9d6541e8fc60b4c3aab1a9008d03da4651e67386"}, - {file = "rpds_py-0.9.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0f2996fbac8e0b77fd67102becb9229986396e051f33dbceada3debaacc7033f"}, - {file = "rpds_py-0.9.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f30d205755566a25f2ae0382944fcae2f350500ae4df4e795efa9e850821d82"}, - {file = "rpds_py-0.9.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:159fba751a1e6b1c69244e23ba6c28f879a8758a3e992ed056d86d74a194a0f3"}, - {file = "rpds_py-0.9.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a1f044792e1adcea82468a72310c66a7f08728d72a244730d14880cd1dabe36b"}, - {file = "rpds_py-0.9.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9251eb8aa82e6cf88510530b29eef4fac825a2b709baf5b94a6094894f252387"}, - {file = "rpds_py-0.9.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01899794b654e616c8625b194ddd1e5b51ef5b60ed61baa7a2d9c2ad7b2a4238"}, - {file = "rpds_py-0.9.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b0c43f8ae8f6be1d605b0465671124aa8d6a0e40f1fb81dcea28b7e3d87ca1e1"}, - {file = "rpds_py-0.9.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:207f57c402d1f8712618f737356e4b6f35253b6d20a324d9a47cb9f38ee43a6b"}, - {file = "rpds_py-0.9.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b52e7c5ae35b00566d244ffefba0f46bb6bec749a50412acf42b1c3f402e2c90"}, - {file = "rpds_py-0.9.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:978fa96dbb005d599ec4fd9ed301b1cc45f1a8f7982d4793faf20b404b56677d"}, - {file = "rpds_py-0.9.2-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:6aa8326a4a608e1c28da191edd7c924dff445251b94653988efb059b16577a4d"}, - {file = "rpds_py-0.9.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:aad51239bee6bff6823bbbdc8ad85136c6125542bbc609e035ab98ca1e32a192"}, - {file = "rpds_py-0.9.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4bd4dc3602370679c2dfb818d9c97b1137d4dd412230cfecd3c66a1bf388a196"}, - {file = "rpds_py-0.9.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:dd9da77c6ec1f258387957b754f0df60766ac23ed698b61941ba9acccd3284d1"}, - {file = "rpds_py-0.9.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:190ca6f55042ea4649ed19c9093a9be9d63cd8a97880106747d7147f88a49d18"}, - {file = "rpds_py-0.9.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:876bf9ed62323bc7dcfc261dbc5572c996ef26fe6406b0ff985cbcf460fc8a4c"}, - {file = "rpds_py-0.9.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa2818759aba55df50592ecbc95ebcdc99917fa7b55cc6796235b04193eb3c55"}, - {file = "rpds_py-0.9.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9ea4d00850ef1e917815e59b078ecb338f6a8efda23369677c54a5825dbebb55"}, - {file = "rpds_py-0.9.2-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:5855c85eb8b8a968a74dc7fb014c9166a05e7e7a8377fb91d78512900aadd13d"}, - {file = "rpds_py-0.9.2-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:14c408e9d1a80dcb45c05a5149e5961aadb912fff42ca1dd9b68c0044904eb32"}, - {file = "rpds_py-0.9.2-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:65a0583c43d9f22cb2130c7b110e695fff834fd5e832a776a107197e59a1898e"}, - {file = "rpds_py-0.9.2-cp38-none-win32.whl", hash = "sha256:71f2f7715935a61fa3e4ae91d91b67e571aeb5cb5d10331ab681256bda2ad920"}, - {file = "rpds_py-0.9.2-cp38-none-win_amd64.whl", hash = "sha256:674c704605092e3ebbbd13687b09c9f78c362a4bc710343efe37a91457123044"}, - {file = "rpds_py-0.9.2-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:07e2c54bef6838fa44c48dfbc8234e8e2466d851124b551fc4e07a1cfeb37260"}, - {file = "rpds_py-0.9.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f7fdf55283ad38c33e35e2855565361f4bf0abd02470b8ab28d499c663bc5d7c"}, - {file = "rpds_py-0.9.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:890ba852c16ace6ed9f90e8670f2c1c178d96510a21b06d2fa12d8783a905193"}, - {file = "rpds_py-0.9.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:50025635ba8b629a86d9d5474e650da304cb46bbb4d18690532dd79341467846"}, - {file = "rpds_py-0.9.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:517cbf6e67ae3623c5127206489d69eb2bdb27239a3c3cc559350ef52a3bbf0b"}, - {file = "rpds_py-0.9.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0836d71ca19071090d524739420a61580f3f894618d10b666cf3d9a1688355b1"}, - {file = "rpds_py-0.9.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c439fd54b2b9053717cca3de9583be6584b384d88d045f97d409f0ca867d80f"}, - {file = "rpds_py-0.9.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f68996a3b3dc9335037f82754f9cdbe3a95db42bde571d8c3be26cc6245f2324"}, - {file = "rpds_py-0.9.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7d68dc8acded354c972116f59b5eb2e5864432948e098c19fe6994926d8e15c3"}, - {file = "rpds_py-0.9.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:f963c6b1218b96db85fc37a9f0851eaf8b9040aa46dec112611697a7023da535"}, - {file = "rpds_py-0.9.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:5a46859d7f947061b4010e554ccd1791467d1b1759f2dc2ec9055fa239f1bc26"}, - {file = "rpds_py-0.9.2-cp39-none-win32.whl", hash = "sha256:e07e5dbf8a83c66783a9fe2d4566968ea8c161199680e8ad38d53e075df5f0d0"}, - {file = "rpds_py-0.9.2-cp39-none-win_amd64.whl", hash = "sha256:682726178138ea45a0766907957b60f3a1bf3acdf212436be9733f28b6c5af3c"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:196cb208825a8b9c8fc360dc0f87993b8b260038615230242bf18ec84447c08d"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:c7671d45530fcb6d5e22fd40c97e1e1e01965fc298cbda523bb640f3d923b387"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:83b32f0940adec65099f3b1c215ef7f1d025d13ff947975a055989cb7fd019a4"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7f67da97f5b9eac838b6980fc6da268622e91f8960e083a34533ca710bec8611"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:03975db5f103997904c37e804e5f340c8fdabbb5883f26ee50a255d664eed58c"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:987b06d1cdb28f88a42e4fb8a87f094e43f3c435ed8e486533aea0bf2e53d931"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c861a7e4aef15ff91233751619ce3a3d2b9e5877e0fcd76f9ea4f6847183aa16"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:02938432352359805b6da099c9c95c8a0547fe4b274ce8f1a91677401bb9a45f"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:ef1f08f2a924837e112cba2953e15aacfccbbfcd773b4b9b4723f8f2ddded08e"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:35da5cc5cb37c04c4ee03128ad59b8c3941a1e5cd398d78c37f716f32a9b7f67"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:141acb9d4ccc04e704e5992d35472f78c35af047fa0cfae2923835d153f091be"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:79f594919d2c1a0cc17d1988a6adaf9a2f000d2e1048f71f298b056b1018e872"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:a06418fe1155e72e16dddc68bb3780ae44cebb2912fbd8bb6ff9161de56e1798"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b2eb034c94b0b96d5eddb290b7b5198460e2d5d0c421751713953a9c4e47d10"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8b08605d248b974eb02f40bdcd1a35d3924c83a2a5e8f5d0fa5af852c4d960af"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a0805911caedfe2736935250be5008b261f10a729a303f676d3d5fea6900c96a"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ab2299e3f92aa5417d5e16bb45bb4586171c1327568f638e8453c9f8d9e0f020"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c8d7594e38cf98d8a7df25b440f684b510cf4627fe038c297a87496d10a174f"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8b9ec12ad5f0a4625db34db7e0005be2632c1013b253a4a60e8302ad4d462afd"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1fcdee18fea97238ed17ab6478c66b2095e4ae7177e35fb71fbe561a27adf620"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:933a7d5cd4b84f959aedeb84f2030f0a01d63ae6cf256629af3081cf3e3426e8"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:686ba516e02db6d6f8c279d1641f7067ebb5dc58b1d0536c4aaebb7bf01cdc5d"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:0173c0444bec0a3d7d848eaeca2d8bd32a1b43f3d3fde6617aac3731fa4be05f"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:d576c3ef8c7b2d560e301eb33891d1944d965a4d7a2eacb6332eee8a71827db6"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed89861ee8c8c47d6beb742a602f912b1bb64f598b1e2f3d758948721d44d468"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1054a08e818f8e18910f1bee731583fe8f899b0a0a5044c6e680ceea34f93876"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99e7c4bb27ff1aab90dcc3e9d37ee5af0231ed98d99cb6f5250de28889a3d502"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c545d9d14d47be716495076b659db179206e3fd997769bc01e2d550eeb685596"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9039a11bca3c41be5a58282ed81ae422fa680409022b996032a43badef2a3752"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fb39aca7a64ad0c9490adfa719dbeeb87d13be137ca189d2564e596f8ba32c07"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:2d8b3b3a2ce0eaa00c5bbbb60b6713e94e7e0becab7b3db6c5c77f979e8ed1f1"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:99b1c16f732b3a9971406fbfe18468592c5a3529585a45a35adbc1389a529a03"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:c27ee01a6c3223025f4badd533bea5e87c988cb0ba2811b690395dfe16088cfe"}, - {file = "rpds_py-0.9.2.tar.gz", hash = "sha256:8d70e8f14900f2657c249ea4def963bed86a29b81f81f5b76b5a9215680de945"}, + {file = "rpds_py-0.13.0-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:1758197cc8d7ff383c07405f188253535b4aa7fa745cbc54d221ae84b18e0702"}, + {file = "rpds_py-0.13.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:715df74cbcef4387d623c917f295352127f4b3e0388038d68fa577b4e4c6e540"}, + {file = "rpds_py-0.13.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c8a9cec0f49df9bac252d92f138c0d7708d98828e21fd57db78087d8f50b5656"}, + {file = "rpds_py-0.13.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5c2545bba02f68abdf398ef4990dc77592cc1e5d29438b35b3a3ca34d171fb4b"}, + {file = "rpds_py-0.13.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:95375c44ffb9ea2bc25d67fb66e726ea266ff1572df50b9556fe28a5f3519cd7"}, + {file = "rpds_py-0.13.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:54e513df45a8a9419e7952ffd26ac9a5b7b1df97fe72530421794b0de29f9d72"}, + {file = "rpds_py-0.13.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a25f514a53927b6b4bd04a9a6a13b55209df54f548660eeed673336c0c946d14"}, + {file = "rpds_py-0.13.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c1a920fa679ec2758411d66bf68840b0a21317b9954ab0e973742d723bb67709"}, + {file = "rpds_py-0.13.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f9339d1404b87e6d8cb35e485945753be57a99ab9bb389f42629215b2f6bda0f"}, + {file = "rpds_py-0.13.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:c99f9dda2c959f7bb69a7125e192c74fcafb7a534a95ccf49313ae3a04807804"}, + {file = "rpds_py-0.13.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:bad6758df5f1042b35683bd1811d5432ac1b17700a5a2a51fdc293f7df5f7827"}, + {file = "rpds_py-0.13.0-cp310-none-win32.whl", hash = "sha256:2a29ec68fa9655ce9501bc6ae074b166e8b45c2dfcd2d71d90d1a61758ed8c73"}, + {file = "rpds_py-0.13.0-cp310-none-win_amd64.whl", hash = "sha256:244be953f13f148b0071d67a610f89cd72eb5013a147e517d6ca3f3f3b7e0380"}, + {file = "rpds_py-0.13.0-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:240279ca0b2afd6d4710afce1c94bf9e75fc161290bf62c0feba64d64780d80b"}, + {file = "rpds_py-0.13.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:25c9727da2dabc93664a18eda7a70feedf478f0c4c8294e4cdba7f60a479a246"}, + {file = "rpds_py-0.13.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:981e46e1e5064f95460381bff4353783b4b5ce351c930e5b507ebe0278c61dac"}, + {file = "rpds_py-0.13.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6052bb47ea583646b8ff562acacb9a2ec5ec847267049cbae3919671929e94c6"}, + {file = "rpds_py-0.13.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:87f591ff8cc834fa01ca5899ab5edcd7ee590492a9cdcf43424ac142e731ce3e"}, + {file = "rpds_py-0.13.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:62772259b3381e2aabf274c74fd1e1ac03b0524de0a6593900684becfa8cfe4b"}, + {file = "rpds_py-0.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4de9d20fe68c16b4d97f551a09920745add0c86430262230528b83c2ed2fe90"}, + {file = "rpds_py-0.13.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b70a54fb628c1d6400e351674a31ba63d2912b8c5b707f99b408674a5d8b69ab"}, + {file = "rpds_py-0.13.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2063ab9cd1be7ef6b5ed0f408e2bdf32c060b6f40c097a468f32864731302636"}, + {file = "rpds_py-0.13.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:84f7f3f18d29a1c645729634003d21d84028bd9c2fd78eba9d028998f46fa5aa"}, + {file = "rpds_py-0.13.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f7c7ddc8d1a64623068da5a15e28001fbd0f0aff754aae7a75a4be5042191638"}, + {file = "rpds_py-0.13.0-cp311-none-win32.whl", hash = "sha256:8a33d2b6340261191bb59adb5a453fa6c7d99de85552bd4e8196411f0509c9bf"}, + {file = "rpds_py-0.13.0-cp311-none-win_amd64.whl", hash = "sha256:8b9c1dd90461940315981499df62a627571c4f0992e8bafc5396d33916224cac"}, + {file = "rpds_py-0.13.0-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:15a2d542de5cbfc6abddc4846d9412b59f8ee9c8dfa0b9c92a29321297c91745"}, + {file = "rpds_py-0.13.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8dd69e01b29ff45a0062cad5c480d8aa9301c3ef09da471f86337a78eb2d3405"}, + {file = "rpds_py-0.13.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:efdd02971a02f98492a72b25484f1f6125fb9f2166e48cc4c9bfa563349c851b"}, + {file = "rpds_py-0.13.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:91ca9aaee7ccdfa66d800b5c4ec634fefca947721bab52d6ad2f6350969a3771"}, + {file = "rpds_py-0.13.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:afcec1f5b09d0db70aeb2d90528a9164acb61841a3124e28f6ac0137f4c36cb4"}, + {file = "rpds_py-0.13.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c6824673f66c47f7ee759c21e973bfce3ceaf2c25cb940cb45b41105dc914e8"}, + {file = "rpds_py-0.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50b6d80925dfeb573fc5e38582fb9517c6912dc462cc858a11c8177b0837127a"}, + {file = "rpds_py-0.13.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3a1a38512925829784b5dc38591c757b80cfce115c72c594dc59567dab62b9c4"}, + {file = "rpds_py-0.13.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:977c6123c359dcc70ce3161b781ab70b0d342de2666944b776617e01a0a7822a"}, + {file = "rpds_py-0.13.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:c472409037e05ed87b99430f97a6b82130328bb977502813547e8ee6a3392502"}, + {file = "rpds_py-0.13.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:28bb22019f4a783ea06a6b81437d5996551869e8a722ee8720b744f7684d97f4"}, + {file = "rpds_py-0.13.0-cp312-none-win32.whl", hash = "sha256:46be9c0685cce2ea02151aa8308f2c1b78581be41a5dd239448a941a210ef5dd"}, + {file = "rpds_py-0.13.0-cp312-none-win_amd64.whl", hash = "sha256:3c5b9ad4d3e05dfcf8629f0d534f92610e9805dbce2fcb9b3c801ddb886431d5"}, + {file = "rpds_py-0.13.0-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:66eb5aa36e857f768c598d2082fafb733eaf53e06e1169c6b4de65636e04ffd0"}, + {file = "rpds_py-0.13.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c9f4c2b7d989426e9fe9b720211172cf10eb5f7aa16c63de2e5dc61457abcf35"}, + {file = "rpds_py-0.13.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1e37dfffe8959a492b7b331995f291847a41a035b4aad82d6060f38e8378a2b"}, + {file = "rpds_py-0.13.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8220321f2dccd9d66f72639185247cb7bbdd90753bf0b6bfca0fa31dba8af23c"}, + {file = "rpds_py-0.13.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e8f1d466a9747213d3cf7e1afec849cc51edb70d5b4ae9a82eca0f172bfbb6d0"}, + {file = "rpds_py-0.13.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c4c4b4ff3de834ec5c1c690e5a18233ca78547d003eb83664668ccf09ef1398"}, + {file = "rpds_py-0.13.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:525d19ef0a999229ef0f0a7687ab2c9a00d1b6a47a005006f4d8c4b8975fdcec"}, + {file = "rpds_py-0.13.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0982b59d014efb84a57128e7e69399fb29ad8f2da5b0a5bcbfd12e211c00492e"}, + {file = "rpds_py-0.13.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:f714dd5b705f1c394d1b361d96486c4981055c434a7eafb1a3147ac75e34a3de"}, + {file = "rpds_py-0.13.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:766b573a964389ef0d91a26bb31e1b59dbc5d06eff7707f3dfcec23d93080ba3"}, + {file = "rpds_py-0.13.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:2ed65ad3fc5065d13e31e90794e0b52e405b63ae4fab1080caeaadc10a3439c5"}, + {file = "rpds_py-0.13.0-cp38-none-win32.whl", hash = "sha256:9645f7fe10a68b2396d238250b4b264c2632d2eb6ce2cb90aa0fe08adee194be"}, + {file = "rpds_py-0.13.0-cp38-none-win_amd64.whl", hash = "sha256:42d0ad129c102856a364ccc7d356faec017af86b3543a8539795f22b6cabad11"}, + {file = "rpds_py-0.13.0-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:95c11647fac2a3515ea2614a79e14b7c75025724ad54c91c7db4a6ea5c25ef19"}, + {file = "rpds_py-0.13.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9435bf4832555c4f769c6be9401664357be33d5f5d8dc58f5c20fb8d21e2c45d"}, + {file = "rpds_py-0.13.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54b1d671a74395344239ee3adbcd8c496525f6a2b2e54c40fec69620a31a8dcb"}, + {file = "rpds_py-0.13.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:13c8061115f1468de6ffdfb1d31b446e1bd814f1ff6e556862169aacb9fbbc5d"}, + {file = "rpds_py-0.13.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a78861123b002725633871a2096c3a4313224aab3d11b953dced87cfba702418"}, + {file = "rpds_py-0.13.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:97c1be5a018cdad54fa7e5f7d36b9ab45ef941a1d185987f18bdab0a42344012"}, + {file = "rpds_py-0.13.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e33b17915c8e4fb2ea8b91bb4c46cba92242c63dd38b87e869ead5ba217e2970"}, + {file = "rpds_py-0.13.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:153b6d8cf7ae4b9ffd09de6abeda661e351e3e06eaafd18a8c104ea00099b131"}, + {file = "rpds_py-0.13.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:da2852201e8e00c86be82c43d6893e6c380ef648ae53f337ffd1eaa35e3dfb8a"}, + {file = "rpds_py-0.13.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:a2383f400691fd7bd63347d4d75eb2fd525de9d901799a33a4e896c9885609f8"}, + {file = "rpds_py-0.13.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:d5bf560634ea6e9a59ceb2181a6cd6195a03f48cef9a400eb15e197e18f14548"}, + {file = "rpds_py-0.13.0-cp39-none-win32.whl", hash = "sha256:fdaef49055cc0c701fb17b9b34a38ef375e5cdb230b3722d4a12baf9b7cbc6d3"}, + {file = "rpds_py-0.13.0-cp39-none-win_amd64.whl", hash = "sha256:26660c74a20fe249fad75ca00bbfcf60e57c3fdbde92971c88a20e07fea1de64"}, + {file = "rpds_py-0.13.0-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:28324f2f0247d407daabf7ff357ad9f36126075c92a0cf5319396d96ff4e1248"}, + {file = "rpds_py-0.13.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b431c2c0ff1ea56048a2b066d99d0c2d151ae7625b20be159b7e699f3e80390b"}, + {file = "rpds_py-0.13.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7472bd60a8293217444bdc6a46e516feb8d168da44d5f3fccea0336e88e3b79a"}, + {file = "rpds_py-0.13.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:169063f346b8fd84f47d986c9c48e6094eb38b839c1287e7cb886b8a2b32195d"}, + {file = "rpds_py-0.13.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eef7ee7c70f8b8698be468d54f9f5e01804f3a1dd5657e8a96363dbd52b9b5ec"}, + {file = "rpds_py-0.13.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:762013dd59df12380c5444f61ccbf9ae1297027cabbd7aa25891f724ebf8c8f7"}, + {file = "rpds_py-0.13.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:152570689a27ae0be1d5f50b21dad38d450b9227d0974f23bd400400ea087e88"}, + {file = "rpds_py-0.13.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d70a93a40e55da117c511ddc514642bc7d59a95a99137168a5f3f2f876b47962"}, + {file = "rpds_py-0.13.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:e6c6fed07d13b9e0fb689356c40c81f1aa92e3c9d91d8fd5816a0348ccd999f7"}, + {file = "rpds_py-0.13.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:cdded3cf9e36840b09ccef714d5fa74a03f4eb6cf81e694226ed9cb5e6f90de0"}, + {file = "rpds_py-0.13.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:e1f40faf406c52c7ae7d208b9140377c06397248978ccb03fbfbb30a0571e359"}, + {file = "rpds_py-0.13.0-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:c10326e30c97a95b7e1d75e5200ef0b9827aa0f861e331e43b15dfdfd63e669b"}, + {file = "rpds_py-0.13.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:afde37e3763c602d0385bce5c12f262e7b1dd2a0f323e239fa9d7b2d4d5d8509"}, + {file = "rpds_py-0.13.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4084ab6840bd4d79eff3b5f497add847a7db31ce5a0c2d440c90b2d2b7011857"}, + {file = "rpds_py-0.13.0-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1c9c9cb48ab77ebfa47db25b753f594d4f44959cfe43b713439ca6e3c9329671"}, + {file = "rpds_py-0.13.0-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:533d728ea5ad5253af3395102723ca8a77b62de47b2295155650c9a88fcdeec8"}, + {file = "rpds_py-0.13.0-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f22cab655b41033d430f20266bf563b35038a7f01c9a099b0ccfd30a7fb9247"}, + {file = "rpds_py-0.13.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9a0507342c37132813449393e6e6f351bbff376031cfff1ee6e616402ac7908"}, + {file = "rpds_py-0.13.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4eb1faf8e2ee9a2de3cb3ae4c8c355914cdc85f2cd7f27edf76444c9550ce1e7"}, + {file = "rpds_py-0.13.0-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:a61a152d61e3ae26e0bbba7b2f568f6f25ca0abdeb6553eca7e7c45b59d9b1a9"}, + {file = "rpds_py-0.13.0-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:e499bf2200eb74774a6f85a7465e3bc5273fa8ef0055590d97a88c1e7ea02eea"}, + {file = "rpds_py-0.13.0-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:1e5becd0de924616ca9a12abeb6458568d1dc8fe5c670d5cdb738402a8a8429d"}, + {file = "rpds_py-0.13.0-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:70cfe098d915f566eeebcb683f49f9404d2f948432891b6e075354336eda9dfb"}, + {file = "rpds_py-0.13.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:2e73511e88368f93c24efe7c9a20b319eaa828bc7431f8a17713efb9e31a39fa"}, + {file = "rpds_py-0.13.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c07cb9bcccd08f9bc2fd05bf586479df4272ea5a6a70fbcb59b018ed48a5a84d"}, + {file = "rpds_py-0.13.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8c4e84016ba225e09df20fed8befe8c68d14fbeff6078f4a0ff907ae2095e17e"}, + {file = "rpds_py-0.13.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6ad465e5a70580ca9c1944f43a9a71bca3a7b74554347fc96ca0479eca8981f9"}, + {file = "rpds_py-0.13.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:189aebd44a07fa7b7966cf78b85bde8335b0b6c3b1c4ef5589f8c03176830107"}, + {file = "rpds_py-0.13.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f50ca0460f1f7a89ab9b8355d83ac993d5998ad4218e76654ecf8afe648d8aa"}, + {file = "rpds_py-0.13.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f6c225011467021879c0482316e42d8a28852fc29f0c15d2a435ff457cadccd4"}, + {file = "rpds_py-0.13.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1e63b32b856c0f08a56b76967d61b6ad811d8d330a8aebb9d21afadd82a296f6"}, + {file = "rpds_py-0.13.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:7e5fbe9800f09c56967fda88c4d9272955e781699a66102bd098f22511a3f260"}, + {file = "rpds_py-0.13.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:fea99967d4a978ce95dd52310bcb4a943b77c61725393bca631b0908047d6e2f"}, + {file = "rpds_py-0.13.0.tar.gz", hash = "sha256:35cc91cbb0b775705e0feb3362490b8418c408e9e3c3b9cb3b02f6e495f03ee7"}, ] [[package]] name = "ruamel-yaml" -version = "0.17.32" +version = "0.18.5" description = "ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order" optional = false -python-versions = ">=3" +python-versions = ">=3.7" files = [ - {file = "ruamel.yaml-0.17.32-py3-none-any.whl", hash = "sha256:23cd2ed620231677564646b0c6a89d138b6822a0d78656df7abda5879ec4f447"}, - {file = "ruamel.yaml-0.17.32.tar.gz", hash = "sha256:ec939063761914e14542972a5cba6d33c23b0859ab6342f61cf070cfc600efc2"}, + {file = "ruamel.yaml-0.18.5-py3-none-any.whl", hash = "sha256:a013ac02f99a69cdd6277d9664689eb1acba07069f912823177c5eced21a6ada"}, + {file = "ruamel.yaml-0.18.5.tar.gz", hash = "sha256:61917e3a35a569c1133a8f772e1226961bf5a1198bea7e23f06a0841dea1ab0e"}, ] [package.dependencies] -"ruamel.yaml.clib" = {version = ">=0.2.7", markers = "platform_python_implementation == \"CPython\" and python_version < \"3.12\""} +"ruamel.yaml.clib" = {version = ">=0.2.7", markers = "platform_python_implementation == \"CPython\" and python_version < \"3.13\""} [package.extras] -docs = ["ryd"] +docs = ["mercurial (>5.7)", "ryd"] jinja2 = ["ruamel.yaml.jinja2 (>=0.2)"] [[package]] name = "ruamel-yaml-clib" -version = "0.2.7" +version = "0.2.8" description = "C version of reader, parser and emitter for ruamel.yaml derived from libyaml" optional = false -python-versions = ">=3.5" +python-versions = ">=3.6" files = [ - {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d5859983f26d8cd7bb5c287ef452e8aacc86501487634573d260968f753e1d71"}, - {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:debc87a9516b237d0466a711b18b6ebeb17ba9f391eb7f91c649c5c4ec5006c7"}, - {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:df5828871e6648db72d1c19b4bd24819b80a755c4541d3409f0f7acd0f335c80"}, - {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:efa08d63ef03d079dcae1dfe334f6c8847ba8b645d08df286358b1f5293d24ab"}, - {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-win32.whl", hash = "sha256:763d65baa3b952479c4e972669f679fe490eee058d5aa85da483ebae2009d231"}, - {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-win_amd64.whl", hash = "sha256:d000f258cf42fec2b1bbf2863c61d7b8918d31ffee905da62dede869254d3b8a"}, - {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:045e0626baf1c52e5527bd5db361bc83180faaba2ff586e763d3d5982a876a9e"}, - {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-macosx_12_6_arm64.whl", hash = "sha256:721bc4ba4525f53f6a611ec0967bdcee61b31df5a56801281027a3a6d1c2daf5"}, - {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:41d0f1fa4c6830176eef5b276af04c89320ea616655d01327d5ce65e50575c94"}, - {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-win32.whl", hash = "sha256:f6d3d39611ac2e4f62c3128a9eed45f19a6608670c5a2f4f07f24e8de3441d38"}, - {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-win_amd64.whl", hash = "sha256:da538167284de58a52109a9b89b8f6a53ff8437dd6dc26d33b57bf6699153122"}, - {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:4b3a93bb9bc662fc1f99c5c3ea8e623d8b23ad22f861eb6fce9377ac07ad6072"}, - {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-macosx_12_0_arm64.whl", hash = "sha256:a234a20ae07e8469da311e182e70ef6b199d0fbeb6c6cc2901204dd87fb867e8"}, - {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:15910ef4f3e537eea7fe45f8a5d19997479940d9196f357152a09031c5be59f3"}, - {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:370445fd795706fd291ab00c9df38a0caed0f17a6fb46b0f607668ecb16ce763"}, - {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-win32.whl", hash = "sha256:ecdf1a604009bd35c674b9225a8fa609e0282d9b896c03dd441a91e5f53b534e"}, - {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-win_amd64.whl", hash = "sha256:f34019dced51047d6f70cb9383b2ae2853b7fc4dce65129a5acd49f4f9256646"}, - {file = "ruamel.yaml.clib-0.2.7-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:2aa261c29a5545adfef9296b7e33941f46aa5bbd21164228e833412af4c9c75f"}, - {file = "ruamel.yaml.clib-0.2.7-cp37-cp37m-macosx_12_0_arm64.whl", hash = "sha256:f01da5790e95815eb5a8a138508c01c758e5f5bc0ce4286c4f7028b8dd7ac3d0"}, - {file = "ruamel.yaml.clib-0.2.7-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:40d030e2329ce5286d6b231b8726959ebbe0404c92f0a578c0e2482182e38282"}, - {file = "ruamel.yaml.clib-0.2.7-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:c3ca1fbba4ae962521e5eb66d72998b51f0f4d0f608d3c0347a48e1af262efa7"}, - {file = "ruamel.yaml.clib-0.2.7-cp37-cp37m-win32.whl", hash = "sha256:7bdb4c06b063f6fd55e472e201317a3bb6cdeeee5d5a38512ea5c01e1acbdd93"}, - {file = "ruamel.yaml.clib-0.2.7-cp37-cp37m-win_amd64.whl", hash = "sha256:be2a7ad8fd8f7442b24323d24ba0b56c51219513cfa45b9ada3b87b76c374d4b"}, - {file = "ruamel.yaml.clib-0.2.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:91a789b4aa0097b78c93e3dc4b40040ba55bef518f84a40d4442f713b4094acb"}, - {file = "ruamel.yaml.clib-0.2.7-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:99e77daab5d13a48a4054803d052ff40780278240a902b880dd37a51ba01a307"}, - {file = "ruamel.yaml.clib-0.2.7-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:3243f48ecd450eddadc2d11b5feb08aca941b5cd98c9b1db14b2fd128be8c697"}, - {file = "ruamel.yaml.clib-0.2.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:8831a2cedcd0f0927f788c5bdf6567d9dc9cc235646a434986a852af1cb54b4b"}, - {file = "ruamel.yaml.clib-0.2.7-cp38-cp38-win32.whl", hash = "sha256:3110a99e0f94a4a3470ff67fc20d3f96c25b13d24c6980ff841e82bafe827cac"}, - {file = "ruamel.yaml.clib-0.2.7-cp38-cp38-win_amd64.whl", hash = "sha256:92460ce908546ab69770b2e576e4f99fbb4ce6ab4b245345a3869a0a0410488f"}, - {file = "ruamel.yaml.clib-0.2.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5bc0667c1eb8f83a3752b71b9c4ba55ef7c7058ae57022dd9b29065186a113d9"}, - {file = "ruamel.yaml.clib-0.2.7-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:4a4d8d417868d68b979076a9be6a38c676eca060785abaa6709c7b31593c35d1"}, - {file = "ruamel.yaml.clib-0.2.7-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:bf9a6bc4a0221538b1a7de3ed7bca4c93c02346853f44e1cd764be0023cd3640"}, - {file = "ruamel.yaml.clib-0.2.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:a7b301ff08055d73223058b5c46c55638917f04d21577c95e00e0c4d79201a6b"}, - {file = "ruamel.yaml.clib-0.2.7-cp39-cp39-win32.whl", hash = "sha256:d5e51e2901ec2366b79f16c2299a03e74ba4531ddcfacc1416639c557aef0ad8"}, - {file = "ruamel.yaml.clib-0.2.7-cp39-cp39-win_amd64.whl", hash = "sha256:184faeaec61dbaa3cace407cffc5819f7b977e75360e8d5ca19461cd851a5fc5"}, - {file = "ruamel.yaml.clib-0.2.7.tar.gz", hash = "sha256:1f08fd5a2bea9c4180db71678e850b995d2a5f4537be0e94557668cf0f5f9497"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b42169467c42b692c19cf539c38d4602069d8c1505e97b86387fcf7afb766e1d"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:07238db9cbdf8fc1e9de2489a4f68474e70dffcb32232db7c08fa61ca0c7c462"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:fff3573c2db359f091e1589c3d7c5fc2f86f5bdb6f24252c2d8e539d4e45f412"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-manylinux_2_24_aarch64.whl", hash = "sha256:aa2267c6a303eb483de8d02db2871afb5c5fc15618d894300b88958f729ad74f"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:840f0c7f194986a63d2c2465ca63af8ccbbc90ab1c6001b1978f05119b5e7334"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:024cfe1fc7c7f4e1aff4a81e718109e13409767e4f871443cbff3dba3578203d"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-win32.whl", hash = "sha256:c69212f63169ec1cfc9bb44723bf2917cbbd8f6191a00ef3410f5a7fe300722d"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-win_amd64.whl", hash = "sha256:cabddb8d8ead485e255fe80429f833172b4cadf99274db39abc080e068cbcc31"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:bef08cd86169d9eafb3ccb0a39edb11d8e25f3dae2b28f5c52fd997521133069"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:b16420e621d26fdfa949a8b4b47ade8810c56002f5389970db4ddda51dbff248"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:25c515e350e5b739842fc3228d662413ef28f295791af5e5110b543cf0b57d9b"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-manylinux_2_24_aarch64.whl", hash = "sha256:1707814f0d9791df063f8c19bb51b0d1278b8e9a2353abbb676c2f685dee6afe"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:46d378daaac94f454b3a0e3d8d78cafd78a026b1d71443f4966c696b48a6d899"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:09b055c05697b38ecacb7ac50bdab2240bfca1a0c4872b0fd309bb07dc9aa3a9"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-win32.whl", hash = "sha256:53a300ed9cea38cf5a2a9b069058137c2ca1ce658a874b79baceb8f892f915a7"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-win_amd64.whl", hash = "sha256:c2a72e9109ea74e511e29032f3b670835f8a59bbdc9ce692c5b4ed91ccf1eedb"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:ebc06178e8821efc9692ea7544aa5644217358490145629914d8020042c24aa1"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:edaef1c1200c4b4cb914583150dcaa3bc30e592e907c01117c08b13a07255ec2"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d176b57452ab5b7028ac47e7b3cf644bcfdc8cacfecf7e71759f7f51a59e5c92"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-manylinux_2_24_aarch64.whl", hash = "sha256:1dc67314e7e1086c9fdf2680b7b6c2be1c0d8e3a8279f2e993ca2a7545fecf62"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:3213ece08ea033eb159ac52ae052a4899b56ecc124bb80020d9bbceeb50258e9"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:aab7fd643f71d7946f2ee58cc88c9b7bfc97debd71dcc93e03e2d174628e7e2d"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-win32.whl", hash = "sha256:5c365d91c88390c8d0a8545df0b5857172824b1c604e867161e6b3d59a827eaa"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-win_amd64.whl", hash = "sha256:1758ce7d8e1a29d23de54a16ae867abd370f01b5a69e1a3ba75223eaa3ca1a1b"}, + {file = "ruamel.yaml.clib-0.2.8-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:a5aa27bad2bb83670b71683aae140a1f52b0857a2deff56ad3f6c13a017a26ed"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c58ecd827313af6864893e7af0a3bb85fd529f862b6adbefe14643947cfe2942"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-macosx_12_0_arm64.whl", hash = "sha256:f481f16baec5290e45aebdc2a5168ebc6d35189ae6fea7a58787613a25f6e875"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-manylinux_2_24_aarch64.whl", hash = "sha256:77159f5d5b5c14f7c34073862a6b7d34944075d9f93e681638f6d753606c6ce6"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:7f67a1ee819dc4562d444bbafb135832b0b909f81cc90f7aa00260968c9ca1b3"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:4ecbf9c3e19f9562c7fdd462e8d18dd902a47ca046a2e64dba80699f0b6c09b7"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:87ea5ff66d8064301a154b3933ae406b0863402a799b16e4a1d24d9fbbcbe0d3"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-win32.whl", hash = "sha256:75e1ed13e1f9de23c5607fe6bd1aeaae21e523b32d83bb33918245361e9cc51b"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-win_amd64.whl", hash = "sha256:3f215c5daf6a9d7bbed4a0a4f760f3113b10e82ff4c5c44bec20a68c8014f675"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1b617618914cb00bf5c34d4357c37aa15183fa229b24767259657746c9077615"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:a6a9ffd280b71ad062eae53ac1659ad86a17f59a0fdc7699fd9be40525153337"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-manylinux_2_24_aarch64.whl", hash = "sha256:305889baa4043a09e5b76f8e2a51d4ffba44259f6b4c72dec8ca56207d9c6fe1"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:700e4ebb569e59e16a976857c8798aee258dceac7c7d6b50cab63e080058df91"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:e2b4c44b60eadec492926a7270abb100ef9f72798e18743939bdbf037aab8c28"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e79e5db08739731b0ce4850bed599235d601701d5694c36570a99a0c5ca41a9d"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-win32.whl", hash = "sha256:955eae71ac26c1ab35924203fda6220f84dce57d6d7884f189743e2abe3a9fbe"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-win_amd64.whl", hash = "sha256:56f4252222c067b4ce51ae12cbac231bce32aee1d33fbfc9d17e5b8d6966c312"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:03d1162b6d1df1caa3a4bd27aa51ce17c9afc2046c31b0ad60a0a96ec22f8001"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:bba64af9fa9cebe325a62fa398760f5c7206b215201b0ec825005f1b18b9bccf"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-manylinux_2_24_aarch64.whl", hash = "sha256:a1a45e0bb052edf6a1d3a93baef85319733a888363938e1fc9924cb00c8df24c"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:da09ad1c359a728e112d60116f626cc9f29730ff3e0e7db72b9a2dbc2e4beed5"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:184565012b60405d93838167f425713180b949e9d8dd0bbc7b49f074407c5a8b"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a75879bacf2c987c003368cf14bed0ffe99e8e85acfa6c0bfffc21a090f16880"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-win32.whl", hash = "sha256:84b554931e932c46f94ab306913ad7e11bba988104c5cff26d90d03f68258cd5"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-win_amd64.whl", hash = "sha256:25ac8c08322002b06fa1d49d1646181f0b2c72f5cbc15a85e80b4c30a544bb15"}, + {file = "ruamel.yaml.clib-0.2.8.tar.gz", hash = "sha256:beb2e0404003de9a4cab9753a8805a8fe9320ee6673136ed7f04255fe60bb512"}, ] [[package]] @@ -2951,6 +2972,22 @@ nativelib = ["pyobjc-framework-Cocoa", "pywin32"] objc = ["pyobjc-framework-Cocoa"] win32 = ["pywin32"] +[[package]] +name = "setuptools" +version = "68.2.2" +description = "Easily download, build, install, upgrade, and uninstall Python packages" +optional = false +python-versions = ">=3.8" +files = [ + {file = "setuptools-68.2.2-py3-none-any.whl", hash = "sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a"}, + {file = "setuptools-68.2.2.tar.gz", hash = "sha256:4ac1475276d2f1c48684874089fefcd83bd7162ddaafb81fac866ba0db282a87"}, +] + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.1)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] + [[package]] name = "six" version = "1.16.0" @@ -2986,13 +3023,13 @@ files = [ [[package]] name = "soupsieve" -version = "2.4.1" +version = "2.5" description = "A modern CSS selector implementation for Beautiful Soup." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "soupsieve-2.4.1-py3-none-any.whl", hash = "sha256:1c1bfee6819544a3447586c889157365a27e10d88cde3ad3da0cf0ddf646feb8"}, - {file = "soupsieve-2.4.1.tar.gz", hash = "sha256:89d12b2d5dfcd2c9e8c22326da9d9aa9cb3dfab0a83a024f05704076ee8d35ea"}, + {file = "soupsieve-2.5-py3-none-any.whl", hash = "sha256:eaa337ff55a1579b6549dc679565eac1e3d000563bcb1c8ab0d0fefbc0c2cdc7"}, + {file = "soupsieve-2.5.tar.gz", hash = "sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690"}, ] [[package]] @@ -3032,22 +3069,22 @@ test = ["cython", "filelock", "html5lib", "pytest (>=4.6)"] [[package]] name = "sphinx-autodoc-typehints" -version = "1.24.0" +version = "1.25.2" description = "Type hints (PEP 484) support for the Sphinx autodoc extension" optional = false python-versions = ">=3.8" files = [ - {file = "sphinx_autodoc_typehints-1.24.0-py3-none-any.whl", hash = "sha256:6a73c0c61a9144ce2ed5ef2bed99d615254e5005c1cc32002017d72d69fb70e6"}, - {file = "sphinx_autodoc_typehints-1.24.0.tar.gz", hash = "sha256:94e440066941bb237704bb880785e2d05e8ae5406c88674feefbb938ad0dc6af"}, + {file = "sphinx_autodoc_typehints-1.25.2-py3-none-any.whl", hash = "sha256:5ed05017d23ad4b937eab3bee9fae9ab0dd63f0b42aa360031f1fad47e47f673"}, + {file = "sphinx_autodoc_typehints-1.25.2.tar.gz", hash = "sha256:3cabc2537e17989b2f92e64a399425c4c8bf561ed73f087bc7414a5003616a50"}, ] [package.dependencies] -sphinx = ">=7.0.1" +sphinx = ">=7.1.2" [package.extras] -docs = ["furo (>=2023.5.20)", "sphinx (>=7.0.1)"] +docs = ["furo (>=2023.7.26)", "sphinx (>=7.1.2)"] numpy = ["nptyping (>=2.5)"] -testing = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "diff-cover (>=7.5)", "pytest (>=7.3.1)", "pytest-cov (>=4.1)", "sphobjinv (>=2.3.1)", "typing-extensions (>=4.6.3)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.3)", "diff-cover (>=7.7)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "sphobjinv (>=2.3.1)", "typing-extensions (>=4.7.1)"] [[package]] name = "sphinx-copybutton" @@ -3116,13 +3153,13 @@ Sphinx = "*" [[package]] name = "sphinx-tabs" -version = "3.4.1" +version = "3.4.4" description = "Tabbed views for Sphinx" optional = false python-versions = "~=3.7" files = [ - {file = "sphinx-tabs-3.4.1.tar.gz", hash = "sha256:d2a09f9e8316e400d57503f6df1c78005fdde220e5af589cc79d493159e1b832"}, - {file = "sphinx_tabs-3.4.1-py3-none-any.whl", hash = "sha256:7cea8942aeccc5d01a995789c01804b787334b55927f29b36ba16ed1e7cb27c6"}, + {file = "sphinx-tabs-3.4.4.tar.gz", hash = "sha256:f1b72c4f23d1ba9cdcaf880fd883524bc70689f561b9785719b8b3c3c5ed0aca"}, + {file = "sphinx_tabs-3.4.4-py3-none-any.whl", hash = "sha256:85939b689a0b0a24bf0da418b9acf14b0b0fca7a7a5cd35461ee452a2d4e716b"}, ] [package.dependencies] @@ -3132,7 +3169,7 @@ sphinx = "*" [package.extras] code-style = ["pre-commit (==2.13.0)"] -testing = ["bs4", "coverage", "pygments", "pytest (>=7.1,<8)", "pytest-cov", "pytest-regressions", "rinohtype", "sphinx-testing"] +testing = ["bs4", "coverage", "pygments", "pytest (>=7.1,<8)", "pytest-cov", "pytest-regressions", "rinohtype"] [[package]] name = "sphinx-toolbox" @@ -3257,15 +3294,54 @@ files = [ lint = ["docutils-stubs", "flake8", "mypy"] test = ["pytest"] +[[package]] +name = "sspilib" +version = "0.1.0" +description = "SSPI API bindings for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "sspilib-0.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5e43f3e684e9d29c80324bd54f52dac65ac4b18d81a2dcd529dce3994369a14d"}, + {file = "sspilib-0.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1eb34eda5d362b6603707a55751f1eff81775709b821e51cb64d1d2fa2bb8b6e"}, + {file = "sspilib-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ffe123f056f78cbe18aaed6b15f06e252020061c3387a72615abd46699a0b24"}, + {file = "sspilib-0.1.0-cp310-cp310-win32.whl", hash = "sha256:a4151072e28ec3b7d785beac9548a3d6a4549c431eb5487a5b8a1de028e9fef0"}, + {file = "sspilib-0.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:2a19696c7b96b6bbef2b2ddf35df5a92f09b268476a348390a2f0da18cf29510"}, + {file = "sspilib-0.1.0-cp310-cp310-win_arm64.whl", hash = "sha256:d2778e5e2881405b4d359a604e2802f5b7a7ed433ff62d6073d04c203af10eb1"}, + {file = "sspilib-0.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:09d7f72ad5e4bbf9a8f1acf0d5f0c3f9fbe500f44c4a45ac24a99ece84f5654f"}, + {file = "sspilib-0.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e5705e11aaa030a61d2b0a2ce09d2b8a1962dd950e55adc7a3c87dd463c6878"}, + {file = "sspilib-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dced8213d311c56f5f38044716ebff5412cc156f19678659e8ffa9bb6a642bd7"}, + {file = "sspilib-0.1.0-cp311-cp311-win32.whl", hash = "sha256:d30d38d52dbd857732224e86ae3627d003cc510451083c69fa481fc7de88a7b6"}, + {file = "sspilib-0.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:61c9067168cce962f7fead42c28804c3a39a164b9a7b660200b8cfe31e3af071"}, + {file = "sspilib-0.1.0-cp311-cp311-win_arm64.whl", hash = "sha256:b526b8e5a236553f5137b951b89a2f108f56138ad05f31fd0a51b10f80b6c3cc"}, + {file = "sspilib-0.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3ff356d40cd34c900f94f1591eaabd458284042af611ebc1dbf609002066dba5"}, + {file = "sspilib-0.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2b0fee3a52d0acef090f6c9b49953a8400fdc1c10aca7334319414a3038aa493"}, + {file = "sspilib-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab52d190dad1d578ec40d1fb417a8571954f4e32f35442a14cb709f57d3acbc9"}, + {file = "sspilib-0.1.0-cp312-cp312-win32.whl", hash = "sha256:b3cf819094383ec883e9a63c11b81d622618c815c18a6c9d761d9a14d9f028d1"}, + {file = "sspilib-0.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:b83825a2c43ff84ddff72d09b098057efaabf3841d3c42888078e154cf8e9595"}, + {file = "sspilib-0.1.0-cp312-cp312-win_arm64.whl", hash = "sha256:9aa6ab4c3fc1057251cf1f3f199daf90b99599cdfafc9eade8fdf0c01526dec8"}, + {file = "sspilib-0.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:82bff5df178386027d0112458b6971bbd18c76eb9e7be53fd61dab33d7bf8417"}, + {file = "sspilib-0.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:18393a9e6e0447cb7f319d361b65e9a0eaa5484705f16787133ffc49ad364c28"}, + {file = "sspilib-0.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88a423fbca206ba0ca811dc995d8c3af045402b7d330f033e938b24f3a1d93fc"}, + {file = "sspilib-0.1.0-cp38-cp38-win32.whl", hash = "sha256:86bd936b1ef0aa63c6d9623ad08473e74ceb15f342f6e92cbade15ed9574cd33"}, + {file = "sspilib-0.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:d4f688b94f0a64128444063e1d3d59152614175999222f6e2920681faea833f4"}, + {file = "sspilib-0.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2acef24e13e40d9dd8697eaae84ead9f417528ff741d087ec4eb4260518f4dc7"}, + {file = "sspilib-0.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4b625802d80144d856d5eb6e8f4412f186565758da4493c7ad1b88e3d6d353de"}, + {file = "sspilib-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c06ca1e34702bca1c750dcb5133b716f316b38dccb28d55a1a44d9842bc3f391"}, + {file = "sspilib-0.1.0-cp39-cp39-win32.whl", hash = "sha256:68496c9bd52b57a1b6d2e5529b43c30060249b8db901127b8343c4ad8cd93670"}, + {file = "sspilib-0.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:369727097f07a440099882580e284e137d9c27b7de354d63b65e327a454e7bee"}, + {file = "sspilib-0.1.0-cp39-cp39-win_arm64.whl", hash = "sha256:87d8268c0517149c51a53b3888961ebf66826bb3dbb82c4e5cf10108f5456104"}, + {file = "sspilib-0.1.0.tar.gz", hash = "sha256:58b5291553cf6220549c0f855e0e6973f4977375d8236ce47bb581efb3e9b1cf"}, +] + [[package]] name = "stack-data" -version = "0.6.2" +version = "0.6.3" description = "Extract data from python stack frames and tracebacks for informative displays" optional = false python-versions = "*" files = [ - {file = "stack_data-0.6.2-py3-none-any.whl", hash = "sha256:cbb2a53eb64e5785878201a97ed7c7b94883f48b87bfb0bbe8b623c74679e4a8"}, - {file = "stack_data-0.6.2.tar.gz", hash = "sha256:32d2dd0376772d01b6cb9fc996f3c8b57a357089dec328ed4b6553d037eaf815"}, + {file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"}, + {file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"}, ] [package.dependencies] @@ -3306,13 +3382,13 @@ doc = ["reno", "sphinx", "tornado (>=4.5)"] [[package]] name = "terminado" -version = "0.17.1" +version = "0.18.0" description = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "terminado-0.17.1-py3-none-any.whl", hash = "sha256:8650d44334eba354dd591129ca3124a6ba42c3d5b70df5051b6921d506fdaeae"}, - {file = "terminado-0.17.1.tar.gz", hash = "sha256:6ccbbcd3a4f8a25a5ec04991f39a0b8db52dfcd487ea0e578d977e6752380333"}, + {file = "terminado-0.18.0-py3-none-any.whl", hash = "sha256:87b0d96642d0fe5f5abd7783857b9cab167f221a39ff98e3b9619a788a3c0f2e"}, + {file = "terminado-0.18.0.tar.gz", hash = "sha256:1ea08a89b835dd1b8c0c900d92848147cef2537243361b2e3f4dc15df9b6fded"}, ] [package.dependencies] @@ -3323,6 +3399,7 @@ tornado = ">=6.1.0" [package.extras] docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] test = ["pre-commit", "pytest (>=7.0)", "pytest-timeout"] +typing = ["mypy (>=1.6,<2.0)", "traitlets (>=5.11.1)"] [[package]] name = "tinycss2" @@ -3386,28 +3463,39 @@ files = [ [[package]] name = "traitlets" -version = "5.9.0" +version = "5.13.0" description = "Traitlets Python configuration system" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "traitlets-5.9.0-py3-none-any.whl", hash = "sha256:9e6ec080259b9a5940c797d58b613b5e31441c2257b87c2e795c5228ae80d2d8"}, - {file = "traitlets-5.9.0.tar.gz", hash = "sha256:f6cde21a9c68cf756af02035f72d5a723bf607e862e7be33ece505abf4a3bad9"}, + {file = "traitlets-5.13.0-py3-none-any.whl", hash = "sha256:baf991e61542da48fe8aef8b779a9ea0aa38d8a54166ee250d5af5ecf4486619"}, + {file = "traitlets-5.13.0.tar.gz", hash = "sha256:9b232b9430c8f57288c1024b34a8f0251ddcc47268927367a0dd3eeaca40deb5"}, ] [package.extras] docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] -test = ["argcomplete (>=2.0)", "pre-commit", "pytest", "pytest-mock"] +test = ["argcomplete (>=3.0.3)", "mypy (>=1.6.0)", "pre-commit", "pytest (>=7.0,<7.5)", "pytest-mock", "pytest-mypy-testing"] + +[[package]] +name = "types-python-dateutil" +version = "2.8.19.14" +description = "Typing stubs for python-dateutil" +optional = false +python-versions = "*" +files = [ + {file = "types-python-dateutil-2.8.19.14.tar.gz", hash = "sha256:1f4f10ac98bb8b16ade9dbee3518d9ace017821d94b057a425b069f834737f4b"}, + {file = "types_python_dateutil-2.8.19.14-py3-none-any.whl", hash = "sha256:f977b8de27787639986b4e28963263fd0e5158942b3ecef91b9335c130cb1ce9"}, +] [[package]] name = "typing-extensions" -version = "4.7.1" -description = "Backported and Experimental Type Hints for Python 3.7+" +version = "4.8.0" +description = "Backported and Experimental Type Hints for Python 3.8+" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "typing_extensions-4.7.1-py3-none-any.whl", hash = "sha256:440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36"}, - {file = "typing_extensions-4.7.1.tar.gz", hash = "sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2"}, + {file = "typing_extensions-4.8.0-py3-none-any.whl", hash = "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0"}, + {file = "typing_extensions-4.8.0.tar.gz", hash = "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef"}, ] [[package]] @@ -3437,30 +3525,29 @@ dev = ["flake8", "flake8-annotations", "flake8-bandit", "flake8-bugbear", "flake [[package]] name = "urllib3" -version = "2.0.4" +version = "2.1.0" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "urllib3-2.0.4-py3-none-any.whl", hash = "sha256:de7df1803967d2c2a98e4b11bb7d6bd9210474c46e8a0401514e3a42a75ebde4"}, - {file = "urllib3-2.0.4.tar.gz", hash = "sha256:8d22f86aae8ef5e410d4f539fde9ce6b2113a001bb4d189e0aed70642d602b11"}, + {file = "urllib3-2.1.0-py3-none-any.whl", hash = "sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3"}, + {file = "urllib3-2.1.0.tar.gz", hash = "sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54"}, ] [package.extras] brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] -secure = ["certifi", "cryptography (>=1.9)", "idna (>=2.0.0)", "pyopenssl (>=17.1.0)", "urllib3-secure-extra"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] [[package]] name = "wcwidth" -version = "0.2.6" +version = "0.2.10" description = "Measures the displayed width of unicode strings in a terminal" optional = false python-versions = "*" files = [ - {file = "wcwidth-0.2.6-py2.py3-none-any.whl", hash = "sha256:795b138f6875577cd91bba52baf9e445cd5118fd32723b460e30a0af30ea230e"}, - {file = "wcwidth-0.2.6.tar.gz", hash = "sha256:a5220780a404dbe3353789870978e472cfe477761f06ee55077256e509b156d0"}, + {file = "wcwidth-0.2.10-py2.py3-none-any.whl", hash = "sha256:aec5179002dd0f0d40c456026e74a729661c9d468e1ed64405e3a6c2176ca36f"}, + {file = "wcwidth-0.2.10.tar.gz", hash = "sha256:390c7454101092a6a5e43baad8f83de615463af459201709556b6e4b1c861f97"}, ] [[package]] @@ -3491,13 +3578,13 @@ files = [ [[package]] name = "websocket-client" -version = "1.6.2" +version = "1.6.4" description = "WebSocket client for Python with low level API options" optional = false python-versions = ">=3.8" files = [ - {file = "websocket-client-1.6.2.tar.gz", hash = "sha256:53e95c826bf800c4c465f50093a8c4ff091c7327023b10bfaff40cf1ef170eaa"}, - {file = "websocket_client-1.6.2-py3-none-any.whl", hash = "sha256:ce54f419dfae71f4bdba69ebe65bf7f0a93fe71bc009ad3a010aacc3eebad537"}, + {file = "websocket-client-1.6.4.tar.gz", hash = "sha256:b3324019b3c28572086c4a319f91d1dcd44e6e11cd340232978c684a7650d0df"}, + {file = "websocket_client-1.6.4-py3-none-any.whl", hash = "sha256:084072e0a7f5f347ef2ac3d8698a5e0b4ffbfcab607628cadabc650fc9a83a24"}, ] [package.extras] @@ -3537,17 +3624,17 @@ docs = ["Sphinx", "elementpath (>=4.1.5,<5.0.0)", "jinja2", "sphinx-rtd-theme"] [[package]] name = "zipp" -version = "3.16.2" +version = "3.17.0" description = "Backport of pathlib-compatible object wrapper for zip files" optional = false python-versions = ">=3.8" files = [ - {file = "zipp-3.16.2-py3-none-any.whl", hash = "sha256:679e51dd4403591b2d6838a48de3d283f3d188412a9782faadf845f298736ba0"}, - {file = "zipp-3.16.2.tar.gz", hash = "sha256:ebc15946aa78bd63458992fc81ec3b6f7b1e92d51c35e6de1c3804e73b799147"}, + {file = "zipp-3.17.0-py3-none-any.whl", hash = "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31"}, + {file = "zipp-3.17.0.tar.gz", hash = "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"] [extras] From e3820527c18d99f5c7353007b4f5b340e0c551a7 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 16 Nov 2023 20:35:27 +0100 Subject: [PATCH 244/275] Update emails --- pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 7f0c900f..2fb9ab93 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,8 +7,8 @@ name = "ansys-grantami-bomanalytics" description = "Perform compliance analysis on materials data stored in Granta MI." version = "1.2.0" license = "MIT" -authors = ["ANSYS, Inc."] -maintainers = ["PyAnsys Maintainers "] +authors = ["ANSYS, Inc. "] +maintainers = ["ANSYS, Inc. "] repository = "https://github.com/pyansys/grantami-bomanalytics" documentation = "https://bomanalytics.grantami.docs.pyansys.com" readme = "README.rst" From 7e75d903cf69299e28087e3c4a5f38b2e1e8b209 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 16 Nov 2023 20:38:51 +0100 Subject: [PATCH 245/275] Use openapi PR ref --- poetry.lock | 96 +++++++------------------------------------------- pyproject.toml | 4 +-- 2 files changed, 14 insertions(+), 86 deletions(-) diff --git a/poetry.lock b/poetry.lock index 153559b0..e7feb377 100644 --- a/poetry.lock +++ b/poetry.lock @@ -27,33 +27,33 @@ files = [ [[package]] name = "ansys-grantami-bomanalytics-openapi" -version = "1.1.0.dev42" +version = "2.0.0.dev48" description = "Autogenerated client library for the Granta MI BoM Analytics Services." optional = false -python-versions = "^3.8.0" +python-versions = "^3.9.0" files = [] develop = false [package.dependencies] -ansys-openapi-common = "^1.2.1" +ansys-openapi-common = "^1.3.0" python-dateutil = "^2.8.2" requests = "^2.26.0" [package.source] type = "git" url = "https://github.com/ansys/grantami-bomanalytics-openapi-private.git" -reference = "16ca550" -resolved_reference = "16ca550c58a47a757aca3eadcb8344a311716258" +reference = "0b43560" +resolved_reference = "0b435604fd39f02148c1de7e0303e530ef7a111f" subdirectory = "ansys-grantami-bomanalytics-openapi" [[package]] name = "ansys-openapi-common" -version = "1.2.2" +version = "1.3.0" description = "Provides a helper to create sessions for use with Ansys OpenAPI clients." optional = false -python-versions = ">=3.7,<4.0" +python-versions = ">=3.9,<4.0" files = [ - {file = "ansys_openapi_common-1.2.2-py3-none-any.whl", hash = "sha256:496a04ef3be954279d73badf1c856e10decf828d93aae98baccfb54e4001f58a"}, + {file = "ansys_openapi_common-1.3.0-py3-none-any.whl", hash = "sha256:49997b05b88c8f47e06b912dac499e44bd5593b516b2455aac168273dd08d88d"}, ] [package.dependencies] @@ -65,7 +65,7 @@ requests-ntlm = ">=1.1.0,<2.0.0" [package.extras] linux-kerberos = ["requests-kerberos (>=0.13,<0.14)"] -oidc = ["keyring (>=22,<24)", "requests_auth (>=6.0,<7.0)"] +oidc = ["keyring (>=22,<25)", "requests_auth (>=6,<8)"] [[package]] name = "ansys-sphinx-theme" @@ -306,7 +306,6 @@ files = [ ] [package.dependencies] -pytz = {version = ">=2015.7", markers = "python_version < \"3.9\""} setuptools = {version = "*", markers = "python_version >= \"3.12\""} [package.extras] @@ -796,7 +795,6 @@ files = [ ] [package.dependencies] -importlib-metadata = {version = ">=3.6.0", markers = "python_version < \"3.9\""} natsort = ">=7.0.1" typing-extensions = ">=3.7.4.1" @@ -968,24 +966,6 @@ docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker perf = ["ipython"] testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] -[[package]] -name = "importlib-resources" -version = "6.1.1" -description = "Read resources from Python packages" -optional = false -python-versions = ">=3.8" -files = [ - {file = "importlib_resources-6.1.1-py3-none-any.whl", hash = "sha256:e8bf90d8213b486f428c9c39714b920041cb02c184686a3dee24905aaa8105d6"}, - {file = "importlib_resources-6.1.1.tar.gz", hash = "sha256:3893a00122eafde6894c59914446a512f728a0c1a45f9bb9b63721b6bacf0b4a"}, -] - -[package.dependencies] -zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-ruff", "zipp (>=3.17)"] - [[package]] name = "iniconfig" version = "2.0.0" @@ -1180,11 +1160,9 @@ files = [ attrs = ">=22.2.0" fqdn = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} idna = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} -importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""} isoduration = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} jsonpointer = {version = ">1.13", optional = true, markers = "extra == \"format-nongpl\""} jsonschema-specifications = ">=2023.03.6" -pkgutil-resolve-name = {version = ">=1.3.10", markers = "python_version < \"3.9\""} referencing = ">=0.28.4" rfc3339-validator = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} rfc3986-validator = {version = ">0.1.0", optional = true, markers = "extra == \"format-nongpl\""} @@ -1208,7 +1186,6 @@ files = [ ] [package.dependencies] -importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""} referencing = ">=0.31.0" [[package]] @@ -1363,7 +1340,6 @@ files = [ [package.dependencies] async-lru = ">=1.0.0" importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""} -importlib-resources = {version = ">=1.4", markers = "python_version < \"3.9\""} ipykernel = "*" jinja2 = ">=3.0.3" jupyter-core = "*" @@ -1905,43 +1881,6 @@ jupyter-server = ">=1.8,<3" [package.extras] test = ["pytest", "pytest-console-scripts", "pytest-jupyter", "pytest-tornasync"] -[[package]] -name = "numpy" -version = "1.24.4" -description = "Fundamental package for array computing in Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "numpy-1.24.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c0bfb52d2169d58c1cdb8cc1f16989101639b34c7d3ce60ed70b19c63eba0b64"}, - {file = "numpy-1.24.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ed094d4f0c177b1b8e7aa9cba7d6ceed51c0e569a5318ac0ca9a090680a6a1b1"}, - {file = "numpy-1.24.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79fc682a374c4a8ed08b331bef9c5f582585d1048fa6d80bc6c35bc384eee9b4"}, - {file = "numpy-1.24.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ffe43c74893dbf38c2b0a1f5428760a1a9c98285553c89e12d70a96a7f3a4d6"}, - {file = "numpy-1.24.4-cp310-cp310-win32.whl", hash = "sha256:4c21decb6ea94057331e111a5bed9a79d335658c27ce2adb580fb4d54f2ad9bc"}, - {file = "numpy-1.24.4-cp310-cp310-win_amd64.whl", hash = "sha256:b4bea75e47d9586d31e892a7401f76e909712a0fd510f58f5337bea9572c571e"}, - {file = "numpy-1.24.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f136bab9c2cfd8da131132c2cf6cc27331dd6fae65f95f69dcd4ae3c3639c810"}, - {file = "numpy-1.24.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e2926dac25b313635e4d6cf4dc4e51c8c0ebfed60b801c799ffc4c32bf3d1254"}, - {file = "numpy-1.24.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:222e40d0e2548690405b0b3c7b21d1169117391c2e82c378467ef9ab4c8f0da7"}, - {file = "numpy-1.24.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7215847ce88a85ce39baf9e89070cb860c98fdddacbaa6c0da3ffb31b3350bd5"}, - {file = "numpy-1.24.4-cp311-cp311-win32.whl", hash = "sha256:4979217d7de511a8d57f4b4b5b2b965f707768440c17cb70fbf254c4b225238d"}, - {file = "numpy-1.24.4-cp311-cp311-win_amd64.whl", hash = "sha256:b7b1fc9864d7d39e28f41d089bfd6353cb5f27ecd9905348c24187a768c79694"}, - {file = "numpy-1.24.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1452241c290f3e2a312c137a9999cdbf63f78864d63c79039bda65ee86943f61"}, - {file = "numpy-1.24.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:04640dab83f7c6c85abf9cd729c5b65f1ebd0ccf9de90b270cd61935eef0197f"}, - {file = "numpy-1.24.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5425b114831d1e77e4b5d812b69d11d962e104095a5b9c3b641a218abcc050e"}, - {file = "numpy-1.24.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd80e219fd4c71fc3699fc1dadac5dcf4fd882bfc6f7ec53d30fa197b8ee22dc"}, - {file = "numpy-1.24.4-cp38-cp38-win32.whl", hash = "sha256:4602244f345453db537be5314d3983dbf5834a9701b7723ec28923e2889e0bb2"}, - {file = "numpy-1.24.4-cp38-cp38-win_amd64.whl", hash = "sha256:692f2e0f55794943c5bfff12b3f56f99af76f902fc47487bdfe97856de51a706"}, - {file = "numpy-1.24.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2541312fbf09977f3b3ad449c4e5f4bb55d0dbf79226d7724211acc905049400"}, - {file = "numpy-1.24.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9667575fb6d13c95f1b36aca12c5ee3356bf001b714fc354eb5465ce1609e62f"}, - {file = "numpy-1.24.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3a86ed21e4f87050382c7bc96571755193c4c1392490744ac73d660e8f564a9"}, - {file = "numpy-1.24.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d11efb4dbecbdf22508d55e48d9c8384db795e1b7b51ea735289ff96613ff74d"}, - {file = "numpy-1.24.4-cp39-cp39-win32.whl", hash = "sha256:6620c0acd41dbcb368610bb2f4d83145674040025e5536954782467100aa8835"}, - {file = "numpy-1.24.4-cp39-cp39-win_amd64.whl", hash = "sha256:befe2bf740fd8373cf56149a5c23a0f601e82869598d41f8e188a0e9869926f8"}, - {file = "numpy-1.24.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:31f13e25b4e304632a4619d0e0777662c2ffea99fcae2029556b17d8ff958aef"}, - {file = "numpy-1.24.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95f7ac6540e95bc440ad77f56e520da5bf877f87dca58bd095288dce8940532a"}, - {file = "numpy-1.24.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:e98f220aa76ca2a977fe435f5b04d7b3470c0a2e6312907b37ba6068f26787f2"}, - {file = "numpy-1.24.4.tar.gz", hash = "sha256:80f5e3a4e498641401868df4208b74581206afbee7cf7b8329daae82676d9463"}, -] - [[package]] name = "numpy" version = "1.26.2" @@ -2064,8 +2003,8 @@ files = [ [package.dependencies] numpy = [ {version = ">=1.20.3", markers = "python_version < \"3.10\""}, - {version = ">=1.21.0", markers = "python_version >= \"3.10\" and python_version < \"3.11\""}, {version = ">=1.23.2", markers = "python_version >= \"3.11\""}, + {version = ">=1.21.0", markers = "python_version >= \"3.10\" and python_version < \"3.11\""}, ] python-dateutil = ">=2.8.2" pytz = ">=2020.1" @@ -2145,17 +2084,6 @@ files = [ {file = "pickleshare-0.7.5.tar.gz", hash = "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca"}, ] -[[package]] -name = "pkgutil-resolve-name" -version = "1.3.10" -description = "Resolve a name to an object." -optional = false -python-versions = ">=3.6" -files = [ - {file = "pkgutil_resolve_name-1.3.10-py3-none-any.whl", hash = "sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e"}, - {file = "pkgutil_resolve_name-1.3.10.tar.gz", hash = "sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174"}, -] - [[package]] name = "platformdirs" version = "4.0.0" @@ -3642,5 +3570,5 @@ examples = ["ipywidgets", "jupyterlab", "lxml", "pandas", "plotly", "tabulate"] [metadata] lock-version = "2.0" -python-versions = "^3.8.0" -content-hash = "546063b756471cee5daa3a18a60c8981f0198fc1c7dbac85feed7292bd8e484f" +python-versions = "^3.9.0" +content-hash = "cd9eb026a7b24cace8854158e914c0b087b52e56a68708d6836458dc11902130" diff --git a/pyproject.toml b/pyproject.toml index 2fb9ab93..705abe00 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -36,11 +36,11 @@ packages = [ ] [tool.poetry.dependencies] -python = "^3.8.0" +python = "^3.9.0" # Packages for core library ansys-openapi-common = "< 2.0.0" -ansys-grantami-bomanalytics-openapi = { git = 'https://github.com/ansys/grantami-bomanalytics-openapi-private.git', subdirectory = 'ansys-grantami-bomanalytics-openapi', rev = '16ca550' } +ansys-grantami-bomanalytics-openapi = { git = 'https://github.com/ansys/grantami-bomanalytics-openapi-private.git', subdirectory = 'ansys-grantami-bomanalytics-openapi', rev = '0b43560' } xmlschema = "^2.4.0" # Packages for the examples extra From b7f8a9d88507ab8df8ec8975f5379a3d7ed2d0d4 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 16 Nov 2023 20:39:55 +0100 Subject: [PATCH 246/275] Drop Python 3.8 --- .github/workflows/local_checks.yml | 2 +- pyproject.toml | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/local_checks.yml b/.github/workflows/local_checks.yml index c6ed771a..4dcc3859 100644 --- a/.github/workflows/local_checks.yml +++ b/.github/workflows/local_checks.yml @@ -34,7 +34,7 @@ jobs: strategy: matrix: - python-version: [ '3.8', '3.9', '3.10', '3.11' ] + python-version: [ '3.9', '3.10', '3.11' ] steps: - uses: actions/checkout@v4 diff --git a/pyproject.toml b/pyproject.toml index 705abe00..1c1474da 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -26,7 +26,6 @@ classifiers = [ "Operating System :: POSIX", "Operating System :: MacOS", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", @@ -101,7 +100,6 @@ requires = [gh-actions] python = - 3.8: py38 3.9: py39 3.10: py310 3.11: py311 From d1382fed438f9b5e451a50741414953c62f7f80b Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 16 Nov 2023 20:41:10 +0100 Subject: [PATCH 247/275] Support Python 3.12 --- .github/workflows/local_checks.yml | 2 +- pyproject.toml | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/local_checks.yml b/.github/workflows/local_checks.yml index 4dcc3859..17344326 100644 --- a/.github/workflows/local_checks.yml +++ b/.github/workflows/local_checks.yml @@ -34,7 +34,7 @@ jobs: strategy: matrix: - python-version: [ '3.9', '3.10', '3.11' ] + python-version: [ '3.9', '3.10', '3.11', '3.12' ] steps: - uses: actions/checkout@v4 diff --git a/pyproject.toml b/pyproject.toml index 1c1474da..8b3f3a36 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -29,6 +29,7 @@ classifiers = [ "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", ] packages = [ { include = "ansys", from = "src" } @@ -103,6 +104,7 @@ python = 3.9: py39 3.10: py310 3.11: py311 + 3.12: py312 [testenv] whitelist_externals = poetry From 10db44a148bbf99d08eb29a60c0338c4d8b7dd4e Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 16 Nov 2023 20:46:07 +0100 Subject: [PATCH 248/275] Fix tox config --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 8b3f3a36..c5189131 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -94,7 +94,7 @@ examples = [ [tool.tox] legacy_tox_ini = """ [tox] -envlist = py38,py39,py310,py311 +envlist = py39,py310,py311,py312 isolated_build = True requires = tox-gh-actions==2.9.1 From 49fa6657a0e8d3e958cabafa5276b2fb478b50e4 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Fri, 17 Nov 2023 14:15:30 +0100 Subject: [PATCH 249/275] Use merge commit ref --- poetry.lock | 6 +++--- pyproject.toml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/poetry.lock b/poetry.lock index e7feb377..fb110ee4 100644 --- a/poetry.lock +++ b/poetry.lock @@ -42,8 +42,8 @@ requests = "^2.26.0" [package.source] type = "git" url = "https://github.com/ansys/grantami-bomanalytics-openapi-private.git" -reference = "0b43560" -resolved_reference = "0b435604fd39f02148c1de7e0303e530ef7a111f" +reference = "4a34858" +resolved_reference = "4a348586ac215e04fee81f5d7624d5f0ce7bce42" subdirectory = "ansys-grantami-bomanalytics-openapi" [[package]] @@ -3571,4 +3571,4 @@ examples = ["ipywidgets", "jupyterlab", "lxml", "pandas", "plotly", "tabulate"] [metadata] lock-version = "2.0" python-versions = "^3.9.0" -content-hash = "cd9eb026a7b24cace8854158e914c0b087b52e56a68708d6836458dc11902130" +content-hash = "bd316e27791b4d37cddd69b8ae5eb96b5d030f038fc32e7f6a64a12f2c780075" diff --git a/pyproject.toml b/pyproject.toml index c5189131..aa1eab6e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,7 +40,7 @@ python = "^3.9.0" # Packages for core library ansys-openapi-common = "< 2.0.0" -ansys-grantami-bomanalytics-openapi = { git = 'https://github.com/ansys/grantami-bomanalytics-openapi-private.git', subdirectory = 'ansys-grantami-bomanalytics-openapi', rev = '0b43560' } +ansys-grantami-bomanalytics-openapi = { git = 'https://github.com/ansys/grantami-bomanalytics-openapi-private.git', subdirectory = 'ansys-grantami-bomanalytics-openapi', rev = '4a34858' } xmlschema = "^2.4.0" # Packages for the examples extra From c3a5c7b3ae7a766f9cddea7b16bc4e7209357b11 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Fri, 17 Nov 2023 15:32:46 +0100 Subject: [PATCH 250/275] Update docs dependencies --- poetry.lock | 62 +++++++++++++++++++++++++++----------------------- pyproject.toml | 8 +++---- 2 files changed, 38 insertions(+), 32 deletions(-) diff --git a/poetry.lock b/poetry.lock index fb110ee4..c3265aba 100644 --- a/poetry.lock +++ b/poetry.lock @@ -69,22 +69,23 @@ oidc = ["keyring (>=22,<25)", "requests_auth (>=6,<8)"] [[package]] name = "ansys-sphinx-theme" -version = "0.10.6" +version = "0.12.5" description = "A theme devised by ANSYS, Inc. for Sphinx documentation." optional = false -python-versions = ">=3.8,<4" +python-versions = ">=3.9,<4" files = [ - {file = "ansys_sphinx_theme-0.10.6-py3-none-any.whl", hash = "sha256:0ff077a35d0d950aa2d8ebe95ec5f2e8ed217c9721bea5380623c2781ffcc2ac"}, - {file = "ansys_sphinx_theme-0.10.6.tar.gz", hash = "sha256:b66082557fbab9fe192cc1b4be495e0a64c86ba107929775cd8866ff97d3fadc"}, + {file = "ansys_sphinx_theme-0.12.5-py3-none-any.whl", hash = "sha256:8b18c2c5b6eeffc382bd1b9fa4a860783a4a785a859c3530fce3bef06ebb7f80"}, + {file = "ansys_sphinx_theme-0.12.5.tar.gz", hash = "sha256:81e50f7cc9812a39ed02a4f3894c9a64bec2ff8d0402877cd90c6cc988ddac6d"}, ] [package.dependencies] +importlib-metadata = ">=4.0" Jinja2 = ">=3.1.2" -pydata-sphinx-theme = "0.13.3" +pydata-sphinx-theme = ">=0.14.0" Sphinx = ">=4.2.0" [package.extras] -doc = ["Sphinx (==6.2.1)", "numpydoc (==1.5.0)", "requests (==2.31.0)", "sphinx-copybutton (==0.5.2)", "sphinx-design (==0.4.1)", "sphinx-jinja (==2.0.2)", "sphinx-notfound-page (==0.8.3)"] +doc = ["Sphinx (==7.2.6)", "numpydoc (==1.6.0)", "requests (==2.31.0)", "sphinx-copybutton (==0.5.2)", "sphinx-design (==0.5.0)", "sphinx-jinja (==2.0.2)", "sphinx-notfound-page (==1.0.0)"] [[package]] name = "anyio" @@ -818,13 +819,13 @@ dev = ["Sphinx", "coverage", "flake8", "lxml", "lxml-stubs", "memory-profiler", [[package]] name = "enum-tools" -version = "0.10.0" +version = "0.11.0" description = "Tools to expand Python's enum module." optional = false python-versions = ">=3.6" files = [ - {file = "enum_tools-0.10.0-py3-none-any.whl", hash = "sha256:87f4e8216468e53f2920d2e016dc18eea0972b0b6c1eea65756fbc331a3113d2"}, - {file = "enum_tools-0.10.0.tar.gz", hash = "sha256:777dc3cfb4314780bb9ca2460b518be58c3f29e13bd77b33badead4c2c136976"}, + {file = "enum_tools-0.11.0-py3-none-any.whl", hash = "sha256:9e76186ff4fd1798a64a855d334e245a7d2b67970c40029acccff06c58bf0535"}, + {file = "enum_tools-0.11.0.tar.gz", hash = "sha256:ed10ae4c2109c52e6ca17505a3bdb173b2554f5f0449677621829023a9d8bd33"}, ] [package.dependencies] @@ -832,8 +833,8 @@ pygments = ">=2.6.1" typing-extensions = ">=3.7.4.3" [package.extras] -all = ["sphinx (>=3.2.0)", "sphinx-jinja2-compat (>=0.1.1)", "sphinx-toolbox (>=2.16.0)"] -sphinx = ["sphinx (>=3.2.0)", "sphinx-jinja2-compat (>=0.1.1)", "sphinx-toolbox (>=2.16.0)"] +all = ["sphinx (>=3.4.0)", "sphinx-jinja2-compat (>=0.1.1)", "sphinx-toolbox (>=2.16.0)"] +sphinx = ["sphinx (>=3.4.0)", "sphinx-jinja2-compat (>=0.1.1)", "sphinx-toolbox (>=2.16.0)"] [[package]] name = "exceptiongroup" @@ -1408,13 +1409,13 @@ files = [ [[package]] name = "jupytext" -version = "1.15.1" +version = "1.15.2" description = "Jupyter notebooks as Markdown documents, Julia, Python or R scripts" optional = false python-versions = "~=3.6" files = [ - {file = "jupytext-1.15.1-py3-none-any.whl", hash = "sha256:1df0724f97e5c0db9bb5b71ff9ecf4225e2bccbfb49131834424b043edbe8af8"}, - {file = "jupytext-1.15.1.tar.gz", hash = "sha256:39c2112a1a007f2e9e2783695054205562466fd44f68acb371ebd52feac7ff58"}, + {file = "jupytext-1.15.2-py3-none-any.whl", hash = "sha256:ef2a1a3eb8f63d84a3b3772014bdfbe238e4e12a30c4309b8c89e0a54adeb7d1"}, + {file = "jupytext-1.15.2.tar.gz", hash = "sha256:c9976e24d834e991906c1de55af4b6d512d764f6372aabae45fc1ea72b589173"}, ] [package.dependencies] @@ -1928,21 +1929,25 @@ files = [ [[package]] name = "numpydoc" -version = "1.5.0" +version = "1.6.0" description = "Sphinx extension to support docstrings in Numpy format" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "numpydoc-1.5.0-py3-none-any.whl", hash = "sha256:c997759fb6fc32662801cece76491eedbc0ec619b514932ffd2b270ae89c07f9"}, - {file = "numpydoc-1.5.0.tar.gz", hash = "sha256:b0db7b75a32367a0e25c23b397842c65e344a1206524d16c8069f0a1c91b5f4c"}, + {file = "numpydoc-1.6.0-py3-none-any.whl", hash = "sha256:b6ddaa654a52bdf967763c1e773be41f1c3ae3da39ee0de973f2680048acafaa"}, + {file = "numpydoc-1.6.0.tar.gz", hash = "sha256:ae7a5380f0a06373c3afe16ccd15bd79bc6b07f2704cbc6f1e7ecc94b4f5fc0d"}, ] [package.dependencies] Jinja2 = ">=2.10" -sphinx = ">=4.2" +sphinx = ">=5" +tabulate = ">=0.8.10" +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} [package.extras] -testing = ["matplotlib", "pytest", "pytest-cov"] +developer = ["pre-commit (>=3.3)", "tomli"] +doc = ["matplotlib (>=3.5)", "numpy (>=1.22)", "pydata-sphinx-theme (>=0.13.3)", "sphinx (>=7)"] +test = ["matplotlib", "pytest", "pytest-cov"] [[package]] name = "overrides" @@ -2223,13 +2228,13 @@ files = [ [[package]] name = "pydata-sphinx-theme" -version = "0.13.3" +version = "0.14.3" description = "Bootstrap-based Sphinx theme from the PyData community" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pydata_sphinx_theme-0.13.3-py3-none-any.whl", hash = "sha256:bf41ca6c1c6216e929e28834e404bfc90e080b51915bbe7563b5e6fda70354f0"}, - {file = "pydata_sphinx_theme-0.13.3.tar.gz", hash = "sha256:827f16b065c4fd97e847c11c108bf632b7f2ff53a3bca3272f63f3f3ff782ecc"}, + {file = "pydata_sphinx_theme-0.14.3-py3-none-any.whl", hash = "sha256:b7e40cd75a20449adfe2d7525be379b9fe92f6d31e5233e449fa34ddcd4398d9"}, + {file = "pydata_sphinx_theme-0.14.3.tar.gz", hash = "sha256:bd474f347895f3fc5b6ce87390af64330ee54f11ebf9660d5bc3f87d532d4e5c"}, ] [package.dependencies] @@ -2239,13 +2244,14 @@ beautifulsoup4 = "*" docutils = "!=0.17.0" packaging = "*" pygments = ">=2.7" -sphinx = ">=4.2" +sphinx = ">=5.0" typing-extensions = "*" [package.extras] +a11y = ["pytest-playwright"] dev = ["nox", "pre-commit", "pydata-sphinx-theme[doc,test]", "pyyaml"] -doc = ["ablog (>=0.11.0rc2)", "colorama", "ipyleaflet", "jupyter_sphinx", "linkify-it-py", "matplotlib", "myst-nb", "nbsphinx", "numpy", "numpydoc", "pandas", "plotly", "rich", "sphinx-copybutton", "sphinx-design", "sphinx-favicon (>=1.0.1)", "sphinx-sitemap", "sphinx-togglebutton", "sphinxcontrib-youtube", "sphinxext-rediraffe", "xarray"] -test = ["codecov", "pytest", "pytest-cov", "pytest-regressions"] +doc = ["ablog (>=0.11.0rc2)", "colorama", "ipykernel", "ipyleaflet", "jupyter_sphinx", "jupyterlite-sphinx", "linkify-it-py", "matplotlib", "myst-parser", "nbsphinx", "numpy", "numpydoc", "pandas", "plotly", "rich", "sphinx-autoapi (>=3.0.0)", "sphinx-copybutton", "sphinx-design", "sphinx-favicon (>=1.0.1)", "sphinx-sitemap", "sphinx-togglebutton", "sphinxcontrib-youtube (<1.4)", "sphinxext-rediraffe", "xarray"] +test = ["pytest", "pytest-cov", "pytest-regressions"] [[package]] name = "pygments" @@ -3571,4 +3577,4 @@ examples = ["ipywidgets", "jupyterlab", "lxml", "pandas", "plotly", "tabulate"] [metadata] lock-version = "2.0" python-versions = "^3.9.0" -content-hash = "bd316e27791b4d37cddd69b8ae5eb96b5d030f038fc32e7f6a64a12f2c780075" +content-hash = "18f4e992f5c2f1c7b20bd2c7969d675517c4d06f459010d47a6d3a04eab6d4d4" diff --git a/pyproject.toml b/pyproject.toml index aa1eab6e..4eb4ebb2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -70,14 +70,14 @@ optional = true [tool.poetry.group.doc.dependencies] # Doc packages -ansys-sphinx-theme = "^0.10" -numpydoc = "1.5.0" +ansys-sphinx-theme = "^0.12" +numpydoc = "1.6.0" sphinx = "^7.1" sphinx-notfound-page = "1.0.0" sphinx-copybutton = "0.5.2" -enum_tools = "0.10.0" +enum_tools = "0.11.0" sphinx-toolbox = "3.5.0" -jupytext = "1.15.1" +jupytext = "1.15.2" nbsphinx = "0.9.3" [tool.poetry.extras] From 50f0b6d85110245792c8c29bdd6b479b216fae0a Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Mon, 20 Nov 2023 11:50:22 +0100 Subject: [PATCH 251/275] Update comment --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 4eb4ebb2..a3219fff 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -53,7 +53,7 @@ ipywidgets = { version = "^8.1.1", optional = true } [tool.poetry.group.dev.dependencies] -# Common packages for test, examples, and docs +# Common packages for test and examples jupyterlab = ">=3,<5" lxml = "^4" pandas = "^2.0" From 45a4a5b973f34efab5c29230a698c72515c96f73 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Mon, 20 Nov 2023 11:52:14 +0100 Subject: [PATCH 252/275] Loosen specifications --- poetry.lock | 2 +- pyproject.toml | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/poetry.lock b/poetry.lock index c3265aba..ff3db491 100644 --- a/poetry.lock +++ b/poetry.lock @@ -3577,4 +3577,4 @@ examples = ["ipywidgets", "jupyterlab", "lxml", "pandas", "plotly", "tabulate"] [metadata] lock-version = "2.0" python-versions = "^3.9.0" -content-hash = "18f4e992f5c2f1c7b20bd2c7969d675517c4d06f459010d47a6d3a04eab6d4d4" +content-hash = "a88f66bafa777fdc9402fb0a039eccdd06214bdc9848b76a0cae07b1d895a167" diff --git a/pyproject.toml b/pyproject.toml index a3219fff..cf7520ca 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -71,14 +71,14 @@ optional = true [tool.poetry.group.doc.dependencies] # Doc packages ansys-sphinx-theme = "^0.12" -numpydoc = "1.6.0" +numpydoc = "^1.6.0" sphinx = "^7.1" -sphinx-notfound-page = "1.0.0" -sphinx-copybutton = "0.5.2" -enum_tools = "0.11.0" -sphinx-toolbox = "3.5.0" -jupytext = "1.15.2" -nbsphinx = "0.9.3" +sphinx-notfound-page = "^1.0.0" +sphinx-copybutton = "^0.5.2" +enum_tools = "^0.11.0" +sphinx-toolbox = "^3.5.0" +jupytext = "^1.15.2" +nbsphinx = "^0.9.3" [tool.poetry.extras] From b2edfa674c267767adaa36100f4fcaaa16051d7c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Nov 2023 16:25:22 +0000 Subject: [PATCH 253/275] Bump pandas from 2.0.3 to 2.1.3 Bumps [pandas](https://github.com/pandas-dev/pandas) from 2.0.3 to 2.1.3. - [Release notes](https://github.com/pandas-dev/pandas/releases) - [Commits](https://github.com/pandas-dev/pandas/compare/v2.0.3...v2.1.3) --- updated-dependencies: - dependency-name: pandas dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- poetry.lock | 107 +++++++++++++++++++++++++++++----------------------- 1 file changed, 59 insertions(+), 48 deletions(-) diff --git a/poetry.lock b/poetry.lock index ff3db491..b7273784 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1587,6 +1587,16 @@ files = [ {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"}, {file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"}, {file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-win32.whl", hash = "sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-win_amd64.whl", hash = "sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb"}, {file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"}, {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"}, {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"}, @@ -1973,70 +1983,71 @@ files = [ [[package]] name = "pandas" -version = "2.0.3" +version = "2.1.3" description = "Powerful data structures for data analysis, time series, and statistics" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "pandas-2.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e4c7c9f27a4185304c7caf96dc7d91bc60bc162221152de697c98eb0b2648dd8"}, - {file = "pandas-2.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f167beed68918d62bffb6ec64f2e1d8a7d297a038f86d4aed056b9493fca407f"}, - {file = "pandas-2.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce0c6f76a0f1ba361551f3e6dceaff06bde7514a374aa43e33b588ec10420183"}, - {file = "pandas-2.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba619e410a21d8c387a1ea6e8a0e49bb42216474436245718d7f2e88a2f8d7c0"}, - {file = "pandas-2.0.3-cp310-cp310-win32.whl", hash = "sha256:3ef285093b4fe5058eefd756100a367f27029913760773c8bf1d2d8bebe5d210"}, - {file = "pandas-2.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:9ee1a69328d5c36c98d8e74db06f4ad518a1840e8ccb94a4ba86920986bb617e"}, - {file = "pandas-2.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b084b91d8d66ab19f5bb3256cbd5ea661848338301940e17f4492b2ce0801fe8"}, - {file = "pandas-2.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:37673e3bdf1551b95bf5d4ce372b37770f9529743d2498032439371fc7b7eb26"}, - {file = "pandas-2.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9cb1e14fdb546396b7e1b923ffaeeac24e4cedd14266c3497216dd4448e4f2d"}, - {file = "pandas-2.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d9cd88488cceb7635aebb84809d087468eb33551097d600c6dad13602029c2df"}, - {file = "pandas-2.0.3-cp311-cp311-win32.whl", hash = "sha256:694888a81198786f0e164ee3a581df7d505024fbb1f15202fc7db88a71d84ebd"}, - {file = "pandas-2.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:6a21ab5c89dcbd57f78d0ae16630b090eec626360085a4148693def5452d8a6b"}, - {file = "pandas-2.0.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9e4da0d45e7f34c069fe4d522359df7d23badf83abc1d1cef398895822d11061"}, - {file = "pandas-2.0.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:32fca2ee1b0d93dd71d979726b12b61faa06aeb93cf77468776287f41ff8fdc5"}, - {file = "pandas-2.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:258d3624b3ae734490e4d63c430256e716f488c4fcb7c8e9bde2d3aa46c29089"}, - {file = "pandas-2.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9eae3dc34fa1aa7772dd3fc60270d13ced7346fcbcfee017d3132ec625e23bb0"}, - {file = "pandas-2.0.3-cp38-cp38-win32.whl", hash = "sha256:f3421a7afb1a43f7e38e82e844e2bca9a6d793d66c1a7f9f0ff39a795bbc5e02"}, - {file = "pandas-2.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:69d7f3884c95da3a31ef82b7618af5710dba95bb885ffab339aad925c3e8ce78"}, - {file = "pandas-2.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5247fb1ba347c1261cbbf0fcfba4a3121fbb4029d95d9ef4dc45406620b25c8b"}, - {file = "pandas-2.0.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:81af086f4543c9d8bb128328b5d32e9986e0c84d3ee673a2ac6fb57fd14f755e"}, - {file = "pandas-2.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1994c789bf12a7c5098277fb43836ce090f1073858c10f9220998ac74f37c69b"}, - {file = "pandas-2.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ec591c48e29226bcbb316e0c1e9423622bc7a4eaf1ef7c3c9fa1a3981f89641"}, - {file = "pandas-2.0.3-cp39-cp39-win32.whl", hash = "sha256:04dbdbaf2e4d46ca8da896e1805bc04eb85caa9a82e259e8eed00254d5e0c682"}, - {file = "pandas-2.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:1168574b036cd8b93abc746171c9b4f1b83467438a5e45909fed645cf8692dbc"}, - {file = "pandas-2.0.3.tar.gz", hash = "sha256:c02f372a88e0d17f36d3093a644c73cfc1788e876a7c4bcb4020a77512e2043c"}, + {file = "pandas-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:acf08a73b5022b479c1be155d4988b72f3020f308f7a87c527702c5f8966d34f"}, + {file = "pandas-2.1.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3cc4469ff0cf9aa3a005870cb49ab8969942b7156e0a46cc3f5abd6b11051dfb"}, + {file = "pandas-2.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35172bff95f598cc5866c047f43c7f4df2c893acd8e10e6653a4b792ed7f19bb"}, + {file = "pandas-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59dfe0e65a2f3988e940224e2a70932edc964df79f3356e5f2997c7d63e758b4"}, + {file = "pandas-2.1.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0296a66200dee556850d99b24c54c7dfa53a3264b1ca6f440e42bad424caea03"}, + {file = "pandas-2.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:465571472267a2d6e00657900afadbe6097c8e1dc43746917db4dfc862e8863e"}, + {file = "pandas-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:04d4c58e1f112a74689da707be31cf689db086949c71828ef5da86727cfe3f82"}, + {file = "pandas-2.1.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7fa2ad4ff196768ae63a33f8062e6838efed3a319cf938fdf8b95e956c813042"}, + {file = "pandas-2.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4441ac94a2a2613e3982e502ccec3bdedefe871e8cea54b8775992485c5660ef"}, + {file = "pandas-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5ded6ff28abbf0ea7689f251754d3789e1edb0c4d0d91028f0b980598418a58"}, + {file = "pandas-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fca5680368a5139d4920ae3dc993eb5106d49f814ff24018b64d8850a52c6ed2"}, + {file = "pandas-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:de21e12bf1511190fc1e9ebc067f14ca09fccfb189a813b38d63211d54832f5f"}, + {file = "pandas-2.1.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a5d53c725832e5f1645e7674989f4c106e4b7249c1d57549023ed5462d73b140"}, + {file = "pandas-2.1.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7cf4cf26042476e39394f1f86868d25b265ff787c9b2f0d367280f11afbdee6d"}, + {file = "pandas-2.1.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:72c84ec1b1d8e5efcbff5312abe92bfb9d5b558f11e0cf077f5496c4f4a3c99e"}, + {file = "pandas-2.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f539e113739a3e0cc15176bf1231a553db0239bfa47a2c870283fd93ba4f683"}, + {file = "pandas-2.1.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fc77309da3b55732059e484a1efc0897f6149183c522390772d3561f9bf96c00"}, + {file = "pandas-2.1.3-cp312-cp312-win_amd64.whl", hash = "sha256:08637041279b8981a062899da0ef47828df52a1838204d2b3761fbd3e9fcb549"}, + {file = "pandas-2.1.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b99c4e51ef2ed98f69099c72c75ec904dd610eb41a32847c4fcbc1a975f2d2b8"}, + {file = "pandas-2.1.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f7ea8ae8004de0381a2376662c0505bb0a4f679f4c61fbfd122aa3d1b0e5f09d"}, + {file = "pandas-2.1.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fcd76d67ca2d48f56e2db45833cf9d58f548f97f61eecd3fdc74268417632b8a"}, + {file = "pandas-2.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1329dbe93a880a3d7893149979caa82d6ba64a25e471682637f846d9dbc10dd2"}, + {file = "pandas-2.1.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:321ecdb117bf0f16c339cc6d5c9a06063854f12d4d9bc422a84bb2ed3207380a"}, + {file = "pandas-2.1.3-cp39-cp39-win_amd64.whl", hash = "sha256:11a771450f36cebf2a4c9dbd3a19dfa8c46c4b905a3ea09dc8e556626060fe71"}, + {file = "pandas-2.1.3.tar.gz", hash = "sha256:22929f84bca106921917eb73c1521317ddd0a4c71b395bcf767a106e3494209f"}, ] [package.dependencies] numpy = [ - {version = ">=1.20.3", markers = "python_version < \"3.10\""}, - {version = ">=1.23.2", markers = "python_version >= \"3.11\""}, - {version = ">=1.21.0", markers = "python_version >= \"3.10\" and python_version < \"3.11\""}, + {version = ">=1.22.4,<2", markers = "python_version < \"3.11\""}, + {version = ">=1.23.2,<2", markers = "python_version == \"3.11\""}, + {version = ">=1.26.0,<2", markers = "python_version >= \"3.12\""}, ] python-dateutil = ">=2.8.2" pytz = ">=2020.1" tzdata = ">=2022.1" [package.extras] -all = ["PyQt5 (>=5.15.1)", "SQLAlchemy (>=1.4.16)", "beautifulsoup4 (>=4.9.3)", "bottleneck (>=1.3.2)", "brotlipy (>=0.7.0)", "fastparquet (>=0.6.3)", "fsspec (>=2021.07.0)", "gcsfs (>=2021.07.0)", "html5lib (>=1.1)", "hypothesis (>=6.34.2)", "jinja2 (>=3.0.0)", "lxml (>=4.6.3)", "matplotlib (>=3.6.1)", "numba (>=0.53.1)", "numexpr (>=2.7.3)", "odfpy (>=1.4.1)", "openpyxl (>=3.0.7)", "pandas-gbq (>=0.15.0)", "psycopg2 (>=2.8.6)", "pyarrow (>=7.0.0)", "pymysql (>=1.0.2)", "pyreadstat (>=1.1.2)", "pytest (>=7.3.2)", "pytest-asyncio (>=0.17.0)", "pytest-xdist (>=2.2.0)", "python-snappy (>=0.6.0)", "pyxlsb (>=1.0.8)", "qtpy (>=2.2.0)", "s3fs (>=2021.08.0)", "scipy (>=1.7.1)", "tables (>=3.6.1)", "tabulate (>=0.8.9)", "xarray (>=0.21.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=1.4.3)", "zstandard (>=0.15.2)"] -aws = ["s3fs (>=2021.08.0)"] -clipboard = ["PyQt5 (>=5.15.1)", "qtpy (>=2.2.0)"] -compression = ["brotlipy (>=0.7.0)", "python-snappy (>=0.6.0)", "zstandard (>=0.15.2)"] -computation = ["scipy (>=1.7.1)", "xarray (>=0.21.0)"] -excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.0.7)", "pyxlsb (>=1.0.8)", "xlrd (>=2.0.1)", "xlsxwriter (>=1.4.3)"] +all = ["PyQt5 (>=5.15.6)", "SQLAlchemy (>=1.4.36)", "beautifulsoup4 (>=4.11.1)", "bottleneck (>=1.3.4)", "dataframe-api-compat (>=0.1.7)", "fastparquet (>=0.8.1)", "fsspec (>=2022.05.0)", "gcsfs (>=2022.05.0)", "html5lib (>=1.1)", "hypothesis (>=6.46.1)", "jinja2 (>=3.1.2)", "lxml (>=4.8.0)", "matplotlib (>=3.6.1)", "numba (>=0.55.2)", "numexpr (>=2.8.0)", "odfpy (>=1.4.1)", "openpyxl (>=3.0.10)", "pandas-gbq (>=0.17.5)", "psycopg2 (>=2.9.3)", "pyarrow (>=7.0.0)", "pymysql (>=1.0.2)", "pyreadstat (>=1.1.5)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)", "pyxlsb (>=1.0.9)", "qtpy (>=2.2.0)", "s3fs (>=2022.05.0)", "scipy (>=1.8.1)", "tables (>=3.7.0)", "tabulate (>=0.8.10)", "xarray (>=2022.03.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.3)", "zstandard (>=0.17.0)"] +aws = ["s3fs (>=2022.05.0)"] +clipboard = ["PyQt5 (>=5.15.6)", "qtpy (>=2.2.0)"] +compression = ["zstandard (>=0.17.0)"] +computation = ["scipy (>=1.8.1)", "xarray (>=2022.03.0)"] +consortium-standard = ["dataframe-api-compat (>=0.1.7)"] +excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.0.10)", "pyxlsb (>=1.0.9)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.3)"] feather = ["pyarrow (>=7.0.0)"] -fss = ["fsspec (>=2021.07.0)"] -gcp = ["gcsfs (>=2021.07.0)", "pandas-gbq (>=0.15.0)"] -hdf5 = ["tables (>=3.6.1)"] -html = ["beautifulsoup4 (>=4.9.3)", "html5lib (>=1.1)", "lxml (>=4.6.3)"] -mysql = ["SQLAlchemy (>=1.4.16)", "pymysql (>=1.0.2)"] -output-formatting = ["jinja2 (>=3.0.0)", "tabulate (>=0.8.9)"] +fss = ["fsspec (>=2022.05.0)"] +gcp = ["gcsfs (>=2022.05.0)", "pandas-gbq (>=0.17.5)"] +hdf5 = ["tables (>=3.7.0)"] +html = ["beautifulsoup4 (>=4.11.1)", "html5lib (>=1.1)", "lxml (>=4.8.0)"] +mysql = ["SQLAlchemy (>=1.4.36)", "pymysql (>=1.0.2)"] +output-formatting = ["jinja2 (>=3.1.2)", "tabulate (>=0.8.10)"] parquet = ["pyarrow (>=7.0.0)"] -performance = ["bottleneck (>=1.3.2)", "numba (>=0.53.1)", "numexpr (>=2.7.1)"] +performance = ["bottleneck (>=1.3.4)", "numba (>=0.55.2)", "numexpr (>=2.8.0)"] plot = ["matplotlib (>=3.6.1)"] -postgresql = ["SQLAlchemy (>=1.4.16)", "psycopg2 (>=2.8.6)"] -spss = ["pyreadstat (>=1.1.2)"] -sql-other = ["SQLAlchemy (>=1.4.16)"] -test = ["hypothesis (>=6.34.2)", "pytest (>=7.3.2)", "pytest-asyncio (>=0.17.0)", "pytest-xdist (>=2.2.0)"] -xml = ["lxml (>=4.6.3)"] +postgresql = ["SQLAlchemy (>=1.4.36)", "psycopg2 (>=2.9.3)"] +spss = ["pyreadstat (>=1.1.5)"] +sql-other = ["SQLAlchemy (>=1.4.36)"] +test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)"] +xml = ["lxml (>=4.8.0)"] [[package]] name = "pandocfilters" From 7e2663734394a2c1ab0c1cc346ed465ace3dd846 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Tue, 21 Nov 2023 14:06:23 +0100 Subject: [PATCH 254/275] Remove with_stk_records (#123) --- doc/source/api/compliance/materials.rst | 1 - doc/source/api/compliance/parts.rst | 1 - doc/source/api/compliance/specifications.rst | 1 - doc/source/api/compliance/substances.rst | 1 - src/ansys/grantami/bomanalytics/queries.py | 47 ------------------- .../test_common_queries.py | 19 -------- 6 files changed, 70 deletions(-) diff --git a/doc/source/api/compliance/materials.rst b/doc/source/api/compliance/materials.rst index 50abab28..e6a77f27 100644 --- a/doc/source/api/compliance/materials.rst +++ b/doc/source/api/compliance/materials.rst @@ -14,7 +14,6 @@ Query definition .. automethod:: with_record_guids .. automethod:: with_record_history_guids .. automethod:: with_record_history_ids - .. automethod:: with_stk_records .. automethod:: with_batch_size Query result diff --git a/doc/source/api/compliance/parts.rst b/doc/source/api/compliance/parts.rst index d924f994..33772dd4 100644 --- a/doc/source/api/compliance/parts.rst +++ b/doc/source/api/compliance/parts.rst @@ -14,7 +14,6 @@ Query definition .. automethod:: with_record_guids .. automethod:: with_record_history_guids .. automethod:: with_record_history_ids - .. automethod:: with_stk_records .. automethod:: with_batch_size diff --git a/doc/source/api/compliance/specifications.rst b/doc/source/api/compliance/specifications.rst index 78fcbc67..c3458144 100644 --- a/doc/source/api/compliance/specifications.rst +++ b/doc/source/api/compliance/specifications.rst @@ -14,7 +14,6 @@ Query definition .. automethod:: with_record_guids .. automethod:: with_record_history_guids .. automethod:: with_record_history_ids - .. automethod:: with_stk_records .. automethod:: with_batch_size diff --git a/doc/source/api/compliance/substances.rst b/doc/source/api/compliance/substances.rst index 4e1aae9c..f3705bfb 100644 --- a/doc/source/api/compliance/substances.rst +++ b/doc/source/api/compliance/substances.rst @@ -22,7 +22,6 @@ Query definition .. automethod:: with_record_guids .. automethod:: with_record_history_guids .. automethod:: with_record_history_ids - .. automethod:: with_stk_records .. automethod:: with_batch_size Query result diff --git a/src/ansys/grantami/bomanalytics/queries.py b/src/ansys/grantami/bomanalytics/queries.py index a874bbde..25e4080b 100644 --- a/src/ansys/grantami/bomanalytics/queries.py +++ b/src/ansys/grantami/bomanalytics/queries.py @@ -472,53 +472,6 @@ def with_record_guids(self: _RecordQuery, record_guids: List[str]) -> _RecordQue self._data.append_record_definition(item_reference) return self - @validate_argument_type([{str: str}]) - def with_stk_records(self: _RecordQuery, stk_records: List[Dict[str, str]]) -> _RecordQuery: - """Add a list of records generated by the Granta MI Scripting Toolkit for Python. - - This method should only be used with the corresponding method in the MI Scripting Toolkit that generates a - :class:`dict` class of the appropriate shape. This method will be introduced in the next version of the MI - Scripting Toolkit. - - If the MI Scripting Toolkit method is not available, you should use the :meth:`with_record_history_ids` - method instead. - - Parameters - ---------- - stk_records : list[dict[str, str]] - List of STK records. - - Returns - ------- - Query - Current query object. - - Raises - ------ - TypeError - Error to raise if the method is called with values that do not match the types described above. - - Notes - ----- - Common scenarios in performing compliance would be to get the compliance status of all records with a certain - attribute value or all records created in a certain period of time. These types of complex browsing and - searching operations are provided by the MI Scripting Toolkit. A Python script would first use the MI Scripting - Toolkit to find the records of interest and would then pass those record references into the BoM Analytics - package. - - This method is intended to streamline the communication between the Granta MI Scripting Toolkit and BoM - Analytics packages. - - Examples - -------- - >>> MaterialComplianceQuery().with_stk_records(stk_records) - - """ - - record_guids: List[str] = [r["record_guid"] for r in stk_records] - query_builder: _RecordQuery = self.with_record_guids(record_guids) - return query_builder - class _ApiMixin(_BaseQueryBuilder, _BaseQuery, ABC): """Provides API-specific mixins. diff --git a/tests/test_query_builders/test_common_queries.py b/tests/test_query_builders/test_common_queries.py index b01c49be..bc771557 100644 --- a/tests/test_query_builders/test_common_queries.py +++ b/tests/test_query_builders/test_common_queries.py @@ -94,25 +94,6 @@ def test_no_items_raises_error(self, query_type): with pytest.raises(ValueError, match=r"No \w+ have been added to the query"): query._validate_items() - def test_stk_object(self, query_type): - stk_object = [ - { - "db_key": "MI_Restricted_Substances", - "record_guid": "00000000-0000-0000-0000-000000000000", - }, - { - "db_key": "MI_Restricted_Substances", - "record_guid": "00000000-0000-0000-0000-000000000123", - }, - ] - query = query_type().with_stk_records(stk_object) - assert isinstance(query, query_type) - assert len(query._data._item_definitions) == len(stk_object) - for idx, stk_record in enumerate(stk_object): - assert query._data._item_definitions[idx].record_guid == stk_record["record_guid"] - assert not query._data._item_definitions[idx].record_history_identity - assert not query._data._item_definitions[idx].record_history_guid - def test_batch_size(self, query_type): query = query_type() query = query.with_batch_size(50) From b76187bdc05f591ad7811a5948d6986acd3789b8 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Tue, 21 Nov 2023 14:46:34 +0100 Subject: [PATCH 255/275] Fix: add repr and example formatting (#122) * Fix formatting * Update 4-2_BoM_Sustainability.py * Add sustainability query repr --- .../3_Advanced_Topics/3-5_Creating_a_Bill_of_Materials.py | 3 ++- examples/4_Sustainability/4-2_BoM_Sustainability.py | 1 - src/ansys/grantami/bomanalytics/_query_results.py | 6 ++++++ src/ansys/grantami/bomanalytics/queries.py | 3 +++ 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/examples/3_Advanced_Topics/3-5_Creating_a_Bill_of_Materials.py b/examples/3_Advanced_Topics/3-5_Creating_a_Bill_of_Materials.py index 4b3934d6..6ecf9972 100644 --- a/examples/3_Advanced_Topics/3-5_Creating_a_Bill_of_Materials.py +++ b/examples/3_Advanced_Topics/3-5_Creating_a_Bill_of_Materials.py @@ -317,10 +317,11 @@ def make_record_reference(item, db_key=DB_KEY): # contains the entire structure of parts, materials, and process objects. The cell below extracts # this component from the dictionary of all components, deletes the dictionary, and prints # an arbitrary property of the root component to illustrate this structure. + root_component = components[source_product["part_identifier"]] del components print(root_component.components[0].components[1].materials[0].processes[1].identity) -# + # The final step is to create a ``BillOfMaterials`` object and add the root component and transport # stages. Note that the transport stages are added to the ``BillOfMaterials`` object itself, not to # a specific component. diff --git a/examples/4_Sustainability/4-2_BoM_Sustainability.py b/examples/4_Sustainability/4-2_BoM_Sustainability.py index 1e7c04c7..0b063a9a 100644 --- a/examples/4_Sustainability/4-2_BoM_Sustainability.py +++ b/examples/4_Sustainability/4-2_BoM_Sustainability.py @@ -49,7 +49,6 @@ # + result = cxn.run(query) - result # - diff --git a/src/ansys/grantami/bomanalytics/_query_results.py b/src/ansys/grantami/bomanalytics/_query_results.py index 4128957f..fdf76f25 100644 --- a/src/ansys/grantami/bomanalytics/_query_results.py +++ b/src/ansys/grantami/bomanalytics/_query_results.py @@ -772,6 +772,9 @@ def transport_stages(self) -> List[TransportWithSustainabilityResult]: """ return self._transports + def __repr__(self) -> str: + return f"<{self.__class__.__name__}>" + @QueryResultFactory.register(models.GetSustainabilitySummaryForBom2301Response) class BomSustainabilitySummaryQueryResult(ResultBaseClass): @@ -928,3 +931,6 @@ def joining_and_finishing_processes_details(self) -> List[ProcessSummaryResult]: joining and finishing processes. """ return self._joining_and_finishing_processes_details + + def __repr__(self) -> str: + return f"<{self.__class__.__name__}>" diff --git a/src/ansys/grantami/bomanalytics/queries.py b/src/ansys/grantami/bomanalytics/queries.py index 25e4080b..505c6814 100644 --- a/src/ansys/grantami/bomanalytics/queries.py +++ b/src/ansys/grantami/bomanalytics/queries.py @@ -1783,6 +1783,9 @@ def _run_query(self, api_instance: api.SustainabilityApi, static_arguments: Dict def _validate_parameters(self) -> None: pass + def __repr__(self) -> str: + return f"<{self.__class__.__name__}: {self._data}>" + class BomSustainabilityQuery(_SustainabilityMixin, _BomQueryBuilder): """Evaluates sustainability impact for a BoM in the Ansys Granta 2301 XML BoM format. From b2e3ddd79f5e5539d0fa5ff4b790fb15f3eb1935 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Wed, 22 Nov 2023 12:09:37 +0100 Subject: [PATCH 256/275] Maint: Update docs deps (#127) --- poetry.lock | 76 ++++++++++++++++++++--------------------------------- 1 file changed, 28 insertions(+), 48 deletions(-) diff --git a/poetry.lock b/poetry.lock index b7273784..74e9cf62 100644 --- a/poetry.lock +++ b/poetry.lock @@ -312,17 +312,6 @@ setuptools = {version = "*", markers = "python_version >= \"3.12\""} [package.extras] dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] -[[package]] -name = "backcall" -version = "0.2.0" -description = "Specifications for callback functions passed in to an API" -optional = false -python-versions = "*" -files = [ - {file = "backcall-0.2.0-py2.py3-none-any.whl", hash = "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255"}, - {file = "backcall-0.2.0.tar.gz", hash = "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e"}, -] - [[package]] name = "beautifulsoup4" version = "4.12.2" @@ -1013,24 +1002,23 @@ test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio" [[package]] name = "ipython" -version = "8.12.3" +version = "8.17.2" description = "IPython: Productive Interactive Computing" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "ipython-8.12.3-py3-none-any.whl", hash = "sha256:b0340d46a933d27c657b211a329d0be23793c36595acf9e6ef4164bc01a1804c"}, - {file = "ipython-8.12.3.tar.gz", hash = "sha256:3910c4b54543c2ad73d06579aa771041b7d5707b033bd488669b4cf544e3b363"}, + {file = "ipython-8.17.2-py3-none-any.whl", hash = "sha256:1e4d1d666a023e3c93585ba0d8e962867f7a111af322efff6b9c58062b3e5444"}, + {file = "ipython-8.17.2.tar.gz", hash = "sha256:126bb57e1895594bb0d91ea3090bbd39384f6fe87c3d57fd558d0670f50339bb"}, ] [package.dependencies] appnope = {version = "*", markers = "sys_platform == \"darwin\""} -backcall = "*" colorama = {version = "*", markers = "sys_platform == \"win32\""} decorator = "*" +exceptiongroup = {version = "*", markers = "python_version < \"3.11\""} jedi = ">=0.16" matplotlib-inline = "*" pexpect = {version = ">4.3", markers = "sys_platform != \"win32\""} -pickleshare = "*" prompt-toolkit = ">=3.0.30,<3.0.37 || >3.0.37,<3.1.0" pygments = ">=2.4.0" stack-data = "*" @@ -1038,17 +1026,17 @@ traitlets = ">=5" typing-extensions = {version = "*", markers = "python_version < \"3.10\""} [package.extras] -all = ["black", "curio", "docrepr", "ipykernel", "ipyparallel", "ipywidgets", "matplotlib", "matplotlib (!=3.2.0)", "nbconvert", "nbformat", "notebook", "numpy (>=1.21)", "pandas", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio", "qtconsole", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "trio", "typing-extensions"] +all = ["black", "curio", "docrepr", "exceptiongroup", "ipykernel", "ipyparallel", "ipywidgets", "matplotlib", "matplotlib (!=3.2.0)", "nbconvert", "nbformat", "notebook", "numpy (>=1.22)", "pandas", "pickleshare", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio (<0.22)", "qtconsole", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "trio", "typing-extensions"] black = ["black"] -doc = ["docrepr", "ipykernel", "matplotlib", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "typing-extensions"] +doc = ["docrepr", "exceptiongroup", "ipykernel", "matplotlib", "pickleshare", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio (<0.22)", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "typing-extensions"] kernel = ["ipykernel"] nbconvert = ["nbconvert"] nbformat = ["nbformat"] notebook = ["ipywidgets", "notebook"] parallel = ["ipyparallel"] qtconsole = ["qtconsole"] -test = ["pytest (<7.1)", "pytest-asyncio", "testpath"] -test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.21)", "pandas", "pytest (<7.1)", "pytest-asyncio", "testpath", "trio"] +test = ["pickleshare", "pytest (<7.1)", "pytest-asyncio (<0.22)", "testpath"] +test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.22)", "pandas", "pickleshare", "pytest (<7.1)", "pytest-asyncio (<0.22)", "testpath", "trio"] [[package]] name = "ipywidgets" @@ -1329,13 +1317,13 @@ test = ["coverage", "jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-cov", [[package]] name = "jupyterlab" -version = "4.0.8" +version = "4.0.9" description = "JupyterLab computational environment" optional = false python-versions = ">=3.8" files = [ - {file = "jupyterlab-4.0.8-py3-none-any.whl", hash = "sha256:2ff5aa2a51eb21df241d6011c236e88bd1ff9a5dbb75bebc54472f9c18bfffa4"}, - {file = "jupyterlab-4.0.8.tar.gz", hash = "sha256:c4fe93f977bcc987bd395d7fae5ab02e0c042bf4e0f7c95196f3e2e578c2fb3a"}, + {file = "jupyterlab-4.0.9-py3-none-any.whl", hash = "sha256:9f6f8e36d543fdbcc3df961a1d6a3f524b4a4001be0327a398f68fa4e534107c"}, + {file = "jupyterlab-4.0.9.tar.gz", hash = "sha256:9ebada41d52651f623c0c9f069ddb8a21d6848e4c887d8e5ddc0613166ed5c0b"}, ] [package.dependencies] @@ -1354,7 +1342,7 @@ tornado = ">=6.2.0" traitlets = "*" [package.extras] -dev = ["black[jupyter] (==23.10.1)", "build", "bump2version", "coverage", "hatch", "pre-commit", "pytest-cov", "ruff (==0.0.292)"] +dev = ["black[jupyter] (==23.10.1)", "build", "bump2version", "coverage", "hatch", "pre-commit", "pytest-cov", "ruff (==0.1.4)"] docs = ["jsx-lexer", "myst-parser", "pydata-sphinx-theme (>=0.13.0)", "pytest", "pytest-check-links", "pytest-tornasync", "sphinx (>=1.8,<7.2.0)", "sphinx-copybutton"] docs-screenshots = ["altair (==5.0.1)", "ipython (==8.14.0)", "ipywidgets (==8.0.6)", "jupyterlab-geojson (==3.4.0)", "jupyterlab-language-pack-zh-cn (==4.0.post0)", "matplotlib (==3.7.1)", "nbconvert (>=7.0.0)", "pandas (==2.0.2)", "scipy (==1.10.1)", "vega-datasets (==0.9.0)"] test = ["coverage", "pytest (>=7.0)", "pytest-check-links (>=0.7)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter (>=0.5.3)", "pytest-timeout", "pytest-tornasync", "requests", "requests-cache", "virtualenv"] @@ -2089,17 +2077,6 @@ files = [ [package.dependencies] ptyprocess = ">=0.5" -[[package]] -name = "pickleshare" -version = "0.7.5" -description = "Tiny 'shelve'-like database with concurrency support" -optional = false -python-versions = "*" -files = [ - {file = "pickleshare-0.7.5-py2.py3-none-any.whl", hash = "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56"}, - {file = "pickleshare-0.7.5.tar.gz", hash = "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca"}, -] - [[package]] name = "platformdirs" version = "4.0.0" @@ -2979,13 +2956,13 @@ files = [ [[package]] name = "sphinx" -version = "7.1.2" +version = "7.2.6" description = "Python documentation generator" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "sphinx-7.1.2-py3-none-any.whl", hash = "sha256:d170a81825b2fcacb6dfd5a0d7f578a053e45d3f2b153fecc948c37344eb4cbe"}, - {file = "sphinx-7.1.2.tar.gz", hash = "sha256:780f4d32f1d7d1126576e0e5ecc19dc32ab76cd24e950228dcf7b1f6d3d9e22f"}, + {file = "sphinx-7.2.6-py3-none-any.whl", hash = "sha256:1e09160a40b956dc623c910118fa636da93bd3ca0b9876a7b3df90f07d691560"}, + {file = "sphinx-7.2.6.tar.gz", hash = "sha256:9a5160e1ea90688d5963ba09a2dcd8bdd526620edbb65c328728f1b2228d5ab5"}, ] [package.dependencies] @@ -2997,7 +2974,7 @@ imagesize = ">=1.3" importlib-metadata = {version = ">=4.8", markers = "python_version < \"3.10\""} Jinja2 = ">=3.0" packaging = ">=21.0" -Pygments = ">=2.13" +Pygments = ">=2.14" requests = ">=2.25.0" snowballstemmer = ">=2.0" sphinxcontrib-applehelp = "*" @@ -3005,12 +2982,12 @@ sphinxcontrib-devhelp = "*" sphinxcontrib-htmlhelp = ">=2.0.0" sphinxcontrib-jsmath = "*" sphinxcontrib-qthelp = "*" -sphinxcontrib-serializinghtml = ">=1.1.5" +sphinxcontrib-serializinghtml = ">=1.1.9" [package.extras] docs = ["sphinxcontrib-websupport"] lint = ["docutils-stubs", "flake8 (>=3.5.0)", "flake8-simplify", "isort", "mypy (>=0.990)", "ruff", "sphinx-lint", "types-requests"] -test = ["cython", "filelock", "html5lib", "pytest (>=4.6)"] +test = ["cython (>=3.0)", "filelock", "html5lib", "pytest (>=4.6)", "setuptools (>=67.0)"] [[package]] name = "sphinx-autodoc-typehints" @@ -3226,15 +3203,18 @@ test = ["pytest"] [[package]] name = "sphinxcontrib-serializinghtml" -version = "1.1.5" -description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)." +version = "1.1.9" +description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)" optional = false -python-versions = ">=3.5" +python-versions = ">=3.9" files = [ - {file = "sphinxcontrib-serializinghtml-1.1.5.tar.gz", hash = "sha256:aa5f6de5dfdf809ef505c4895e51ef5c9eac17d0f287933eb49ec495280b6952"}, - {file = "sphinxcontrib_serializinghtml-1.1.5-py2.py3-none-any.whl", hash = "sha256:352a9a00ae864471d3a7ead8d7d79f5fc0b57e8b3f95e9867eb9eb28999b92fd"}, + {file = "sphinxcontrib_serializinghtml-1.1.9-py3-none-any.whl", hash = "sha256:9b36e503703ff04f20e9675771df105e58aa029cfcbc23b8ed716019b7416ae1"}, + {file = "sphinxcontrib_serializinghtml-1.1.9.tar.gz", hash = "sha256:0c64ff898339e1fac29abd2bf5f11078f3ec413cfe9c046d3120d7ca65530b54"}, ] +[package.dependencies] +Sphinx = ">=5" + [package.extras] lint = ["docutils-stubs", "flake8", "mypy"] test = ["pytest"] From 12a2defe263c4d60a186721cd76358b83b6a2608 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 30 Nov 2023 13:39:39 +0100 Subject: [PATCH 257/275] Feat: Single part in BoM sustainability (#130) * Expose single part * Raise error on no parts --- .../4-2_BoM_Sustainability.py | 2 +- .../grantami/bomanalytics/_query_results.py | 24 ++++++++++++------- tests/test_integration_tests.py | 6 +---- .../test_sustainability.py | 3 +-- 4 files changed, 19 insertions(+), 16 deletions(-) diff --git a/examples/4_Sustainability/4-2_BoM_Sustainability.py b/examples/4_Sustainability/4-2_BoM_Sustainability.py index 0b063a9a..ebf7e2eb 100644 --- a/examples/4_Sustainability/4-2_BoM_Sustainability.py +++ b/examples/4_Sustainability/4-2_BoM_Sustainability.py @@ -147,7 +147,7 @@ # + def traverse_bom(query_response): # Identify top-level assembly, which includes transport stages contributions. - top_level_assembly = query_response.parts[0] + top_level_assembly = query_response.part top_level_assembly_id = top_level_assembly.identity yield to_dict(top_level_assembly, "") for part in top_level_assembly.parts: diff --git a/src/ansys/grantami/bomanalytics/_query_results.py b/src/ansys/grantami/bomanalytics/_query_results.py index fdf76f25..b7af0116 100644 --- a/src/ansys/grantami/bomanalytics/_query_results.py +++ b/src/ansys/grantami/bomanalytics/_query_results.py @@ -744,26 +744,34 @@ def __init__( ) -> None: super().__init__(messages) self._response = results[0] + if not self._response.parts: + raise ValueError( + "Found no part in BoM sustainability response. Ensure the request BoM defines a single root part." + ) if len(self._response.parts) > 1: warnings.warn( f"BomSustainabilityQuery only supports a single root part (found {len(self._response.parts)}). " - f"Additional root parts do not include sustainability results." + f"Additional root parts do not include sustainability results and are not exposed in the query result" + f" properties." ) - self._parts: List[PartWithSustainabilityResult] = [ - ItemResultFactory.create_part_with_sustainability(result_with_sustainability=part) - for part in self._response.parts - ] + # Exposing only a single root part: + # API V1 only processes the first root part but still returns part empty part objects for extra root parts. + # API V2 will only return a single root part. + self._part: PartWithSustainabilityResult = ItemResultFactory.create_part_with_sustainability( + result_with_sustainability=self._response.parts[0] + ) + self._transports: List[TransportWithSustainabilityResult] = [ ItemResultFactory.create_transport_with_sustainability(result_with_sustainability=transport) for transport in self._response.transport_stages ] @property - def parts(self) -> List[PartWithSustainabilityResult]: - """Sustainability information for each root part included in the BoM specified in the original + def part(self) -> PartWithSustainabilityResult: + """Sustainability information for the root part included in the BoM specified in the original query. """ - return self._parts + return self._part @property def transport_stages(self) -> List[TransportWithSustainabilityResult]: diff --git a/tests/test_integration_tests.py b/tests/test_integration_tests.py index 8fd83764..398d8e42 100644 --- a/tests/test_integration_tests.py +++ b/tests/test_integration_tests.py @@ -237,7 +237,6 @@ def test_legislation_is_not_affected_with_no_links(self, connection_custom_db): DEFAULT_TOLERANCE = 0.01 -# TODO test with custom db? class TestSustainabilityBomQueries: def _check_percentages_add_up(self, items): assert sum(item.embodied_energy_percentage for item in items) == pytest.approx(100) @@ -358,11 +357,8 @@ def test_sustainability_query(self, connection): assert not response.messages, "\n".join([f"{m.severity}: {m.message}" for m in response.messages]) - # Check hierarchy - assert len(response.parts) == 1 - # Product - product = response.parts[0] + product = response.part assert not product.processes assert not product.materials diff --git a/tests/test_mocked_responses/test_sustainability.py b/tests/test_mocked_responses/test_sustainability.py index b95a3ce7..aa25780d 100644 --- a/tests/test_mocked_responses/test_sustainability.py +++ b/tests/test_mocked_responses/test_sustainability.py @@ -32,8 +32,7 @@ def test_response_processing(self, mock_connection): assert len(response.messages) == 1 # Top-level - assert len(response.parts) == 1 - part_0 = response.parts[0] + part_0 = response.part assert len(part_0.materials) == 0 assert len(part_0.processes) == 0 From dd91ef8d8a37ce5cfe3602070eb1298a3cb3c2c6 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 30 Nov 2023 17:59:18 +0100 Subject: [PATCH 258/275] Docs: PM feedback (#132) * Reduce output * Add note about relevance of items * Update accept.txt * Apply suggestions from code review Co-authored-by: Andy Grigg * Make vale happy --------- Co-authored-by: Andy Grigg --- doc/source/api/bom_builder/api.rst | 16 ++++++++++++++++ doc/styles/Vocab/ANSYS/accept.txt | 1 + examples/0_Getting_started.py | 4 ++-- .../1-1_Materials_impacted_substances.py | 12 ++++++------ .../1-2_Parts_impacted_substances.py | 8 ++++---- .../3-1_Working_with_XML_BoMs.py | 4 ++-- 6 files changed, 31 insertions(+), 14 deletions(-) diff --git a/doc/source/api/bom_builder/api.rst b/doc/source/api/bom_builder/api.rst index 94e3a13c..1660d4ef 100644 --- a/doc/source/api/bom_builder/api.rst +++ b/doc/source/api/bom_builder/api.rst @@ -3,6 +3,22 @@ BoM object model ================ +.. note:: + The models documented below are Python bindings for the Ansys Granta MI 23/01 XML schema. + Not all elements are required to define a valid BoM for analysis, and not all elements have an impact on all types of analysis. + See :ref:`ref_grantami_bomanalytics_api_index` for details about the relevant items for each analysis type. + +.. note:: + The following elements are defined in the 23/01 BoM schema but are not supported in this module: + + * ``NonMIPartReference`` on :class:`~ansys.grantami.bomanalytics.bom_types._bom_types.Part` + * ``Annotations`` and ``AnnotationSources`` on :class:`~ansys.grantami.bomanalytics.bom_types._bom_types.BillOfMaterials` + + This module does not contain classes that correspond to these types and cannot serialize a BoM that includes these + elements. It is still possible to deserialize an XML BoM that uses these elements, but these elements cannot be + converted to Python objects. + + .. _ref_grantami_bomanalytics_api_billofmaterials: .. autoclass:: ansys.grantami.bomanalytics.bom_types._bom_types.BillOfMaterials :inherited-members: diff --git a/doc/styles/Vocab/ANSYS/accept.txt b/doc/styles/Vocab/ANSYS/accept.txt index 842273f3..3f648405 100644 --- a/doc/styles/Vocab/ANSYS/accept.txt +++ b/doc/styles/Vocab/ANSYS/accept.txt @@ -3,6 +3,7 @@ API Analytics BoM [Dd]eserialization +deserialize Granta MI legislations PyGranta BoM Analytics diff --git a/examples/0_Getting_started.py b/examples/0_Getting_started.py index 04b73a04..28752c02 100644 --- a/examples/0_Getting_started.py +++ b/examples/0_Getting_started.py @@ -126,10 +126,10 @@ # ## View query results # In the case of ``MaterialImpactedSubstancesQuery``, the results object contains the list of substances present in -# the material that are impacted by the specified legislations. +# the material that are impacted by the specified legislations. Display the five first substances in the list. # + tags=[] -result.impacted_substances +result.impacted_substances[:5] # - # ## View logged messages diff --git a/examples/1_Impacted_Substances_Queries/1-1_Materials_impacted_substances.py b/examples/1_Impacted_Substances_Queries/1-1_Materials_impacted_substances.py index 3cd90f78..c0f2d30f 100644 --- a/examples/1_Impacted_Substances_Queries/1-1_Materials_impacted_substances.py +++ b/examples/1_Impacted_Substances_Queries/1-1_Materials_impacted_substances.py @@ -95,8 +95,8 @@ rows = [(substance.cas_number, substance.max_percentage_amount_in_material) for substance in substances_by_material[PC_ID]] -print(f'Substances impacted by "{SIN_LIST}" in "{PC_ID}" (10/{len(rows)})') -print(tabulate(rows[:10], headers=["CAS Number", "Amount (wt. %)"])) +print(f'Substances impacted by "{SIN_LIST}" in "{PC_ID}" (5/{len(rows)})') +print(tabulate(rows[:5], headers=["CAS Number", "Amount (wt. %)"])) # - # ## View results grouped by legislation @@ -111,8 +111,8 @@ material_substances_sin = results.impacted_substances_by_legislation[SIN_LIST] rows = [(substance.cas_number, substance.max_percentage_amount_in_material) for substance in material_substances_sin] -print(f'Substances impacted by "{SIN_LIST}" in all materials (10/{len(rows)})') -print(tabulate(rows[:10], headers=["CAS Number", "Amount (wt. %)"])) +print(f'Substances impacted by "{SIN_LIST}" in all materials (5/{len(rows)})') +print(tabulate(rows[:5], headers=["CAS Number", "Amount (wt. %)"])) # - # ## View results as a flat list @@ -128,6 +128,6 @@ material_substances_all = results.impacted_substances rows = [(substance.cas_number, substance.max_percentage_amount_in_material) for substance in material_substances_all] -print(f"Impacted substances for all materials and legislations (10/{len(rows)})") -print(tabulate(rows[:10], headers=["CAS Number", "Amount (wt. %)"])) +print(f"Impacted substances for all materials and legislations (5/{len(rows)})") +print(tabulate(rows[:5], headers=["CAS Number", "Amount (wt. %)"])) # - diff --git a/examples/1_Impacted_Substances_Queries/1-2_Parts_impacted_substances.py b/examples/1_Impacted_Substances_Queries/1-2_Parts_impacted_substances.py index 7dd1e3c2..c10194ff 100644 --- a/examples/1_Impacted_Substances_Queries/1-2_Parts_impacted_substances.py +++ b/examples/1_Impacted_Substances_Queries/1-2_Parts_impacted_substances.py @@ -121,8 +121,8 @@ part_substances_sin = part_result.impacted_substances_by_legislation[SIN_LIST] rows = [(substance.cas_number, substance.max_percentage_amount_in_material) for substance in part_substances_sin] -print(f'Substances impacted by "{SIN_LIST}" in all parts (10/{len(rows)})') -print(tabulate(rows[:10], headers=["CAS Number", "Amount (wt. %)"])) +print(f'Substances impacted by "{SIN_LIST}" in all parts (5/{len(rows)})') +print(tabulate(rows[:5], headers=["CAS Number", "Amount (wt. %)"])) # - # ## Results as a Flat List @@ -138,6 +138,6 @@ part_substances_all = part_result.impacted_substances rows = [(substance.cas_number, substance.max_percentage_amount_in_material) for substance in part_substances_all] -print(f'Impacted substances across all legislations in "DRILL" (10/{len(rows)})') -print(tabulate(rows[:10], headers=["CAS Number", "Amount (wt. %)"])) +print(f'Impacted substances across all legislations in "DRILL" (5/{len(rows)})') +print(tabulate(rows[:5], headers=["CAS Number", "Amount (wt. %)"])) # - diff --git a/examples/3_Advanced_Topics/3-1_Working_with_XML_BoMs.py b/examples/3_Advanced_Topics/3-1_Working_with_XML_BoMs.py index 39f71777..6df6cddc 100644 --- a/examples/3_Advanced_Topics/3-1_Working_with_XML_BoMs.py +++ b/examples/3_Advanced_Topics/3-1_Working_with_XML_BoMs.py @@ -112,8 +112,8 @@ def xml_validator(xml: str, schema_file: str) -> bool: [substance.cas_number, substance.max_percentage_amount_in_material] for substance in impacted_substances_result.impacted_substances ] -print(f'Substances impacted by "{SIN_LIST}" in a BoM (10/{len(rows)})') -print(tabulate(rows[:10], headers=["CAS Number", "Amount (wt. %)"])) +print(f'Substances impacted by "{SIN_LIST}" in a BoM (5/{len(rows)})') +print(tabulate(rows[:5], headers=["CAS Number", "Amount (wt. %)"])) # - # ## Running a compliance XML-based query From c01fbf82356e4295cf9025eb60354dde431f35ff Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 5 Dec 2023 11:24:02 +0100 Subject: [PATCH 259/275] Bump jupytext from 1.15.2 to 1.16.0 (#133) Bumps [jupytext](https://github.com/mwouts/jupytext) from 1.15.2 to 1.16.0. - [Release notes](https://github.com/mwouts/jupytext/releases) - [Changelog](https://github.com/mwouts/jupytext/blob/main/CHANGELOG.md) - [Commits](https://github.com/mwouts/jupytext/compare/v1.15.2...v1.16.0) --- updated-dependencies: - dependency-name: jupytext dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/poetry.lock b/poetry.lock index 74e9cf62..e66a5419 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand. [[package]] name = "accessible-pygments" @@ -1397,25 +1397,32 @@ files = [ [[package]] name = "jupytext" -version = "1.15.2" +version = "1.16.0" description = "Jupyter notebooks as Markdown documents, Julia, Python or R scripts" optional = false -python-versions = "~=3.6" +python-versions = ">=3.8" files = [ - {file = "jupytext-1.15.2-py3-none-any.whl", hash = "sha256:ef2a1a3eb8f63d84a3b3772014bdfbe238e4e12a30c4309b8c89e0a54adeb7d1"}, - {file = "jupytext-1.15.2.tar.gz", hash = "sha256:c9976e24d834e991906c1de55af4b6d512d764f6372aabae45fc1ea72b589173"}, + {file = "jupytext-1.16.0-py3-none-any.whl", hash = "sha256:c2b951ac72871f39cd6cd242b56bc43219b7ed8169598bae5359811fb1f54d28"}, + {file = "jupytext-1.16.0.tar.gz", hash = "sha256:94c7e67775e90e1792c39ab7fca4e0459bf7c35656123e8dc2e9e1b3e953baf8"}, ] [package.dependencies] markdown-it-py = ">=1.0.0" mdit-py-plugins = "*" nbformat = "*" +packaging = "*" pyyaml = "*" toml = "*" [package.extras] -rst2md = ["sphinx-gallery (>=0.7.0,<0.8.0)"] -toml = ["toml"] +dev = ["jupytext[test-cov,test-external]"] +docs = ["myst-parser", "sphinx", "sphinx-copybutton", "sphinx-rtd-theme"] +test = ["pytest", "pytest-randomly", "pytest-xdist"] +test-cov = ["jupytext[test-integration]", "pytest-cov (>=2.6.1)"] +test-external = ["autopep8", "black", "flake8", "gitpython", "isort", "jupyter-fs (<0.4.0)", "jupytext[test-integration]", "pre-commit", "sphinx-gallery (<0.8)"] +test-functional = ["jupytext[test]"] +test-integration = ["ipykernel", "jupyter-server (!=2.11)", "jupytext[test-functional]", "nbconvert"] +test-ui = ["calysto-bash"] [[package]] name = "lxml" From 8df1260ccb92b69ada2acb93f64bd4bf6357de63 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 4 Jan 2024 16:20:02 +0100 Subject: [PATCH 260/275] Docs: review feedback (#142) * RS and Compliance updates * Sustainability updates * BoM types updates * Examples updates * Fix typo * Fix typo [skip-ci] Co-authored-by: Andy Grigg --------- Co-authored-by: Andy Grigg --- doc/source/api/bom_builder/builders.rst | 2 +- doc/source/api/bom_builder/helpers.rst | 2 +- doc/source/api/bom_builder/index.rst | 8 ++--- doc/source/api/compliance/indicators.rst | 13 ++++---- doc/source/index/intro.rst | 2 +- .../3-5_Creating_a_Bill_of_Materials.py | 2 +- .../4-1_BoM_Sustainability_summary.py | 24 +++++++------- examples/4_Sustainability/index.rst | 2 +- .../grantami/bomanalytics/_connection.py | 2 +- .../bomanalytics/_item_definitions.py | 8 ++--- .../grantami/bomanalytics/_item_results.py | 13 +++++--- .../grantami/bomanalytics/_query_results.py | 31 +++++++++++-------- .../bomanalytics/bom_types/_bom_types.py | 8 ++--- src/ansys/grantami/bomanalytics/indicators.py | 6 ++-- src/ansys/grantami/bomanalytics/queries.py | 11 ++++--- 15 files changed, 73 insertions(+), 61 deletions(-) diff --git a/doc/source/api/bom_builder/builders.rst b/doc/source/api/bom_builder/builders.rst index 75f923af..b1fb10aa 100644 --- a/doc/source/api/bom_builder/builders.rst +++ b/doc/source/api/bom_builder/builders.rst @@ -6,7 +6,7 @@ BoM reference builders Record reference builder ------------------------ -Many types of entity are referenced within a Granta MI database, these references can use several different ways of +Many types of entity are referenced within a Granta MI database. These references can use several different ways of identifying the target object. The RecordReferenceBuilder helps to ensure that a reference contains the required information and to reduce the risk of ambiguous references being provided. diff --git a/doc/source/api/bom_builder/helpers.rst b/doc/source/api/bom_builder/helpers.rst index 44b45e60..ffb511da 100644 --- a/doc/source/api/bom_builder/helpers.rst +++ b/doc/source/api/bom_builder/helpers.rst @@ -3,7 +3,7 @@ BoM handler =========== -The BoM handler provides the serialization and deserialization of BillOfMaterial objects to and from XML format, this +The BoM handler provides the serialization and deserialization of BillOfMaterial objects to and from XML format. This process validates that the BoM has a valid structure, and that the XML provided is syntactically correct. .. autoclass:: ansys.grantami.bomanalytics._bom_helper.BoMHandler diff --git a/doc/source/api/bom_builder/index.rst b/doc/source/api/bom_builder/index.rst index aa2bdf67..d14a8c38 100644 --- a/doc/source/api/bom_builder/index.rst +++ b/doc/source/api/bom_builder/index.rst @@ -4,16 +4,16 @@ BoM helpers ============== This section provides an introduction to the BoM Helpers. These represent a BoM (bill of materials) in Ansys Granta -MI 2301 XML BoM format and support reading and writing these files. +MI 2301 XML BoM format, and support reading and writing these files. The :class:`~ansys.grantami.bomanalytics.bom_types._bom_types.BillOfMaterials` represents the root object in a BoM hierarchy, and can be used to programmatically generate a BoM. -To aid in manipulation of these objects, builders have been provided for Granta MI object references, these assist in +To aid in manipulation of these objects, builders have been provided for Granta MI object references. These assist in the correct formation of these reference objects, depending on how you need to refer to these entities. -Serialization and Deserialization of BoM objects can be performed using the :class:`~ansys.grantami.bomanalytics._bom_helper.BoMHandler` -this exposes methods to read a BoM from a string or a file, and to write to a string or a file. The resulting BoM can be +Serialization and Deserialization of BoM objects can be performed using the :class:`~ansys.grantami.bomanalytics._bom_helper.BoMHandler`. +This exposes methods to read a BoM from a string or a file, and to write to a string or a file. The resulting BoM can be passed to either a Sustainability or a Compliance query. .. toctree:: diff --git a/doc/source/api/compliance/indicators.rst b/doc/source/api/compliance/indicators.rst index b34a52eb..fe3a87d4 100644 --- a/doc/source/api/compliance/indicators.rst +++ b/doc/source/api/compliance/indicators.rst @@ -2,17 +2,18 @@ Indicators ========== -The PyGranta BoM Analytics API determines compliance against an indicator, which essentially represents a legislation -with a threshold. If a substance appears in a certain item, either directly or indirectly, in a quantity that exceeds that -threshold, the item is non-compliant with that indicator. In cases where the -legislation defines a per-substance threshold (for example, RoHS), then this per-substance threshold is used instead. +The PyGranta BoM Analytics API determines compliance against one or more indicators. An indicator essentially represents +a legislation with a threshold. If a substance appears in a certain item, either directly or indirectly, in a quantity +that exceeds that threshold, the item is non-compliant with that indicator. In cases where the legislation defines a +per-substance threshold (for example, RoHS), then this per-substance threshold is used instead. Indicators can include a list of legislations, in which case a substance is impacted by the indicator if it is impacted by one or more legislations included in that indicator. There are two different types of indicator, and they compute compliance in slightly different ways. It is therefore -important to understand the differences between them. For more information, see the *Granta MI Restricted Substances -Reports User Guide* supplied with Granta MI Restricted Substances Reports. +important to understand the differences between them. For more information, see the +:MI_docs:`Restricted Substances Reports User Guide ` supplied with +Granta MI Restricted Substances Reports. RoHS indicator diff --git a/doc/source/index/intro.rst b/doc/source/index/intro.rst index b53a40c8..75b2db60 100644 --- a/doc/source/index/intro.rst +++ b/doc/source/index/intro.rst @@ -23,7 +23,7 @@ The expected use cases for this package are as follows: Starting in version 2024 R1, Granta MI provides a method for managing sustainability data as part of the Restricted Substances and Sustainability solution. The ``grantami-bomanalytics`` package now also exposes an API -allowing to evaluate the sustainability performance of BoMs (Bills of Materials). +allowing users to evaluate the sustainability performance of BoMs (Bills of Materials). Background diff --git a/examples/3_Advanced_Topics/3-5_Creating_a_Bill_of_Materials.py b/examples/3_Advanced_Topics/3-5_Creating_a_Bill_of_Materials.py index 6ecf9972..6111d7de 100644 --- a/examples/3_Advanced_Topics/3-5_Creating_a_Bill_of_Materials.py +++ b/examples/3_Advanced_Topics/3-5_Creating_a_Bill_of_Materials.py @@ -52,7 +52,7 @@ # Items that refer to components do not have an equivalent record in Granta MI, and so they # contain only the fields described above, and the quantity and mass field. # -# Items that refer to materials, processes, and transport steps correspond to records in Granta MI +# Items that refer to materials, processes, and transport stages correspond to records in Granta MI # which contain the relevant sustainability metrics for these items. As a result, these items # contain both a human-readable ``name`` field and a ``Granta_MI_Record_GUID`` field. In this # scenario, the system that provided the data source contains the direct material assignments from diff --git a/examples/4_Sustainability/4-1_BoM_Sustainability_summary.py b/examples/4_Sustainability/4-1_BoM_Sustainability_summary.py index b9a76f1d..85a4394c 100644 --- a/examples/4_Sustainability/4-1_BoM_Sustainability_summary.py +++ b/examples/4_Sustainability/4-1_BoM_Sustainability_summary.py @@ -60,9 +60,9 @@ # The next sections show examples of visualizations for the results of the sustainability summary query. # # ## Summary per phase -# The sustainability summary result object contains a `phases_summary` property. This property divides environmental -# footprint contributions into three categories: materials, processes, and transport phases. Each include their absolute -# and relative contributions to the product as a whole. +# The sustainability summary result object contains a `phases_summary` property. This property summarizes the +# environmental impact contributions by lifecycle phase: materials, processes, and transport phases. The results for +# each phase include their absolute and relative contributions to the product as a whole. sustainability_summary.phases_summary @@ -220,13 +220,13 @@ def plot_footprint(df, title, textinfo="percent+label", hoverinfo="value+name"): # ## The material processing phase # -# The environmental contribution specifically from processing applied to raw materials is summarized in the -# `primary_processes_details`, `secondary_processes_details`, and `joining_and_finishing_processes_details` properties -# for primary, secondary, and joining and finishing process categories respectively. Each category lists unique -# process-material pairs, which contribute at least 5% of the total impact for the process category. The relative -# contributions describe the contribution of a process-material pair, relative to the total contributions of all -# processes from the same category. Processes that do meet the contribution threshold are aggregated under the -# ``Other`` item, with the material set to `None`. +# The environmental contributions from primary and secondary processing (applied to materials), and joining and +# finishing processes (applied to parts) are summarized in the primary_processes_details, secondary_processes_details, +# and joining_and_finishing_processes_details properties respectively. Each of these properties lists the unique +# process-material pairs (for primary and secondary processing) or individual processes (for joining and finishing) that +# contribute at least 5% of the total impact for that category of process. The percentage contributions are relative to +# the total contribution of all processes from the same category. Processes that do not meet the contribution threshold +# are aggregated under the Other item, with the material set to None. # ### Primary processing @@ -318,8 +318,8 @@ def plot_footprint(df, title, textinfo="percent+label", hoverinfo="value+name"): # First, rename the processes ``Other`` rows, so that they remain distinguishable after all processes have been # grouped under a general ``Processes``. # -# Use `assign` to add a `parent` column to each `DataFrame` being concatenated -# The `join` argument value `inner` specifies that only columns common to all dataframes are kept in the result +# Use `assign` to add a `parent` column to each `DataFrame` being concatenated. +# The `join` argument value `inner` specifies that only columns common to all dataframes are kept in the result. # + primary_process_df.loc[(primary_process_df["Name"] == "Other - None"), "Name"] = "Other primary processes" diff --git a/examples/4_Sustainability/index.rst b/examples/4_Sustainability/index.rst index f771ed43..c6d20231 100644 --- a/examples/4_Sustainability/index.rst +++ b/examples/4_Sustainability/index.rst @@ -3,7 +3,7 @@ Sustainability ============== -These examples demonstrate how to determinate the environmental footprint for a BoM using the +These examples demonstrate how to determine the environmental footprint for a BoM using the :ref:`ref_grantami_bomanalytics_api_sustainability_index`. .. toctree:: diff --git a/src/ansys/grantami/bomanalytics/_connection.py b/src/ansys/grantami/bomanalytics/_connection.py index 7bf4bd38..cc8eb13f 100644 --- a/src/ansys/grantami/bomanalytics/_connection.py +++ b/src/ansys/grantami/bomanalytics/_connection.py @@ -420,7 +420,7 @@ def run(self, query: "_BaseQuery") -> "ResultBaseClass": Parameters ---------- query - A compliance, impacted substance, or sustainability query object. + A compliance, impacted substances, or sustainability query object. Returns ------- diff --git a/src/ansys/grantami/bomanalytics/_item_definitions.py b/src/ansys/grantami/bomanalytics/_item_definitions.py index cce7e918..5a63349b 100644 --- a/src/ansys/grantami/bomanalytics/_item_definitions.py +++ b/src/ansys/grantami/bomanalytics/_item_definitions.py @@ -38,7 +38,7 @@ def __init__(self, identity: Optional[str] = None, **kwargs: Any) -> None: def identity(self) -> Optional[str]: """Item unique identifier. - This property is only populated on BoM queries results and is equal to the ``id`` attribute of the + This property is only populated on BoM query results and is equal to the ``id`` attribute of the corresponding input BoM item. If no ``id`` has been defined on the BoM item, a unique auto-generated value is assigned during analysis. """ @@ -55,7 +55,7 @@ def __init__(self, external_identity: Optional[str] = None, name: Optional[str] def external_identity(self) -> Optional[str]: """Item external identity. - This property is only populated on BoM queries results and is equal to the ```` element of + This property is only populated on BoM query results and is equal to the ```` element of the corresponding input BoM item. """ return self._external_identity @@ -64,7 +64,7 @@ def external_identity(self) -> Optional[str]: def name(self) -> Optional[str]: """Item name. - This property is only populated on BoM queries results and is equal to the ```` element of + This property is only populated on BoM query results and is equal to the ```` element of the corresponding input BoM item. """ return self._name @@ -169,7 +169,7 @@ def __init__(self, input_part_number: Optional[str] = None, **kwargs: Any): def input_part_number(self) -> Optional[str]: """Input part number. - This property is only populated on BoM queries results and is equal to the ```` element of + This property is only populated on BoM query results and is equal to the ```` element of the corresponding input BoM item. """ return self._input_part_number diff --git a/src/ansys/grantami/bomanalytics/_item_results.py b/src/ansys/grantami/bomanalytics/_item_results.py index fa9639f2..a7e22c26 100644 --- a/src/ansys/grantami/bomanalytics/_item_results.py +++ b/src/ansys/grantami/bomanalytics/_item_results.py @@ -582,6 +582,9 @@ def create_process_summary(cls, result: models.CommonSustainabilityProcessSummar ------- ProcessSummaryResult """ + # TODO result.material_identity can be None. Ajdust ProcessSummaryResult accordingly + # TODO result.material_record_reference.reference_type and reference_value can be None, resulting in an empty + # MaterialReference. Consider allowing ProcessSummaryResult.material_reference to be None instead. return ProcessSummaryResult( material_identity=result.material_identity, material_reference=MaterialReference( @@ -1613,7 +1616,7 @@ class ProcessWithSustainabilityResult( """Describes a process included as part of a sustainability query result. This object includes two categories of attributes: - - The reference to the part in Granta MI (if the process references a record) + - The reference to the process record in Granta MI - The sustainability information for this process """ @@ -1625,7 +1628,7 @@ class TransportWithSustainabilityResult( """Describes a transport stage included as part of a sustainability query result. This object includes two categories of attributes: - - The reference to the transport in Granta MI (if the part references a record) + - The reference to the transport record in Granta MI - The sustainability information for this transport stage """ @@ -1809,7 +1812,7 @@ def part_number(self) -> Optional[str]: @property def name(self) -> Optional[str]: """ - Name of the part (if populated on the BoM used in the query). + Name of the part (if populated in the input BoM used in the query). """ return self._name @@ -1823,7 +1826,7 @@ def part_reference(self) -> PartReference: @property def material_mass_before_processing(self) -> ValueWithUnit: """ - Original mass of parent material prior to any subtractive processing (i.e. removal of material). + Original mass of parent material prior to any subtractive processing (removal of material). """ return self._material_mass_before_processing @@ -1883,7 +1886,7 @@ def mass_after_processing(self) -> ValueWithUnit: @property def contributors(self) -> List[ContributingComponentResult]: - """Top three parts of the BoM, which are made of this material (by :attr:`.mass_before_processing`).""" + """Top three parts in the BoM that are made of this material (by :attr:`.mass_before_processing`).""" return self._contributors def __repr__(self) -> str: diff --git a/src/ansys/grantami/bomanalytics/_query_results.py b/src/ansys/grantami/bomanalytics/_query_results.py index b7af0116..d412935a 100644 --- a/src/ansys/grantami/bomanalytics/_query_results.py +++ b/src/ansys/grantami/bomanalytics/_query_results.py @@ -827,7 +827,7 @@ def __init__( @property def phases_summary(self) -> List[SustainabilityPhaseSummaryResult]: """ - Sustainability summary for all phases. + Sustainability summary for all lifecycle phases analyzed by the query. """ return [self._material_summary, self._process_summary, self._transport_summary] @@ -836,7 +836,8 @@ def transport(self) -> SustainabilityPhaseSummaryResult: """ Sustainability summary for the transport phase. - Values in percentages express the contribution of this phase, relative to contributions of all phases. + Values in percentages express the contribution of this phase, relative to the total contribution of all phases + analyzed by the query. """ return self._transport_summary @@ -845,7 +846,8 @@ def material(self) -> SustainabilityPhaseSummaryResult: """ Sustainability summary for the material phase. - Values in percentages express the contribution of this phase, relative to contributions of all phases. + Values in percentages express the contribution of this phase, relative to the total contribution of all phases + analyzed by the query. """ return self._material_summary @@ -854,7 +856,8 @@ def process(self) -> SustainabilityPhaseSummaryResult: """ Sustainability summary for the process phase. - Values in percentages express the contribution of this phase, relative to contributions of all phases. + Values in percentages express the contribution of this phase, relative to the total contribution of all phases + analyzed by the query. """ return self._process_summary @@ -877,7 +880,7 @@ def material_details(self) -> List[MaterialSummaryResult]: for materials (by :attr:`~.MaterialSummaryResult.embodied_energy_percentage` or :attr:`~.MaterialSummaryResult.climate_change_percentage`). - All materials found in the BoM, which do not exceed the 2% threshold, are aggregated under a virtual + All materials in the BoM that do not exceed the 2% threshold are aggregated under a virtual :class:`.MaterialSummaryResult`, whose :attr:`~.MaterialSummaryResult.identity` property is equal to ``Other``. @@ -892,12 +895,13 @@ def primary_processes_details(self) -> List[ProcessSummaryResult]: """ Summary information for primary processes, aggregated by ``process_name`` and ``material_identity``. - The returned list includes all primary processes whose relative contributions exceed 5% of the total impact of - all primary processes (by :attr:`~.ProcessSummaryResult.embodied_energy_percentage` or + The returned list includes all unique primary process/material combinations whose relative contributions + exceed 5% of the total impact of all primary processes (by + :attr:`~.ProcessSummaryResult.embodied_energy_percentage` or :attr:`~.ProcessSummaryResult.climate_change_percentage`). - Processes not exceeding the 5% threshold are aggregated under a virtual :class:`~.ProcessSummaryResult`, whose - :attr:`~.ProcessSummaryResult.process_name` is equal to ``Other``. + All process/material combinations that do not exceed the 5% threshold are aggregated under a virtual + :class:`~.ProcessSummaryResult`, whose :attr:`~.ProcessSummaryResult.process_name` is equal to ``Other``. Values in percentages express the contribution of the specific process, relative to contributions of all primary processes. @@ -909,11 +913,12 @@ def secondary_processes_details(self) -> List[ProcessSummaryResult]: """ Summary information for secondary processes, aggregated by ``process_name`` and ``material_identity``. - The returned list includes all secondary processes whose relative contributions exceed 5% of the total impact of - all secondary processes (by :attr:`~.ProcessSummaryResult.embodied_energy_percentage` or + The returned list includes all unique secondary process/material combinations whose relative contributions + exceed 5% of the total impact of all secondary processes (by + :attr:`~.ProcessSummaryResult.embodied_energy_percentage` or :attr:`~.ProcessSummaryResult.climate_change_percentage`). - Processes not exceeding the 5% threshold are aggregated under a virtual + All process/material combinations that do not exceed the 5% threshold are aggregated under a virtual :class:`~.ProcessSummaryResult`, whose :attr:`~.ProcessSummaryResult.process_name` is equal to ``Other``. Values in percentages express the contribution of the specific process, relative to contributions of all @@ -932,7 +937,7 @@ def joining_and_finishing_processes_details(self) -> List[ProcessSummaryResult]: :attr:`~.ProcessSummaryResult.embodied_energy_percentage` or :attr:`~.ProcessSummaryResult.climate_change_percentage`). - Processes not exceeding the 5% threshold are aggregated under a virtual + All processes that do not exceed the 5% threshold are aggregated under a virtual :class:`~.ProcessSummaryResult`, whose :attr:`~.ProcessSummaryResult.process_name` is equal to ``Other``. Values in percentages express the contribution of the specific process, relative to contributions of all diff --git a/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py b/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py index 5f079ee7..abaa434d 100644 --- a/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py +++ b/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py @@ -243,7 +243,7 @@ class PartialTableReference(BaseType): """The GUID of the table, this is likely to be a persistent way to refer to a table.""" table_name: Optional[str] = None - """The name of the table, note that table names can vary between localisations of a database, so this may not be a + """The name of the table. Note that table names can vary between localisations of a database, so this may not be a safe way to refer to a table if the MI Database supports multiple locales.""" @@ -430,7 +430,7 @@ class EndOfLifeFate(BaseType): @dataclass class UnittedValue(BaseType): """ - A physical quantity with a unit. If provided in a input then the unit should exist within the MI database, + A physical quantity with a unit. If provided in an input then the unit must exist within the MI database, otherwise an error will be raised. """ @@ -685,8 +685,8 @@ class TransportStage(BaseType): @dataclass class Specification(BaseType): """ - A specification for a part, process, or material. Refers to a record with the MI Database storing the details - of the specification and its impact. + A specification for a surface treatment, part, process, or material. Refers to a record within the MI Database + storing the details of the specification and its impact. """ _props = [ diff --git a/src/ansys/grantami/bomanalytics/indicators.py b/src/ansys/grantami/bomanalytics/indicators.py index 7e48758d..da8b9455 100644 --- a/src/ansys/grantami/bomanalytics/indicators.py +++ b/src/ansys/grantami/bomanalytics/indicators.py @@ -70,7 +70,8 @@ class RoHSFlag(_Flag): A larger value means that the item is less compliant. The further down the list the compliance result appears, the worse it is. - For more information, see the *Restricted Substances Reports User Guide*. + For more information, see the + :MI_docs:`Restricted Substances Reports User Guide `. """ RohsNotImpacted = ( @@ -148,7 +149,8 @@ class WatchListFlag(_Flag): An increasing value means less compliance. The further down the list the compliance result appears, the worse it is. - For more information, see the *Restricted Substances Reports User Guide*. + For more information, see the + :MI_docs:`Restricted Substances Reports User Guide `. """ WatchListNotImpacted = ( diff --git a/src/ansys/grantami/bomanalytics/queries.py b/src/ansys/grantami/bomanalytics/queries.py index 505c6814..3482ec19 100644 --- a/src/ansys/grantami/bomanalytics/queries.py +++ b/src/ansys/grantami/bomanalytics/queries.py @@ -1740,7 +1740,7 @@ def with_units( """ Specifies units to use in the response. - Sets all units, overriding any previous configuration. Provided unit symbols must exist in the target database. + Sets all units, overriding any previous configuration. The specified units must exist in the target database. Units not set will default to the API default unit: * Distance: ``km`` @@ -1750,11 +1750,11 @@ def with_units( Parameters ---------- distance : str | None - Unit symbol for distance. + Unit for distance. energy : str | None - Unit symbol for energy. + Unit for energy. mass : str | None - Unit symbol for mass. + Unit for mass. """ self._preferred_units.distance_unit = distance @@ -1788,7 +1788,8 @@ def __repr__(self) -> str: class BomSustainabilityQuery(_SustainabilityMixin, _BomQueryBuilder): - """Evaluates sustainability impact for a BoM in the Ansys Granta 2301 XML BoM format. + """Evaluates sustainability impact for a BoM in the Ansys Granta 2301 XML BoM format, and returns metrics for each + item in the BoM. The methods used to configure units and add the BoM to this query return the query itself so that they can be chained together as required. From 2da259ce93d1c32a06b1fc5fdc58fe33e528a2ea Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Thu, 4 Jan 2024 16:46:20 +0100 Subject: [PATCH 261/275] Allow null material identity and reference --- .../grantami/bomanalytics/_item_results.py | 34 ++++++++++++------- tests/test_integration_tests.py | 1 + 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/_item_results.py b/src/ansys/grantami/bomanalytics/_item_results.py index a7e22c26..8801d34f 100644 --- a/src/ansys/grantami/bomanalytics/_item_results.py +++ b/src/ansys/grantami/bomanalytics/_item_results.py @@ -582,15 +582,17 @@ def create_process_summary(cls, result: models.CommonSustainabilityProcessSummar ------- ProcessSummaryResult """ - # TODO result.material_identity can be None. Ajdust ProcessSummaryResult accordingly - # TODO result.material_record_reference.reference_type and reference_value can be None, resulting in an empty - # MaterialReference. Consider allowing ProcessSummaryResult.material_reference to be None instead. - return ProcessSummaryResult( - material_identity=result.material_identity, - material_reference=MaterialReference( + material_reference = ( + MaterialReference( reference_type=cls.parse_reference_type(result.material_record_reference.reference_type), reference_value=result.material_record_reference.reference_value, - ), + ) + if result.material_record_reference.reference_type is not None + else None + ) + return ProcessSummaryResult( + material_identity=result.material_identity, + material_reference=material_reference, process_name=result.process_name, process_reference=ProcessReference( reference_type=cls.parse_reference_type(result.process_record_reference.reference_type), @@ -1898,7 +1900,11 @@ def __repr__(self) -> str: class ProcessSummaryResult(SustainabilitySummaryBase): """ - Aggregated sustainability summary for a process, applied to a unique material. + Aggregated sustainability summary for a process. + + For primary and secondary processes, this corresponds to a unique process/material combination. For joining and + finishing processes, this corresponds to a unique process, and :attr:`~.material_identity` and + :attr:`~.material_reference` are `None`. Describes the environmental footprint of a process, accounting for all occurrences of the process-material pair found in the BoM. @@ -1906,8 +1912,8 @@ class ProcessSummaryResult(SustainabilitySummaryBase): def __init__( self, - material_identity: str, - material_reference: MaterialReference, + material_identity: Optional[str], + material_reference: Optional[MaterialReference], process_name: str, process_reference: ProcessReference, **kwargs: Any, @@ -1933,16 +1939,20 @@ def process_reference(self) -> ProcessReference: return self._process_reference @property - def material_identity(self) -> str: + def material_identity(self) -> Optional[str]: """ Material identity. + + Only populated for primary and secondary processes. """ return self._material_identity @property - def material_reference(self) -> MaterialReference: + def material_reference(self) -> Optional[MaterialReference]: """ Material record reference. + + Only populated for primary and secondary processes. """ return self._material_reference diff --git a/tests/test_integration_tests.py b/tests/test_integration_tests.py index 398d8e42..912b929c 100644 --- a/tests/test_integration_tests.py +++ b/tests/test_integration_tests.py @@ -326,6 +326,7 @@ def test_sustainability_summary_query(self, connection): # Spot check one J&F process assert jf_process.process_name == "Joining and finishing, Welding, electric" assert jf_process.material_identity is None + assert jf_process.material_reference is None assert jf_process.climate_change.value == pytest.approx(0.23, DEFAULT_TOLERANCE) assert jf_process.embodied_energy.value == pytest.approx(3.21, DEFAULT_TOLERANCE) assert jf_process.climate_change_percentage == 100.0 From d1c353779668dbd8e628f69b0eed41dbc35c9d0e Mon Sep 17 00:00:00 2001 From: Andy Grigg Date: Thu, 4 Jan 2024 17:45:31 -0500 Subject: [PATCH 262/275] Add first draft of general improvements to documentation --- doc/source/api/batching.rst | 23 +++++-- doc/source/api/impacted_substances/index.rst | 32 +++++---- doc/source/api/index.rst | 43 ++++++------ doc/source/api/record_identification.rst | 65 +++++++++---------- doc/source/api/sustainability/index.rst | 19 ++++-- doc/source/index/intro.rst | 45 +++++++------ doc/source/index/quick_code.rst | 10 +-- doc/source/reusable_text/query_types.rst | 7 ++ .../4-1_BoM_Sustainability_summary.py | 34 +++++----- .../4-2_BoM_Sustainability.py | 18 ++--- examples/4_Sustainability/index.rst | 2 +- .../grantami/bomanalytics/_item_results.py | 6 +- 12 files changed, 169 insertions(+), 135 deletions(-) create mode 100644 doc/source/reusable_text/query_types.rst diff --git a/doc/source/api/batching.rst b/doc/source/api/batching.rst index cf04d573..b15a06ad 100644 --- a/doc/source/api/batching.rst +++ b/doc/source/api/batching.rst @@ -3,29 +3,40 @@ Batching requests ================= -Queries performed with this package are batched if they exceed a certain size. When -you perform a query, batching is achieved by splitting the list of parts and materials -into smaller lists to reduce the overall time it takes to obtain results. +Applicability +------------- +.. include:: ../reusable_text/query_types.rst +Record-based queries are batched if they exceed a certain size. When you perform a record-based +query, batching is achieved by splitting the list of records into smaller lists to reduce the +overall time it takes to obtain results. + +Both the :class:`~ansys.grantami.bomanalytics.queries.BomSustainabilityQuery` and +:class:`~ansys.grantami.bomanalytics.queries.BomSustainabilitySummaryQuery` are BoM-based queries, +and so this page is not relevant for sustainability analysis. The advice given below is relevant +for restricted substances analysis only. + +When should I worry about the batch size? +----------------------------------------- The exact optimal size for batching cannot be determined generally because it depends on the data that is used to determine impacted substances and compliance. Given the following conditions, you might need to change the batch size. Very complex part and specification hierarchies ------------------------------------------------ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Parts and specifications in Granta MI can be defined recursively. For example, it's possible to define parts and specifications in terms of other parts and specifications. To take this into consideration, the default batch size for parts and specifications is very small. However, for a very complex hierarchy, you might need to further decrease the batch size. Very simple part and specification hierarchies ----------------------------------------------- +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Part and specification structures are very simple if they have a similar complexity to materials. For example, a very simple hierarchy might directly reference substances or reference a small number of materials. For a very simple hierarchy, you might need to increase the batch size. Large numbers of indicators or legislations -------------------------------------------- +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Queries can only be batched in the ``item`` dimension. There is no facility to split the query by the number of legislations or indicators. As a result, if queries for impacted substances or compliance are evaluated against a large number of legislations or lists (typically greater than diff --git a/doc/source/api/impacted_substances/index.rst b/doc/source/api/impacted_substances/index.rst index cda2c363..a1152144 100644 --- a/doc/source/api/impacted_substances/index.rst +++ b/doc/source/api/impacted_substances/index.rst @@ -6,21 +6,29 @@ Impacted substances API This section gives an overview of the API for impacted substances. The :ref:`ref_grantami_bomanalytics_api_impactedsubstances_materials`, :ref:`ref_grantami_bomanalytics_api_impactedsubstances_specifications`, and -:ref:`ref_grantami_bomanalytics_api_impactedsubstances_parts` queries (collectively referred to as record-based -impacted substances queries) accept a list of references to records in a Granta MI database. -These queries will also consider any additional associated BoM items stored in Granta MI. For example, if the specified -part record contains links to other parts and specifications, these will be included in the analysis. +:ref:`ref_grantami_bomanalytics_api_impactedsubstances_parts` queries (collectively referred to as +record-based impacted substances queries) accept a list of references to records in a Granta MI +database. These queries will also consider any additional associated BoM items stored in Granta MI. +For example, if the specified part record contains links to other parts and specifications, these +will be included in the analysis. -The :ref:`ref_grantami_bomanalytics_api_impactedsubstances_bom` query accepts a Bill of Materials in XML format, which -includes references to Granta MI records. As opposed to record-based queries, the BoM impacted substances analysis only -considers items explicitly defined in the input BoM. It does not follow links to other BoM items as in the -record-based queries described above. +.. note:: The functionality documented in this section is only available if you have the MI + Restricted Substances feature included in your license. A + :class:`~ansys.grantami.bomanalytics.LicensingException` will be raised if the feature is not + available. -In both cases, impacted substances are determined by a list of legislations, identified by legislation ID. +The :ref:`ref_grantami_bomanalytics_api_impactedsubstances_bom` BoM-based query accepts a +Bill of Materials in XML format, which includes references to Granta MI records. As opposed to +record-based queries, the BoM-based impacted substances analysis only considers items explicitly +defined in the input BoM. It does not follow links to other BoM items as in the record-based queries +described above. -These queries do not take the quantity of the substance in the parent item into consideration. If the quantity is -important, for example to determine compliance against a legislation that imposes a certain threshold, you should -use the :ref:`ref_grantami_bomanalytics_api_compliance_index` instead. +In both cases, impacted substances are determined by a list of legislations, identified by +legislation ID. + +These queries do not take the quantity of the substance in the parent item into consideration. If +the quantity is important, for example to determine compliance against a legislation that imposes a +certain threshold, you should use the :ref:`ref_grantami_bomanalytics_api_compliance_index` instead. .. toctree:: :maxdepth: 3 diff --git a/doc/source/api/index.rst b/doc/source/api/index.rst index 8d8be6b4..bd0d3a95 100644 --- a/doc/source/api/index.rst +++ b/doc/source/api/index.rst @@ -3,25 +3,30 @@ API reference ============= -The API for PyGranta BoM Analytics is split into these key sections: - -- :ref:`ref_grantami_bomanalytics_common_connection` describes how to connect to Granta MI and, if required, - configure any schema customizations in the API client. It also explains how to run queries. -- :ref:`ref_grantami_bomanalytics_common_messages` describes the structure of log messages returned by the - Granta MI server. -- :ref:`ref_grantami_bomanalytics_common_exceptions` lists the possible custom exceptions that might be - raised. -- :ref:`ref_grantami_bomanalytics_batching` explains how queries are batched if they exceed a certain size. -- :ref:`ref_grantami_bomanalytics_record_identification` explains how Granta MI records are identified throughout the - package. -- :ref:`ref_grantami_bomanalytics_api_impactedsubstances_index` explains how to build queries for impacted - substances and interpret results. -- :ref:`ref_grantami_bomanalytics_api_compliance_index` explains how to build queries for compliance - and how to interpret results. -- :ref:`ref_grantami_bomanalytics_api_sustainability_index` explains how to build queries for sustainability - and how to interpret results. -- :ref:`ref_grantami_bomanalytics_bom_helpers_index` explains how to create, read, edit, and save Bill of Materials - objects for Compliance and Sustainability reporting. +The API for PyGranta BoM Analytics is split into different sections. The following sections describe +general functionality that is applicable to both Restricted Substances and Sustainability: + +- :ref:`ref_grantami_bomanalytics_common_connection` describes how to connect to Granta MI and, if + required, configure any schema customizations in the API client. It also explains how to run + queries. +- :ref:`ref_grantami_bomanalytics_common_messages` describes the structure of log messages + returned by the Granta MI server. +- :ref:`ref_grantami_bomanalytics_common_exceptions` lists the possible custom exceptions that + might be raised. +- :ref:`ref_grantami_bomanalytics_batching` explains how queries are batched if they exceed a + certain size. +- :ref:`ref_grantami_bomanalytics_record_identification` explains how Granta MI records are + identified throughout the package. +- :ref:`ref_grantami_bomanalytics_bom_helpers_index` explains how to create, read, edit, and save + Bill of Materials objects for Compliance and Sustainability reporting. + +Additionally, the following sections describe how to build queries and interpret results for +different types of analysis: + +- :ref:`ref_grantami_bomanalytics_api_impactedsubstances_index` +- :ref:`ref_grantami_bomanalytics_api_compliance_index` +- :ref:`ref_grantami_bomanalytics_api_sustainability_index` + .. note:: While some examples use a different class than the one being documented, both classes are always diff --git a/doc/source/api/record_identification.rst b/doc/source/api/record_identification.rst index 1b3c7a84..5c1addb2 100644 --- a/doc/source/api/record_identification.rst +++ b/doc/source/api/record_identification.rst @@ -3,16 +3,20 @@ Record identification ===================== - -BoM queries +Query types ----------- -Returned input BoM items -~~~~~~~~~~~~~~~~~~~~~~~~~ +.. include:: ../reusable_text/query_types.rst + +BoM-based queries +----------------- -BoM queries accept a BoM as input to the request. According to the Ansys Granta MI XML BoM formats, -record references can be defined in many ways. As a general rule, items in the query result which correspond to an -item provided in the input BoM, are described by the same identifier. +Input BoM items included in the response +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +BoM-based queries accept a BoM as input to the request. According to the Ansys Granta MI XML BoM +formats, record references can be defined in many ways. As a general rule, items in the query result +which correspond to an item provided in the input BoM, are described by the same identifier. For example, a ``MIMaterialReference`` in an input BoM using a ``recordGUID`` @@ -47,8 +51,8 @@ If the record reference in an input BoM is defined via a ``lookupValue``: -then the objects in the response are identified by ``record_guid``, unless the attribute used for the lookup is a -special identifier such as: +then the objects in the response are identified by ``record_guid``, unless the attribute used for +the lookup is a special identifier such as: - ``part_number`` - ``material_id`` @@ -58,37 +62,32 @@ special identifier such as: in which case the corresponding property is populated. -Expanded BoM items -~~~~~~~~~~~~~~~~~~ - -Expanded items are items that were not included in the input BoM, but were expanded during the analysis from other -items included in the input BoM. For example, specifications in a -:class:`~ansys.grantami.bomanalytics.queries.BomComplianceQuery` are expanded, and the linked specifications are -included in the analysis. - -Expanded items are identified by the ``record_history_identity`` property. - - -Item queries ------------- +Record-based queries +-------------------- .. py:currentmodule:: ansys.grantami.bomanalytics.queries Returned request items ~~~~~~~~~~~~~~~~~~~~~~ -Queries that accept record references as inputs, such as :class:`~PartComplianceQuery`, allow the input records to be -defined via different identifiers. +Queries that accept record references as inputs, such as :class:`~PartComplianceQuery`, allow the +input records to be defined via different record identifiers. -The corresponding item in the query result is identified by the same identifier than the one used in the request. +The corresponding item in the query result is identified by the same identifier than the one used in +the request. -For example, parts added to the query with :meth:`~.PartComplianceQuery.with_part_numbers` are identified in the -query result by their ``part_number`` property, and parts added with :meth:`~.PartComplianceQuery.with_record_guids` -are identified in the query result by their ``record_guid`` property. +For example, parts added to the query with :meth:`~.PartComplianceQuery.with_part_numbers` are +identified in the query result by their ``part_number`` property, and parts added with +:meth:`~.PartComplianceQuery.with_record_guids` are identified in the query result by their +``record_guid`` property. -Expanded items -~~~~~~~~~~~~~~ +Items added during analysis +--------------------------- -Item queries expand children based on the links defined in MI records. For example, during the processing of a -:class:`~.PartComplianceQuery`, children parts of the requested MI Part records are expanded. +In both record and BoM-based queries, additional items are included both in the analysis and the +response based on links defined in the records in Granta MI. For example, during the processing of a +:class:`~.PartComplianceQuery`, children of the referenced part are included in the analysis and +returned in the response. Similarly, in a :class:`~.BoMComplianceQuery`, child items of any parts +and specifications included in the BoM will be included in the analysis and returned in the +response. -Expanded items are identified by the ``record_history_identity`` property. +Items added during the analysis are always identified by the ``record_history_identity`` property. diff --git a/doc/source/api/sustainability/index.rst b/doc/source/api/sustainability/index.rst index 5cb44a52..58f9e30c 100644 --- a/doc/source/api/sustainability/index.rst +++ b/doc/source/api/sustainability/index.rst @@ -5,16 +5,21 @@ Sustainability API This section provides an overview of the API for sustainability. The :ref:`ref_grantami_bomanalytics_api_sustainability_bom` and -:ref:`ref_grantami_bomanalytics_api_sustainability_summary_bom` queries -can be used to determine the environmental performance of a BoM (bill of materials) in Ansys Granta MI 2301 XML BoM -format. +:ref:`ref_grantami_bomanalytics_api_sustainability_summary_bom` queries can be used to determine the +environmental performance of a BoM (bill of materials) in Ansys Granta MI 2301 XML BoM format. -The BoM analysis only considers items explicitly defined in the input BoM. It does not follow links to other BoM items -as in the record-based queries available for Impacted Substances and Compliance analysis. +.. note:: The functionality documented in this section is only available if you have the MI + Sustainability feature included in your license. A + :class:`~ansys.grantami.bomanalytics.LicensingException` will be raised if the feature is not + available. + +The BoM analysis only considers items explicitly defined in the input BoM. It does not follow links +to other BoM items as in the record-based queries available for Impacted Substances and Compliance +analysis. For more information about BoM item types relevant for sustainability analysis, refer to the -:MI_docs:`BoM item types for Sustainability ` section of the online -documentation. +:MI_docs:`BoM item types for Sustainability ` +section of the online documentation. .. toctree:: diff --git a/doc/source/index/intro.rst b/doc/source/index/intro.rst index 75b2db60..65f3230f 100644 --- a/doc/source/index/intro.rst +++ b/doc/source/index/intro.rst @@ -4,36 +4,39 @@ This project is part of the larger PyAnsys effort to facilitate the use of Ansys technologies directly from within Python. Granta MI provides a mature and feature-rich method for managing -compliance data as part of the Restricted Substances solution. -When combined with the Granta MI BoM Analyzer and Restricted Substances -Reports, the data managed in Granta MI can be leveraged to -determine compliance for complex specification hierarchies, assemblies, -and even entire products. +restricted substances and sustainability data as part of the Granta MI +Restricted Substances and Sustainability database. When combined with the +Granta MI BoM Analyzer and Reports, the data managed in Granta MI can be +leveraged to determine compliance and sustainability for components, +assemblies, and even entire products. The ``grantami-bomanalytics`` package takes the functionality available interactively through the web Granta MI browser and exposes it as an API. The expected use cases for this package are as follows: -- Rolling up compliance results periodically and storing these results - in Granta MI. -- Scripting compliance calculations as part of a release process. -- Allowing compliance to be determined for BoMs (Bills of Materials) stored - in third-party systems, such as PLM or ERP systems. - -Starting in version 2024 R1, Granta MI provides a method for managing -sustainability data as part of the Restricted Substances and Sustainability -solution. The ``grantami-bomanalytics`` package now also exposes an API -allowing users to evaluate the sustainability performance of BoMs (Bills of Materials). +- Rolling up compliance and sustainability results periodically and storing + these results in Granta MI. +- Scripting compliance and sustainability calculations as part of a release + process. +- Allowing compliance and sustainability to be determined for BoMs (Bills of + Materials) stored in third-party systems, such as PLM or ERP systems. Background ---------- -The Granta MI Restricted Substances solution includes a REST API for -evaluating compliance of products, assemblies, specifications, and -materials against legislations. -The Granta MI Sustainability solution includes a REST API for evaluating the environmental -performance of products, assemblies, materials, manufacturing and transport stages. -This package automatically abstracts generated code into an easy-to-use client library. +This package provides access to two similar but distinct APIs: + +#. The Granta MI Restricted Substances API is used to determine the impacted + substances and compliance of products, assemblies, specifications, and + materials against one or more legislations. +#. The Granta MI Sustainability API us used to evaluate the environmental + performance of products, assemblies, materials, manufacturing processes + and transport stages. + +In both cases, this package makes the underlying REST APIs easier to use by +providing idiomatic Python interfaces and example scripts. + +This package also provides a subpackage to help constructing Granta XML BoMs. Dependencies diff --git a/doc/source/index/quick_code.rst b/doc/source/index/quick_code.rst index b56ed3b9..bf65954d 100644 --- a/doc/source/index/quick_code.rst +++ b/doc/source/index/quick_code.rst @@ -1,6 +1,6 @@ Quick code ---------- -To show how the ``grantami-bomanalytics`` package works, this brief example +To show how the ``grantami-bomanalytics`` package works, this brief compliance example shows how to find the percentage content of all SVHCs (substances of very high concern) in an ABS/PVC blend: @@ -26,11 +26,7 @@ high concern) in an ABS/PVC blend: The sequence of events is as follows: #. Connect to Granta MI. -#. Create the appropriate query, choosing between: - - - Query type: Compliance, impacted substances, or sustainability - - Reference type: Materials, parts, specifications, substances, or an XML BoM - -#. Specify the legislations and records of interest. +#. Create the appropriate query with the relevant parameters and references + (see :ref:`ref_grantami_bomanalytics_api_index` for more details). #. Run the query. #. Process the results. diff --git a/doc/source/reusable_text/query_types.rst b/doc/source/reusable_text/query_types.rst new file mode 100644 index 00000000..b40471b4 --- /dev/null +++ b/doc/source/reusable_text/query_types.rst @@ -0,0 +1,7 @@ +.. _ref_query_types: + +The queries supported by this package can be split into two broad groups: record-based queries and +BoM-based queries. Whereas BoM-based queries can only be constructed with a single BoM, record-based +queries can be constructed with any number of records. For example, a +:class:`~ansys.grantami.bomanalytics.queries.SpecificationImpactedSubstancesQuery` could include +any number of specification references. diff --git a/examples/4_Sustainability/4-1_BoM_Sustainability_summary.py b/examples/4_Sustainability/4-1_BoM_Sustainability_summary.py index 85a4394c..355c4cfa 100644 --- a/examples/4_Sustainability/4-1_BoM_Sustainability_summary.py +++ b/examples/4_Sustainability/4-1_BoM_Sustainability_summary.py @@ -54,7 +54,7 @@ sustainability_summary # The ``BomSustainabilitySummaryQueryResult`` object returned implements a ``messages`` property, and properties -# showing the environmental footprint of the items included in the BoM. +# showing the environmental impact of the items included in the BoM. # Log messages are sorted by decreasing severity. The same messages are available on in the MI Service Layer log file, # and are logged via the standard ``logging`` module. # The next sections show examples of visualizations for the results of the sustainability summary query. @@ -95,7 +95,7 @@ from plotly.subplots import make_subplots -def plot_footprint(df, title, textinfo="percent+label", hoverinfo="value+name"): +def plot_impact(df, title, textinfo="percent+label", hoverinfo="value+name"): fig = make_subplots( rows=1, cols=2, @@ -109,13 +109,13 @@ def plot_footprint(df, title, textinfo="percent+label", hoverinfo="value+name"): fig.show() -plot_footprint(phases_df, "BoM sustainability summary - By phase") +plot_impact(phases_df, "BoM sustainability summary - By phase") # - # ## The transport phase # # The environmental contribution from the transport phase is summarized in the `transport_details` property. Results -# include the individual environmental footprint for each transport stage included in the input BoM. +# include the individual environmental impact for each transport stage included in the input BoM. sustainability_summary.transport_details @@ -138,9 +138,9 @@ def plot_footprint(df, title, textinfo="percent+label", hoverinfo="value+name"): transport_df # - -plot_footprint(transport_df, "Transport stages - environmental footprint") +plot_impact(transport_df, "Transport stages - environmental impact") -# In some situations, it may be useful to calculate the environmental footprint per distance travelled and add the +# In some situations, it may be useful to calculate the environmental impact per distance travelled and add the # results as new columns in the `DataFrame`. EE_PER_DISTANCE = f"EE [{ENERGY_UNIT}/{DISTANCE_UNIT}]" @@ -161,7 +161,7 @@ def plot_footprint(df, title, textinfo="percent+label", hoverinfo="value+name"): go.Pie(labels=transport_df["Name"], values=transport_df[CC_PER_DISTANCE], name=f"{MASS_UNIT}/{DISTANCE_UNIT}"), 1, 2 ) fig.update_layout( - title_text="Transport stages footprint - Relative to distance travelled", + title_text="Transport stages impact - Relative to distance travelled", legend=dict(orientation="h") ) fig.update_traces(textposition="inside", textinfo="percent+label", hoverinfo="value+name") @@ -170,8 +170,8 @@ def plot_footprint(df, title, textinfo="percent+label", hoverinfo="value+name"): # ## The materials phase # # The environmental contribution from the material phase is summarized in the `material_details` property. The results -# are aggregated: each item in ``material_details`` represents the total environmental footprint of a material summed -# from all its occurrences in the BoM. Listed materials contribute more than 2% of the total footprint for the material +# are aggregated: each item in ``material_details`` represents the total environmental impact of a material summed +# from all its occurrences in the BoM. Listed materials contribute more than 2% of the total impact for the material # phase. Materials that do not contribute at least 2% of the total are aggregated under the ``Other`` item. sustainability_summary.material_details @@ -192,10 +192,10 @@ def plot_footprint(df, title, textinfo="percent+label", hoverinfo="value+name"): ) materials_df -plot_footprint(materials_df, "Aggregated materials footprint") +plot_impact(materials_df, "Aggregated materials impact") # Mass before and mass after secondary processing can help determine if the material mass removed during processing -# contributes a significant fraction of the footprint of the overall material phase. +# contributes a significant fraction of the impact of the overall material phase. fig = go.Figure( data=[ @@ -252,8 +252,8 @@ def plot_footprint(df, title, textinfo="percent+label", hoverinfo="value+name"): primary_process_df["Name"] = primary_process_df.apply( lambda row: f"{row['Process name']} - {row['Material name']}", axis=1 ) -plot_footprint( - primary_process_df, "Aggregated primary processes footprint", textinfo="percent", hoverinfo="value+name+label" +plot_impact( + primary_process_df, "Aggregated primary processes impact", textinfo="percent", hoverinfo="value+name+label" ) # ### Secondary processing @@ -280,8 +280,8 @@ def plot_footprint(df, title, textinfo="percent+label", hoverinfo="value+name"): secondary_process_df["Name"] = secondary_process_df.apply( lambda row: f"{row['Process name']} - {row['Material name']}", axis=1 ) -plot_footprint( - secondary_process_df, "Aggregated secondary processes footprint", textinfo="percent", hoverinfo="value+name+label" +plot_impact( + secondary_process_df, "Aggregated secondary processes impact", textinfo="percent", hoverinfo="value+name+label" ) # ### Joining and finishing @@ -304,8 +304,8 @@ def plot_footprint(df, title, textinfo="percent+label", hoverinfo="value+name"): ) joining_and_finishing_processes_df -plot_footprint( - joining_and_finishing_processes_df, "Aggregated secondary processes footprint", +plot_impact( + joining_and_finishing_processes_df, "Aggregated secondary processes impact", textinfo="percent", hoverinfo="value+name+label" ) diff --git a/examples/4_Sustainability/4-2_BoM_Sustainability.py b/examples/4_Sustainability/4-2_BoM_Sustainability.py index ebf7e2eb..d4315e4c 100644 --- a/examples/4_Sustainability/4-2_BoM_Sustainability.py +++ b/examples/4_Sustainability/4-2_BoM_Sustainability.py @@ -88,7 +88,7 @@ # - ``.processes``: the joining and finishing processes applied to the assembly, defined as # ``ProcessWithSustainabilityResult`` objects. # -# The environmental footprint of an assembly includes the sum of the environmental footprints of all +# The environmental impact of an assembly includes the sum of the environmental impacts of all # sub-parts and processes applied to the assembly. # # #### **Leaf parts** @@ -103,7 +103,7 @@ # - ``.processes``: the joining and finishing processes applied to the part, defined as a list of # ``ProcessWithSustainabilityResult`` objects. # -# The environmental footprint of a leaf part includes the sum of the environmental footprints +# The environmental impact of a leaf part includes the sum of the environmental impacts # associated with the quantity of materials used in the part (see below for details), processes # applied to the part directly, and processes applied to materials in the part. @@ -114,22 +114,22 @@ # - ``.processes``: the primary and secondary processes applied to the mass of material, defined as a # list of ``ProcessWithSustainabilityResult`` objects. # -# The environmental footprint of a material is calculated from database data and the mass of material used. -# Even though processes appear as children of materials in the hierarchy, their environmental footprint is -# not summed up in the parent material's footprint, as opposed to the environmental footprint of parts. +# The environmental impact of a material is calculated from database data and the mass of material used. +# Even though processes appear as children of materials in the hierarchy, their environmental impact is +# not summed up in the parent material's impact, as opposed to the environmental impact of parts. # #### **Processes** # # Processes are represented by ``ProcessWithSustainabilityResult`` objects. Processes are child items -# in the BoM and have no children themselves. The environmental footprint of a process is calculated +# in the BoM and have no children themselves. The environmental impact of a process is calculated # from database data and masses defined in the BoM. # ### The `BomSustainabilityQueryResult.transport` property # # The ``BomSustainabilityQueryResult.transport`` property contains the transport stages in the input # BoM, defined as a list of ``TransportWithSustainabilityResult`` objects. Transport stages contain no -# BoM properties. The environmental footprint of a transport stage is just the environmental -# footprint associated with the transport stage itself. +# BoM properties. The environmental impact of a transport stage is just the environmental +# impact associated with the transport stage itself. # ## Process the ``BomSustainabilityQueryResult`` object # @@ -219,7 +219,7 @@ def to_dict(item, parent): # * The segments are represented hierarchically. The BoM is at the center, and items further down # the hierarchy are further out in the plot. # * Item type is represented by color. -# * The size of the segment represents the environmental footprint of that item. +# * The size of the segment represents the environmental impact of that item. # + import plotly.express as px diff --git a/examples/4_Sustainability/index.rst b/examples/4_Sustainability/index.rst index c6d20231..ac28b68e 100644 --- a/examples/4_Sustainability/index.rst +++ b/examples/4_Sustainability/index.rst @@ -3,7 +3,7 @@ Sustainability ============== -These examples demonstrate how to determine the environmental footprint for a BoM using the +These examples demonstrate how to determine the environmental impact for a BoM using the :ref:`ref_grantami_bomanalytics_api_sustainability_index`. .. toctree:: diff --git a/src/ansys/grantami/bomanalytics/_item_results.py b/src/ansys/grantami/bomanalytics/_item_results.py index a7e22c26..6738a488 100644 --- a/src/ansys/grantami/bomanalytics/_item_results.py +++ b/src/ansys/grantami/bomanalytics/_item_results.py @@ -1473,7 +1473,7 @@ def __init__(self, **kwargs: Any) -> None: @property def materials(self) -> List["MaterialWithSustainabilityResult"]: - """Material with sustainability result objects that are direct children of this item in the BoM.""" + """``MaterialWithSustainabilityResult`` objects that are direct children of this item in the BoM.""" return self._materials @@ -1514,7 +1514,7 @@ def __init__(self, **kwargs: Any) -> None: @property def parts(self) -> List["PartWithSustainabilityResult"]: - """Part with sustainability result objects that are direct children of this item in the BoM.""" + """``PartWithSustainabilityResult`` objects that are direct children of this item in the BoM.""" return self._parts @@ -1555,7 +1555,7 @@ def __init__(self, **kwargs: Any) -> None: @property def processes(self) -> List["ProcessWithSustainabilityResult"]: - """Process with sustainability result objects that are direct children of this item in the BoM.""" + """``ProcessWithSustainabilityResult`` objects that are direct children of this item in the BoM.""" return self._processes From bd270b2eee9e65754a450fcf92f167dd2ec1374f Mon Sep 17 00:00:00 2001 From: Andy Grigg Date: Thu, 4 Jan 2024 17:53:18 -0500 Subject: [PATCH 263/275] Vale fixes --- doc/source/api/batching.rst | 8 ++++---- doc/source/api/impacted_substances/index.rst | 4 ++-- doc/source/api/index.rst | 2 +- doc/source/api/sustainability/index.rst | 4 ++-- doc/source/index/intro.rst | 4 ++-- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/doc/source/api/batching.rst b/doc/source/api/batching.rst index b15a06ad..daee45ff 100644 --- a/doc/source/api/batching.rst +++ b/doc/source/api/batching.rst @@ -16,11 +16,11 @@ Both the :class:`~ansys.grantami.bomanalytics.queries.BomSustainabilityQuery` an and so this page is not relevant for sustainability analysis. The advice given below is relevant for restricted substances analysis only. -When should I worry about the batch size? ------------------------------------------ -The exact optimal size for batching cannot be determined generally because it depends +When should the batch size be modified? +--------------------------------------- +The exact conditions and size for batching cannot be determined generally because it depends on the data that is used to determine impacted substances and compliance. Given the -following conditions, you might need to change the batch size. +following conditions, you might need to modify the batch size. Very complex part and specification hierarchies ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/doc/source/api/impacted_substances/index.rst b/doc/source/api/impacted_substances/index.rst index a1152144..ce555dac 100644 --- a/doc/source/api/impacted_substances/index.rst +++ b/doc/source/api/impacted_substances/index.rst @@ -12,8 +12,8 @@ database. These queries will also consider any additional associated BoM items s For example, if the specified part record contains links to other parts and specifications, these will be included in the analysis. -.. note:: The functionality documented in this section is only available if you have the MI - Restricted Substances feature included in your license. A +.. note:: The API documented in this section is only available if you have the MI Restricted + Substances feature included in your license. A :class:`~ansys.grantami.bomanalytics.LicensingException` will be raised if the feature is not available. diff --git a/doc/source/api/index.rst b/doc/source/api/index.rst index bd0d3a95..af481efc 100644 --- a/doc/source/api/index.rst +++ b/doc/source/api/index.rst @@ -4,7 +4,7 @@ API reference ============= The API for PyGranta BoM Analytics is split into different sections. The following sections describe -general functionality that is applicable to both Restricted Substances and Sustainability: +general capabilities applicable to both Restricted Substances and Sustainability: - :ref:`ref_grantami_bomanalytics_common_connection` describes how to connect to Granta MI and, if required, configure any schema customizations in the API client. It also explains how to run diff --git a/doc/source/api/sustainability/index.rst b/doc/source/api/sustainability/index.rst index 58f9e30c..0b040587 100644 --- a/doc/source/api/sustainability/index.rst +++ b/doc/source/api/sustainability/index.rst @@ -8,8 +8,8 @@ This section provides an overview of the API for sustainability. The :ref:`ref_grantami_bomanalytics_api_sustainability_summary_bom` queries can be used to determine the environmental performance of a BoM (bill of materials) in Ansys Granta MI 2301 XML BoM format. -.. note:: The functionality documented in this section is only available if you have the MI - Sustainability feature included in your license. A +.. note:: The API documented in this section is only available if you have the MI Restricted + Substances feature included in your license. A :class:`~ansys.grantami.bomanalytics.LicensingException` will be raised if the feature is not available. diff --git a/doc/source/index/intro.rst b/doc/source/index/intro.rst index 65f3230f..c7b8c0c3 100644 --- a/doc/source/index/intro.rst +++ b/doc/source/index/intro.rst @@ -29,14 +29,14 @@ This package provides access to two similar but distinct APIs: #. The Granta MI Restricted Substances API is used to determine the impacted substances and compliance of products, assemblies, specifications, and materials against one or more legislations. -#. The Granta MI Sustainability API us used to evaluate the environmental +#. The Granta MI Sustainability API is used to evaluate the environmental performance of products, assemblies, materials, manufacturing processes and transport stages. In both cases, this package makes the underlying REST APIs easier to use by providing idiomatic Python interfaces and example scripts. -This package also provides a subpackage to help constructing Granta XML BoMs. +This package also provides a sub-package to help constructing Granta XML BoMs. Dependencies From 825f1dbaaf8544e066e2a101e7da920ed19d753b Mon Sep 17 00:00:00 2001 From: Andy Grigg Date: Fri, 5 Jan 2024 08:49:51 -0500 Subject: [PATCH 264/275] Add note to compliance API page --- doc/source/api/compliance/index.rst | 46 ++++++++++++++++++----------- 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/doc/source/api/compliance/index.rst b/doc/source/api/compliance/index.rst index b2aa9e87..6d1a468b 100644 --- a/doc/source/api/compliance/index.rst +++ b/doc/source/api/compliance/index.rst @@ -7,24 +7,34 @@ This section provides an overview of the API for compliance. The :ref:`ref_grantami_bomanalytics_api_compliance_substances`, :ref:`ref_grantami_bomanalytics_api_compliance_materials`, :ref:`ref_grantami_bomanalytics_api_compliance_specifications`, and -:ref:`ref_grantami_bomanalytics_api_compliance_parts` queries (collectively referred to as record-based compliance -queries) can be used to determine the compliance of records in a Granta MI database. These queries will also consider -any additional associated BoM items stored in Granta MI. For example, if the specified part record contains links to -other parts and specifications, these will be included in the analysis. - -The :ref:`ref_grantami_bomanalytics_api_compliance_bom` query accepts a BoM (bill of materials) in XML format and -returns the compliance status of the BoM based on the BoM's contents. As opposed to record-based queries, the BoM -compliance analysis only considers items explicitly defined in the input BoM. It does not follow links to other BoM -items as in the record-based queries described above. - -In both cases, compliance is determined based on a number of :ref:`ref_grantami_bomanalytics_api_compliance_indicators`. -An indicator is a collection of one or more legislations and a threshold. If a certain record directly or indirectly contains -substances impacted by one of the specified legislations in an amount that exceeds the threshold, the record is not -compliant with that indicator. For more information about possible results, see the definitions of the indicators. - -In general, the result of each query is a recursive BoM (or multi-level BoM) that shows the compliance status and impacted -substances at each level. If you are looking for a simple determination of the substances indirectly or directly -contained within a item represented by a Granta MI record, consider using the +:ref:`ref_grantami_bomanalytics_api_compliance_parts` queries (collectively referred to as +record-based compliance queries) can be used to determine the compliance of records in a Granta MI +database. These queries will also consider any additional associated BoM items stored in Granta MI. +For example, if the specified part record contains links to other parts and specifications, these +will be included in the analysis. + +.. note:: The API documented in this section is only available if you have the MI Restricted + Substances feature included in your license. A + :class:`~ansys.grantami.bomanalytics.LicensingException` will be raised if the feature is not + available. + +The :ref:`ref_grantami_bomanalytics_api_compliance_bom` query accepts a BoM (bill of materials) in +XML format and returns the compliance status of the BoM based on the BoM's contents. As opposed to +record-based queries, the BoM compliance analysis only considers items explicitly defined in the +input BoM. It does not follow links to other BoM items as in the record-based queries described +above. + +In both cases, compliance is determined based on a number of +:ref:`ref_grantami_bomanalytics_api_compliance_indicators`. An indicator is a collection of one or +more legislations and a threshold. If a certain record directly or indirectly contains substances +impacted by one of the specified legislations in an amount that exceeds the threshold, the record is +not compliant with that indicator. For more information about possible results, see the definitions +of the indicators. + +In general, the result of each query is a recursive BoM (or multi-level BoM) that shows the +compliance status and impacted substances at each level. If you are looking for a simple +determination of the substances indirectly or directly contained within a item represented by a +Granta MI record, consider using the :ref:`ref_grantami_bomanalytics_api_impactedsubstances_index`. .. toctree:: From 994f2cf75a77f68a68b0f314e4bacc765c3b1171 Mon Sep 17 00:00:00 2001 From: Andy Grigg Date: Fri, 5 Jan 2024 08:54:16 -0500 Subject: [PATCH 265/275] Move license note to end --- doc/source/api/compliance/index.rst | 10 +++++----- doc/source/api/impacted_substances/index.rst | 10 +++++----- doc/source/api/sustainability/index.rst | 9 ++++----- 3 files changed, 14 insertions(+), 15 deletions(-) diff --git a/doc/source/api/compliance/index.rst b/doc/source/api/compliance/index.rst index 6d1a468b..b8a8b785 100644 --- a/doc/source/api/compliance/index.rst +++ b/doc/source/api/compliance/index.rst @@ -13,11 +13,6 @@ database. These queries will also consider any additional associated BoM items s For example, if the specified part record contains links to other parts and specifications, these will be included in the analysis. -.. note:: The API documented in this section is only available if you have the MI Restricted - Substances feature included in your license. A - :class:`~ansys.grantami.bomanalytics.LicensingException` will be raised if the feature is not - available. - The :ref:`ref_grantami_bomanalytics_api_compliance_bom` query accepts a BoM (bill of materials) in XML format and returns the compliance status of the BoM based on the BoM's contents. As opposed to record-based queries, the BoM compliance analysis only considers items explicitly defined in the @@ -37,6 +32,11 @@ determination of the substances indirectly or directly contained within a item r Granta MI record, consider using the :ref:`ref_grantami_bomanalytics_api_impactedsubstances_index`. +.. note:: The API documented in this section is only available if you have the MI Restricted + Substances feature included in your license. A + :class:`~ansys.grantami.bomanalytics.LicensingException` will be raised if the feature is not + available. + .. toctree:: :maxdepth: 3 diff --git a/doc/source/api/impacted_substances/index.rst b/doc/source/api/impacted_substances/index.rst index ce555dac..66ed0cbc 100644 --- a/doc/source/api/impacted_substances/index.rst +++ b/doc/source/api/impacted_substances/index.rst @@ -12,11 +12,6 @@ database. These queries will also consider any additional associated BoM items s For example, if the specified part record contains links to other parts and specifications, these will be included in the analysis. -.. note:: The API documented in this section is only available if you have the MI Restricted - Substances feature included in your license. A - :class:`~ansys.grantami.bomanalytics.LicensingException` will be raised if the feature is not - available. - The :ref:`ref_grantami_bomanalytics_api_impactedsubstances_bom` BoM-based query accepts a Bill of Materials in XML format, which includes references to Granta MI records. As opposed to record-based queries, the BoM-based impacted substances analysis only considers items explicitly @@ -30,6 +25,11 @@ These queries do not take the quantity of the substance in the parent item into the quantity is important, for example to determine compliance against a legislation that imposes a certain threshold, you should use the :ref:`ref_grantami_bomanalytics_api_compliance_index` instead. +.. note:: The API documented in this section is only available if you have the MI Restricted + Substances feature included in your license. A + :class:`~ansys.grantami.bomanalytics.LicensingException` will be raised if the feature is not + available. + .. toctree:: :maxdepth: 3 diff --git a/doc/source/api/sustainability/index.rst b/doc/source/api/sustainability/index.rst index 0b040587..0210e428 100644 --- a/doc/source/api/sustainability/index.rst +++ b/doc/source/api/sustainability/index.rst @@ -8,11 +8,6 @@ This section provides an overview of the API for sustainability. The :ref:`ref_grantami_bomanalytics_api_sustainability_summary_bom` queries can be used to determine the environmental performance of a BoM (bill of materials) in Ansys Granta MI 2301 XML BoM format. -.. note:: The API documented in this section is only available if you have the MI Restricted - Substances feature included in your license. A - :class:`~ansys.grantami.bomanalytics.LicensingException` will be raised if the feature is not - available. - The BoM analysis only considers items explicitly defined in the input BoM. It does not follow links to other BoM items as in the record-based queries available for Impacted Substances and Compliance analysis. @@ -21,6 +16,10 @@ For more information about BoM item types relevant for sustainability analysis, :MI_docs:`BoM item types for Sustainability ` section of the online documentation. +.. note:: The API documented in this section is only available if you have the MI Restricted + Substances feature included in your license. A + :class:`~ansys.grantami.bomanalytics.LicensingException` will be raised if the feature is not + available. .. toctree:: :maxdepth: 3 From 710ebe364aeddf37a1dc97aabb4169cfb516f1cb Mon Sep 17 00:00:00 2001 From: Andy Grigg Date: Fri, 5 Jan 2024 12:25:30 -0500 Subject: [PATCH 266/275] Fix BoM query descriptions --- doc/source/api/batching.rst | 9 +- doc/source/api/compliance/bom.rst | 7 +- doc/source/api/impacted_substances/bom.rst | 3 + doc/source/api/index.rst | 16 +-- ...ication.rst => query_type_differences.rst} | 109 +++++++++++------- doc/source/api/sustainability/bom.rst | 1 - doc/source/api/sustainability/common.rst | 4 +- 7 files changed, 94 insertions(+), 55 deletions(-) rename doc/source/api/{record_identification.rst => query_type_differences.rst} (50%) diff --git a/doc/source/api/batching.rst b/doc/source/api/batching.rst index daee45ff..749dbbad 100644 --- a/doc/source/api/batching.rst +++ b/doc/source/api/batching.rst @@ -5,16 +5,17 @@ Batching requests Applicability ------------- + .. py:currentmodule:: ansys.grantami.bomanalytics.queries + .. include:: ../reusable_text/query_types.rst Record-based queries are batched if they exceed a certain size. When you perform a record-based query, batching is achieved by splitting the list of records into smaller lists to reduce the overall time it takes to obtain results. -Both the :class:`~ansys.grantami.bomanalytics.queries.BomSustainabilityQuery` and -:class:`~ansys.grantami.bomanalytics.queries.BomSustainabilitySummaryQuery` are BoM-based queries, -and so this page is not relevant for sustainability analysis. The advice given below is relevant -for restricted substances analysis only. +Both the :class:`~BomSustainabilityQuery` and :class:`~BomSustainabilitySummaryQuery` are BoM-based +queries, and so this page is not relevant for sustainability analysis. The advice given below is +relevant for restricted substances analysis only. When should the batch size be modified? --------------------------------------- diff --git a/doc/source/api/compliance/bom.rst b/doc/source/api/compliance/bom.rst index 320f3c44..ef812008 100644 --- a/doc/source/api/compliance/bom.rst +++ b/doc/source/api/compliance/bom.rst @@ -4,8 +4,11 @@ BoM compliance ============== For more information about BoM item types relevant for compliance analysis, refer to the -:MI_docs:`BoM item types for Restricted Substances ` section of the online -documentation. +:MI_docs:`BoM item types for Restricted Substances ` +section of the online documentation. + +Consult :ref:`ref_grantami_bomanalytics_bom_query_restrictions` for some important restrictions on +BoM-based queries. Query definition ~~~~~~~~~~~~~~~~ diff --git a/doc/source/api/impacted_substances/bom.rst b/doc/source/api/impacted_substances/bom.rst index 4e35feac..0b8f1648 100644 --- a/doc/source/api/impacted_substances/bom.rst +++ b/doc/source/api/impacted_substances/bom.rst @@ -7,6 +7,9 @@ For more information about BoM item types relevant for impacted substances analy :MI_docs:`BoM item types for Restricted Substances ` section of the online documentation. +Consult :ref:`ref_grantami_bomanalytics_bom_query_restrictions` for some important restrictions on +BoM-based queries. + .. _ref_grantami_bomanalytics_api_impactedsubstances_bom_query: Query definition diff --git a/doc/source/api/index.rst b/doc/source/api/index.rst index af481efc..9b055b8f 100644 --- a/doc/source/api/index.rst +++ b/doc/source/api/index.rst @@ -4,7 +4,7 @@ API reference ============= The API for PyGranta BoM Analytics is split into different sections. The following sections describe -general capabilities applicable to both Restricted Substances and Sustainability: +general capabilities applicable to both restricted substances and sustainability: - :ref:`ref_grantami_bomanalytics_common_connection` describes how to connect to Granta MI and, if required, configure any schema customizations in the API client. It also explains how to run @@ -15,13 +15,14 @@ general capabilities applicable to both Restricted Substances and Sustainability might be raised. - :ref:`ref_grantami_bomanalytics_batching` explains how queries are batched if they exceed a certain size. -- :ref:`ref_grantami_bomanalytics_record_identification` explains how Granta MI records are - identified throughout the package. +- :ref:`ref_grantami_bomanalytics_query_type_differences` explains some key differences between + record-based and BoM-based queries, including how records are identified and how additional + items are included in the analysis. - :ref:`ref_grantami_bomanalytics_bom_helpers_index` explains how to create, read, edit, and save - Bill of Materials objects for Compliance and Sustainability reporting. + BoM objects for restricted substances and sustainability analysis. -Additionally, the following sections describe how to build queries and interpret results for -different types of analysis: +The following sections describe how to build queries and interpret results for different types of +analysis: - :ref:`ref_grantami_bomanalytics_api_impactedsubstances_index` - :ref:`ref_grantami_bomanalytics_api_compliance_index` @@ -34,10 +35,11 @@ different types of analysis: .. toctree:: :maxdepth: 2 + :hidden: common batching - record_identification + query_type_differences impacted_substances/index compliance/index sustainability/index diff --git a/doc/source/api/record_identification.rst b/doc/source/api/query_type_differences.rst similarity index 50% rename from doc/source/api/record_identification.rst rename to doc/source/api/query_type_differences.rst index 5c1addb2..a59eb33f 100644 --- a/doc/source/api/record_identification.rst +++ b/doc/source/api/query_type_differences.rst @@ -1,19 +1,81 @@ +.. _ref_grantami_bomanalytics_query_type_differences: + +Differences between BoM-based queries and record-based queries +============================================================== + +.. include:: ../reusable_text/query_types.rst + +This page describes the differences in how BoM-based queries and record-based queries +include additional linked items in restricted substances analyses. It also describes the ways +records are identified in the queries and responses for the different query types. + +.. _ref_grantami_bomanalytics_bom_query_restrictions: + +Items added during restricted substances analysis +------------------------------------------------- +In both record and BoM-based restricted substances queries, additional items are included both in +the analysis and the response based on record-to-record links in Granta MI. However, the items added +depends on the type of query used. + +In the sections below, the following structure is used as an example: + +* A part record, which links to... + + * A part record which contains a substance declaration,... + * A material record which contains a substance declaration, and... + * A specification record, which links to... + + * A specification record which contains a substance declaration. + +In both cases, all items added during the analysis are always identified by the +``record_history_identity`` property in the response. + +Record-based queries +~~~~~~~~~~~~~~~~~~~~ +In a record-based query all children of all items included in the query are included in the analysis +and returned in the response. Considering a :class:`~.PartComplianceQuery` containing the root part +in structure described above, the child part, all child specifications, and all substances will be +included in the analysis and returned in the response. + +BoM-based queries +~~~~~~~~~~~~~~~~~ +In a BoM-based query, only child specifications are included in the analysis and returned in the +response. Considering a :class:`~.BoMComplianceQuery` containing the root part +in structure described above, only the child specifications are included in the analysis and +returned in the response. The child part and material are *not* included unless they are explicitly +added to the BoM. + + .. note:: + The API assumes that, excluding specifications, a BoM represents the entire structure of the + product. The API will not use any record-to-record links in Granta MI in the analysis, except for + specification records. + + If you want to use a BoM-based query, you *must* include the full product + structure in the BoM, including substances. + + .. _ref_grantami_bomanalytics_record_identification: Record identification -===================== +--------------------- -Query types ------------ +Record-based queries +~~~~~~~~~~~~~~~~~~~~ + .. py:currentmodule:: ansys.grantami.bomanalytics.queries -.. include:: ../reusable_text/query_types.rst +Queries that accept record references as inputs, such as :class:`~PartComplianceQuery`, allow the +input records to be defined via different record identifiers. -BoM-based queries ------------------ +The corresponding item in the query result is identified by the same identifier than the one used in +the request. -Input BoM items included in the response -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +For example, parts added to the query with :meth:`~.PartComplianceQuery.with_part_numbers` are +identified in the query result by their ``part_number`` property, and parts added with +:meth:`~.PartComplianceQuery.with_record_guids` are identified in the query result by their +``record_guid`` property. +BoM-based queries +~~~~~~~~~~~~~~~~~ BoM-based queries accept a BoM as input to the request. According to the Ansys Granta MI XML BoM formats, record references can be defined in many ways. As a general rule, items in the query result which correspond to an item provided in the input BoM, are described by the same identifier. @@ -60,34 +122,3 @@ the lookup is a special identifier such as: - ``specification_id`` in which case the corresponding property is populated. - - -Record-based queries --------------------- - .. py:currentmodule:: ansys.grantami.bomanalytics.queries - -Returned request items -~~~~~~~~~~~~~~~~~~~~~~ - -Queries that accept record references as inputs, such as :class:`~PartComplianceQuery`, allow the -input records to be defined via different record identifiers. - -The corresponding item in the query result is identified by the same identifier than the one used in -the request. - -For example, parts added to the query with :meth:`~.PartComplianceQuery.with_part_numbers` are -identified in the query result by their ``part_number`` property, and parts added with -:meth:`~.PartComplianceQuery.with_record_guids` are identified in the query result by their -``record_guid`` property. - -Items added during analysis ---------------------------- - -In both record and BoM-based queries, additional items are included both in the analysis and the -response based on links defined in the records in Granta MI. For example, during the processing of a -:class:`~.PartComplianceQuery`, children of the referenced part are included in the analysis and -returned in the response. Similarly, in a :class:`~.BoMComplianceQuery`, child items of any parts -and specifications included in the BoM will be included in the analysis and returned in the -response. - -Items added during the analysis are always identified by the ``record_history_identity`` property. diff --git a/doc/source/api/sustainability/bom.rst b/doc/source/api/sustainability/bom.rst index a7c2928c..fdadc7ee 100644 --- a/doc/source/api/sustainability/bom.rst +++ b/doc/source/api/sustainability/bom.rst @@ -3,7 +3,6 @@ BoM sustainability ================== - Query definition ~~~~~~~~~~~~~~~~ diff --git a/doc/source/api/sustainability/common.rst b/doc/source/api/sustainability/common.rst index 64bb588c..5cd0593e 100644 --- a/doc/source/api/sustainability/common.rst +++ b/doc/source/api/sustainability/common.rst @@ -12,8 +12,8 @@ Value with unit Record references ~~~~~~~~~~~~~~~~~ -See :ref:`ref_grantami_bomanalytics_record_identification` for more information about populated properties on record -reference objects. +See :ref:`ref_grantami_bomanalytics_record_identification` for more information about populated +properties on record reference objects. .. autoclass:: ansys.grantami.bomanalytics._item_definitions.PartReference :members: From e98631517945642d8becc225175d58eb25fbf711 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Wed, 10 Jan 2024 10:17:28 +0100 Subject: [PATCH 267/275] Fix typo --- doc/source/api/query_type_differences.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/source/api/query_type_differences.rst b/doc/source/api/query_type_differences.rst index a59eb33f..a260ecb5 100644 --- a/doc/source/api/query_type_differences.rst +++ b/doc/source/api/query_type_differences.rst @@ -66,7 +66,7 @@ Record-based queries Queries that accept record references as inputs, such as :class:`~PartComplianceQuery`, allow the input records to be defined via different record identifiers. -The corresponding item in the query result is identified by the same identifier than the one used in +The corresponding item in the query result is identified by the same identifier as the one used in the request. For example, parts added to the query with :meth:`~.PartComplianceQuery.with_part_numbers` are From eea5664d6d69eb87832d6be79ab46dd91e889355 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Wed, 10 Jan 2024 10:31:31 +0100 Subject: [PATCH 268/275] Documentation review feedback --- doc/source/api/compliance/indicators.rst | 9 +++++---- src/ansys/grantami/bomanalytics/queries.py | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/doc/source/api/compliance/indicators.rst b/doc/source/api/compliance/indicators.rst index fe3a87d4..2eb0e811 100644 --- a/doc/source/api/compliance/indicators.rst +++ b/doc/source/api/compliance/indicators.rst @@ -2,10 +2,11 @@ Indicators ========== -The PyGranta BoM Analytics API determines compliance against one or more indicators. An indicator essentially represents -a legislation with a threshold. If a substance appears in a certain item, either directly or indirectly, in a quantity -that exceeds that threshold, the item is non-compliant with that indicator. In cases where the legislation defines a -per-substance threshold (for example, RoHS), then this per-substance threshold is used instead. +The PyGranta BoM Analytics API can be used to determine compliance against one or more indicators. An indicator +essentially represents a legislation with a threshold. If a substance appears in a certain item, either directly or +indirectly, in a quantity that exceeds that threshold, the item is non-compliant with that indicator. In cases where +the legislation defines a per-substance threshold (for example, RoHS), then this per-substance threshold is used +instead. Indicators can include a list of legislations, in which case a substance is impacted by the indicator if it is impacted by one or more legislations included in that indicator. diff --git a/src/ansys/grantami/bomanalytics/queries.py b/src/ansys/grantami/bomanalytics/queries.py index 3482ec19..1e117615 100644 --- a/src/ansys/grantami/bomanalytics/queries.py +++ b/src/ansys/grantami/bomanalytics/queries.py @@ -1586,7 +1586,7 @@ def __init__(self) -> None: def with_bom(self: _BomQuery, bom: str) -> _BomQuery: """Set the BoM to use for the query. - See the query documentation for supported BoM formats. + See the documentation for the parent query class for supported BoM formats. Minimal validation is performed on the provided ``bom`` to ensure the request is sent to the appropriate endpoint. XSD files are provided in :mod:`~.schemas` for full validation. From 08ed5f0fc9004c6d31cb09682e73c3cf85e3d300 Mon Sep 17 00:00:00 2001 From: Andy Grigg Date: Wed, 10 Jan 2024 15:12:51 -0500 Subject: [PATCH 269/275] Point at public bomanalytics-openapi --- poetry.lock | 32 +++++++++----------------------- pyproject.toml | 2 +- 2 files changed, 10 insertions(+), 24 deletions(-) diff --git a/poetry.lock b/poetry.lock index e66a5419..01dfc135 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. [[package]] name = "accessible-pygments" @@ -41,7 +41,7 @@ requests = "^2.26.0" [package.source] type = "git" -url = "https://github.com/ansys/grantami-bomanalytics-openapi-private.git" +url = "https://github.com/ansys/grantami-bomanalytics-openapi.git" reference = "4a34858" resolved_reference = "4a348586ac215e04fee81f5d7624d5f0ce7bce42" subdirectory = "ansys-grantami-bomanalytics-openapi" @@ -2835,51 +2835,37 @@ python-versions = ">=3.6" files = [ {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b42169467c42b692c19cf539c38d4602069d8c1505e97b86387fcf7afb766e1d"}, {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:07238db9cbdf8fc1e9de2489a4f68474e70dffcb32232db7c08fa61ca0c7c462"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:d92f81886165cb14d7b067ef37e142256f1c6a90a65cd156b063a43da1708cfd"}, {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:fff3573c2db359f091e1589c3d7c5fc2f86f5bdb6f24252c2d8e539d4e45f412"}, - {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-manylinux_2_24_aarch64.whl", hash = "sha256:aa2267c6a303eb483de8d02db2871afb5c5fc15618d894300b88958f729ad74f"}, - {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:840f0c7f194986a63d2c2465ca63af8ccbbc90ab1c6001b1978f05119b5e7334"}, - {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:024cfe1fc7c7f4e1aff4a81e718109e13409767e4f871443cbff3dba3578203d"}, {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-win32.whl", hash = "sha256:c69212f63169ec1cfc9bb44723bf2917cbbd8f6191a00ef3410f5a7fe300722d"}, {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-win_amd64.whl", hash = "sha256:cabddb8d8ead485e255fe80429f833172b4cadf99274db39abc080e068cbcc31"}, {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:bef08cd86169d9eafb3ccb0a39edb11d8e25f3dae2b28f5c52fd997521133069"}, {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:b16420e621d26fdfa949a8b4b47ade8810c56002f5389970db4ddda51dbff248"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:b5edda50e5e9e15e54a6a8a0070302b00c518a9d32accc2346ad6c984aacd279"}, {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:25c515e350e5b739842fc3228d662413ef28f295791af5e5110b543cf0b57d9b"}, - {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-manylinux_2_24_aarch64.whl", hash = "sha256:1707814f0d9791df063f8c19bb51b0d1278b8e9a2353abbb676c2f685dee6afe"}, - {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:46d378daaac94f454b3a0e3d8d78cafd78a026b1d71443f4966c696b48a6d899"}, - {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:09b055c05697b38ecacb7ac50bdab2240bfca1a0c4872b0fd309bb07dc9aa3a9"}, {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-win32.whl", hash = "sha256:53a300ed9cea38cf5a2a9b069058137c2ca1ce658a874b79baceb8f892f915a7"}, {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-win_amd64.whl", hash = "sha256:c2a72e9109ea74e511e29032f3b670835f8a59bbdc9ce692c5b4ed91ccf1eedb"}, {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:ebc06178e8821efc9692ea7544aa5644217358490145629914d8020042c24aa1"}, {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:edaef1c1200c4b4cb914583150dcaa3bc30e592e907c01117c08b13a07255ec2"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:7048c338b6c86627afb27faecf418768acb6331fc24cfa56c93e8c9780f815fa"}, {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d176b57452ab5b7028ac47e7b3cf644bcfdc8cacfecf7e71759f7f51a59e5c92"}, - {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-manylinux_2_24_aarch64.whl", hash = "sha256:1dc67314e7e1086c9fdf2680b7b6c2be1c0d8e3a8279f2e993ca2a7545fecf62"}, - {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:3213ece08ea033eb159ac52ae052a4899b56ecc124bb80020d9bbceeb50258e9"}, - {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:aab7fd643f71d7946f2ee58cc88c9b7bfc97debd71dcc93e03e2d174628e7e2d"}, - {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-win32.whl", hash = "sha256:5c365d91c88390c8d0a8545df0b5857172824b1c604e867161e6b3d59a827eaa"}, - {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-win_amd64.whl", hash = "sha256:1758ce7d8e1a29d23de54a16ae867abd370f01b5a69e1a3ba75223eaa3ca1a1b"}, {file = "ruamel.yaml.clib-0.2.8-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:a5aa27bad2bb83670b71683aae140a1f52b0857a2deff56ad3f6c13a017a26ed"}, {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c58ecd827313af6864893e7af0a3bb85fd529f862b6adbefe14643947cfe2942"}, {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-macosx_12_0_arm64.whl", hash = "sha256:f481f16baec5290e45aebdc2a5168ebc6d35189ae6fea7a58787613a25f6e875"}, - {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-manylinux_2_24_aarch64.whl", hash = "sha256:77159f5d5b5c14f7c34073862a6b7d34944075d9f93e681638f6d753606c6ce6"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:3fcc54cb0c8b811ff66082de1680b4b14cf8a81dce0d4fbf665c2265a81e07a1"}, {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:7f67a1ee819dc4562d444bbafb135832b0b909f81cc90f7aa00260968c9ca1b3"}, - {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:4ecbf9c3e19f9562c7fdd462e8d18dd902a47ca046a2e64dba80699f0b6c09b7"}, - {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:87ea5ff66d8064301a154b3933ae406b0863402a799b16e4a1d24d9fbbcbe0d3"}, {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-win32.whl", hash = "sha256:75e1ed13e1f9de23c5607fe6bd1aeaae21e523b32d83bb33918245361e9cc51b"}, {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-win_amd64.whl", hash = "sha256:3f215c5daf6a9d7bbed4a0a4f760f3113b10e82ff4c5c44bec20a68c8014f675"}, {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1b617618914cb00bf5c34d4357c37aa15183fa229b24767259657746c9077615"}, {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:a6a9ffd280b71ad062eae53ac1659ad86a17f59a0fdc7699fd9be40525153337"}, - {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-manylinux_2_24_aarch64.whl", hash = "sha256:305889baa4043a09e5b76f8e2a51d4ffba44259f6b4c72dec8ca56207d9c6fe1"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:665f58bfd29b167039f714c6998178d27ccd83984084c286110ef26b230f259f"}, {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:700e4ebb569e59e16a976857c8798aee258dceac7c7d6b50cab63e080058df91"}, - {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:e2b4c44b60eadec492926a7270abb100ef9f72798e18743939bdbf037aab8c28"}, - {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e79e5db08739731b0ce4850bed599235d601701d5694c36570a99a0c5ca41a9d"}, {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-win32.whl", hash = "sha256:955eae71ac26c1ab35924203fda6220f84dce57d6d7884f189743e2abe3a9fbe"}, {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-win_amd64.whl", hash = "sha256:56f4252222c067b4ce51ae12cbac231bce32aee1d33fbfc9d17e5b8d6966c312"}, {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:03d1162b6d1df1caa3a4bd27aa51ce17c9afc2046c31b0ad60a0a96ec22f8001"}, {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:bba64af9fa9cebe325a62fa398760f5c7206b215201b0ec825005f1b18b9bccf"}, - {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-manylinux_2_24_aarch64.whl", hash = "sha256:a1a45e0bb052edf6a1d3a93baef85319733a888363938e1fc9924cb00c8df24c"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:9eb5dee2772b0f704ca2e45b1713e4e5198c18f515b52743576d196348f374d3"}, {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:da09ad1c359a728e112d60116f626cc9f29730ff3e0e7db72b9a2dbc2e4beed5"}, - {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:184565012b60405d93838167f425713180b949e9d8dd0bbc7b49f074407c5a8b"}, - {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a75879bacf2c987c003368cf14bed0ffe99e8e85acfa6c0bfffc21a090f16880"}, {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-win32.whl", hash = "sha256:84b554931e932c46f94ab306913ad7e11bba988104c5cff26d90d03f68258cd5"}, {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-win_amd64.whl", hash = "sha256:25ac8c08322002b06fa1d49d1646181f0b2c72f5cbc15a85e80b4c30a544bb15"}, {file = "ruamel.yaml.clib-0.2.8.tar.gz", hash = "sha256:beb2e0404003de9a4cab9753a8805a8fe9320ee6673136ed7f04255fe60bb512"}, @@ -3575,4 +3561,4 @@ examples = ["ipywidgets", "jupyterlab", "lxml", "pandas", "plotly", "tabulate"] [metadata] lock-version = "2.0" python-versions = "^3.9.0" -content-hash = "a88f66bafa777fdc9402fb0a039eccdd06214bdc9848b76a0cae07b1d895a167" +content-hash = "517f438a7e1c8e963b29dcf5e48dc8419d4619a6a5707b5cf955983c2c69b504" diff --git a/pyproject.toml b/pyproject.toml index cf7520ca..f43d1a11 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,7 +40,7 @@ python = "^3.9.0" # Packages for core library ansys-openapi-common = "< 2.0.0" -ansys-grantami-bomanalytics-openapi = { git = 'https://github.com/ansys/grantami-bomanalytics-openapi-private.git', subdirectory = 'ansys-grantami-bomanalytics-openapi', rev = '4a34858' } +ansys-grantami-bomanalytics-openapi = { git = 'https://github.com/ansys/grantami-bomanalytics-openapi.git', subdirectory = 'ansys-grantami-bomanalytics-openapi', rev = '4a34858' } xmlschema = "^2.4.0" # Packages for the examples extra From 72d1aef3514748ebd3d31fefb05afd7e664b0e9e Mon Sep 17 00:00:00 2001 From: Andy Grigg Date: Thu, 11 Jan 2024 12:33:08 -0500 Subject: [PATCH 270/275] Fix cname --- .github/workflows/ci_cd.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci_cd.yml b/.github/workflows/ci_cd.yml index 078262d3..98d897a5 100644 --- a/.github/workflows/ci_cd.yml +++ b/.github/workflows/ci_cd.yml @@ -15,7 +15,7 @@ on: merge_group: env: - DOCUMENTATION_CNAME: 'animated-broccoli-k6emqn7.pages.github.io' + DOCUMENTATION_CNAME: 'bomanalytics.grantami.docs.pyansys.com' jobs: local_checks: From 0575d50278bf13c5f457fffb512a590cc4223dcf Mon Sep 17 00:00:00 2001 From: Andy Grigg Date: Thu, 11 Jan 2024 12:37:03 -0500 Subject: [PATCH 271/275] Clean up workflows --- .github/workflows/ci_cd.yml | 1 - .github/workflows/local_checks.yml | 20 -------------------- .github/workflows/server_checks.yml | 23 ----------------------- 3 files changed, 44 deletions(-) diff --git a/.github/workflows/ci_cd.yml b/.github/workflows/ci_cd.yml index 98d897a5..f7b54466 100644 --- a/.github/workflows/ci_cd.yml +++ b/.github/workflows/ci_cd.yml @@ -23,7 +23,6 @@ jobs: uses: ./.github/workflows/local_checks.yml secrets: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} - BOM_OPENAPI_TOKEN: ${{ secrets.BOM_OPENAPI_TOKEN }} integration_checks: name: Integration checks diff --git a/.github/workflows/local_checks.yml b/.github/workflows/local_checks.yml index e5f34e0c..29a4f0d5 100644 --- a/.github/workflows/local_checks.yml +++ b/.github/workflows/local_checks.yml @@ -3,8 +3,6 @@ on: secrets: CODECOV_TOKEN: required: true - BOM_OPENAPI_TOKEN: - required: true env: MAIN_PYTHON_VERSION: '3.9' @@ -49,18 +47,9 @@ jobs: - name: Install dependencies run: pip install poetry 'tox<4' --disable-pip-version-check - - name: Configure git - run: | - echo "https://${{ secrets.BOM_OPENAPI_TOKEN }}:@github.com" > $HOME/.git-credentials - git config --global credential.helper store - - name: Test with tox (no integration tests) run: tox -- -m "not integration" - - name: Clean-up - if: always() - run: rm -f $HOME/.git-credentials - package: name: Build package runs-on: ubuntu-latest @@ -108,20 +97,11 @@ jobs: sudo apt install libkrb5-dev sudo apt install pandoc - - name: Configure git - run: | - echo "https://${{ secrets.BOM_OPENAPI_TOKEN }}:@github.com" > $HOME/.git-credentials - git config --global credential.helper store - - name: Install library run: | pip install poetry --disable-pip-version-check poetry install --with doc - - name: Clean-up - if: always() - run: rm -f $HOME/.git-credentials - - name: Build HTML Documentation run: make -C doc html SPHINXOPTS="-W" diff --git a/.github/workflows/server_checks.yml b/.github/workflows/server_checks.yml index 1b472b2e..5694f588 100644 --- a/.github/workflows/server_checks.yml +++ b/.github/workflows/server_checks.yml @@ -29,8 +29,6 @@ on: required: true TEST_SERVER_WRITE_PASS: required: true - BOM_OPENAPI_TOKEN: - required: true workflow_dispatch: concurrency: @@ -91,13 +89,6 @@ jobs: - name: Install dependencies run: pip install poetry 'tox<4' --disable-pip-version-check - - name: Configure git - shell: bash - run: | - echo "https://${{ secrets.BOM_OPENAPI_TOKEN }}:@github.com" > $HOME/.git-credentials - git config --global credential.helper store - git config --global core.longpaths true - - name: Test with tox (integration tests only) run: tox -- -m "integration" env: @@ -107,11 +98,6 @@ jobs: TEST_WRITE_USER: ${{secrets.TEST_SERVER_WRITE_USER}} TEST_WRITE_PASS: ${{secrets.TEST_SERVER_WRITE_PASS}} - - name: Clean-up - if: always() - shell: bash - run: rm -f $HOME/.git-credentials - docs: name: Build documentation runs-on: ubuntu-latest @@ -132,19 +118,10 @@ jobs: sudo apt install pandoc sudo apt install texlive-latex-extra latexmk texlive-xetex fonts-freefont-otf xindy - - name: Configure git - run: | - echo "https://${{ secrets.BOM_OPENAPI_TOKEN }}:@github.com" > $HOME/.git-credentials - git config --global credential.helper store - - name: Install library run: | pip install poetry --disable-pip-version-check poetry install --with doc - - - name: Clean-up - if: always() - run: rm -f $HOME/.git-credentials - name: Build HTML Documentation run: make -C doc html SPHINXOPTS="-W" From 29c595358bcbd6889bc4d29525d91de5fa82eea6 Mon Sep 17 00:00:00 2001 From: Andy Grigg Date: Fri, 12 Jan 2024 12:16:00 -0500 Subject: [PATCH 272/275] Use public bomanalytics-openapi --- poetry.lock | 56 ++++++++++++++++++++++++++++---------------------- pyproject.toml | 2 +- 2 files changed, 33 insertions(+), 25 deletions(-) diff --git a/poetry.lock b/poetry.lock index b08b7460..41744672 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. [[package]] name = "accessible-pygments" @@ -27,33 +27,27 @@ files = [ [[package]] name = "ansys-grantami-bomanalytics-openapi" -version = "2.0.0.dev48" +version = "2.0.0" description = "Autogenerated client library for the Granta MI BoM Analytics Services." optional = false -python-versions = "^3.9.0" -files = [] -develop = false +python-versions = ">=3.9.0,<4.0.0" +files = [ + {file = "ansys_grantami_bomanalytics_openapi-2.0.0-py3-none-any.whl", hash = "sha256:c2d47af1e09dcb225526a7ad130197c865de92dcaaae9a630b528a33f12801a8"}, +] [package.dependencies] -ansys-openapi-common = "^1.3.0" -python-dateutil = "^2.8.2" -requests = "^2.26.0" - -[package.source] -type = "git" -url = "https://github.com/ansys/grantami-bomanalytics-openapi.git" -reference = "4a34858" -resolved_reference = "4a348586ac215e04fee81f5d7624d5f0ce7bce42" -subdirectory = "ansys-grantami-bomanalytics-openapi" +ansys-openapi-common = ">=1.4.0,<2.0.0" +python-dateutil = ">=2.8.2,<3.0.0" +requests = ">=2.26.0,<3.0.0" [[package]] name = "ansys-openapi-common" -version = "1.3.0" +version = "1.4.0" description = "Provides a helper to create sessions for use with Ansys OpenAPI clients." optional = false python-versions = ">=3.9,<4.0" files = [ - {file = "ansys_openapi_common-1.3.0-py3-none-any.whl", hash = "sha256:49997b05b88c8f47e06b912dac499e44bd5593b516b2455aac168273dd08d88d"}, + {file = "ansys_openapi_common-1.4.0-py3-none-any.whl", hash = "sha256:8ace675366cf78a5c940f67bca16194ef56cb00ae68e5a5183a96d5757861f12"}, ] [package.dependencies] @@ -2835,37 +2829,51 @@ python-versions = ">=3.6" files = [ {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b42169467c42b692c19cf539c38d4602069d8c1505e97b86387fcf7afb766e1d"}, {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:07238db9cbdf8fc1e9de2489a4f68474e70dffcb32232db7c08fa61ca0c7c462"}, - {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:d92f81886165cb14d7b067ef37e142256f1c6a90a65cd156b063a43da1708cfd"}, {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:fff3573c2db359f091e1589c3d7c5fc2f86f5bdb6f24252c2d8e539d4e45f412"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-manylinux_2_24_aarch64.whl", hash = "sha256:aa2267c6a303eb483de8d02db2871afb5c5fc15618d894300b88958f729ad74f"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:840f0c7f194986a63d2c2465ca63af8ccbbc90ab1c6001b1978f05119b5e7334"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:024cfe1fc7c7f4e1aff4a81e718109e13409767e4f871443cbff3dba3578203d"}, {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-win32.whl", hash = "sha256:c69212f63169ec1cfc9bb44723bf2917cbbd8f6191a00ef3410f5a7fe300722d"}, {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-win_amd64.whl", hash = "sha256:cabddb8d8ead485e255fe80429f833172b4cadf99274db39abc080e068cbcc31"}, {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:bef08cd86169d9eafb3ccb0a39edb11d8e25f3dae2b28f5c52fd997521133069"}, {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:b16420e621d26fdfa949a8b4b47ade8810c56002f5389970db4ddda51dbff248"}, - {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:b5edda50e5e9e15e54a6a8a0070302b00c518a9d32accc2346ad6c984aacd279"}, {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:25c515e350e5b739842fc3228d662413ef28f295791af5e5110b543cf0b57d9b"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-manylinux_2_24_aarch64.whl", hash = "sha256:1707814f0d9791df063f8c19bb51b0d1278b8e9a2353abbb676c2f685dee6afe"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:46d378daaac94f454b3a0e3d8d78cafd78a026b1d71443f4966c696b48a6d899"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:09b055c05697b38ecacb7ac50bdab2240bfca1a0c4872b0fd309bb07dc9aa3a9"}, {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-win32.whl", hash = "sha256:53a300ed9cea38cf5a2a9b069058137c2ca1ce658a874b79baceb8f892f915a7"}, {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-win_amd64.whl", hash = "sha256:c2a72e9109ea74e511e29032f3b670835f8a59bbdc9ce692c5b4ed91ccf1eedb"}, {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:ebc06178e8821efc9692ea7544aa5644217358490145629914d8020042c24aa1"}, {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:edaef1c1200c4b4cb914583150dcaa3bc30e592e907c01117c08b13a07255ec2"}, - {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:7048c338b6c86627afb27faecf418768acb6331fc24cfa56c93e8c9780f815fa"}, {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d176b57452ab5b7028ac47e7b3cf644bcfdc8cacfecf7e71759f7f51a59e5c92"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-manylinux_2_24_aarch64.whl", hash = "sha256:1dc67314e7e1086c9fdf2680b7b6c2be1c0d8e3a8279f2e993ca2a7545fecf62"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:3213ece08ea033eb159ac52ae052a4899b56ecc124bb80020d9bbceeb50258e9"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:aab7fd643f71d7946f2ee58cc88c9b7bfc97debd71dcc93e03e2d174628e7e2d"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-win32.whl", hash = "sha256:5c365d91c88390c8d0a8545df0b5857172824b1c604e867161e6b3d59a827eaa"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-win_amd64.whl", hash = "sha256:1758ce7d8e1a29d23de54a16ae867abd370f01b5a69e1a3ba75223eaa3ca1a1b"}, {file = "ruamel.yaml.clib-0.2.8-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:a5aa27bad2bb83670b71683aae140a1f52b0857a2deff56ad3f6c13a017a26ed"}, {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c58ecd827313af6864893e7af0a3bb85fd529f862b6adbefe14643947cfe2942"}, {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-macosx_12_0_arm64.whl", hash = "sha256:f481f16baec5290e45aebdc2a5168ebc6d35189ae6fea7a58787613a25f6e875"}, - {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:3fcc54cb0c8b811ff66082de1680b4b14cf8a81dce0d4fbf665c2265a81e07a1"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-manylinux_2_24_aarch64.whl", hash = "sha256:77159f5d5b5c14f7c34073862a6b7d34944075d9f93e681638f6d753606c6ce6"}, {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:7f67a1ee819dc4562d444bbafb135832b0b909f81cc90f7aa00260968c9ca1b3"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:4ecbf9c3e19f9562c7fdd462e8d18dd902a47ca046a2e64dba80699f0b6c09b7"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:87ea5ff66d8064301a154b3933ae406b0863402a799b16e4a1d24d9fbbcbe0d3"}, {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-win32.whl", hash = "sha256:75e1ed13e1f9de23c5607fe6bd1aeaae21e523b32d83bb33918245361e9cc51b"}, {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-win_amd64.whl", hash = "sha256:3f215c5daf6a9d7bbed4a0a4f760f3113b10e82ff4c5c44bec20a68c8014f675"}, {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1b617618914cb00bf5c34d4357c37aa15183fa229b24767259657746c9077615"}, {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:a6a9ffd280b71ad062eae53ac1659ad86a17f59a0fdc7699fd9be40525153337"}, - {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:665f58bfd29b167039f714c6998178d27ccd83984084c286110ef26b230f259f"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-manylinux_2_24_aarch64.whl", hash = "sha256:305889baa4043a09e5b76f8e2a51d4ffba44259f6b4c72dec8ca56207d9c6fe1"}, {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:700e4ebb569e59e16a976857c8798aee258dceac7c7d6b50cab63e080058df91"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:e2b4c44b60eadec492926a7270abb100ef9f72798e18743939bdbf037aab8c28"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e79e5db08739731b0ce4850bed599235d601701d5694c36570a99a0c5ca41a9d"}, {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-win32.whl", hash = "sha256:955eae71ac26c1ab35924203fda6220f84dce57d6d7884f189743e2abe3a9fbe"}, {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-win_amd64.whl", hash = "sha256:56f4252222c067b4ce51ae12cbac231bce32aee1d33fbfc9d17e5b8d6966c312"}, {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:03d1162b6d1df1caa3a4bd27aa51ce17c9afc2046c31b0ad60a0a96ec22f8001"}, {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:bba64af9fa9cebe325a62fa398760f5c7206b215201b0ec825005f1b18b9bccf"}, - {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:9eb5dee2772b0f704ca2e45b1713e4e5198c18f515b52743576d196348f374d3"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-manylinux_2_24_aarch64.whl", hash = "sha256:a1a45e0bb052edf6a1d3a93baef85319733a888363938e1fc9924cb00c8df24c"}, {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:da09ad1c359a728e112d60116f626cc9f29730ff3e0e7db72b9a2dbc2e4beed5"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:184565012b60405d93838167f425713180b949e9d8dd0bbc7b49f074407c5a8b"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a75879bacf2c987c003368cf14bed0ffe99e8e85acfa6c0bfffc21a090f16880"}, {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-win32.whl", hash = "sha256:84b554931e932c46f94ab306913ad7e11bba988104c5cff26d90d03f68258cd5"}, {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-win_amd64.whl", hash = "sha256:25ac8c08322002b06fa1d49d1646181f0b2c72f5cbc15a85e80b4c30a544bb15"}, {file = "ruamel.yaml.clib-0.2.8.tar.gz", hash = "sha256:beb2e0404003de9a4cab9753a8805a8fe9320ee6673136ed7f04255fe60bb512"}, @@ -3561,4 +3569,4 @@ examples = ["ipywidgets", "jupyterlab", "lxml", "pandas", "plotly", "tabulate"] [metadata] lock-version = "2.0" python-versions = "^3.9.0" -content-hash = "517f438a7e1c8e963b29dcf5e48dc8419d4619a6a5707b5cf955983c2c69b504" +content-hash = "1379af0bc55db6d8cdf4ddf58f95e4b313e266539258ca96b896ed2684be288e" diff --git a/pyproject.toml b/pyproject.toml index f43d1a11..9c7ce1b4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,7 +40,7 @@ python = "^3.9.0" # Packages for core library ansys-openapi-common = "< 2.0.0" -ansys-grantami-bomanalytics-openapi = { git = 'https://github.com/ansys/grantami-bomanalytics-openapi.git', subdirectory = 'ansys-grantami-bomanalytics-openapi', rev = '4a34858' } +ansys-grantami-bomanalytics-openapi = "2.0.0" xmlschema = "^2.4.0" # Packages for the examples extra From 6bcbc6410887ee213c1d19188340ffbb0335484c Mon Sep 17 00:00:00 2001 From: Andy Grigg Date: Mon, 15 Jan 2024 07:27:26 -0500 Subject: [PATCH 273/275] Maint/codacy fixes (#388) * Codacy fixes * Add dummy variable --- src/ansys/grantami/bomanalytics/_item_results.py | 4 ++-- src/ansys/grantami/bomanalytics/bom_types/_bom_types.py | 1 - src/ansys/grantami/bomanalytics/bom_types/_bom_writer.py | 2 +- src/ansys/grantami/bomanalytics/queries.py | 5 ++--- tests/test_argument_managers.py | 6 +++--- tests/test_connection.py | 2 +- tests/test_integration_tests.py | 2 +- tests/test_mocked_responses/test_sustainability.py | 2 +- 8 files changed, 11 insertions(+), 13 deletions(-) diff --git a/src/ansys/grantami/bomanalytics/_item_results.py b/src/ansys/grantami/bomanalytics/_item_results.py index 4786b498..a666adaf 100644 --- a/src/ansys/grantami/bomanalytics/_item_results.py +++ b/src/ansys/grantami/bomanalytics/_item_results.py @@ -510,7 +510,6 @@ def create_transport_summary( def create_material_summary( cls, result: models.CommonSustainabilityMaterialSummaryEntry ) -> "MaterialSummaryResult": - reference_type = cls.parse_reference_type(result.record_reference.reference_type) """Returns a MaterialSummaryResult instantiated from the low-level API model. Parameters @@ -525,9 +524,10 @@ def create_material_summary( """ # TODO one of these is a bucket for all other materials that do not contribute >2% EE. Worth separating it? # It does not have a valid record reference or contributors. + reference_type = cls.parse_reference_type(result.record_reference.reference_type) return MaterialSummaryResult( material_reference=MaterialReference( - reference_type=cls.parse_reference_type(result.record_reference.reference_type), + reference_type=reference_type, reference_value=result.record_reference.reference_value, ), identity=result.identity, diff --git a/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py b/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py index abaa434d..42797a60 100644 --- a/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py +++ b/src/ansys/grantami/bomanalytics/bom_types/_bom_types.py @@ -97,7 +97,6 @@ def _write_custom_fields(self, obj: Dict, bom_writer: BoMWriter) -> None: bom_writer: BoMWriter Helper object that maintains information about the global namespaces. """ - pass class DimensionType(Enum): diff --git a/src/ansys/grantami/bomanalytics/bom_types/_bom_writer.py b/src/ansys/grantami/bomanalytics/bom_types/_bom_writer.py index 506be21c..eabcc20b 100644 --- a/src/ansys/grantami/bomanalytics/bom_types/_bom_writer.py +++ b/src/ansys/grantami/bomanalytics/bom_types/_bom_writer.py @@ -75,5 +75,5 @@ def convert_bom_to_dict(self, obj: BillOfMaterials) -> Dict: if k != "": raw_obj[f"@xmlns:{k}"] = v else: - raw_obj[f"@xmlns"] = v + raw_obj["@xmlns"] = v return raw_obj diff --git a/src/ansys/grantami/bomanalytics/queries.py b/src/ansys/grantami/bomanalytics/queries.py index 1e117615..a818e778 100644 --- a/src/ansys/grantami/bomanalytics/queries.py +++ b/src/ansys/grantami/bomanalytics/queries.py @@ -541,7 +541,6 @@ def _run_query( it to the ``self._call_api()`` method, which performs the actual call. It then passes the result to the ``QueryResultFactory`` class to build the corresponding result object. """ - pass @abstractmethod def _validate_parameters(self) -> None: @@ -1529,7 +1528,7 @@ def _validate_bom(self, bom: str) -> _BomFormat: try: _bom_format = valid_bom_formats[root.tag] except KeyError: - raise ValueError(f"Invalid input BoM. Ensure the document is compliant with the expected XML schema.") + raise ValueError("Invalid input BoM. Ensure the document is compliant with the expected XML schema.") if _bom_format not in self._supported_bom_formats: raise ValueError(f"BoM format {_bom_format.name} ({_bom_format.value}) is not supported by this query.") @@ -1641,7 +1640,7 @@ def _validate_items(self) -> None: Error to raise if no items have been added to the query. """ if not self._data.populated_inputs: - raise ValueError(f"No BoM has been added to the query.") + raise ValueError("No BoM has been added to the query.") class BomComplianceQuery(_ComplianceMixin, _BomQueryBuilder): diff --git a/tests/test_argument_managers.py b/tests/test_argument_managers.py index f643e120..5efaf0e6 100644 --- a/tests/test_argument_managers.py +++ b/tests/test_argument_managers.py @@ -175,12 +175,12 @@ class TestBomFormatEnum: ], ) def test_valid_values_by_namespace(self, value): - enum_value = queries._BomFormat(value) + queries._BomFormat(value) def test_invalid_value(self): value = "SomeOtherNotValidValue" with pytest.raises(ValueError, match=f"'{value}' is not a valid _BomFormat"): - enum_value = queries._BomFormat(value) + queries._BomFormat(value) def test_by_name(self): - value = queries._BomFormat["bom_xml1711"] + _ = queries._BomFormat["bom_xml1711"] diff --git a/tests/test_connection.py b/tests/test_connection.py index 2523b843..8a140f2c 100644 --- a/tests/test_connection.py +++ b/tests/test_connection.py @@ -115,7 +115,7 @@ def test_no_licenses_raises_informative_error(self): no_license_response = {"LogMessages": [], "RestrictedSubstances": False, "Sustainability": False} m.get(requests_mock.ANY, json=no_license_response) with pytest.raises(LicensingException, match="no valid licenses "): - connection = Connection(api_url=sl_url).with_anonymous().connect() + Connection(api_url=sl_url).with_anonymous().connect() @pytest.mark.integration @pytest.mark.parametrize("trailing_slash", [True, False]) diff --git a/tests/test_integration_tests.py b/tests/test_integration_tests.py index 912b929c..1b4df4a7 100644 --- a/tests/test_integration_tests.py +++ b/tests/test_integration_tests.py @@ -127,7 +127,7 @@ def test_compliance(self, bom, connection_with_db_variants): def test_impacted_substances_2301(self, connection, bom2301): query = queries.BomImpactedSubstancesQuery().with_bom(bom2301).with_legislation_ids(LEGISLATIONS) - response = connection.run(query) + connection.run(query) assert connection.last_response.request.url.endswith("bom2301") diff --git a/tests/test_mocked_responses/test_sustainability.py b/tests/test_mocked_responses/test_sustainability.py index aa25780d..7e25bc73 100644 --- a/tests/test_mocked_responses/test_sustainability.py +++ b/tests/test_mocked_responses/test_sustainability.py @@ -104,7 +104,7 @@ def test_two_root_parts_emits_warning(self, mock_connection): ) mock_response = json.dumps(mock_connection.sanitize_for_serialization(two_parts_response)) with pytest.warns(UserWarning, match="single root part"): - response = self.get_mocked_response(mock_connection, response=mock_response) + self.get_mocked_response(mock_connection, response=mock_response) class TestBomSustainabilitySummary(BaseMockTester): From d876d2f05d81239eb9763413d317e8faa540a4c0 Mon Sep 17 00:00:00 2001 From: Andy Grigg Date: Mon, 15 Jan 2024 07:28:03 -0500 Subject: [PATCH 274/275] Add metapackage instructions (#390) --- README.rst | 7 +++++++ doc/source/getting_started/index.rst | 6 ++++++ 2 files changed, 13 insertions(+) diff --git a/README.rst b/README.rst index a6ce9723..0e8b6964 100644 --- a/README.rst +++ b/README.rst @@ -54,6 +54,13 @@ Install the ``ansys-grantami-bomanalytics`` package with this code: pip install ansys-grantami-bomanalytics +To install a release compatible with a specific version of Granta MI, use the +`PyGranta `_ meta-package with a requirement specifier: + +.. code:: + + pip install pygranta==2023.2.0 + Alternatively, clone and install this package with this code: .. code:: diff --git a/doc/source/getting_started/index.rst b/doc/source/getting_started/index.rst index 794cf14a..dd3839ab 100644 --- a/doc/source/getting_started/index.rst +++ b/doc/source/getting_started/index.rst @@ -18,6 +18,12 @@ this code: pip install ansys-grantami-bomanalytics +To install a release compatible with a specific version of Granta MI, use the +`PyGranta `_ meta-package with a requirement specifier: + +.. code:: + + pip install pygranta==2023.2.0 Alternatively, to install the latest from `ansys-grantami-bomanalytics GitHub `_, use this code: From 0231a35479fc76ba38549231f58c9a1d35b70a33 Mon Sep 17 00:00:00 2001 From: Ludovic Steinbach Date: Tue, 16 Jan 2024 14:16:55 +0100 Subject: [PATCH 275/275] Docs: update product help links (#391) * Fix broken reference * Update Product Docs URL --- doc/source/api/query_type_differences.rst | 2 +- doc/source/conf.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/source/api/query_type_differences.rst b/doc/source/api/query_type_differences.rst index a260ecb5..1692029a 100644 --- a/doc/source/api/query_type_differences.rst +++ b/doc/source/api/query_type_differences.rst @@ -40,7 +40,7 @@ included in the analysis and returned in the response. BoM-based queries ~~~~~~~~~~~~~~~~~ In a BoM-based query, only child specifications are included in the analysis and returned in the -response. Considering a :class:`~.BoMComplianceQuery` containing the root part +response. Considering a :class:`~.BomComplianceQuery` containing the root part in structure described above, only the child specifications are included in the analysis and returned in the response. The child part and material are *not* included unless they are explicitly added to the BoM. diff --git a/doc/source/conf.py b/doc/source/conf.py index 5c65af74..b95fa25a 100755 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -101,7 +101,7 @@ extlinks = { 'MI_docs': ( - 'https://miniature-fortnight-dc09be55.pages.github.io/granta/v241/en/RS_and_Sustainability/%s', + 'https://ansyshelp.ansys.com/account/secured?returnurl=/Views/Secured/Granta/v241/en/RS_and_Sustainability/%s', None ) }