From fcc81239661f5226b1c0a294d8f4323ed5660903 Mon Sep 17 00:00:00 2001 From: adish-rmr Date: Mon, 10 Nov 2025 22:02:59 +0100 Subject: [PATCH] update new echa --- README.md | 0 data/output.pdf | Bin 0 -> 199866 bytes data/summary.html | 1 + debug_echa_find.py | 410 ++++++++++++++++- REFACTORING.md => docs/REFACTORING.md | 0 .../services => old}/echa_find.py | 0 .../pif_compiler/services => old}/echa_pdf.py | 12 +- .../services => old}/echa_process.py | 0 pyproject.toml | 3 + src/pif_compiler/services/__init__.py | 2 +- src/pif_compiler/services/db_utils.py | 37 ++ src/pif_compiler/services/debug_echa_find.py | 0 src/pif_compiler/services/mongo_conn.py | 15 - src/pif_compiler/services/srv_echa.py | 419 ++++++++++++++++++ uv.lock | 312 +++++++++++++ 15 files changed, 1182 insertions(+), 29 deletions(-) delete mode 100644 README.md create mode 100644 data/output.pdf create mode 100644 data/summary.html rename REFACTORING.md => docs/REFACTORING.md (100%) rename {src/pif_compiler/services => old}/echa_find.py (100%) rename {src/pif_compiler/services => old}/echa_pdf.py (98%) rename {src/pif_compiler/services => old}/echa_process.py (100%) create mode 100644 src/pif_compiler/services/db_utils.py delete mode 100644 src/pif_compiler/services/debug_echa_find.py delete mode 100644 src/pif_compiler/services/mongo_conn.py create mode 100644 src/pif_compiler/services/srv_echa.py diff --git a/README.md b/README.md deleted file mode 100644 index e69de29..0000000 diff --git a/data/output.pdf b/data/output.pdf new file mode 100644 index 0000000000000000000000000000000000000000..0f6e3136db28a315da27558eea4b40247afe2edc GIT binary patch literal 199866 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%0DBAX6{|E9_<8dO_zvvifpPRUY~A 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 z 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 z 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\n\t\n\t\t\n \n\t\t\n\t\t\n\t\t\n\t\t\n\t\n\t\n
\n
\n
\n\t
\n

Toxicological information

\n
\n
\n \n
\n
\n
\n \n \n
\n
\n

\n Administrative data\n

\n\t\t
\n\t\t\t\n\t\t
\n
\n
Confidentiality
\n\t\t\t
\n\t\t\n [Empty]\n\t\t\n\t\t\t
\n\t\t
\n\t\t
\n
Justification
\n\t\t\t
\n\n\t\t\n [Empty]\n\t\t\n\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t\t
\n
Use restricted to selected regulatory programmes
\n\t\t\t
\n\t\t\n [Empty]\n\t\t\n\t\t\t
\n\t\t
\n

\n Workers - Hazard via inhalation route\n

\n

\n Systemic effects\n

\n

\n Long term exposure\n

\n\t
\n\t\t
\n\t\t\tHazard assessment conclusion\n\t\t
\n\t
\n\t\t\n\t\t\t DNEL (Derived No Effect Level)\n\t\t\n
\n
\n\t\t
\n\t\t
\n\t\t\tValue\n\t\t
\n\t\t
\n \n77\t\t\n\t\t\t mg/m\xc2\xb3\n\t\t\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tMost sensitive endpoint\n\t\t
\n\t
\n\t\t\n\t\t\t repeated dose toxicity\n\t\t\n
\n
\n\t
\n\t\t
\n\t\t\tRoute of original study\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n

\n DNEL related information\n

\n\t
\n\t\t
\n\t\t\tDNEL derivation method\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n\t
\n\t\t
\n\t\t\tOverall assessment factor (AF)\n\t\t
\n
\n3
\n\t\t
\n\t
\n\t\t
\n\t\t\tDose descriptor starting point\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n\t\t
\n\t\t
\n\t\t\tValue\n\t\t
\n\t\t
\n \n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tModified dose descriptor starting point\n\t\t
\n\t
\n\t\t\n\t\t\t NOAEC\n\t\t\n
\n
\n\t\t
\n\t\t
\n\t\t\tValue\n\t\t
\n\t\t
\n \n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tExplanation for the modification of the dose descriptor starting point\n\t\t
\n\t\t\t
\n [Empty] \t\t\t
\n
\n\t
\n\t\t
\n\t\t\tAF for dose response relationship\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for differences in duration of exposure\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for interspecies differences (allometric scaling)\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for other interspecies differences\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for intraspecies differences\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for the quality of the whole database\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for remaining uncertainties\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n

\n Explanation for hazard conclusion\n

\n\t
\n\t\t
\n\t\t\tExplanation for hazard conclusion\n\t\t
\n\t\t\t
\n [Not publishable] \t\t\t
\n
\n

\n Acute/short term exposure\n

\n\t
\n\t\t
\n\t\t\tHazard assessment conclusion\n\t\t
\n\t
\n\t\t\n\t\t\t low hazard (no threshold derived)\n\t\t\n
\n
\n\t\t
\n\t\t
\n\t\t\tValue\n\t\t
\n\t\t
\n \n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tMost sensitive endpoint\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n\t
\n\t\t
\n\t\t\tRoute of original study\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n

\n DNEL related information\n

\n\t
\n\t\t
\n\t\t\tDNEL derivation method\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n\t
\n\t\t
\n\t\t\tOverall assessment factor (AF)\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n\t
\n\t\t
\n\t\t\tDNEL extrapolated from long term DNEL\n\t\t
\n
\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tDose descriptor starting point\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n\t\t
\n\t\t
\n\t\t\tValue\n\t\t
\n\t\t
\n \n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tModified dose descriptor starting point\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n\t\t
\n\t\t
\n\t\t\tValue\n\t\t
\n\t\t
\n \n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tExplanation for the modification of the dose descriptor starting point\n\t\t
\n\t\t\t
\n [Empty] \t\t\t
\n
\n\t
\n\t\t
\n\t\t\tAF for dose response relationship\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for interspecies differences (allometric scaling)\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for other interspecies differences\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for intraspecies differences\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for the quality of the whole database\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for remaining uncertainties\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n

\n Explanation for hazard conclusion\n

\n\t
\n\t\t
\n\t\t\tExplanation for hazard conclusion\n\t\t
\n\t\t\t
\n [Not publishable] \t\t\t
\n
\n

\n Local effects\n

\n

\n Long term exposure\n

\n\t
\n\t\t
\n\t\t\tHazard assessment conclusion\n\t\t
\n\t
\n\t\t\n\t\t\t no hazard identified\n\t\t\n
\n
\n\t\t
\n\t\t
\n\t\t\tValue\n\t\t
\n\t\t
\n \n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tMost sensitive endpoint\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n

\n DNEL related information\n

\n\t
\n\t\t
\n\t\t\tDNEL derivation method\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n\t
\n\t\t
\n\t\t\tOverall assessment factor (AF)\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n\t
\n\t\t
\n\t\t\tDose descriptor\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n\t\t
\n\t\t
\n\t\t\tValue\n\t\t
\n\t\t
\n \n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tAF for dose response relationship\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for differences in duration of exposure\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for interspecies differences (allometric scaling)\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for other interspecies differences\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for intraspecies differences\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for the quality of the whole database\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for remaining uncertainties\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n

\n Explanation for hazard conclusion\n

\n\t
\n\t\t
\n\t\t\tExplanation for hazard conclusion\n\t\t
\n\t\t\t
\n [Not publishable] \t\t\t
\n
\n

\n Acute/short term exposure\n

\n\t
\n\t\t
\n\t\t\tHazard assessment conclusion\n\t\t
\n\t
\n\t\t\n\t\t\t DNEL (Derived No Effect Level)\n\t\t\n
\n
\n\t\t
\n\t\t
\n\t\t\tValue\n\t\t
\n\t\t
\n \n293\t\t\n\t\t\t mg/m\xc2\xb3\n\t\t\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tMost sensitive endpoint\n\t\t
\n\t
\n\t\t\n\t\t\t irritation (respiratory tract)\n\t\t\n
\n
\n

\n DNEL related information\n

\n\t
\n\t\t
\n\t\t\tDNEL derivation method\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n\t
\n\t\t
\n\t\t\tOverall assessment factor (AF)\n\t\t
\n
\n3
\n\t\t
\n\t
\n\t\t
\n\t\t\tDNEL extrapolated from long term DNEL\n\t\t
\n
\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tDose descriptor starting point\n\t\t
\n\t
\n\t\t\n\t\t\t NOAEC\n\t\t\n
\n
\n\t\t
\n\t\t
\n\t\t\tValue\n\t\t
\n\t\t
\n \n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tAF for dose response relationship\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for interspecies differences (allometric scaling)\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for other interspecies differences\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for intraspecies differences\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for the quality of the whole database\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for remaining uncertainties\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n

\n Explanation for hazard conclusion\n

\n\t
\n\t\t
\n\t\t\tExplanation for hazard conclusion\n\t\t
\n\t\t\t
\n [Not publishable] \t\t\t
\n
\n

\n Workers - Hazard via dermal route\n

\n

\n Systemic effects\n

\n

\n Long term exposure\n

\n\t
\n\t\t
\n\t\t\tHazard assessment conclusion\n\t\t
\n\t
\n\t\t\n\t\t\t DNEL (Derived No Effect Level)\n\t\t\n
\n
\n\t\t
\n\t\t
\n\t\t\tValue\n\t\t
\n\t\t
\n \n180\t\t\n\t\t\t mg/kg bw/day\n\t\t\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tMost sensitive endpoint\n\t\t
\n\t
\n\t\t\n\t\t\t repeated dose toxicity\n\t\t\n
\n
\n\t
\n\t\t
\n\t\t\tRoute of original study\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n

\n DNEL related information\n

\n\t
\n\t\t
\n\t\t\tDNEL derivation method\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n\t
\n\t\t
\n\t\t\tOverall assessment factor (AF)\n\t\t
\n
\n12
\n\t\t
\n\t
\n\t\t
\n\t\t\tDose descriptor starting point\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n\t\t
\n\t\t
\n\t\t\tValue\n\t\t
\n\t\t
\n \n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tModified dose descriptor starting point\n\t\t
\n\t
\n\t\t\n\t\t\t NOAEL\n\t\t\n
\n
\n\t\t
\n\t\t
\n\t\t\tValue\n\t\t
\n\t\t
\n \n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tExplanation for the modification of the dose descriptor starting point\n\t\t
\n\t\t\t
\n [Empty] \t\t\t
\n
\n\t
\n\t\t
\n\t\t\tAF for dose response relationship\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for differences in duration of exposure\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for interspecies differences (allometric scaling)\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for other interspecies differences\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for intraspecies differences\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for the quality of the whole database\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for remaining uncertainties\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n

\n Explanation for hazard conclusion\n

\n\t
\n\t\t
\n\t\t\tExplanation for hazard conclusion\n\t\t
\n\t\t\t
\n [Not publishable] \t\t\t
\n
\n

\n Acute/short term exposure\n

\n\t
\n\t\t
\n\t\t\tHazard assessment conclusion\n\t\t
\n\t
\n\t\t\n\t\t\t no hazard identified\n\t\t\n
\n
\n\t\t
\n\t\t
\n\t\t\tValue\n\t\t
\n\t\t
\n \n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tMost sensitive endpoint\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n\t
\n\t\t
\n\t\t\tRoute of original study\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n

\n DNEL related information\n

\n\t
\n\t\t
\n\t\t\tDNEL derivation method\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n\t
\n\t\t
\n\t\t\tOverall assessment factor (AF)\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n\t
\n\t\t
\n\t\t\tDNEL extrapolated from long term DNEL\n\t\t
\n
\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tDose descriptor starting point\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n\t\t
\n\t\t
\n\t\t\tValue\n\t\t
\n\t\t
\n \n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tModified dose descriptor starting point\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n\t\t
\n\t\t
\n\t\t\tValue\n\t\t
\n\t\t
\n \n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tExplanation for the modification of the dose descriptor starting point\n\t\t
\n\t\t\t
\n [Empty] \t\t\t
\n
\n\t
\n\t\t
\n\t\t\tAF for dose response relationship\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for interspecies differences (allometric scaling)\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for other interspecies differences\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for intraspecies differences\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for the quality of the whole database\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for remaining uncertainties\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n

\n Explanation for hazard conclusion\n

\n\t
\n\t\t
\n\t\t\tExplanation for hazard conclusion\n\t\t
\n\t\t\t
\n [Not publishable] \t\t\t
\n
\n

\n Local effects\n

\n

\n Long term exposure\n

\n\t
\n\t\t
\n\t\t\tHazard assessment conclusion\n\t\t
\n\t
\n\t\t\n\t\t\t no hazard identified\n\t\t\n
\n
\n\t\t
\n\t\t
\n\t\t\tValue\n\t\t
\n\t\t
\n \n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tMost sensitive endpoint\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n

\n DNEL related information\n

\n\t
\n\t\t
\n\t\t\tDNEL derivation method\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n\t
\n\t\t
\n\t\t\tOverall assessment factor (AF)\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n\t
\n\t\t
\n\t\t\tDose descriptor\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n\t\t
\n\t\t
\n\t\t\tValue\n\t\t
\n\t\t
\n \n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tAF for dose response relationship\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for differences in duration of exposure\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for interspecies differences (allometric scaling)\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for other interspecies differences\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for intraspecies differences\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for the quality of the whole database\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for remaining uncertainties\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n

\n Explanation for hazard conclusion\n

\n\t
\n\t\t
\n\t\t\tExplanation for hazard conclusion\n\t\t
\n\t\t\t
\n [Not publishable] \t\t\t
\n
\n

\n Acute/short term exposure\n

\n\t
\n\t\t
\n\t\t\tHazard assessment conclusion\n\t\t
\n\t
\n\t\t\n\t\t\t no hazard identified\n\t\t\n
\n
\n\t\t
\n\t\t
\n\t\t\tValue\n\t\t
\n\t\t
\n \n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tMost sensitive endpoint\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n

\n DNEL related information\n

\n\t
\n\t\t
\n\t\t\tDNEL derivation method\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n\t
\n\t\t
\n\t\t\tOverall assessment factor (AF)\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n\t
\n\t\t
\n\t\t\tDose descriptor starting point\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n\t\t
\n\t\t
\n\t\t\tValue\n\t\t
\n\t\t
\n \n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tAF for dose response relationship\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for interspecies differences (allometric scaling)\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for other interspecies differences\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for intraspecies differences\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for the quality of the whole database\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for remaining uncertainties\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n

\n Explanation for hazard conclusion\n

\n\t
\n\t\t
\n\t\t\tExplanation for hazard conclusion\n\t\t
\n\t\t\t
\n [Not publishable] \t\t\t
\n
\n

\n Workers - Hazard for the eyes\n

\n

\n Local effects\n

\n\t
\n\t\t
\n\t\t\tHazard assessment conclusion\n\t\t
\n\t
\n\t\t\n\t\t\t low hazard (no threshold derived)\n\t\t\n
\n
\n\t
\n\t\t
\n\t\t\tExplanation for hazard conclusion\n\t\t
\n\t\t\t
\n [Not publishable] \t\t\t
\n
\n

\n Additional information - workers\n

\n\t
\n\t\t
\n\t\t\t\n\t\t
\n\t\t\t
\n

B.5.11.3 Worker-DNEL short-term inhalation route

 

Peak airborne exposure to ethylbenzene vapour may cause local respiratory irritation.

 

 

B.5.11.3.1 DNEL based on local respiratory irritation

 

The dose descriptor is obtained from a study on 12 normal human volunteers exposed for 4 h to fluctuating concentrations of ethylbenzene. The exposure consisted of 8 peaks of 200 ppm separated by troughs of 10 ppm with an integrated mean of 98 ppm. No significant difference was found when comparing the reporting of subjective nasal irritation under these conditions with that at a constant exposure to 10 ppm. Similarly, inflammatory biomarkers in nasal secretion were not affected under these exposure conditions. In addition 12 volunteers with self-reported Multiple Chemical Sensitivity (sMCS) were investigated. Nasal irritation reported by the sMCS subjects was again not significantly increased when comparing the fluctuating exposure condition against constant exposure at 10 ppm. But reported irritation was significantly higher in sMCS subjects in comparison to the normal subjects under the high exposure conditions (van Thriel et al., 2003).

 

Thus the dose descriptor is the NOAEC of 98 ppm for 4 h of exposure and 200 ppm for short term exposures of 15 min. Irritation is a concentration specific effect, it is therefore not necessary to modify the dose descriptor to take account of differences in breathing rates between volunteers at rest and active workers. The starting point is therefore 200 ppm for short term exposures and 98 ppm of a prolonged duration up to several hours for the normal worker population. It is pointed out that this starting point will lead to a very conservative DNEL since the NOAEC is the highest concentration investigated. The \xe2\x80\x9ctrue\xe2\x80\x9d NOAEC is not known but certainly is higher.

 

There is a further aspect strongly indicating that the NOAEC of 98 ppm for local respiratory irritation is highly conservative: after short term exposure of volunteers (one sniff from a squeeze bottle) the odour detection threshold was in the range of 20 ppm with a broad individual variation. In contrast, anosmics that will only react to (true) trigeminal irritation reported a nasal pungency threshold of 10100 ppm (Cometto-Muniz, 1994). As in the study of van Thriel et al. (2003) subjective reporting was the endpoint recorded, this subjective reporting may not represent true sensory irritation but may be confounded by olfaction. (Problems associated with defining the threshold for olfaction are demonstrated by the recent study of Cometto-Muniz and Abraham (2009). With a more sensitive approach as compared to the 1994-study, the odour threshold for alkylbenzenes decreased by several orders of magnitude being 6 ppb for ethylbenzene.)

 


Table B.1: Assessment factors and DNEL calculation for worker-DNEL short-term inhalation local effects

Uncertainties

AF

Justification

Interspecies differences

-

The starting point is obtained from human data so it is not necessary to apply a factor to take account of interspecies differences.

Intraspecies differences

3

There are no data to quantify variability in susceptibility to the irritant effects of ethylbenzene in the human population. Since irritant effects relate to the concentration at the target site it is not necessary to apply a factor to take account of toxicokinetic differences. For workers REACH (2008) proposes an assessment factor of 5. However, following a review of data on respiratory irritants in human volunteers, ECETOC (2003. 2010) concluded that variations between individuals were small. In addition, the population exposed in the workplace is highly homogeneous and the health of the work force is typically good (healthy worker effect). The analysis of assessment factors conducted by ECETOC also showed that estimates of the upper 95th percentile of the distribution of variability in toxicokinetic and toxicodynamic parameters for populations of different ages, genders and disease states supports use of an assessment factor of 3 to account for intraspecies variability within workers.

The factor of 3 proposed by ECETOC will be used for this study in humans.

Differences in duration of exposure

1

It is not necessary to apply a factor to take account of duration of exposure.

Dose response and endpoint specific/severity issues

1

The starting point is a NOAEC. In this study, normal volunteers exposed to 200 ppm for short term exposure peaks and to 98 ppm for 4 h did not report irritation. In contrast, slight irritation was reported by a selected group of sMCS persons with a high subjective sensitivity.

Quality of database

1

The quality of the database for this endpoint is adequate and the study was conducted to modern standards. It is therefore not necessary to apply a factor to take account of deficiencies in the quality of the data.

Overall assessment factor: 3

Endpoint specific DNEL: 200/3 = 67 ppm for short term exposure peaks (15 min)

Or 98/3 = 33 ppm for single exposures over several hours

B.5.11.3.2 Selection of worker-DNEL short-term inhalation

 

A DNEL of 67 ppm was calculated for respiratory tract irritation for short-term exposures of about 15 min. For single exposures of a few hours a DNEL of 33 ppm was derived.

 

 

B.5.11.4 Worker-DNEL long-term inhalation route

 

For long-term repeated exposure the potential of ethylbenzene to induce ototoxicity and developmental toxicity should be discussed. For these endpoints the available human data do not provide sufficient information to allow a human dose descriptor to be identified. A dose descriptor for these endpoints can be identified from animal data. Since the dose-response relationship and evidence base for each endpoint is different it is not clear which is the critical endpoint for risk assessment of long-term repeated exposure. It will therefore be necessary to calculate separate endpoint specific DNELs for each effect to identify the critical long-term DNEL.

 

 


B.5.11.4.1 Endpoint specific DNEL for ototoxicity

 

Repeated inhalation exposure to ethylbenzene vapor was irreversibly ototoxic in rats (Gagnaire et al., 2007). Auditory dysfunction characterised by an elevation of hearing thresholds was localised in the mid frequencies and corresponded to the loss of cochlear outer hair cells, the sensory cells in the inner ear. Hearing loss and cell damage increased with exposure concentrations. In this 90 day rat inhalation study (6 hours/day, 6 day/week) the NOAEC for ototoxicity was extrapolated to be 114 ppm (500 mg/m\xc2\xb3) based on destruction of outer hair cells in row 3 occurring already at 200 ppm. In contrast, no effect on hearing ability as indicated by audiometric thresholds was observed at 200 ppm. According to several case reports where hearing deficits in humans occupationally exposed to organic solvents or from people after solvent abuse are described (for review cf Risk Assessment Reports on toluene and styrene), these rat data are taken to be relevant for humans.

 

Thus, this extrapolated NOAEC of 114 ppm (500 mg/m\xc2\xb3) is taken as dose descriptor for DNEL derivation of repeated dose toxicity.

 

The extrapolated NOAEC of 114 ppm (500 mg/m\xc2\xb3) from the rat is (1) multiplied with a factor of 0.45 (for rat absorption percentage of 45%), divided by a divisor of 0.65 (for human absorption percentage after inhalation of 65%) and (2) multiplied by a factor of 6.7/10 for activity-driven differences of respiratory volumes in workers. Further differences regarding the experimental inhalation duration (6 hours/day, 6 days/week) and the working conditions (8 hours/day, 5 days/week) are not considered, because they roughly balance each other.

 

The calculation results in an adjusted inhalation starting point of 232 mg/m\xc2\xb3 (500 x 0.45/0.65 x 6.7/10).

 

In the overall assessment it has also be taken into consideration that the starting point to define ototoxicity is not auditory dysfunction but histopathological effects on the outer hair cells of the cochlea. Numerous investigations have shown that audiometric hearing deficits occur at higher exposure concentrations than (small) losses of hair cells in the outer row 3 of the cochlea. While the audiometric effects define the impact of ototoxicity for workers, the use of histopathological effects for the starting point implies a further conservative factor.

 

Hearing loss is not a specific effect for ethylbenzene but has also been found with other aromatic solvents like styrene, toluene, or xylenes. Detailed mechanistic studies, especially with styrene, have demonstrated that ototoxicity is exerted by the unmetabolized parent chemical. Studies in rats with styrene and toluene showed that hearing loss occurs within a few days of the start of exposure and although it does not increase in severity with prolongation of exposure, the initial effect is irreversible. According to Gangnaire et al. (2007) ethylbenzene led to maximal hearing impairment after about 4 weeks without further deterioration by prolongation of exposure.

 

Table B.2: Assessment factors and DNEL calculation for worker DNEL long-term inhalation for ototoxicity

Uncertainties

AF

Justification

Interspecies differences

1

For interspecies variability the assessment factors proposed by ECETOC (2003, 2010) are used. The dose descriptor was obtained from an inhalation study and is being used to derive an inhalation DNEL. It is therefore not necessary to apply an allometric scaling factor to take account of differences in basal metabolic rates between animals and humans. According to ECETOC the additional assessment factor of 2.5 to quantify other differences between animals and humans that could affect interspecies extrapolation is scientifically not justified and a factor of 1 is appropriate. On this basis the default factor of 1 to account for other species differences will be applied.

Intraspecies differences

3

There are no data to quantify variability in susceptibility to the effects of long-term exposure to ethylbenzene in the human population. However the population exposed in the workplace is highly homogeneous and the health of the work force is typically good (healthy worker effect) while metabolic differences due to genetic polymorphisms do not automatically require an increased assessment factor since alternative pathways of elimination are often present (ECETOC, 2003, 2010). The analysis of assessment factors conducted by ECETOC also showed that estimates of the upper 95th percentile of the distribution of variability in toxicokinetic and toxicodynamic parameters for populations of different ages, genders and disease states supports use of an assessment factor of 3 to account for intraspecies variability within workers.The default factor of 3 for workers as proposed by ECETOC will therefore be used to take account of intraspecies variability.In total there is a combined inter- and intraspecies assessment factor of 3 that takes into account that the target tissue (outer hair cells in the cochlea, anatomical structure and blood supply of the cochlea) is identical in rats and humans. Furthermore, not hearing deficits but histopatological alterations of the cochlea were used as starting point. As histopathology is more sensitive than the physiological effects this is a conservative starting point per se.

Differences in duration of exposure

1

The dose descriptor was obtained from a 90-day inhalation study. Although the DNEL is to be used to assess long-term repeated exposure there is strong evidence showing that the ototoxic effects of ethylbenzene have already occurred within the first four weeks of initial exposure and did not progress in severity with further exposure. On this basis, the duration of this study is adequate for the endpoint being studied and it is not necessary to apply a factor to take account of differences in duration of exposure.

Dose response and endpoint specific/severity issues

1

As an extrapolated NOAEC for the most sensitive endpoint, i.e. histopathological alterations of cochlear hair cells, was used an additional assessment factor is not warranted. The study encompassed a range of concentrations and durations of exposure and provided reliable information on the dose-response relationship and severity of effect.

Quality of database

1

The findings from the key study are supported by findings from several additional studies with similar aromatic solvents conducted to modern regulatory standards by separate groups of researchers. Therefore it is not necessary to apply an additional factor.  

Overall assessment factor:  3

Endpoint specific DNEL: 232/3 = 77 mg/m\xc2\xb3 (8-hours) corresponding to 17.5 ppm

B.5.11.4.2 Endpoint specific DNEL for developmental toxicity

 

For DNEL derivation with regard to developmental toxicity two study types can be taken into consideration: (multi) generation and prenatal toxicity studies.

 

B.5.11.4.2a DNEL based on (multi) generation studies

 

For definition of a DNEL two studies are available: A guideline 2-generation study with an indication of slight foetotoxicity (reduced foetal body weight and occasional increases in skeletal variations) in the presence of maternal toxicity with a NOAEC for foetal and maternal toxicity of 500 ppm and a preceding probe 1-generation reproduction toxicity study with a NOAEC of 100 ppm based on increased postnatal mortality and body weight gain depression in the offspring. As a general strategy, the guideline 2-generation study with a large number of experimental animals should have precedent over the probe study with a more limited number of animals. Furthermore, the specific life stages relevant for derivation of a DNEL long-tem for workers have to be defined.

 

While exposure during pregnancy and lactation (via the milk) might occur in female workers under rare circumstances (e.g. if maternity leave is not taken), it is not possible that inhalation exposure at the workplace will occur in humans directly after weaning. Therefore, only effects found in offspring until the date of weaning should be taken into consideration to derive a long-term DNEL for workers, but not effects occurring in the offspring exposed by direct inhalation after weaning. A detailed evaluation of the probe 1-generation study leads to a NOAEC for the offspring until weaning of 500 ppm including body weight development and postnatal mortality. This corresponds to the NOAEC of the guideline 2-generation study.

 

The NOAEC for developmental effects relevant for the exposure situation at the workplace is 500 ppm with an exposure schedule of 6h/d, 7 d/week. Transformation to the workplace situation (8h/d; 5d/week) would lead to 525 ppm (500 x 6/8 x 7/5), corresponding to 2300 mg/m\xc2\xb3. This NOAEC from the rat is (1) multiplied with a factor of 0.45 (for rat absorption percentage of 45 %) and divided by 0.65 (for human absorption percentage of 65 %) and (2) multiplied by a factor of 0.67 for activity differences of respiratory volumes in workers.

 

The adjusted starting point is therefore 1070 mg/m\xc2\xb3.

 


Table B.3: Assessment factors and DNEL calculation for worker DNEL long-term inhalation for developmental toxicity (generation studies)

Uncertainties

AF

Justification

Interspecies differences

1

For interspecies variability the assessment factors proposed by ECETOC (2003, 2010) are used. The dose descriptor was obtained from an inhalation study and is being used to derive an inhalation DNEL. It is therefore not necessary to apply an allometric scaling factor to take account of differences in basal metabolic rates between animals and humans. According to ECETOC the additional assessment factor of 2.5 to quantify other differences between animals and humans that could affect interspecies extrapolation is scientifically not justified and a factor of 1 is appropriate. On this basis the default factor of 1 to account for other species differences will be applied.

Intraspecies differences

3

There are no data to quantify variability in susceptibility to the effects of long-term exposure to ethylbenzene in the human population. However the population exposed in the workplace is highly homogeneous and the health of the work force is typically good (healthy worker effect) while metabolic differences due to genetic polymorphisms do not automatically require an increased assessment factor since alternative pathways of elimination are often present (ECETOC, 2003, 2010). The analysis of assessment factors conducted by ECETOC also showed that estimates of the upper 95th percentile of the distribution of variability in toxicokinetic and toxicodynamic parameters for populations of different ages, genders and disease states supports use of an assessment factor of 3 to account for intraspecies variability within workers.

The default factor of 3 for workers as proposed by ECETOC will therefore be used to take account of intraspecies variability.

Differences in duration of exposure

1

The NOAEC was derived from the probe 1-generation and the 2-generation study starting from exposure of young adult animals of the F0 generation up to weaning of the F1 generation. This represents a worst case scenario for workers being exposed from the start of their working life, during pregnancy up to the end of the breast feeding period without maternity leave. An assessment factor of 1 is therefore appropriate.

Dose response and endpoint specific/severity issues

1

As 500 ppm was a clear NOAEC for developmental effects in F1 offspring before weaning and start of direct inhalation exposure, an assessment factor is not warranted in this respect.

Quality of database

1

The key study was conducted to modern regulatory standards and was adequately reported. On this basis the quality of the database is not considered to contribute uncertainty and it is therefore not necessary to apply an additional factor.

Overall assessment factor:  3

Endpoint specific DNEL: 1070/3 = 357 mg/m\xc2\xb3 (8-hour) corresponding to 81 ppm

B.5.11.4.2b DNEL based on prenatal toxicity studies

 

The derivation of the DNEL is based on the prenatal toxicity study in rats of Saillenfait et al. (2003) at exposure concentrations of 100, 500, 1000, and 2000 ppm during gestation days 6-20 with a NOAEC of 500 ppm for an exposure regime of 6 h/d throughout gestation days 6-20.

 

This NOAEC has to be adjusted by a factor of 6/8 to account for different daily exposure durations leading to 375 ppm. The dams were exposed every day during pregnancy and not at 5 d/week, as would have been workers. Due to the short duration of pregnancy in rats this fact is not taken into account by a factor of 7/5, leading to a more conservative DNEL derivation.The NOAEC of 375 ppm from the rat is (1) multiplied with a factor of 0.45 (for rat absorption percentage of 45 %) and divided by 0.65 (for human absorption percentage of 65 %) and (2) multiplied by a factor of 0.67 for activity differences of respiratory volumes in workers.

 

The adjusted starting point is therefore 174 ppm.


Table B.4: Assessment factors and DNEL calculation for worker DNEL long-term inhalation for developmental toxicity (prenatal toxicity studies)

Uncertainties

AF

Justification

Interspecies differences

1

For interspecies variability the assessment factors proposed by ECETOC (2003, 2010) are used. The dose descriptor was obtained from an inhalation study and is being used to derive an inhalation DNEL. It is therefore not necessary to apply an allometric scaling factor to take account of differences in basal metabolic rates between animals and humans. According to ECETOC the additional assessment factor of 2.5 to quantify other differences between animals and humans that could affect interspecies extrapolation is scientifically not justified and a factor of 1 is appropriate. On this basis the default factor of 1 to account for other species differences will be applied.

Intraspecies differences

3

There are no data to quantify variability in susceptibility to the effects of long-term exposure to ethylbenzene in the human population. However the population exposed in the workplace is highly homogeneous and the health of the work force is typically good (healthy worker effect) while metabolic differences due to genetic polymorphisms do not automatically require an increased assessment factor since alternative pathways of elimination are often present (ECETOC, 2003, 2010). The analysis of assessment factors conducted by ECETOC also showed that estimates of the upper 95th percentile of the distribution of variability in toxicokinetic and toxicodynamic parameters for populations of different ages, genders and disease states supports use of an assessment factor of 3 to account for intraspecies variability within workers.

The default factor of 3 for workers as proposed by ECETOC will therefore be used to take account of intraspecies variability.

Differences in duration of exposure

1

The NOAEC was derived from a prenatal toxicity study with an exposure regime from gestation day 6 up to the end of pregnancy at gestation day 20. An assessment factor of 1 is therefore appropriate.

Dose response and endpoint specific/severity issues

1

As 500 ppm was a clear NOAEC for developmental effects, an assessment factor is not warranted in this respect.

Quality of database

1

The key study was conducted to modern regulatory standards and was adequately reported. On this basis the quality of the database is not considered to contribute uncertainty and it is therefore not necessary to apply an additional factor.

Overall assessment factor:  3

Endpoint specific DNEL: 174/3 = 58 ppm (8-hour) corresponding to 255 mg/m\xc2\xb3

B.5.11.4.3 Selection of worker-DNEL long-term inhalation

 

The most sensitive endpoint-specific DNEL is that for ototoxicity. This endpoint is relevant for workers. So the endpoint specific DNEL for ototoxicity is identified as the worker-DNEL long-term inhalation.

 

The worker DNEL long-term inhalation route is 17.5 ppm (8-hr TWA).

 

 

B.5.11.5 Worker-DNEL long-term dermal route

 

No information is available for systemic toxicity after repeated dermal exposure. Therefore the extrapolated NOAEC of 114 ppm (500 mg/m\xc2\xb3) based on ototoxicity from the 90 day inhalation rat study is taken for the dermal route, ototoxicity being the critical health effect leading to the lowest worker-DNEL long-term by inhalation.

 

Expressed as (external) dose the value of 500 mg/m\xc2\xb3 corresponds to 190 mg/kg/day (500 mg/m\xc2\xb3 x default respiratory volume for the rat for 8 hours of 0.38 m\xc2\xb3/kg). With a rat adsorption percentage of 45% after inhalation the internal starting point corresponds to 86 mg/kg/day (190 mg/kg/day x 0.45).

 

It is necessary to convert this internal inhalative dose to an equivalent external dermal dose. There are several studies investigating dermal penetration of ethylbenzene but most of them have severe deficits, either using preparations not relevant for the possible exposure scenarios of ethylbenzene or not allowing for evaporation after dermal contact. The OECD test guideline for skin absorption studies describes a device that should be used for volatile chemicals. Only Susten et al. (1990) used an experimental design similar to that described by OECD. With hairless mice they determined a dermal penetration rate of 3.61%. It is generally recognized that the skin barrier in hairless mice is less efficient than that of humans. Therefore a penetration rate of 4% as used in this calculation is on the conservative side.

 

With a penetration rate of 4% the internal inhalation dose corresponds to an external dermal dose of

86 x 100/4 = 2150 mg/kg/d.

 

Table B.5: Assessment factors and DNEL calculation for worker DNEL long-term dermal for ototoxicity

Uncertainties

AF

Justification

Interspecies differences

4

For interspecies variability the assessment factors proposed by ECETOC (2003, 2010) are used. The starting point is derived from the internal rat dose in mg/kg/d. Therefore, the allometric scaling factor of 4 is used to take account of differences in basal metabolic rates between animals and humans. According to ECETOC the additional assessment factor of 2.5 to quantify other differences between animals and humans that could affect interspecies extrapolation is scientifically not justified and a factor of 1 is appropriate. On this basis the default factor of 1 to account for other species differences will be applied.

Intraspecies differences

3

There are no data to quantify variability in susceptibility to the effects of long-term exposure to ethylbenzene in the human population. However the population exposed in the workplace is highly homogeneous and the health of the work force is typically good (healthy worker effect) while metabolic differences due to genetic polymorphisms do not automatically require an increased assessment factor since alternative pathways of elimination are often present (ECETOC, 2003, 2010). The analysis of assessment factors conducted by ECETOC also showed that estimates of the upper 95th percentile of the distribution of variability in toxicokinetic and toxicodynamic parameters for populations of different ages, genders and disease states supports use of an assessment factor of 3 to account for intraspecies variability within workers.

The default factor of 3 for workers as proposed by ECETOC will therefore be used to take account of intraspecies variability.

In total there is a combined inter- and intraspecies assessment factor of 12 that takes into account that the target tissue (outer hair cells in the cochlea, anatomical structure and blood supply of the cochlea) is identical in rats and humans. Furthermore, not hearing deficits but histopatological alterations of the cochlea were used as starting point. As histopathology is more sensitive than the physiological effects this is a conservative starting point per se.

Differences in duration of exposure

1

The dose descriptor was obtained from a 90-day inhalation study. Although the DNEL is to be used to assess long-term repeated exposure there is strong evidence showing that the ototoxic effects of ethylbenzene have already occurred within the first four weeks of initial exposure and did not progress in severity with further exposure. On this basis, the duration of this study is adequate for the endpoint being studied and it is not necessary to apply a factor to take account of differences in duration of exposure.

Dose response and endpoint specific/severity issues

1

As an extrapolated NOAEC for the most sensitive endpoint, i.e. histopathological alterations of cochlear hair cells, was used an additional assessment factor is not warranted. The study encompassed a range of concentrations and durations of exposure and provided reliable information on the dose-response relationship and severity of effect.

Quality of database

1

The findings from the key study are supported by findings from several additional studies with similar aromatic solvents conducted to modern regulatory standards by separate groups of researchers. Therefore it is not necessary to apply an additional factor.  

Overall assessment factor:  12

Endpoint specific DNEL: 2150/12 = 180 mg/kg/d (8-hours) corresponding to 12500 mg/person/d

The worker DNEL long-term dermal route for systemic effects is 180 mg/kg/d. As a skin irritation DNEL is not quantifiable from the data this DNEL does not address the potential for local irritation.

 

 

 

 


\t\t\t
\n
\n

\n General Population - Hazard via inhalation route\n

\n

\n Systemic effects\n

\n

\n Long term exposure\n

\n\t
\n\t\t
\n\t\t\tHazard assessment conclusion\n\t\t
\n\t
\n\t\t\n\t\t\t DNEL (Derived No Effect Level)\n\t\t\n
\n
\n\t\t
\n\t\t
\n\t\t\tValue\n\t\t
\n\t\t
\n \n15\t\t\n\t\t\t mg/m\xc2\xb3\n\t\t\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tMost sensitive endpoint\n\t\t
\n\t
\n\t\t\n\t\t\t repeated dose toxicity\n\t\t\n
\n
\n\t
\n\t\t
\n\t\t\tRoute of original study\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n

\n DNEL related information\n

\n\t
\n\t\t
\n\t\t\tDNEL derivation method\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n\t
\n\t\t
\n\t\t\tOverall assessment factor (AF)\n\t\t
\n
\n5
\n\t\t
\n\t
\n\t\t
\n\t\t\tDose descriptor starting point\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n\t\t
\n\t\t
\n\t\t\tValue\n\t\t
\n\t\t
\n \n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tModified dose descriptor starting point\n\t\t
\n\t
\n\t\t\n\t\t\t NOAEC\n\t\t\n
\n
\n\t\t
\n\t\t
\n\t\t\tValue\n\t\t
\n\t\t
\n \n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tExplanation for the modification of the dose descriptor starting point\n\t\t
\n\t\t\t
\n [Empty] \t\t\t
\n
\n\t
\n\t\t
\n\t\t\tAF for dose response relationship\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for differences in duration of exposure\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for interspecies differences (allometric scaling)\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for other interspecies differences\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for intraspecies differences\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for the quality of the whole database\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for remaining uncertainties\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n

\n Explanation for hazard conclusion\n

\n\t
\n\t\t
\n\t\t\tExplanation for hazard conclusion\n\t\t
\n\t\t\t
\n [Not publishable] \t\t\t
\n
\n

\n Acute/short term exposure\n

\n\t
\n\t\t
\n\t\t\tHazard assessment conclusion\n\t\t
\n\t
\n\t\t\n\t\t\t low hazard (no threshold derived)\n\t\t\n
\n
\n\t\t
\n\t\t
\n\t\t\tValue\n\t\t
\n\t\t
\n \n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tMost sensitive endpoint\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n\t
\n\t\t
\n\t\t\tRoute of original study\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n

\n DNEL related information\n

\n\t
\n\t\t
\n\t\t\tDNEL derivation method\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n\t
\n\t\t
\n\t\t\tOverall assessment factor (AF)\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n\t
\n\t\t
\n\t\t\tDNEL extrapolated from long term DNEL\n\t\t
\n
\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tDose descriptor starting point\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n\t\t
\n\t\t
\n\t\t\tValue\n\t\t
\n\t\t
\n \n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tModified dose descriptor starting point\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n\t\t
\n\t\t
\n\t\t\tValue\n\t\t
\n\t\t
\n \n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tExplanation for the modification of the dose descriptor starting point\n\t\t
\n\t\t\t
\n [Empty] \t\t\t
\n
\n\t
\n\t\t
\n\t\t\tAF for dose response relationship\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for interspecies differences (allometric scaling)\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for other interspecies differences\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for intraspecies differences\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for the quality of the whole database\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for remaining uncertainties\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n

\n Explanation for hazard conclusion\n

\n\t
\n\t\t
\n\t\t\tExplanation for hazard conclusion\n\t\t
\n\t\t\t
\n [Not publishable] \t\t\t
\n
\n

\n Local effects\n

\n

\n Long term exposure\n

\n\t
\n\t\t
\n\t\t\tHazard assessment conclusion\n\t\t
\n\t
\n\t\t\n\t\t\t no hazard identified\n\t\t\n
\n
\n\t\t
\n\t\t
\n\t\t\tValue\n\t\t
\n\t\t
\n \n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tMost sensitive endpoint\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n

\n DNEL related information\n

\n\t
\n\t\t
\n\t\t\tDNEL derivation method\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n\t
\n\t\t
\n\t\t\tOverall assessment factor (AF)\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n\t
\n\t\t
\n\t\t\tDose descriptor\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n\t\t
\n\t\t
\n\t\t\tValue\n\t\t
\n\t\t
\n \n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tAF for dose response relationship\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for differences in duration of exposure\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for interspecies differences (allometric scaling)\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for other interspecies differences\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for intraspecies differences\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for the quality of the whole database\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for remaining uncertainties\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n

\n Explanation for hazard conclusion\n

\n\t
\n\t\t
\n\t\t\tExplanation for hazard conclusion\n\t\t
\n\t\t\t
\n [Not publishable] \t\t\t
\n
\n

\n Acute/short term exposure\n

\n\t
\n\t\t
\n\t\t\tHazard assessment conclusion\n\t\t
\n\t
\n\t\t\n\t\t\t no hazard identified\n\t\t\n
\n
\n\t\t
\n\t\t
\n\t\t\tValue\n\t\t
\n\t\t
\n \n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tMost sensitive endpoint\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n

\n DNEL related information\n

\n\t
\n\t\t
\n\t\t\tDNEL derivation method\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n\t
\n\t\t
\n\t\t\tOverall assessment factor (AF)\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n\t
\n\t\t
\n\t\t\tDNEL extrapolated from long term DNEL\n\t\t
\n
\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tDose descriptor starting point\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n\t\t
\n\t\t
\n\t\t\tValue\n\t\t
\n\t\t
\n \n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tAF for dose response relationship\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for interspecies differences (allometric scaling)\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for other interspecies differences\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for intraspecies differences\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for the quality of the whole database\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for remaining uncertainties\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n

\n Explanation for hazard conclusion\n

\n\t
\n\t\t
\n\t\t\tExplanation for hazard conclusion\n\t\t
\n\t\t\t
\n [Not publishable] \t\t\t
\n
\n

\n General Population - Hazard via dermal route\n

\n

\n Systemic effects\n

\n

\n Long term exposure\n

\n\t
\n\t\t
\n\t\t\tHazard assessment conclusion\n\t\t
\n\t
\n\t\t\n\t\t\t no hazard identified\n\t\t\n
\n
\n\t\t
\n\t\t
\n\t\t\tValue\n\t\t
\n\t\t
\n \n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tMost sensitive endpoint\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n\t
\n\t\t
\n\t\t\tRoute of original study\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n

\n DNEL related information\n

\n\t
\n\t\t
\n\t\t\tDNEL derivation method\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n\t
\n\t\t
\n\t\t\tOverall assessment factor (AF)\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n\t
\n\t\t
\n\t\t\tDose descriptor starting point\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n\t\t
\n\t\t
\n\t\t\tValue\n\t\t
\n\t\t
\n \n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tModified dose descriptor starting point\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n\t\t
\n\t\t
\n\t\t\tValue\n\t\t
\n\t\t
\n \n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tExplanation for the modification of the dose descriptor starting point\n\t\t
\n\t\t\t
\n [Empty] \t\t\t
\n
\n\t
\n\t\t
\n\t\t\tAF for dose response relationship\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for differences in duration of exposure\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for interspecies differences (allometric scaling)\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for other interspecies differences\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for intraspecies differences\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for the quality of the whole database\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for remaining uncertainties\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n

\n Explanation for hazard conclusion\n

\n\t
\n\t\t
\n\t\t\tExplanation for hazard conclusion\n\t\t
\n\t\t\t
\n [Not publishable] \t\t\t
\n
\n

\n Acute/short term exposure\n

\n\t
\n\t\t
\n\t\t\tHazard assessment conclusion\n\t\t
\n\t
\n\t\t\n\t\t\t no hazard identified\n\t\t\n
\n
\n\t\t
\n\t\t
\n\t\t\tValue\n\t\t
\n\t\t
\n \n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tMost sensitive endpoint\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n\t
\n\t\t
\n\t\t\tRoute of original study\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n

\n DNEL related information\n

\n\t
\n\t\t
\n\t\t\tDNEL derivation method\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n\t
\n\t\t
\n\t\t\tOverall assessment factor (AF)\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n\t
\n\t\t
\n\t\t\tDNEL extrapolated from long term DNEL\n\t\t
\n
\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tDose descriptor starting point\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n\t\t
\n\t\t
\n\t\t\tValue\n\t\t
\n\t\t
\n \n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tModified dose descriptor starting point\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n\t\t
\n\t\t
\n\t\t\tValue\n\t\t
\n\t\t
\n \n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tExplanation for the modification of the dose descriptor starting point\n\t\t
\n\t\t\t
\n [Empty] \t\t\t
\n
\n\t
\n\t\t
\n\t\t\tAF for dose response relationship\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for interspecies differences (allometric scaling)\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for other interspecies differences\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for intraspecies differences\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for the quality of the whole database\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for remaining uncertainties\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n

\n Explanation for hazard conclusion\n

\n\t
\n\t\t
\n\t\t\tExplanation for hazard conclusion\n\t\t
\n\t\t\t
\n [Not publishable] \t\t\t
\n
\n

\n Local effects\n

\n

\n Long term exposure\n

\n\t
\n\t\t
\n\t\t\tHazard assessment conclusion\n\t\t
\n\t
\n\t\t\n\t\t\t no hazard identified\n\t\t\n
\n
\n\t\t
\n\t\t
\n\t\t\tValue\n\t\t
\n\t\t
\n \n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tMost sensitive endpoint\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n

\n DNEL related information\n

\n\t
\n\t\t
\n\t\t\tDNEL derivation method\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n\t
\n\t\t
\n\t\t\tOverall assessment factor (AF)\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n\t
\n\t\t
\n\t\t\tDose descriptor\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n\t\t
\n\t\t
\n\t\t\tValue\n\t\t
\n\t\t
\n \n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tAF for dose response relationship\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for differences in duration of exposure\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for interspecies differences (allometric scaling)\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for other interspecies differences\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for intraspecies differences\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for the quality of the whole database\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for remaining uncertainties\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n

\n Explanation for hazard conclusion\n

\n\t
\n\t\t
\n\t\t\tExplanation for hazard conclusion\n\t\t
\n\t\t\t
\n [Not publishable] \t\t\t
\n
\n

\n Acute/short term exposure\n

\n\t
\n\t\t
\n\t\t\tHazard assessment conclusion\n\t\t
\n\t
\n\t\t\n\t\t\t no hazard identified\n\t\t\n
\n
\n\t\t
\n\t\t
\n\t\t\tValue\n\t\t
\n\t\t
\n \n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tMost sensitive endpoint\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n

\n DNEL related information\n

\n\t
\n\t\t
\n\t\t\tDNEL derivation method\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n\t
\n\t\t
\n\t\t\tOverall assessment factor (AF)\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n\t
\n\t\t
\n\t\t\tDose descriptor starting point\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n\t\t
\n\t\t
\n\t\t\tValue\n\t\t
\n\t\t
\n \n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tAF for dose response relationship\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for interspecies differences (allometric scaling)\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for other interspecies differences\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for intraspecies differences\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for the quality of the whole database\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for remaining uncertainties\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n

\n Explanation for hazard conclusion\n

\n\t
\n\t\t
\n\t\t\tExplanation for hazard conclusion\n\t\t
\n\t\t\t
\n [Not publishable] \t\t\t
\n
\n

\n General Population - Hazard via oral route\n

\n

\n Systemic effects\n

\n

\n Long term exposure\n

\n\t
\n\t\t
\n\t\t\tHazard assessment conclusion\n\t\t
\n\t
\n\t\t\n\t\t\t DNEL (Derived No Effect Level)\n\t\t\n
\n
\n\t\t
\n\t\t
\n\t\t\tValue\n\t\t
\n\t\t
\n \n1.6\t\t\n\t\t\t mg/kg bw/day\n\t\t\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tMost sensitive endpoint\n\t\t
\n\t
\n\t\t\n\t\t\t repeated dose toxicity\n\t\t\n
\n
\n\t
\n\t\t
\n\t\t\tRoute of original study\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n

\n DNEL related information\n

\n\t
\n\t\t
\n\t\t\tDNEL derivation method\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n\t
\n\t\t
\n\t\t\tOverall assessment factor (AF)\n\t\t
\n
\n40
\n\t\t
\n\t
\n\t\t
\n\t\t\tDose descriptor starting point\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n\t\t
\n\t\t
\n\t\t\tValue\n\t\t
\n\t\t
\n \n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tModified dose descriptor starting point\n\t\t
\n\t
\n\t\t\n\t\t\t NOAEL\n\t\t\n
\n
\n\t\t
\n\t\t
\n\t\t\tValue\n\t\t
\n\t\t
\n \n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tExplanation for the modification of the dose descriptor starting point\n\t\t
\n\t\t\t
\n [Empty] \t\t\t
\n
\n\t
\n\t\t
\n\t\t\tAF for dose response relationship\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for differences in duration of exposure\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for interspecies differences (allometric scaling)\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for other interspecies differences\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for intraspecies differences\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for the quality of the whole database\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for remaining uncertainties\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n

\n Explanation for hazard conclusion\n

\n\t
\n\t\t
\n\t\t\tExplanation for hazard conclusion\n\t\t
\n\t\t\t
\n [Not publishable] \t\t\t
\n
\n

\n Acute/short term exposure\n

\n\t
\n\t\t
\n\t\t\tHazard assessment conclusion\n\t\t
\n\t
\n\t\t\n\t\t\t no hazard identified\n\t\t\n
\n
\n\t\t
\n\t\t
\n\t\t\tValue\n\t\t
\n\t\t
\n \n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tMost sensitive endpoint\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n\t
\n\t\t
\n\t\t\tRoute of original study\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n

\n DNEL related information\n

\n\t
\n\t\t
\n\t\t\tDNEL derivation method\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n\t
\n\t\t
\n\t\t\tOverall assessment factor (AF)\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n\t
\n\t\t
\n\t\t\tDNEL extrapolated from long term DNEL\n\t\t
\n
\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tDose descriptor starting point\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n\t\t
\n\t\t
\n\t\t\tValue\n\t\t
\n\t\t
\n \n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tModified dose descriptor starting point\n\t\t
\n\t
\n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n
\n
\n\t\t
\n\t\t
\n\t\t\tValue\n\t\t
\n\t\t
\n \n\t\t\n\t\t\n [Empty]\n\t\t\n\t\t\n \n
\n\t\t
\n\t
\n\t\t
\n\t\t\tExplanation for the modification of the dose descriptor starting point\n\t\t
\n\t\t\t
\n [Empty] \t\t\t
\n
\n\t
\n\t\t
\n\t\t\tAF for dose response relationship\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for interspecies differences (allometric scaling)\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for other interspecies differences\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for intraspecies differences\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for the quality of the whole database\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n\t
\n\t\t
\n\t\t\tAF for remaining uncertainties\n\t\t
\n
\n\t\t\n [Empty]\n\t\t\n
\n\t\t
\n
\n\t\t
\n\t\t\tJustification\n\t\t
\n
\n

\n\t\t\n [Empty]\n\t\t\n

\n
\n
\n

\n Explanation for hazard conclusion\n

\n\t
\n\t\t
\n\t\t\tExplanation for hazard conclusion\n\t\t
\n\t\t\t
\n [Not publishable] \t\t\t
\n
\n

\n General Population - Hazard for the eyes\n

\n

\n Local effects\n

\n\t
\n\t\t
\n\t\t\tHazard assessment conclusion\n\t\t
\n\t
\n\t\t\n\t\t\t low hazard (no threshold derived)\n\t\t\n
\n
\n\t
\n\t\t
\n\t\t\tExplanation for hazard conclusion\n\t\t
\n\t\t\t
\n [Not publishable] \t\t\t
\n
\n

\n Additional information - General Population\n

\n\t
\n\t\t
\n\t\t\t\n\t\t
\n\t\t\t
\n

B.5.11.6 General population DNEL long-term inhalation by exposure via the environment

As discussed in section B.5.11.4 long-term repeated exposure to ethylbenzene has the potential to cause ototoxicity and devlopmental toxicity.

For ototoxicity:

Repeated inhalation exposure to ethylbenzene vapor was irreversibly ototoxic in rats (Gagnaire et al., 2007).Auditory dysfunction characterised by an elevation of hearing thresholds was localised in the mid frequencies and corresponded to the loss of cochlear outer hair cells, the sensory cells in the inner ear. Hearing loss and cell damage increased with exposure concentrations.In this 90 day rat inhalation study (6 hours/day, 6 day/week) the NOAEC for ototoxicity was extrapolated to be 114 ppm (500 mg/m\xc2\xb3) based on destruction of outer hair cells in row 3 occurring already at 200 ppm. In contrast, no effect on hearing ability as indicated by audiometric thresholds was observed at 200 ppm. According to several case reports where hearing deficits in humans occupational exposed to organic solvents or from people after solvent abuse are described (for review cf Risk Assessment Reports on toluene and styrene), this rat data are taken to be relevant for humans.

 

Thus, this extrapolated NOAEC of 114 ppm (500 mg/m\xc2\xb3) is taken as dose descriptor for DNEL derivation of repeated dose toxicity for general population (consumer).

 

The extrapolated NOAEC of 114 ppm (500 mg/m\xc2\xb3) from the rat is (1) multiplied with a factor of 0.45 (for rat absorption percentage of 45%), divided by a divisor of 0.65 (for human absorption percentage after inhalation of 65%).A factor for activity-driven differences of respiratory volumes is not necessary for the general population (via environment). Further differences regarding the experimental inhalation duration (6 hours/day, 6 days/week) and the environmental exposure conditions (24 hours/day, 7 days/week) have to be taken into consideration by factors of 6/24 and 6/7.

The calculation results in an adjusted inhalation starting point of

114 x 0.45: 0.65 x 6/24 x 6/7 = 17ppm

In the overall assessment it has also be taken into consideration that the starting point to define ototoxicity is not auditory dysfunction but histopathological effects on the outer hair cells of the cochlea. Numerous investigations have shown that audiometric hearing deficits occur at higher exposure concentrations than (small) losses of hair cells in the outer row 3 of the cochlea. While the audiometric effects define the impact of ototoxicity for humans, the use of histopathological effects for the starting point implies a further conservative factor.

 

Hearing loss is not a specific effect for ethylbenzene but has also been found with other aromatic solvents like styrene, toluene, or xylenes. Detailed mechanistic studies, especially with styrene, have demonstrated that ototoxicity is exerted by the unmetabolized parent chemical. Studies in rats with styrene and toluene showed that hearing loss occurs within a few days of the start of exposure and although it does not increase in severity with prolongation of exposure, the initial effect is irreversible. According to Gagnaire et al. (2007) ethylbenzene led to maximal hearing impairment after about 4 weeks without further deterioration by prolongation of exposure.

 

Table B.6: Assessment factors and DNEL calculation for general population (consumer) (DIY) DNEL long-term inhalation for ototoxicity

Uncertainties

AF

Justification

Interspecies differences

1

For interspecies variability the assessment factors proposed by ECETOC (2003, 2010) are used. The dose descriptor was obtained from an inhalation study and is being used to derive an inhalation DNEL. It is therefore not necessary to apply an allometric scaling factor to take account of differences in basal metabolic rates between animals and humans. According to ECETOC the additional assessment factor of 2.5 to quantify other differences between animals and humans that could affect interspecies extrapolation is scientifically not justified and a factor of 1 is appropriate. On this basis the default factor of 1 to account for other species differences will be applied.

Intraspecies differences

5

There are no data to quantify variability in susceptibility to the effects of long-term exposure to ethylbenzene in the human population. However an analysis of assessment factors conducted by ECETOC (2003, 2010) showed that metabolic differences due to genetic polymorphisms do not to automatically require an increased assessment factor since alternative pathways of elimination are often present. This consideration, together with estimates of the upper 95th percentile of the distribution of variability in toxicokinetic and toxicodynamic parameters for populations of different ages, genders and disease states, supports use of an assessment factor of 5 to account for intraspecies variability within the general population.

The default factor of 5 for the general population as proposed by ECETOC (2003, 2010) will therefore be used to take account of intraspecies variability.

In total there is a combined inter- and intraspecies assessment factor of 5 that takes into account that the target tissue (outer hair cells in the cochlea, anatomical structure and blood supply of the cochlea) is identical in rats and humans. Furthermore, not hearing deficits but histopatological alterations of the cochlea were used as starting point. As histopathology is more sensitive than the physiological effects this is a conservative starting point per se.

Differences in duration of exposure

1

The dose descriptor was obtained from a 90-day inhalation study. Although the DNEL is to be used to assess long-term repeated exposure there is strong evidence showing that the ototoxic effects of ethylbenzene have already occurred within the first four weeks of initial exposure and did not progress in severity with further exposure. On this basis, the duration of this study is adequate for the endpoint being studied and it is not necessary to apply a factor to take account of differences in duration of exposure.

Dose response and endpoint specific/severity issues

1

As an extrapolated NOAEC for the most sensitive endpoint, i.e. histopathological alterations of cochlear hair cells, was used an additional assessment factor is not warranted. The study encompassed a range of concentrations and durations of exposure and provided reliable information on the dose-response relationship and severity of effect.

Quality of database

1

The findings from the key study are supported by findings from several additional studies with similar aromatic solvents conducted to modern regulatory standards by separate groups of researchers. Therefore it is not necessary to apply an additional factor.  

Overall assessment factor:  5

Endpoint specific DNEL: 17/5 = 3.4 ppm (24-hours) corresponding to 15 mg/m\xc2\xb3.

For derivation of a worker-DNEL long-term based on reproductive effects in the a multi-generation study, effects observed for the time between weaning and puberty did not apply. On the other hand, effects occurring during pre- and postnatal phases have to be taken into account for exposures via the environment.

 

According to section B.5.11.4.2a for definition of a DNEL two studies are available: A guideline 2-generation study with an indication of slight foetotoxicity (reduced foetal body weight and occasional increases in skeletal variations) in the presence of maternal toxicity with a NOAEC for foetal and maternal toxicity of 500 ppm and a preceding probe 1-generation reproduction toxicity study with a NOAEC of 100 ppm based on increased postnatal mortality and body weight gain depression in the offspring. This NOAEC of 100 ppm was governed by effects occurring after weaning when the offspring was directly exposed by inhalation. As a general strategy, the guideline 2-generation study with a large number of experimental animals should have precedence over the probe study with a more limited number of animals. But in order to derive a DNEL as conservative as possible for the general population exposed via the environment, the NOAEC of the probe 1-generation study will be used as starting point.

 

In this probe reproductive toxicity study rats were exposed for 6 hours per day, 7 days per week. Since animals were exposed for 6 hours per day, whereas the exposure via the environment is continuous, it is necessary to adjust the starting point by a factor of 6/24. This NOAEC of 100 ppm from the rat is further multiplied with a factor of 0.45 (for rat absorption percentage of 45 %) and divided by 0.65 (for human absorption percentage of 65 %). An adjustment for physical activity is not necessary.

 

The corrected starting point is therefore

100 x 6/24 x 0.45/0.65= 17.3 ppm.

 

Table B.7: Assessment factors and calculation for general population DNEL long-term inhalation via environment for developmental toxicity based on generation studies

Uncertainties

AF

Justification

Interspecies differences

1

For interspecies variability the assessment factors proposed by ECETOC (2003, 2010) are used. The dose descriptor was obtained from an inhalation study and is being used to derive an inhalation DNEL. It is therefore not necessary to apply an allometric scaling factor to take account of differences in basal metabolic rates between animals and humans. According to ECETOC the additional assessment factor of 2.5 to quantify other differences between animals and humans that could affect interspecies extrapolation is scientifically not justified and a factor of 1 is appropriate. On this basis the default factor of 1 to account for other species differences will be applied.

Intraspecies differences

5

There are no data to quantify variability in susceptibility to the effects of long-term exposure to ethylbenzene in the human population. However an analysis of assessment factors conducted by ECETOC (2003, 2010) showed that metabolic differences due to genetic polymorphisms do not to automatically require an increased assessment factor since alternative pathways of elimination are often present. This consideration, together with estimates of the upper 95th percentile of the distribution of variability in toxicokinetic and toxicodynamic parameters for populations of different ages, genders and disease states, supports use of an assessment factor of 5 to account for intraspecies variability within the general population.

The default factor of 5 for humans via environment as proposed by ECETOC will therefore be used to take account of intraspecies variability.

Differences in duration of exposure

1

The NOAEC was derived from the 2-generation study covering the whole reproductive cycle. An assessment factor of 1 is therefore appropriate.

Dose response and endpoint specific/severity issues

1

The NOAEC of 100 ppm was derived from generation studies covering the whole reproductive cycle. Therefore no additional assessment factor is necessary.

Quality of database

1

The key study was conducted to modern regulatory standards and was adequately reported. On this basis the quality of the database is not considered to contribute uncertainty and it is therefore not necessary to apply an additional factor.     

Overall assessment factor:  5

Endpoint specific DNEL: 17.3/5 = 3.5 ppm

For prenatal effects the derivation of the DNEL is based on the prenatal toxicity study in rats of Saillenfait et al. (2003) at exposure concentrations of 100, 500, 1000, and 2000 ppm during gestation days 6-20 with a NOAEC of 500 ppm for an exposure regime of 6 h/d throughout gestation days 6-20.

 

This NOAEC has to be adjusted by a factor of 6/24 to account for different daily exposure durations leading to 125 ppm. The dams were exposed every day during pregnancy. The NOAEC of 125 ppm from the rat is further multiplied with a factor of 0.45 (for rat absorption percentage of 45 %) and divided by 0.65 (for human absorption percentage of 65 %).

 

The adjusted starting point is therefore 86.5 ppm.

 

Table B.8: Assessment factors and DNEL calculation for general population (via environment) DNEL long-term inhalation for developmental toxicity (prenatal toxicity studies)

Uncertainties

AF

Justification

Interspecies differences

1

For interspecies variability the assessment factors proposed by ECETOC (2003, 2010) are used. The dose descriptor was obtained from an inhalation study and is being used to derive an inhalation DNEL. It is therefore not necessary to apply an allometric scaling factor to take account of differences in basal metabolic rates between animals and humans. According to ECETOC the additional assessment factor of 2.5 to quantify other differences between animals and humans that could affect interspecies extrapolation is scientifically not justified and a factor of 1 is appropriate. On this basis the default factor of 1 to account for other species differences will be applied.

Intraspecies differences

5

There are no data to quantify variability in susceptibility to the effects of long-term exposure to ethylbenzene in the human population. However an analysis of assessment factors conducted by ECETOC (2003, 2010) showed that metabolic differences due to genetic polymorphisms do not to automatically require an increased assessment factor since alternative pathways of elimination are often present. This consideration, together with estimates of the upper 95th percentile of the distribution of variability in toxicokinetic and toxicodynamic parameters for populations of different ages, genders and disease states, supports use of an assessment factor of 5 to account for intraspecies variability within the general population.

The default factor of 5 for the general population as proposed by ECETOC will therefore be used to take account of intraspecies variability.

Differences in duration of exposure

1

The NOAEC was derived from a prenatal toxicity study with an exposure regime from gestation day 6 up to the end of pregnancy at gestation day 20. An assessment factor of 1 is therefore appropriate.

Dose response and endpoint specific/severity issues

1

As 500 ppm was a clear NOAEC for developmental effects, an assessment factor is not warranted in this respect.

Quality of database

1

The key study was conducted to modern regulatory standards and was adequately reported. On this basis the quality of the database is not considered to contribute uncertainty and it is therefore not necessary to apply an additional factor.

Overall assessment factor:  5

Endpoint specific DNEL: 174/5 = 17.3 ppm (8-hour) corresponding to 76 mg/m\xc2\xb3

B.5.11.6h. Selection of DNEL long-term inhalation for the general population (via environment)

In conclusion a DNEL long-term for the general population by exposure via the environment of 3.4 ppm is proposed based on ototoxic effects. This DNEL is very similar to that derived from toxic effects observed in generation studies being 3.5 ppm.

 

B.5.11.7 General population (via environment) DNEL long-term oral route

 

For deriving a DNEL long-term oral route for the general population (via environment) two approaches should be considered:

starting from the lowest DNEL long-term inhalation route (ref section B.5.11.7b) for the general population (via environment)

starting from the rat 90-day oral study (Mellert et al., 2007) thereby obviating a route-to-route extrapolation.

 

a) starting from the DNEL long-term inhalation route for the general population (via environment)

 

The lowest general population DNEL long-term for the inhalation route via environment was calculated to be 3.4 ppm, corresponding to 15 mg/m\xc2\xb3 (see section B.5.11.7.b) based on ototoxicity. A respiratory volume of 20 m\xc2\xb3/person/d is used for the general population (ECHA, 2008) and an uptake by inhalation of 65%. This leads to an internal body burden of

15 x 20 x 0.65 = 195 mg/person/d, corresponding to 2.8 mg/kg/d.

 

After oral exposure up to 92% of the ethylbenzene dose could be recovered as urinary metabolites in rabbits (El Masry et al., 1952) and 84% in urine and feces of rats (Climie et al., 1983); therefore 100% absorption by oral exposure is taken for humans as default.

 

Thus, for the general population (via environment) the DNEL long-term oral derived from that by inhalation is 2.8 mg/kg/d.

 

b) starting from the rat 90-day oral study

 

An increase in liver and kidney weights of rats and mice without histopathological alterations has been found in several studies. These changes are most probably related to enzyme induction. The NOAEL in a guideline oral 90 day study with rats was 75 mg/kg bw/d (LOAEL 250 mg/kg bw/d) based on indications for a mild regenerative anemia and liver changes indicative of microsomal enzyme induction.

 

The animals were dosed daily by gavage. A 84% oral absorption is used for rats (Climie et al., 1983) and 100% for humans as conservative default leading to an internal dose of 75 x 0.84 = 63 mg/kg/d as starting point.

 

Table B.9: Assessment factors and DNEL calculation for the general population (via environment) long-term oral (based on rat oral study)

Uncertainties

AF

Justification

Interspecies differences

4

For interspecies variability the assessment factors proposed by ECETOC (2003, 2010) are used. The dose descriptor was obtained from an oral study and is being used to derive an inhalation DNEL. Therefore an allometric scaling factor of 4 is used to take account of differences in basal metabolic rates between animals and humans. According to ECETOC the additional assessment factor of 2.5 to quantify other differences between animals and humans that could affect interspecies extrapolation is scientifically not justified and a factor of 1 is appropriate. On this basis the default factor of 1 to account for other species differences will be applied.

Intraspecies differences

5

There are no data to quantify variability in susceptibility to the effects of long-term exposure to ethylbenzene in the human population. However an analysis of assessment factors conducted by ECETOC (2003, 2010) showed that metabolic differences due to genetic polymorphisms do not to automatically require an increased assessment factor since alternative pathways of elimination are often present. This consideration, together with estimates of the upper 95th percentile of the distribution of variability in toxicokinetic and toxicodynamic parameters for populations of different ages, genders and disease states, supports use of an assessment factor of 5 to account for intraspecies variability within the general population.

The default factor of 5 for the general population as proposed by ECETOC will therefore be used to take account of intraspecies variability.

Differences in duration of exposure

2

The NOAEL was obtained from a 90-day oral rat study. For extrapolation to chronic exposure an assessment factor of 2 is therefore appropriate according to REACH (2008) and ECETOC (2003, 2010).

Dose response and endpoint specific/severity issues

1

As 75 mg/kg/d was a clear NOAEL with a dose response relationship for toxicologically relevant effects at higher doses, an assessment factor is not warranted in this respect.

Quality of database

1

The key study was conducted to modern regulatory standards and was adequately reported. On this basis the quality of the database is not considered to contribute uncertainty and it is therefore not necessary to apply an additional factor.

Overall assessment factor:  40

Endpoint specific DNEL: 63/40 = 1.6 mg/kg/d

In conclusion, the DNEL long-term for the general population (via environment) by oral exposure is 1.6 mg/kg/d.

\t\t\t
\n
\n
\n
\n
\n
\n
\n\n
\n \n
\n \n\n' \ No newline at end of file diff --git a/debug_echa_find.py b/debug_echa_find.py index f6114af..ddb7f93 100644 --- a/debug_echa_find.py +++ b/debug_echa_find.py @@ -44,7 +44,7 @@ def _(cas_test, urllib): @app.cell def _(): BASE_SEARCH = "https://chem.echa.europa.eu/api-substance/v1/substance?pageIndex=1&pageSize=100&searchText=" - BASE_DOSSIER_LIST = "https://chem.echa.europa.eu/api-dossier-list/v1/dossier?pageIndex=1&pageSize=100&rmlId=" + BASE_DOSSIER = "https://chem.echa.europa.eu/api-dossier-list/v1/dossier?pageIndex=1&pageSize=100&rmlId=" SUBSTANCE_SUMMARY = "https://chem.echa.europa.eu/api-substance/v1/substance/" #+id CLASSIFICATION_ID = "https://chem.echa.europa.eu/api-cnl-inventory/prominent/overview/classifications/harmonised/459160" TOXICOLOGICAL_INFO = "https://chem.echa.europa.eu/html-pages-prod/e4c88c6e-06c7-4daa-b0fb-1a55459ac22f/documents/IUC5-5f55d8ec-7a71-4e2c-9955-8469ead9fe84_0035f3f8-7467-4944-9028-1db2e9c99565.html" # external + rootkey @@ -53,7 +53,7 @@ def _(): active = "®istrationStatuses=Active" inactive = "®istrationStatuses=Inactive" legislation = "&legislation=REACH" - return BASE_SEARCH, active, legislation + return BASE_DOSSIER, BASE_SEARCH, active, legislation @app.cell @@ -128,7 +128,7 @@ def _(response_dossier_json, substance): @app.cell def _(): - from pif_compiler.services.mongo_conn import get_client + from pif_compiler.services.db_utils import get_client client = get_client() @@ -159,14 +159,15 @@ def _(assetExternalId): @app.cell -def _(log, test_search_request): +def _(BASE_SEARCH, log, requests): def search_substance(cas : str) -> dict: - response = test_search_request.json() + response = requests.get(BASE_SEARCH + cas) if response.status_code != 200: log.error(f"Network error: {response.status_code}") return {} else: - if response['totalItems'] == 0: + response = response.json() + if response['state']['totalItems'] == 0: log.info(f"No substance found for CAS {cas}") return {} else: @@ -182,7 +183,7 @@ def _(log, test_search_request): return substance log.error(f"Something went wrong") return {} - return + return (search_substance,) @app.cell @@ -194,7 +195,7 @@ def _(BASE_DOSSIER, active, legislation, log, requests): log.error(f"Network error: {response_dossier.status_code}") return {} response_dossier_json = response_dossier.json() - if response_dossier_json['totalItems'] == 0: + if response_dossier_json['state']['totalItems'] == 0: log.info(f"No dossier found for RML ID {rmlId}") return {} dossier_info = { @@ -206,7 +207,7 @@ def _(BASE_DOSSIER, active, legislation, log, requests): "rootKey": response_dossier_json['items'][0]['rootKey'] } return dossier_info - return + return (get_dossier_info,) @app.cell @@ -214,12 +215,12 @@ def _(BeautifulSoup, log, requests): def get_substance_index(assetExternalId : str) -> dict: INDEX = "https://chem.echa.europa.eu/html-pages-prod/" + assetExternalId LINK_DOSSIER = INDEX + "/documents/" - + response = requests.get(INDEX + "/index.html") if response.status_code != 200: log.error(f"Network error: {response.status_code}") return {} - + soup = BeautifulSoup(response.content, 'html.parser') index_data = {} @@ -245,11 +246,396 @@ def _(BeautifulSoup, log, requests): index_data['acute_toxicity_link'] = LINK_DOSSIER + at_href + '.html' return index_data - + get_substance_index("e4c88c6e-06c7-4daa-b0fb-1a55459ac22f") + return (get_substance_index,) + + +@app.cell +def _(search_substance): + val = search_substance("100-41-4") + + return (val,) + + +@app.cell +def _(val): + val return +@app.cell +def _(get_dossier_info, val): + info_dossier = get_dossier_info(val['rmlId']) + return (info_dossier,) + + +@app.cell +def _(info_dossier): + info_dossier + return + + +@app.cell +def _(get_substance_index, info_dossier): + index = get_substance_index(info_dossier['assetExternalId']) + index + return (index,) + + +@app.cell +def _(index, requests): + summary_link = index['toxicological_information_link'] + + response_summary = requests.get(summary_link) + return (response_summary,) + + +@app.cell +def _(index, requests): + acute_link = index['acute_toxicity_link'] + + response_acute = requests.get(acute_link) + return (response_acute,) + + +@app.cell +def _(index, requests): + repeated_link = index['repeated_dose_toxicity_link'] + + response_repeated = requests.get(repeated_link) + return (response_repeated,) + + +@app.cell +def _(BeautifulSoup, response_summary): + soup_summary = BeautifulSoup(response_summary.content, 'html.parser') + soup_summary.prettify(formatter='html') + + soup_summary + return + + +@app.cell +def _(BeautifulSoup, re): + def get_field_name(field_div): + """Extract field name from the class attribute of label div""" + label_div = field_div.find('div', class_='das-field_label') + if not label_div: + return None + + classes = label_div.get('class', []) + + for cls in classes: + if cls not in ['das-field_label', 'das-empty-value', 'das-empty-label']: + return cls + + return None + + + def extract_field_value(field_div): + """Extract value from a das-field div""" + field_name = get_field_name(field_div) + if not field_name: + return None + + # Skip OriginalStudy fields + if field_name == 'OriginalStudy': + return None + + value_div = field_div.find('div', class_='das-field_value') + if not value_div: + return None + + # Exclude redacted/not publishable + redacted = value_div.find('span', class_='das-redacted-value') + if redacted: + return None + + # Check if empty + empty_span = value_div.find('span', class_='das-empty-value') + if empty_span and not value_div.find('span', class_='das-redacted-value'): + return {field_name: ""} + + # Extract pick-list value + pick_list = value_div.find('span', class_='das-field_value_pick-list') + if pick_list: + phrase = pick_list.find('span', class_='phrase') + if phrase: + return {field_name: phrase.get_text(strip=True)} + if pick_list.find('span', class_='das-empty-value'): + return {field_name: ""} + + # Extract quantity value (value + unit) + quantity = value_div.find('span', class_='i6PhysicalQuantity') + if quantity: + value_span = quantity.find('span', class_='value') + unit_span = quantity.find('span', class_='unit') + + value_text = value_span.get_text(strip=True) if value_span else "" + unit_text = "" + if unit_span: + unit_phrase = unit_span.find('span', class_='phrase') + if unit_phrase: + unit_text = unit_phrase.get_text(strip=True) + elif unit_span.find('span', class_='das-empty-value'): + unit_text = "" + + if value_text: + return {field_name: {"value": value_text, "unit": unit_text}} + else: + return {field_name: ""} + + # Extract checkbox value + checkbox_checked = value_div.find('span', class_='das-value_checkbox-checked') + checkbox_unchecked = value_div.find('span', class_='das-value_checkbox-unchecked') + if checkbox_checked is not None or checkbox_unchecked is not None: + return {field_name: checkbox_checked is not None} + + # Extract decimal/numeric value + if 'das-field_decimal' in field_div.get('class', []) or 'das-field_text' in field_div.get('class', []): + text = value_div.get_text(strip=True) + if '[Empty]' in text or not text: + return {field_name: ""} + return {field_name: text} + + # Extract HTML/text content + if value_div.find('div', class_='das-field_value_html'): + html_content = value_div.find('div', class_='das-field_value_html') + text = html_content.get_text(separator=' ', strip=True) + text = re.sub(r'\[Empty\]', '', text).strip() + if not text: + return {field_name: ""} + return {field_name: text} + + # Default: get text content + text = value_div.get_text(strip=True) + text = re.sub(r'\[Empty\]', '', text).strip() + return {field_name: text if text else ""} + + + def extract_table_data(table): + """Extract table data as array of objects""" + rows = table.find_all('tr') + if len(rows) < 2: + return [] + + header_row = rows[0] + headers = [] + for th in header_row.find_all('td'): + header_text = th.get_text(strip=True) + headers.append(header_text) + + data = [] + for row in rows[1:]: + cells = row.find_all('td') + + if len(cells) == 1 and cells[0].get('colspan'): + continue + + if len(cells) == len(headers): + row_data = {} + for i, cell in enumerate(cells): + cell_text = cell.get_text(strip=True) + row_data[headers[i]] = cell_text + data.append(row_data) + + return data + + + def extract_section(section): + """Recursively extract data from a section""" + section_data = {} + + label_h3 = section.find('h3', class_='das-block_label', recursive=False) + if label_h3: + section_data['label'] = label_h3.get_text(strip=True) + + direct_fields = section.find_all('div', class_='das-field', recursive=False) + for field in direct_fields: + field_data = extract_field_value(field) + if field_data: + section_data.update(field_data) + + tables = section.find_all('table', recursive=False) + for i, table in enumerate(tables): + table_data = extract_table_data(table) + if table_data: + table_key = f'table_{i+1}' if len(tables) > 1 else 'table' + section_data[table_key] = table_data + + nested_sections = section.find_all('section', class_='das-block', recursive=False) + if nested_sections: + section_data['subsections'] = [] + for nested in nested_sections: + nested_data = extract_section(nested) + if nested_data: + section_data['subsections'].append(nested_data) + + return section_data + + + def parse_toxicology_html(html_content): + """Main function to parse the toxicological HTML document""" + soup = BeautifulSoup(html_content, 'html.parser') + + result = {} + + title = soup.find('h4', class_='document-header') + if title: + result['document_title'] = title.get_text(strip=True) + + article = soup.find('article', class_='das-document') + if not article: + return result + + top_sections = article.find_all('section', class_='das-block', recursive=False) + result['sections'] = [] + + for section in top_sections: + section_data = extract_section(section) + if section_data: + result['sections'].append(section_data) + + return result + return (parse_toxicology_html,) + + +@app.cell +def _(): + import re + return (re,) + + +@app.cell +def _(parse_toxicology_html, response_summary): + summary_json = parse_toxicology_html(response_summary.content) + return (summary_json,) + + +@app.cell +def _(summary_json): + summary_json + return + + +@app.cell +def _(parse_toxicology_html, response_acute): + acute_json = parse_toxicology_html(response_acute.content) + return (acute_json,) + + +@app.cell +def _(acute_json): + acute_json + return + + +@app.cell +def _(parse_toxicology_html, response_repeated): + response_json = parse_toxicology_html(response_repeated.content) + return (response_json,) + + +@app.cell +def _(response_json): + response_json + return + + +@app.cell +def _(index): + from playwright.sync_api import sync_playwright + + with sync_playwright() as p: + browser = p.chromium.launch() + page = browser.new_page() + page.goto(index['toxicological_information_link']) + page.pdf(path='output.pdf') + browser.close() + return + + +@app.cell +def _( + get_dossier_info, + get_substance_index, + parse_toxicology_html, + requests, + search_substance, +): + def orchestration(cas) -> dict: + substance = search_substance(cas) + if not substance: + return {} + + dossier_info = get_dossier_info(substance['rmlId']) + if not dossier_info: + return {} + + index = get_substance_index(dossier_info['assetExternalId']) + if not index: + return {} + + result = { + "substance": substance, + "dossier_info": dossier_info, + "index": index, + "toxicological_information": {}, + "acute_toxicity": {}, + "repeated_dose_toxicity": {} + } + + # Fetch and parse toxicological information + txi_link = index.get('toxicological_information_link') + if txi_link: + response_summary = requests.get(txi_link) + if response_summary.status_code == 200: + result['toxicological_information'] = parse_toxicology_html(response_summary.content) + + # Fetch and parse acute toxicity + at_link = index.get('acute_toxicity_link') + if at_link: + response_acute = requests.get(at_link) + if response_acute.status_code == 200: + result['acute_toxicity'] = parse_toxicology_html(response_acute.content) + + # Fetch and parse repeated dose toxicity + rdt_link = index.get('repeated_dose_toxicity_link') + if rdt_link: + response_repeated = requests.get(rdt_link) + if response_repeated.status_code == 200: + result['repeated_dose_toxicity'] = parse_toxicology_html(response_repeated.content) + + return result + return + + +app._unparsable_cell( + r""" + def check_sub_locally(cas: str) -> dict: + client = get_client() + db = client.get_database(name=\"toxinfo\") + collection = db.get_collection(\"substance_index\") + sub = collection.find_one({\"rmlCas\": cas}) + if sub: + return sub + return {}) + + def add_sub_locally(cas : str) -> None: + client = get_client() + db = client.get_database(name=\"toxinfo\") + collection = db.get_collection(\"substance_index\") + sub = collection.find_one({\"rmlCas\": substance['rmlCas']}) + if not sub: + collection.insert_one(substance) + else: + return sub + """, + name="_" +) + + @app.cell(hide_code=True) def _(mo): mo.md( diff --git a/REFACTORING.md b/docs/REFACTORING.md similarity index 100% rename from REFACTORING.md rename to docs/REFACTORING.md diff --git a/src/pif_compiler/services/echa_find.py b/old/echa_find.py similarity index 100% rename from src/pif_compiler/services/echa_find.py rename to old/echa_find.py diff --git a/src/pif_compiler/services/echa_pdf.py b/old/echa_pdf.py similarity index 98% rename from src/pif_compiler/services/echa_pdf.py rename to old/echa_pdf.py index abb1994..de1342b 100644 --- a/src/pif_compiler/services/echa_pdf.py +++ b/old/echa_pdf.py @@ -464,4 +464,14 @@ def search_generate_pdfs( print(f"===== Finished request for CAS: {cas_number_to_search} =====") print(f"Successfully generated {len(successful_pages)} PDFs: {successful_pages}") - return overall_success # Return success based on PDF generation \ No newline at end of file + return overall_success # Return success based on PDF generation + +from playwright.sync_api import sync_playwright + +with sync_playwright() as p: + browser = p.chromium.launch() + page = browser.new_page() + page.goto("https://chem.echa.europa.eu/html-pages-prod/e4c88c6e-06c7-4daa-b0fb-1a55459ac22f/documents/IUC5-5f55d8ec-7a71-4e2c-9955-8469ead9fe84_0035f3f8-7467-4944-9028-1db2e9c99565.html") + page.pdf(path='output.pdf') + browser.close() + diff --git a/src/pif_compiler/services/echa_process.py b/old/echa_process.py similarity index 100% rename from src/pif_compiler/services/echa_process.py rename to old/echa_process.py diff --git a/pyproject.toml b/pyproject.toml index 3a149a0..a3a6217 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -9,6 +9,7 @@ authors = [ requires-python = ">=3.12" dependencies = [ "beautifulsoup4>=4.14.2", + "dotenv>=0.9.9", "duckdb>=1.4.1", "marimo>=0.16.5", "markdown-to-json>=2.1.2", @@ -21,8 +22,10 @@ dependencies = [ "pytest>=8.4.2", "pytest-cov>=7.0.0", "pytest-mock>=3.15.1", + "python-dotenv>=1.2.1", "requests>=2.32.5", "streamlit>=1.50.0", + "weasyprint>=66.0", ] [project.scripts] diff --git a/src/pif_compiler/services/__init__.py b/src/pif_compiler/services/__init__.py index d48e262..810a684 100644 --- a/src/pif_compiler/services/__init__.py +++ b/src/pif_compiler/services/__init__.py @@ -58,7 +58,7 @@ from pif_compiler.services.common_log import ( get_logger, ) -from pif_compiler.services.mongo_conn import get_client +from pif_compiler.services.db_utils import get_client __all__ = [ diff --git a/src/pif_compiler/services/db_utils.py b/src/pif_compiler/services/db_utils.py new file mode 100644 index 0000000..8774cca --- /dev/null +++ b/src/pif_compiler/services/db_utils.py @@ -0,0 +1,37 @@ +import os + +from dotenv import load_dotenv +from pymongo import MongoClient + +from pif_compiler.services.common_log import get_logger + +# config log and env +logger = get_logger() +load_dotenv() + +def get_client(): + ADMIN_USER = os.getenv("ADMIN_USER") + ADMIN_PASSWORD = os.getenv("ADMIN_PASSWORD") + MONGO_HOST = os.getenv("MONGO_HOST") + MONGO_PORT = os.getenv("MONGO_PORT") + + client = MongoClient( + f"mongodb://{ADMIN_USER}:{ADMIN_PASSWORD}@{MONGO_HOST}:{MONGO_PORT}/?authSource=admin", + serverSelectionTimeoutMS=5000 + ) + + return client if client else None + +def db_connect(db_name : str = 'toxinfo', collection_name : str = 'substance_index') -> dict: + """ + Connect to the MongoDB database and return the specified collection. + """ + try: + client = get_client() + db = client.get_database(name=db_name) + collection = db.get_collection(collection_name) + except Exception as e: + logger.error(f"Error connecting to MongoDB: {e}") + return None + + return client, db, collection diff --git a/src/pif_compiler/services/debug_echa_find.py b/src/pif_compiler/services/debug_echa_find.py deleted file mode 100644 index e69de29..0000000 diff --git a/src/pif_compiler/services/mongo_conn.py b/src/pif_compiler/services/mongo_conn.py deleted file mode 100644 index 2f44201..0000000 --- a/src/pif_compiler/services/mongo_conn.py +++ /dev/null @@ -1,15 +0,0 @@ -from pymongo import MongoClient - -def get_client(): - ADMIN_USER = "admin" - ADMIN_PASSWORD = "bello98A." - MONGO_HOST = "204.216.215.1" - MONGO_PORT = 27017 - - # Connect as admin - client = MongoClient( - f"mongodb://{ADMIN_USER}:{ADMIN_PASSWORD}@{MONGO_HOST}:{MONGO_PORT}/?authSource=admin", - serverSelectionTimeoutMS=5000 - ) - - return client if client else None diff --git a/src/pif_compiler/services/srv_echa.py b/src/pif_compiler/services/srv_echa.py new file mode 100644 index 0000000..a8da61f --- /dev/null +++ b/src/pif_compiler/services/srv_echa.py @@ -0,0 +1,419 @@ +import os +import requests +import json +import re + +from bs4 import BeautifulSoup +from dotenv import load_dotenv +from playwright.sync_api import sync_playwright + +from pif_compiler.services.common_log import get_logger +from pif_compiler.services.db_utils import db_connect + +log = get_logger() +load_dotenv() + +BASE_SEARCH = "https://chem.echa.europa.eu/api-substance/v1/substance?pageIndex=1&pageSize=100&searchText=" +BASE_DOSSIER = "https://chem.echa.europa.eu/api-dossier-list/v1/dossier?pageIndex=1&pageSize=100&rmlId=" +SUBSTANCE_SUMMARY = "https://chem.echa.europa.eu/api-substance/v1/substance/" #+id +CLASSIFICATION_ID = "https://chem.echa.europa.eu/api-cnl-inventory/prominent/overview/classifications/harmonised/459160" +TOXICOLOGICAL_INFO = "https://chem.echa.europa.eu/html-pages-prod/e4c88c6e-06c7-4daa-b0fb-1a55459ac22f/documents/IUC5-5f55d8ec-7a71-4e2c-9955-8469ead9fe84_0035f3f8-7467-4944-9028-1db2e9c99565.html" # external + rootkey +REPEATED_DOSE = "https://chem.echa.europa.eu/html-pages-prod/e4c88c6e-06c7-4daa-b0fb-1a55459ac22f/documents/IUC5-82402b09-8d8f-495c-b673-95b205be60e0_0035f3f8-7467-4944-9028-1db2e9c99565.html" + +active = "®istrationStatuses=Active" +inactive = "®istrationStatuses=Inactive" +legislation = "&legislation=REACH" + +#region ECHA scraping functions + +def search_substance(cas : str) -> dict: + response = requests.get(BASE_SEARCH + cas) + if response.status_code != 200: + log.error(f"Network error: {response.status_code}") + return {} + else: + response = response.json() + if response['state']['totalItems'] == 0: + log.info(f"No substance found for CAS {cas}") + return {} + else: + for result in response['items']: + if result["substanceIndex"]["rmlCas"] == cas: + substance = { + "rmlCas": result["substanceIndex"]["rmlCas"], + "rmlId": result["substanceIndex"]["rmlId"], + "rmlEc": result["substanceIndex"]["rmlEc"], + "rmlName": result["substanceIndex"]["rmlName"], + "rmlId": result["substanceIndex"]["rmlId"] + } + return substance + log.error(f"Something went wrong") + return {} + + +def get_dossier_info(rmlId: str) -> dict: + url = BASE_DOSSIER + rmlId + active + legislation + response_dossier = requests.get(url) + if response_dossier.status_code != 200: + log.error(f"Network error: {response_dossier.status_code}") + return {} + response_dossier_json = response_dossier.json() + if response_dossier_json['state']['totalItems'] == 0: + log.info(f"No dossier found for RML ID {rmlId}") + return {} + dossier_info = { + "lastUpdatedDate": response_dossier_json['items'][0]['lastUpdatedDate'], + "registrationStatus": response_dossier_json['items'][0]['registrationStatus'], + "registrationStatusChangedDate": response_dossier_json['items'][0]['registrationStatusChangedDate'], + "registrationRole": response_dossier_json['items'][0]['reachDossierInfo']['registrationRole'], + "assetExternalId": response_dossier_json['items'][0]['assetExternalId'], + "rootKey": response_dossier_json['items'][0]['rootKey'] + } + return dossier_info + + +def get_substance_index(assetExternalId : str) -> dict: + INDEX = "https://chem.echa.europa.eu/html-pages-prod/" + assetExternalId + LINK_DOSSIER = INDEX + "/documents/" + + response = requests.get(INDEX + "/index.html") + if response.status_code != 200: + log.error(f"Network error: {response.status_code}") + return {} + + soup = BeautifulSoup(response.content, 'html.parser') + index_data = {} + + # Toxicological information : txi + + txi_div = soup.find('div', id='id_7_Toxicologicalinformation') + txi_link = txi_div.find('a', class_='das-leaf') + txi_href = txi_link['href'] + index_data['toxicological_information_link'] = LINK_DOSSIER + txi_href + '.html' + + # Repeated dose toxicity : rdt + + rdt_div = soup.find('div', id='id_75_Repeateddosetoxicity') + rdt_link = rdt_div.find('a', class_='das-leaf') + rdt_href = rdt_link['href'] + index_data['repeated_dose_toxicity_link'] = LINK_DOSSIER + rdt_href + '.html' + + # Acute toxicity : at + + at_div = soup.find('div', id='id_72_AcuteToxicity') + at_link = at_div.find('a', class_='das-leaf') + at_href = at_link['href'] + index_data['acute_toxicity_link'] = LINK_DOSSIER + at_href + '.html' + + return index_data + +#endregion + +#region ECHA parsing functions of html pages + +def get_field_name(field_div): + """Extract field name from the class attribute of label div""" + label_div = field_div.find('div', class_='das-field_label') + if not label_div: + return None + + classes = label_div.get('class', []) + + for cls in classes: + if cls not in ['das-field_label', 'das-empty-value', 'das-empty-label']: + return cls + + return None + + +def extract_field_value(field_div): + """Extract value from a das-field div""" + field_name = get_field_name(field_div) + if not field_name: + return None + + # Skip OriginalStudy fields + if field_name == 'OriginalStudy': + return None + + value_div = field_div.find('div', class_='das-field_value') + if not value_div: + return None + + # Exclude redacted/not publishable + redacted = value_div.find('span', class_='das-redacted-value') + if redacted: + return None + + # Check if empty + empty_span = value_div.find('span', class_='das-empty-value') + if empty_span and not value_div.find('span', class_='das-redacted-value'): + return {field_name: ""} + + # Extract pick-list value + pick_list = value_div.find('span', class_='das-field_value_pick-list') + if pick_list: + phrase = pick_list.find('span', class_='phrase') + if phrase: + return {field_name: phrase.get_text(strip=True)} + if pick_list.find('span', class_='das-empty-value'): + return {field_name: ""} + + # Extract quantity value (value + unit) + quantity = value_div.find('span', class_='i6PhysicalQuantity') + if quantity: + value_span = quantity.find('span', class_='value') + unit_span = quantity.find('span', class_='unit') + + value_text = value_span.get_text(strip=True) if value_span else "" + unit_text = "" + if unit_span: + unit_phrase = unit_span.find('span', class_='phrase') + if unit_phrase: + unit_text = unit_phrase.get_text(strip=True) + elif unit_span.find('span', class_='das-empty-value'): + unit_text = "" + + if value_text: + return {field_name: {"value": value_text, "unit": unit_text}} + else: + return {field_name: ""} + + # Extract checkbox value + checkbox_checked = value_div.find('span', class_='das-value_checkbox-checked') + checkbox_unchecked = value_div.find('span', class_='das-value_checkbox-unchecked') + if checkbox_checked is not None or checkbox_unchecked is not None: + return {field_name: checkbox_checked is not None} + + # Extract decimal/numeric value + if 'das-field_decimal' in field_div.get('class', []) or 'das-field_text' in field_div.get('class', []): + text = value_div.get_text(strip=True) + if '[Empty]' in text or not text: + return {field_name: ""} + return {field_name: text} + + # Extract HTML/text content + if value_div.find('div', class_='das-field_value_html'): + html_content = value_div.find('div', class_='das-field_value_html') + text = html_content.get_text(separator=' ', strip=True) + text = re.sub(r'\[Empty\]', '', text).strip() + if not text: + return {field_name: ""} + return {field_name: text} + + # Default: get text content + text = value_div.get_text(strip=True) + text = re.sub(r'\[Empty\]', '', text).strip() + return {field_name: text if text else ""} + + +def extract_table_data(table): + """Extract table data as array of objects""" + rows = table.find_all('tr') + if len(rows) < 2: + return [] + + header_row = rows[0] + headers = [] + for th in header_row.find_all('td'): + header_text = th.get_text(strip=True) + headers.append(header_text) + + data = [] + for row in rows[1:]: + cells = row.find_all('td') + + if len(cells) == 1 and cells[0].get('colspan'): + continue + + if len(cells) == len(headers): + row_data = {} + for i, cell in enumerate(cells): + cell_text = cell.get_text(strip=True) + row_data[headers[i]] = cell_text + data.append(row_data) + + return data + + +def extract_section(section): + """Recursively extract data from a section""" + section_data = {} + + label_h3 = section.find('h3', class_='das-block_label', recursive=False) + if label_h3: + section_data['label'] = label_h3.get_text(strip=True) + + direct_fields = section.find_all('div', class_='das-field', recursive=False) + for field in direct_fields: + field_data = extract_field_value(field) + if field_data: + section_data.update(field_data) + + tables = section.find_all('table', recursive=False) + for i, table in enumerate(tables): + table_data = extract_table_data(table) + if table_data: + table_key = f'table_{i+1}' if len(tables) > 1 else 'table' + section_data[table_key] = table_data + + nested_sections = section.find_all('section', class_='das-block', recursive=False) + if nested_sections: + section_data['subsections'] = [] + for nested in nested_sections: + nested_data = extract_section(nested) + if nested_data: + section_data['subsections'].append(nested_data) + + return section_data + + +def parse_toxicology_html(html_content): + """Main function to parse the toxicological HTML document""" + soup = BeautifulSoup(html_content, 'html.parser') + + result = {} + + title = soup.find('h4', class_='document-header') + if title: + result['document_title'] = title.get_text(strip=True) + + article = soup.find('article', class_='das-document') + if not article: + return result + + top_sections = article.find_all('section', class_='das-block', recursive=False) + result['sections'] = [] + + for section in top_sections: + section_data = extract_section(section) + if section_data: + result['sections'].append(section_data) + + return result + +#endregion + +#region PDF extraction functions + +def generate_pdf_from_toxicology_info(index: dict): + with sync_playwright() as p: + browser = p.chromium.launch() + page = browser.new_page() + page.goto(index['toxicological_information_link']) + page.pdf(path=f'pdfs/{index["substance"]["rmlCas"]}.pdf') + browser.close() + +#endregion + +#region Orchestrator functions + +def echa_flow(cas) -> dict: + try: + substance = search_substance(cas) + dossier_info = get_dossier_info(substance['rmlId']) + index = get_substance_index(dossier_info['assetExternalId']) + except Exception as e: + log.error(f"Error in ECHA flow for CAS {cas}: {e}") + return {} + + result = { + "substance": substance, + "dossier_info": dossier_info, + "index": index, + "toxicological_information": {}, + "acute_toxicity": {}, + "repeated_dose_toxicity": {} + } + + # Fetch and parse toxicological information + txi_link = index.get('toxicological_information_link') + if txi_link: + response_summary = requests.get(txi_link) + if response_summary.status_code == 200: + result['toxicological_information'] = parse_toxicology_html(response_summary.content) + + # Fetch and parse acute toxicity + at_link = index.get('acute_toxicity_link') + if at_link: + response_acute = requests.get(at_link) + if response_acute.status_code == 200: + result['acute_toxicity'] = parse_toxicology_html(response_acute.content) + + # Fetch and parse repeated dose toxicity + rdt_link = index.get('repeated_dose_toxicity_link') + if rdt_link: + response_repeated = requests.get(rdt_link) + if response_repeated.status_code == 200: + result['repeated_dose_toxicity'] = parse_toxicology_html(response_repeated.content) + + for key, value in result.items(): + if value is None or value == "" or value == [] or value == {}: + return False + return result + +def cas_validation(cas: str) -> str: + log.info(f"Starting ECHA data extraction for CAS: {cas}") + if cas is None or cas.strip() == "": + log.error("No CAS number provided.") + return None + + cas_stripped = cas.replace("-", "") + if cas_stripped.isdigit() and len(cas_stripped) <= 12: + log.info(f"CAS number {cas} maybe is valid.") + return cas.strip() + else: + log.error(f"CAS number {cas} is not valid.") + return None + +def check_local(cas: str) -> bool: + client, db, collection = db_connect() + + if not collection: + log.error("No MongoDB collection available.") + return None + + record = collection.find_one({"substance.rmlCas": cas}) + + if record: + log.info(f"Record for CAS {cas} found in local database.") + return record + else: + log.info(f"No record for CAS {cas} found in local database.") + return None + +def add_to_local(data: dict) -> bool: + client, db, collection = db_connect() + + if not collection: + log.error("No MongoDB collection available.") + return False + + try: + collection.insert_one(data) + log.info(f"Data for CAS {data['substance']['rmlCas']} added to local database.") + return True + except Exception as e: + log.error(f"Error inserting data into MongoDB: {e}") + return False + +def search_substance(cas: str) -> dict: + cas_validated = cas_validation(cas) + if not cas_validated: + return None + else: + local_record = check_local(cas_validated) + if local_record: + return local_record + else: + echa_data = echa_flow(cas_validated) + if echa_data: + add_to_local(echa_data) + return echa_data + else: + log.error(f"Failed to retrieve ECHA data for CAS {cas}.") + return None + +# to do: check if document is complete +# to do: check lastupdate +#endregion \ No newline at end of file diff --git a/uv.lock b/uv.lock index 24341d9..360fce5 100644 --- a/uv.lock +++ b/uv.lock @@ -71,6 +71,61 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/10/cb/f2ad4230dc2eb1a74edf38f1a38b9b52277f75bef262d8908e60d957e13c/blinker-1.9.0-py3-none-any.whl", hash = "sha256:ba0efaa9080b619ff2f3459d1d500c57bddea4a6b424b60a91141db6fd2f08bc", size = 8458 }, ] +[[package]] +name = "brotli" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2f/c2/f9e977608bdf958650638c3f1e28f85a1b075f075ebbe77db8555463787b/Brotli-1.1.0.tar.gz", hash = "sha256:81de08ac11bcb85841e440c13611c00b67d3bf82698314928d0b676362546724", size = 7372270 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5c/d0/5373ae13b93fe00095a58efcbce837fd470ca39f703a235d2a999baadfbc/Brotli-1.1.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:32d95b80260d79926f5fab3c41701dbb818fde1c9da590e77e571eefd14abe28", size = 815693 }, + { url = "https://files.pythonhosted.org/packages/8e/48/f6e1cdf86751300c288c1459724bfa6917a80e30dbfc326f92cea5d3683a/Brotli-1.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b760c65308ff1e462f65d69c12e4ae085cff3b332d894637f6273a12a482d09f", size = 422489 }, + { url = "https://files.pythonhosted.org/packages/06/88/564958cedce636d0f1bed313381dfc4b4e3d3f6015a63dae6146e1b8c65c/Brotli-1.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:316cc9b17edf613ac76b1f1f305d2a748f1b976b033b049a6ecdfd5612c70409", size = 873081 }, + { url = "https://files.pythonhosted.org/packages/58/79/b7026a8bb65da9a6bb7d14329fd2bd48d2b7f86d7329d5cc8ddc6a90526f/Brotli-1.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:caf9ee9a5775f3111642d33b86237b05808dafcd6268faa492250e9b78046eb2", size = 446244 }, + { url = "https://files.pythonhosted.org/packages/e5/18/c18c32ecea41b6c0004e15606e274006366fe19436b6adccc1ae7b2e50c2/Brotli-1.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70051525001750221daa10907c77830bc889cb6d865cc0b813d9db7fefc21451", size = 2906505 }, + { url = "https://files.pythonhosted.org/packages/08/c8/69ec0496b1ada7569b62d85893d928e865df29b90736558d6c98c2031208/Brotli-1.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7f4bf76817c14aa98cc6697ac02f3972cb8c3da93e9ef16b9c66573a68014f91", size = 2944152 }, + { url = "https://files.pythonhosted.org/packages/ab/fb/0517cea182219d6768113a38167ef6d4eb157a033178cc938033a552ed6d/Brotli-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d0c5516f0aed654134a2fc936325cc2e642f8a0e096d075209672eb321cff408", size = 2919252 }, + { url = "https://files.pythonhosted.org/packages/c7/53/73a3431662e33ae61a5c80b1b9d2d18f58dfa910ae8dd696e57d39f1a2f5/Brotli-1.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6c3020404e0b5eefd7c9485ccf8393cfb75ec38ce75586e046573c9dc29967a0", size = 2845955 }, + { url = "https://files.pythonhosted.org/packages/55/ac/bd280708d9c5ebdbf9de01459e625a3e3803cce0784f47d633562cf40e83/Brotli-1.1.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4ed11165dd45ce798d99a136808a794a748d5dc38511303239d4e2363c0695dc", size = 2914304 }, + { url = "https://files.pythonhosted.org/packages/76/58/5c391b41ecfc4527d2cc3350719b02e87cb424ef8ba2023fb662f9bf743c/Brotli-1.1.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:4093c631e96fdd49e0377a9c167bfd75b6d0bad2ace734c6eb20b348bc3ea180", size = 2814452 }, + { url = "https://files.pythonhosted.org/packages/c7/4e/91b8256dfe99c407f174924b65a01f5305e303f486cc7a2e8a5d43c8bec3/Brotli-1.1.0-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:7e4c4629ddad63006efa0ef968c8e4751c5868ff0b1c5c40f76524e894c50248", size = 2938751 }, + { url = "https://files.pythonhosted.org/packages/5a/a6/e2a39a5d3b412938362bbbeba5af904092bf3f95b867b4a3eb856104074e/Brotli-1.1.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:861bf317735688269936f755fa136a99d1ed526883859f86e41a5d43c61d8966", size = 2933757 }, + { url = "https://files.pythonhosted.org/packages/13/f0/358354786280a509482e0e77c1a5459e439766597d280f28cb097642fc26/Brotli-1.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:87a3044c3a35055527ac75e419dfa9f4f3667a1e887ee80360589eb8c90aabb9", size = 2936146 }, + { url = "https://files.pythonhosted.org/packages/80/f7/daf538c1060d3a88266b80ecc1d1c98b79553b3f117a485653f17070ea2a/Brotli-1.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:c5529b34c1c9d937168297f2c1fde7ebe9ebdd5e121297ff9c043bdb2ae3d6fb", size = 2848055 }, + { url = "https://files.pythonhosted.org/packages/ad/cf/0eaa0585c4077d3c2d1edf322d8e97aabf317941d3a72d7b3ad8bce004b0/Brotli-1.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:ca63e1890ede90b2e4454f9a65135a4d387a4585ff8282bb72964fab893f2111", size = 3035102 }, + { url = "https://files.pythonhosted.org/packages/d8/63/1c1585b2aa554fe6dbce30f0c18bdbc877fa9a1bf5ff17677d9cca0ac122/Brotli-1.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e79e6520141d792237c70bcd7a3b122d00f2613769ae0cb61c52e89fd3443839", size = 2930029 }, + { url = "https://files.pythonhosted.org/packages/5f/3b/4e3fd1893eb3bbfef8e5a80d4508bec17a57bb92d586c85c12d28666bb13/Brotli-1.1.0-cp312-cp312-win32.whl", hash = "sha256:5f4d5ea15c9382135076d2fb28dde923352fe02951e66935a9efaac8f10e81b0", size = 333276 }, + { url = "https://files.pythonhosted.org/packages/3d/d5/942051b45a9e883b5b6e98c041698b1eb2012d25e5948c58d6bf85b1bb43/Brotli-1.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:906bc3a79de8c4ae5b86d3d75a8b77e44404b0f4261714306e3ad248d8ab0951", size = 357255 }, + { url = "https://files.pythonhosted.org/packages/0a/9f/fb37bb8ffc52a8da37b1c03c459a8cd55df7a57bdccd8831d500e994a0ca/Brotli-1.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8bf32b98b75c13ec7cf774164172683d6e7891088f6316e54425fde1efc276d5", size = 815681 }, + { url = "https://files.pythonhosted.org/packages/06/b3/dbd332a988586fefb0aa49c779f59f47cae76855c2d00f450364bb574cac/Brotli-1.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7bc37c4d6b87fb1017ea28c9508b36bbcb0c3d18b4260fcdf08b200c74a6aee8", size = 422475 }, + { url = "https://files.pythonhosted.org/packages/bb/80/6aaddc2f63dbcf2d93c2d204e49c11a9ec93a8c7c63261e2b4bd35198283/Brotli-1.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c0ef38c7a7014ffac184db9e04debe495d317cc9c6fb10071f7fefd93100a4f", size = 2906173 }, + { url = "https://files.pythonhosted.org/packages/ea/1d/e6ca79c96ff5b641df6097d299347507d39a9604bde8915e76bf026d6c77/Brotli-1.1.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91d7cc2a76b5567591d12c01f019dd7afce6ba8cba6571187e21e2fc418ae648", size = 2943803 }, + { url = "https://files.pythonhosted.org/packages/ac/a3/d98d2472e0130b7dd3acdbb7f390d478123dbf62b7d32bda5c830a96116d/Brotli-1.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a93dde851926f4f2678e704fadeb39e16c35d8baebd5252c9fd94ce8ce68c4a0", size = 2918946 }, + { url = "https://files.pythonhosted.org/packages/c4/a5/c69e6d272aee3e1423ed005d8915a7eaa0384c7de503da987f2d224d0721/Brotli-1.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f0db75f47be8b8abc8d9e31bc7aad0547ca26f24a54e6fd10231d623f183d089", size = 2845707 }, + { url = "https://files.pythonhosted.org/packages/58/9f/4149d38b52725afa39067350696c09526de0125ebfbaab5acc5af28b42ea/Brotli-1.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6967ced6730aed543b8673008b5a391c3b1076d834ca438bbd70635c73775368", size = 2936231 }, + { url = "https://files.pythonhosted.org/packages/5a/5a/145de884285611838a16bebfdb060c231c52b8f84dfbe52b852a15780386/Brotli-1.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:7eedaa5d036d9336c95915035fb57422054014ebdeb6f3b42eac809928e40d0c", size = 2848157 }, + { url = "https://files.pythonhosted.org/packages/50/ae/408b6bfb8525dadebd3b3dd5b19d631da4f7d46420321db44cd99dcf2f2c/Brotli-1.1.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:d487f5432bf35b60ed625d7e1b448e2dc855422e87469e3f450aa5552b0eb284", size = 3035122 }, + { url = "https://files.pythonhosted.org/packages/af/85/a94e5cfaa0ca449d8f91c3d6f78313ebf919a0dbd55a100c711c6e9655bc/Brotli-1.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:832436e59afb93e1836081a20f324cb185836c617659b07b129141a8426973c7", size = 2930206 }, + { url = "https://files.pythonhosted.org/packages/c2/f0/a61d9262cd01351df22e57ad7c34f66794709acab13f34be2675f45bf89d/Brotli-1.1.0-cp313-cp313-win32.whl", hash = "sha256:43395e90523f9c23a3d5bdf004733246fba087f2948f87ab28015f12359ca6a0", size = 333804 }, + { url = "https://files.pythonhosted.org/packages/7e/c1/ec214e9c94000d1c1974ec67ced1c970c148aa6b8d8373066123fc3dbf06/Brotli-1.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:9011560a466d2eb3f5a6e4929cf4a09be405c64154e12df0dd72713f6500e32b", size = 358517 }, +] + +[[package]] +name = "brotlicffi" +version = "1.1.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/95/9d/70caa61192f570fcf0352766331b735afa931b4c6bc9a348a0925cc13288/brotlicffi-1.1.0.0.tar.gz", hash = "sha256:b77827a689905143f87915310b93b273ab17888fd43ef350d4832c4a71083c13", size = 465192 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a2/11/7b96009d3dcc2c931e828ce1e157f03824a69fb728d06bfd7b2fc6f93718/brotlicffi-1.1.0.0-cp37-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9b7ae6bd1a3f0df532b6d67ff674099a96d22bc0948955cb338488c31bfb8851", size = 453786 }, + { url = "https://files.pythonhosted.org/packages/d6/e6/a8f46f4a4ee7856fbd6ac0c6fb0dc65ed181ba46cd77875b8d9bbe494d9e/brotlicffi-1.1.0.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:19ffc919fa4fc6ace69286e0a23b3789b4219058313cf9b45625016bf7ff996b", size = 2911165 }, + { url = "https://files.pythonhosted.org/packages/be/20/201559dff14e83ba345a5ec03335607e47467b6633c210607e693aefac40/brotlicffi-1.1.0.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9feb210d932ffe7798ee62e6145d3a757eb6233aa9a4e7db78dd3690d7755814", size = 2927895 }, + { url = "https://files.pythonhosted.org/packages/cd/15/695b1409264143be3c933f708a3f81d53c4a1e1ebbc06f46331decbf6563/brotlicffi-1.1.0.0-cp37-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:84763dbdef5dd5c24b75597a77e1b30c66604725707565188ba54bab4f114820", size = 2851834 }, + { url = "https://files.pythonhosted.org/packages/b4/40/b961a702463b6005baf952794c2e9e0099bde657d0d7e007f923883b907f/brotlicffi-1.1.0.0-cp37-abi3-win32.whl", hash = "sha256:1b12b50e07c3911e1efa3a8971543e7648100713d4e0971b13631cce22c587eb", size = 341731 }, + { url = "https://files.pythonhosted.org/packages/1c/fa/5408a03c041114ceab628ce21766a4ea882aa6f6f0a800e04ee3a30ec6b9/brotlicffi-1.1.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:994a4f0681bb6c6c3b0925530a1926b7a189d878e6e5e38fae8efa47c5d9c613", size = 366783 }, +] + [[package]] name = "cachetools" version = "6.2.0" @@ -89,6 +144,63 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e5/48/1549795ba7742c948d2ad169c1c8cdbae65bc450d6cd753d124b17c8cd32/certifi-2025.8.3-py3-none-any.whl", hash = "sha256:f6c12493cfb1b06ba2ff328595af9350c65d6644968e5d3a2ffd78699af217a5", size = 161216 }, ] +[[package]] +name = "cffi" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pycparser", marker = "implementation_name != 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/eb/56/b1ba7935a17738ae8453301356628e8147c79dbb825bcbc73dc7401f9846/cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529", size = 523588 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ea/47/4f61023ea636104d4f16ab488e268b93008c3d0bb76893b1b31db1f96802/cffi-2.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d02d6655b0e54f54c4ef0b94eb6be0607b70853c45ce98bd278dc7de718be5d", size = 185271 }, + { url = "https://files.pythonhosted.org/packages/df/a2/781b623f57358e360d62cdd7a8c681f074a71d445418a776eef0aadb4ab4/cffi-2.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8eca2a813c1cb7ad4fb74d368c2ffbbb4789d377ee5bb8df98373c2cc0dee76c", size = 181048 }, + { url = "https://files.pythonhosted.org/packages/ff/df/a4f0fbd47331ceeba3d37c2e51e9dfc9722498becbeec2bd8bc856c9538a/cffi-2.0.0-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:21d1152871b019407d8ac3985f6775c079416c282e431a4da6afe7aefd2bccbe", size = 212529 }, + { url = "https://files.pythonhosted.org/packages/d5/72/12b5f8d3865bf0f87cf1404d8c374e7487dcf097a1c91c436e72e6badd83/cffi-2.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062", size = 220097 }, + { url = "https://files.pythonhosted.org/packages/c2/95/7a135d52a50dfa7c882ab0ac17e8dc11cec9d55d2c18dda414c051c5e69e/cffi-2.0.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:1e3a615586f05fc4065a8b22b8152f0c1b00cdbc60596d187c2a74f9e3036e4e", size = 207983 }, + { url = "https://files.pythonhosted.org/packages/3a/c8/15cb9ada8895957ea171c62dc78ff3e99159ee7adb13c0123c001a2546c1/cffi-2.0.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:81afed14892743bbe14dacb9e36d9e0e504cd204e0b165062c488942b9718037", size = 206519 }, + { url = "https://files.pythonhosted.org/packages/78/2d/7fa73dfa841b5ac06c7b8855cfc18622132e365f5b81d02230333ff26e9e/cffi-2.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba", size = 219572 }, + { url = "https://files.pythonhosted.org/packages/07/e0/267e57e387b4ca276b90f0434ff88b2c2241ad72b16d31836adddfd6031b/cffi-2.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3925dd22fa2b7699ed2617149842d2e6adde22b262fcbfada50e3d195e4b3a94", size = 222963 }, + { url = "https://files.pythonhosted.org/packages/b6/75/1f2747525e06f53efbd878f4d03bac5b859cbc11c633d0fb81432d98a795/cffi-2.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2c8f814d84194c9ea681642fd164267891702542f028a15fc97d4674b6206187", size = 221361 }, + { url = "https://files.pythonhosted.org/packages/7b/2b/2b6435f76bfeb6bbf055596976da087377ede68df465419d192acf00c437/cffi-2.0.0-cp312-cp312-win32.whl", hash = "sha256:da902562c3e9c550df360bfa53c035b2f241fed6d9aef119048073680ace4a18", size = 172932 }, + { url = "https://files.pythonhosted.org/packages/f8/ed/13bd4418627013bec4ed6e54283b1959cf6db888048c7cf4b4c3b5b36002/cffi-2.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:da68248800ad6320861f129cd9c1bf96ca849a2771a59e0344e88681905916f5", size = 183557 }, + { url = "https://files.pythonhosted.org/packages/95/31/9f7f93ad2f8eff1dbc1c3656d7ca5bfd8fb52c9d786b4dcf19b2d02217fa/cffi-2.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:4671d9dd5ec934cb9a73e7ee9676f9362aba54f7f34910956b84d727b0d73fb6", size = 177762 }, + { url = "https://files.pythonhosted.org/packages/4b/8d/a0a47a0c9e413a658623d014e91e74a50cdd2c423f7ccfd44086ef767f90/cffi-2.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb", size = 185230 }, + { url = "https://files.pythonhosted.org/packages/4a/d2/a6c0296814556c68ee32009d9c2ad4f85f2707cdecfd7727951ec228005d/cffi-2.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca", size = 181043 }, + { url = "https://files.pythonhosted.org/packages/b0/1e/d22cc63332bd59b06481ceaac49d6c507598642e2230f201649058a7e704/cffi-2.0.0-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b", size = 212446 }, + { url = "https://files.pythonhosted.org/packages/a9/f5/a2c23eb03b61a0b8747f211eb716446c826ad66818ddc7810cc2cc19b3f2/cffi-2.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b", size = 220101 }, + { url = "https://files.pythonhosted.org/packages/f2/7f/e6647792fc5850d634695bc0e6ab4111ae88e89981d35ac269956605feba/cffi-2.0.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2", size = 207948 }, + { url = "https://files.pythonhosted.org/packages/cb/1e/a5a1bd6f1fb30f22573f76533de12a00bf274abcdc55c8edab639078abb6/cffi-2.0.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3", size = 206422 }, + { url = "https://files.pythonhosted.org/packages/98/df/0a1755e750013a2081e863e7cd37e0cdd02664372c754e5560099eb7aa44/cffi-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26", size = 219499 }, + { url = "https://files.pythonhosted.org/packages/50/e1/a969e687fcf9ea58e6e2a928ad5e2dd88cc12f6f0ab477e9971f2309b57c/cffi-2.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c", size = 222928 }, + { url = "https://files.pythonhosted.org/packages/36/54/0362578dd2c9e557a28ac77698ed67323ed5b9775ca9d3fe73fe191bb5d8/cffi-2.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b", size = 221302 }, + { url = "https://files.pythonhosted.org/packages/eb/6d/bf9bda840d5f1dfdbf0feca87fbdb64a918a69bca42cfa0ba7b137c48cb8/cffi-2.0.0-cp313-cp313-win32.whl", hash = "sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27", size = 172909 }, + { url = "https://files.pythonhosted.org/packages/37/18/6519e1ee6f5a1e579e04b9ddb6f1676c17368a7aba48299c3759bbc3c8b3/cffi-2.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75", size = 183402 }, + { url = "https://files.pythonhosted.org/packages/cb/0e/02ceeec9a7d6ee63bb596121c2c8e9b3a9e150936f4fbef6ca1943e6137c/cffi-2.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91", size = 177780 }, + { url = "https://files.pythonhosted.org/packages/92/c4/3ce07396253a83250ee98564f8d7e9789fab8e58858f35d07a9a2c78de9f/cffi-2.0.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fc33c5141b55ed366cfaad382df24fe7dcbc686de5be719b207bb248e3053dc5", size = 185320 }, + { url = "https://files.pythonhosted.org/packages/59/dd/27e9fa567a23931c838c6b02d0764611c62290062a6d4e8ff7863daf9730/cffi-2.0.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c654de545946e0db659b3400168c9ad31b5d29593291482c43e3564effbcee13", size = 181487 }, + { url = "https://files.pythonhosted.org/packages/d6/43/0e822876f87ea8a4ef95442c3d766a06a51fc5298823f884ef87aaad168c/cffi-2.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:24b6f81f1983e6df8db3adc38562c83f7d4a0c36162885ec7f7b77c7dcbec97b", size = 220049 }, + { url = "https://files.pythonhosted.org/packages/b4/89/76799151d9c2d2d1ead63c2429da9ea9d7aac304603de0c6e8764e6e8e70/cffi-2.0.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:12873ca6cb9b0f0d3a0da705d6086fe911591737a59f28b7936bdfed27c0d47c", size = 207793 }, + { url = "https://files.pythonhosted.org/packages/bb/dd/3465b14bb9e24ee24cb88c9e3730f6de63111fffe513492bf8c808a3547e/cffi-2.0.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:d9b97165e8aed9272a6bb17c01e3cc5871a594a446ebedc996e2397a1c1ea8ef", size = 206300 }, + { url = "https://files.pythonhosted.org/packages/47/d9/d83e293854571c877a92da46fdec39158f8d7e68da75bf73581225d28e90/cffi-2.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:afb8db5439b81cf9c9d0c80404b60c3cc9c3add93e114dcae767f1477cb53775", size = 219244 }, + { url = "https://files.pythonhosted.org/packages/2b/0f/1f177e3683aead2bb00f7679a16451d302c436b5cbf2505f0ea8146ef59e/cffi-2.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:737fe7d37e1a1bffe70bd5754ea763a62a066dc5913ca57e957824b72a85e205", size = 222828 }, + { url = "https://files.pythonhosted.org/packages/c6/0f/cafacebd4b040e3119dcb32fed8bdef8dfe94da653155f9d0b9dc660166e/cffi-2.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:38100abb9d1b1435bc4cc340bb4489635dc2f0da7456590877030c9b3d40b0c1", size = 220926 }, + { url = "https://files.pythonhosted.org/packages/3e/aa/df335faa45b395396fcbc03de2dfcab242cd61a9900e914fe682a59170b1/cffi-2.0.0-cp314-cp314-win32.whl", hash = "sha256:087067fa8953339c723661eda6b54bc98c5625757ea62e95eb4898ad5e776e9f", size = 175328 }, + { url = "https://files.pythonhosted.org/packages/bb/92/882c2d30831744296ce713f0feb4c1cd30f346ef747b530b5318715cc367/cffi-2.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:203a48d1fb583fc7d78a4c6655692963b860a417c0528492a6bc21f1aaefab25", size = 185650 }, + { url = "https://files.pythonhosted.org/packages/9f/2c/98ece204b9d35a7366b5b2c6539c350313ca13932143e79dc133ba757104/cffi-2.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:dbd5c7a25a7cb98f5ca55d258b103a2054f859a46ae11aaf23134f9cc0d356ad", size = 180687 }, + { url = "https://files.pythonhosted.org/packages/3e/61/c768e4d548bfa607abcda77423448df8c471f25dbe64fb2ef6d555eae006/cffi-2.0.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9a67fc9e8eb39039280526379fb3a70023d77caec1852002b4da7e8b270c4dd9", size = 188773 }, + { url = "https://files.pythonhosted.org/packages/2c/ea/5f76bce7cf6fcd0ab1a1058b5af899bfbef198bea4d5686da88471ea0336/cffi-2.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7a66c7204d8869299919db4d5069a82f1561581af12b11b3c9f48c584eb8743d", size = 185013 }, + { url = "https://files.pythonhosted.org/packages/be/b4/c56878d0d1755cf9caa54ba71e5d049479c52f9e4afc230f06822162ab2f/cffi-2.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7cc09976e8b56f8cebd752f7113ad07752461f48a58cbba644139015ac24954c", size = 221593 }, + { url = "https://files.pythonhosted.org/packages/e0/0d/eb704606dfe8033e7128df5e90fee946bbcb64a04fcdaa97321309004000/cffi-2.0.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:92b68146a71df78564e4ef48af17551a5ddd142e5190cdf2c5624d0c3ff5b2e8", size = 209354 }, + { url = "https://files.pythonhosted.org/packages/d8/19/3c435d727b368ca475fb8742ab97c9cb13a0de600ce86f62eab7fa3eea60/cffi-2.0.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:b1e74d11748e7e98e2f426ab176d4ed720a64412b6a15054378afdb71e0f37dc", size = 208480 }, + { url = "https://files.pythonhosted.org/packages/d0/44/681604464ed9541673e486521497406fadcc15b5217c3e326b061696899a/cffi-2.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:28a3a209b96630bca57cce802da70c266eb08c6e97e5afd61a75611ee6c64592", size = 221584 }, + { url = "https://files.pythonhosted.org/packages/25/8e/342a504ff018a2825d395d44d63a767dd8ebc927ebda557fecdaca3ac33a/cffi-2.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:7553fb2090d71822f02c629afe6042c299edf91ba1bf94951165613553984512", size = 224443 }, + { url = "https://files.pythonhosted.org/packages/e1/5e/b666bacbbc60fbf415ba9988324a132c9a7a0448a9a8f125074671c0f2c3/cffi-2.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6c6c373cfc5c83a975506110d17457138c8c63016b563cc9ed6e056a82f13ce4", size = 223437 }, + { url = "https://files.pythonhosted.org/packages/a0/1d/ec1a60bd1a10daa292d3cd6bb0b359a81607154fb8165f3ec95fe003b85c/cffi-2.0.0-cp314-cp314t-win32.whl", hash = "sha256:1fc9ea04857caf665289b7a75923f2c6ed559b8298a1b8c49e59f7dd95c8481e", size = 180487 }, + { url = "https://files.pythonhosted.org/packages/bf/41/4c1168c74fac325c0c8156f04b6749c8b6a8f405bbf91413ba088359f60d/cffi-2.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:d68b6cef7827e8641e8ef16f4494edda8b36104d79773a334beaa1e3521430f6", size = 191726 }, + { url = "https://files.pythonhosted.org/packages/ae/3a/dbeec9d1ee0844c679f6bb5d6ad4e9f198b1224f4e7a32825f47f6192b0c/cffi-2.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9", size = 184195 }, +] + [[package]] name = "charset-normalizer" version = "3.4.3" @@ -226,6 +338,19 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ec/16/114df1c291c22cac3b0c127a73e0af5c12ed7bbb6558d310429a0ae24023/coverage-7.10.7-py3-none-any.whl", hash = "sha256:f7941f6f2fe6dd6807a1208737b8a0cbcf1cc6d7b07d24998ad2d63590868260", size = 209952 }, ] +[[package]] +name = "cssselect2" +version = "0.8.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "tinycss2" }, + { name = "webencodings" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9f/86/fd7f58fc498b3166f3a7e8e0cddb6e620fe1da35b02248b1bd59e95dbaaa/cssselect2-0.8.0.tar.gz", hash = "sha256:7674ffb954a3b46162392aee2a3a0aedb2e14ecf99fcc28644900f4e6e3e9d3a", size = 35716 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0f/e7/aa315e6a749d9b96c2504a1ba0ba031ba2d0517e972ce22682e3fccecb09/cssselect2-0.8.0-py3-none-any.whl", hash = "sha256:46fc70ebc41ced7a32cd42d58b1884d72ade23d21e5a4eaaf022401c13f0e76e", size = 15454 }, +] + [[package]] name = "dnspython" version = "2.8.0" @@ -244,6 +369,17 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/66/dd/f95350e853a4468ec37478414fc04ae2d61dad7a947b3015c3dcc51a09b9/docutils-0.22.2-py3-none-any.whl", hash = "sha256:b0e98d679283fc3bb0ead8a5da7f501baa632654e7056e9c5846842213d674d8", size = 632667 }, ] +[[package]] +name = "dotenv" +version = "0.9.9" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "python-dotenv" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/b2/b7/545d2c10c1fc15e48653c91efde329a790f2eecfbbf2bd16003b5db2bab0/dotenv-0.9.9-py2.py3-none-any.whl", hash = "sha256:29cf74a087b31dafdb5a446b6d7e11cbce8ed2741540e2339c69fbef92c94ce9", size = 1892 }, +] + [[package]] name = "duckdb" version = "1.4.1" @@ -264,6 +400,54 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/30/79/4f544d73fcc0513b71296cb3ebb28a227d22e80dec27204977039b9fa875/duckdb-1.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:280fd663dacdd12bb3c3bf41f3e5b2e5b95e00b88120afabb8b8befa5f335c6f", size = 12336460 }, ] +[[package]] +name = "fonttools" +version = "4.60.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4b/42/97a13e47a1e51a5a7142475bbcf5107fe3a68fc34aef331c897d5fb98ad0/fonttools-4.60.1.tar.gz", hash = "sha256:ef00af0439ebfee806b25f24c8f92109157ff3fac5731dc7867957812e87b8d9", size = 3559823 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e3/f7/a10b101b7a6f8836a5adb47f2791f2075d044a6ca123f35985c42edc82d8/fonttools-4.60.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:7b0c6d57ab00dae9529f3faf187f2254ea0aa1e04215cf2f1a8ec277c96661bc", size = 2832953 }, + { url = "https://files.pythonhosted.org/packages/ed/fe/7bd094b59c926acf2304d2151354ddbeb74b94812f3dc943c231db09cb41/fonttools-4.60.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:839565cbf14645952d933853e8ade66a463684ed6ed6c9345d0faf1f0e868877", size = 2352706 }, + { url = "https://files.pythonhosted.org/packages/c0/ca/4bb48a26ed95a1e7eba175535fe5805887682140ee0a0d10a88e1de84208/fonttools-4.60.1-cp312-cp312-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:8177ec9676ea6e1793c8a084a90b65a9f778771998eb919d05db6d4b1c0b114c", size = 4923716 }, + { url = "https://files.pythonhosted.org/packages/b8/9f/2cb82999f686c1d1ddf06f6ae1a9117a880adbec113611cc9d22b2fdd465/fonttools-4.60.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:996a4d1834524adbb423385d5a629b868ef9d774670856c63c9a0408a3063401", size = 4968175 }, + { url = "https://files.pythonhosted.org/packages/18/79/be569699e37d166b78e6218f2cde8c550204f2505038cdd83b42edc469b9/fonttools-4.60.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a46b2f450bc79e06ef3b6394f0c68660529ed51692606ad7f953fc2e448bc903", size = 4911031 }, + { url = "https://files.pythonhosted.org/packages/cc/9f/89411cc116effaec5260ad519162f64f9c150e5522a27cbb05eb62d0c05b/fonttools-4.60.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6ec722ee589e89a89f5b7574f5c45604030aa6ae24cb2c751e2707193b466fed", size = 5062966 }, + { url = "https://files.pythonhosted.org/packages/62/a1/f888221934b5731d46cb9991c7a71f30cb1f97c0ef5fcf37f8da8fce6c8e/fonttools-4.60.1-cp312-cp312-win32.whl", hash = "sha256:b2cf105cee600d2de04ca3cfa1f74f1127f8455b71dbad02b9da6ec266e116d6", size = 2218750 }, + { url = "https://files.pythonhosted.org/packages/88/8f/a55b5550cd33cd1028601df41acd057d4be20efa5c958f417b0c0613924d/fonttools-4.60.1-cp312-cp312-win_amd64.whl", hash = "sha256:992775c9fbe2cf794786fa0ffca7f09f564ba3499b8fe9f2f80bd7197db60383", size = 2267026 }, + { url = "https://files.pythonhosted.org/packages/7c/5b/cdd2c612277b7ac7ec8c0c9bc41812c43dc7b2d5f2b0897e15fdf5a1f915/fonttools-4.60.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:6f68576bb4bbf6060c7ab047b1574a1ebe5c50a17de62830079967b211059ebb", size = 2825777 }, + { url = "https://files.pythonhosted.org/packages/d6/8a/de9cc0540f542963ba5e8f3a1f6ad48fa211badc3177783b9d5cadf79b5d/fonttools-4.60.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:eedacb5c5d22b7097482fa834bda0dafa3d914a4e829ec83cdea2a01f8c813c4", size = 2348080 }, + { url = "https://files.pythonhosted.org/packages/2d/8b/371ab3cec97ee3fe1126b3406b7abd60c8fec8975fd79a3c75cdea0c3d83/fonttools-4.60.1-cp313-cp313-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b33a7884fabd72bdf5f910d0cf46be50dce86a0362a65cfc746a4168c67eb96c", size = 4903082 }, + { url = "https://files.pythonhosted.org/packages/04/05/06b1455e4bc653fcb2117ac3ef5fa3a8a14919b93c60742d04440605d058/fonttools-4.60.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2409d5fb7b55fd70f715e6d34e7a6e4f7511b8ad29a49d6df225ee76da76dd77", size = 4960125 }, + { url = "https://files.pythonhosted.org/packages/8e/37/f3b840fcb2666f6cb97038793606bdd83488dca2d0b0fc542ccc20afa668/fonttools-4.60.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c8651e0d4b3bdeda6602b85fdc2abbefc1b41e573ecb37b6779c4ca50753a199", size = 4901454 }, + { url = "https://files.pythonhosted.org/packages/fd/9e/eb76f77e82f8d4a46420aadff12cec6237751b0fb9ef1de373186dcffb5f/fonttools-4.60.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:145daa14bf24824b677b9357c5e44fd8895c2a8f53596e1b9ea3496081dc692c", size = 5044495 }, + { url = "https://files.pythonhosted.org/packages/f8/b3/cede8f8235d42ff7ae891bae8d619d02c8ac9fd0cfc450c5927a6200c70d/fonttools-4.60.1-cp313-cp313-win32.whl", hash = "sha256:2299df884c11162617a66b7c316957d74a18e3758c0274762d2cc87df7bc0272", size = 2217028 }, + { url = "https://files.pythonhosted.org/packages/75/4d/b022c1577807ce8b31ffe055306ec13a866f2337ecee96e75b24b9b753ea/fonttools-4.60.1-cp313-cp313-win_amd64.whl", hash = "sha256:a3db56f153bd4c5c2b619ab02c5db5192e222150ce5a1bc10f16164714bc39ac", size = 2266200 }, + { url = "https://files.pythonhosted.org/packages/9a/83/752ca11c1aa9a899b793a130f2e466b79ea0cf7279c8d79c178fc954a07b/fonttools-4.60.1-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:a884aef09d45ba1206712c7dbda5829562d3fea7726935d3289d343232ecb0d3", size = 2822830 }, + { url = "https://files.pythonhosted.org/packages/57/17/bbeab391100331950a96ce55cfbbff27d781c1b85ebafb4167eae50d9fe3/fonttools-4.60.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:8a44788d9d91df72d1a5eac49b31aeb887a5f4aab761b4cffc4196c74907ea85", size = 2345524 }, + { url = "https://files.pythonhosted.org/packages/3d/2e/d4831caa96d85a84dd0da1d9f90d81cec081f551e0ea216df684092c6c97/fonttools-4.60.1-cp314-cp314-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:e852d9dda9f93ad3651ae1e3bb770eac544ec93c3807888798eccddf84596537", size = 4843490 }, + { url = "https://files.pythonhosted.org/packages/49/13/5e2ea7c7a101b6fc3941be65307ef8df92cbbfa6ec4804032baf1893b434/fonttools-4.60.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:154cb6ee417e417bf5f7c42fe25858c9140c26f647c7347c06f0cc2d47eff003", size = 4944184 }, + { url = "https://files.pythonhosted.org/packages/0c/2b/cf9603551c525b73fc47c52ee0b82a891579a93d9651ed694e4e2cd08bb8/fonttools-4.60.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:5664fd1a9ea7f244487ac8f10340c4e37664675e8667d6fee420766e0fb3cf08", size = 4890218 }, + { url = "https://files.pythonhosted.org/packages/fd/2f/933d2352422e25f2376aae74f79eaa882a50fb3bfef3c0d4f50501267101/fonttools-4.60.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:583b7f8e3c49486e4d489ad1deacfb8d5be54a8ef34d6df824f6a171f8511d99", size = 4999324 }, + { url = "https://files.pythonhosted.org/packages/38/99/234594c0391221f66216bc2c886923513b3399a148defaccf81dc3be6560/fonttools-4.60.1-cp314-cp314-win32.whl", hash = "sha256:66929e2ea2810c6533a5184f938502cfdaea4bc3efb7130d8cc02e1c1b4108d6", size = 2220861 }, + { url = "https://files.pythonhosted.org/packages/3e/1d/edb5b23726dde50fc4068e1493e4fc7658eeefcaf75d4c5ffce067d07ae5/fonttools-4.60.1-cp314-cp314-win_amd64.whl", hash = "sha256:f3d5be054c461d6a2268831f04091dc82753176f6ea06dc6047a5e168265a987", size = 2270934 }, + { url = "https://files.pythonhosted.org/packages/fb/da/1392aaa2170adc7071fe7f9cfd181a5684a7afcde605aebddf1fb4d76df5/fonttools-4.60.1-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:b6379e7546ba4ae4b18f8ae2b9bc5960936007a1c0e30b342f662577e8bc3299", size = 2894340 }, + { url = "https://files.pythonhosted.org/packages/bf/a7/3b9f16e010d536ce567058b931a20b590d8f3177b2eda09edd92e392375d/fonttools-4.60.1-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9d0ced62b59e0430b3690dbc5373df1c2aa7585e9a8ce38eff87f0fd993c5b01", size = 2375073 }, + { url = "https://files.pythonhosted.org/packages/9b/b5/e9bcf51980f98e59bb5bb7c382a63c6f6cac0eec5f67de6d8f2322382065/fonttools-4.60.1-cp314-cp314t-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:875cb7764708b3132637f6c5fb385b16eeba0f7ac9fa45a69d35e09b47045801", size = 4849758 }, + { url = "https://files.pythonhosted.org/packages/e3/dc/1d2cf7d1cba82264b2f8385db3f5960e3d8ce756b4dc65b700d2c496f7e9/fonttools-4.60.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a184b2ea57b13680ab6d5fbde99ccef152c95c06746cb7718c583abd8f945ccc", size = 5085598 }, + { url = "https://files.pythonhosted.org/packages/5d/4d/279e28ba87fb20e0c69baf72b60bbf1c4d873af1476806a7b5f2b7fac1ff/fonttools-4.60.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:026290e4ec76583881763fac284aca67365e0be9f13a7fb137257096114cb3bc", size = 4957603 }, + { url = "https://files.pythonhosted.org/packages/78/d4/ff19976305e0c05aa3340c805475abb00224c954d3c65e82c0a69633d55d/fonttools-4.60.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:f0e8817c7d1a0c2eedebf57ef9a9896f3ea23324769a9a2061a80fe8852705ed", size = 4974184 }, + { url = "https://files.pythonhosted.org/packages/63/22/8553ff6166f5cd21cfaa115aaacaa0dc73b91c079a8cfd54a482cbc0f4f5/fonttools-4.60.1-cp314-cp314t-win32.whl", hash = "sha256:1410155d0e764a4615774e5c2c6fc516259fe3eca5882f034eb9bfdbee056259", size = 2282241 }, + { url = "https://files.pythonhosted.org/packages/8a/cb/fa7b4d148e11d5a72761a22e595344133e83a9507a4c231df972e657579b/fonttools-4.60.1-cp314-cp314t-win_amd64.whl", hash = "sha256:022beaea4b73a70295b688f817ddc24ed3e3418b5036ffcd5658141184ef0d0c", size = 2345760 }, + { url = "https://files.pythonhosted.org/packages/c7/93/0dd45cd283c32dea1545151d8c3637b4b8c53cdb3a625aeb2885b184d74d/fonttools-4.60.1-py3-none-any.whl", hash = "sha256:906306ac7afe2156fcf0042173d6ebbb05416af70f6b370967b47f8f00103bbb", size = 1143175 }, +] + +[package.optional-dependencies] +woff = [ + { name = "brotli", marker = "platform_python_implementation == 'CPython'" }, + { name = "brotlicffi", marker = "platform_python_implementation != 'CPython'" }, + { name = "zopfli" }, +] + [[package]] name = "gitdb" version = "4.0.12" @@ -302,6 +486,8 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/19/0d/6660d55f7373b2ff8152401a83e02084956da23ae58cddbfb0b330978fe9/greenlet-3.2.4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3b3812d8d0c9579967815af437d96623f45c0f2ae5f04e366de62a12d83a8fb0", size = 607586 }, { url = "https://files.pythonhosted.org/packages/8e/1a/c953fdedd22d81ee4629afbb38d2f9d71e37d23caace44775a3a969147d4/greenlet-3.2.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:abbf57b5a870d30c4675928c37278493044d7c14378350b3aa5d484fa65575f0", size = 1123281 }, { url = "https://files.pythonhosted.org/packages/3f/c7/12381b18e21aef2c6bd3a636da1088b888b97b7a0362fac2e4de92405f97/greenlet-3.2.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:20fb936b4652b6e307b8f347665e2c615540d4b42b3b4c8a321d8286da7e520f", size = 1151142 }, + { url = "https://files.pythonhosted.org/packages/27/45/80935968b53cfd3f33cf99ea5f08227f2646e044568c9b1555b58ffd61c2/greenlet-3.2.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ee7a6ec486883397d70eec05059353b8e83eca9168b9f3f9a361971e77e0bcd0", size = 1564846 }, + { url = "https://files.pythonhosted.org/packages/69/02/b7c30e5e04752cb4db6202a3858b149c0710e5453b71a3b2aec5d78a1aab/greenlet-3.2.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:326d234cbf337c9c3def0676412eb7040a35a768efc92504b947b3e9cfc7543d", size = 1633814 }, { url = "https://files.pythonhosted.org/packages/e9/08/b0814846b79399e585f974bbeebf5580fbe59e258ea7be64d9dfb253c84f/greenlet-3.2.4-cp312-cp312-win_amd64.whl", hash = "sha256:a7d4e128405eea3814a12cc2605e0e6aedb4035bf32697f72deca74de4105e02", size = 299899 }, { url = "https://files.pythonhosted.org/packages/49/e8/58c7f85958bda41dafea50497cbd59738c5c43dbbea5ee83d651234398f4/greenlet-3.2.4-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:1a921e542453fe531144e91e1feedf12e07351b1cf6c9e8a3325ea600a715a31", size = 272814 }, { url = "https://files.pythonhosted.org/packages/62/dd/b9f59862e9e257a16e4e610480cfffd29e3fae018a68c2332090b53aac3d/greenlet-3.2.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cd3c8e693bff0fff6ba55f140bf390fa92c994083f838fece0f63be121334945", size = 641073 }, @@ -311,6 +497,8 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ee/43/3cecdc0349359e1a527cbf2e3e28e5f8f06d3343aaf82ca13437a9aa290f/greenlet-3.2.4-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:23768528f2911bcd7e475210822ffb5254ed10d71f4028387e5a99b4c6699671", size = 610497 }, { url = "https://files.pythonhosted.org/packages/b8/19/06b6cf5d604e2c382a6f31cafafd6f33d5dea706f4db7bdab184bad2b21d/greenlet-3.2.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:00fadb3fedccc447f517ee0d3fd8fe49eae949e1cd0f6a611818f4f6fb7dc83b", size = 1121662 }, { url = "https://files.pythonhosted.org/packages/a2/15/0d5e4e1a66fab130d98168fe984c509249c833c1a3c16806b90f253ce7b9/greenlet-3.2.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:d25c5091190f2dc0eaa3f950252122edbbadbb682aa7b1ef2f8af0f8c0afefae", size = 1149210 }, + { url = "https://files.pythonhosted.org/packages/1c/53/f9c440463b3057485b8594d7a638bed53ba531165ef0ca0e6c364b5cc807/greenlet-3.2.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6e343822feb58ac4d0a1211bd9399de2b3a04963ddeec21530fc426cc121f19b", size = 1564759 }, + { url = "https://files.pythonhosted.org/packages/47/e4/3bb4240abdd0a8d23f4f88adec746a3099f0d86bfedb623f063b2e3b4df0/greenlet-3.2.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ca7f6f1f2649b89ce02f6f229d7c19f680a6238af656f61e0115b24857917929", size = 1634288 }, { url = "https://files.pythonhosted.org/packages/0b/55/2321e43595e6801e105fcfdee02b34c0f996eb71e6ddffca6b10b7e1d771/greenlet-3.2.4-cp313-cp313-win_amd64.whl", hash = "sha256:554b03b6e73aaabec3745364d6239e9e012d64c68ccd0b8430c64ccc14939a8b", size = 299685 }, { url = "https://files.pythonhosted.org/packages/22/5c/85273fd7cc388285632b0498dbbab97596e04b154933dfe0f3e68156c68c/greenlet-3.2.4-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:49a30d5fda2507ae77be16479bdb62a660fa51b1eb4928b524975b3bde77b3c0", size = 273586 }, { url = "https://files.pythonhosted.org/packages/d1/75/10aeeaa3da9332c2e761e4c50d4c3556c21113ee3f0afa2cf5769946f7a3/greenlet-3.2.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:299fd615cd8fc86267b47597123e3f43ad79c9d8a22bebdce535e53550763e2f", size = 686346 }, @@ -318,6 +506,8 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/dc/8b/29aae55436521f1d6f8ff4e12fb676f3400de7fcf27fccd1d4d17fd8fecd/greenlet-3.2.4-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:b4a1870c51720687af7fa3e7cda6d08d801dae660f75a76f3845b642b4da6ee1", size = 694659 }, { url = "https://files.pythonhosted.org/packages/92/2e/ea25914b1ebfde93b6fc4ff46d6864564fba59024e928bdc7de475affc25/greenlet-3.2.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:061dc4cf2c34852b052a8620d40f36324554bc192be474b9e9770e8c042fd735", size = 695355 }, { url = "https://files.pythonhosted.org/packages/72/60/fc56c62046ec17f6b0d3060564562c64c862948c9d4bc8aa807cf5bd74f4/greenlet-3.2.4-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:44358b9bf66c8576a9f57a590d5f5d6e72fa4228b763d0e43fee6d3b06d3a337", size = 657512 }, + { url = "https://files.pythonhosted.org/packages/23/6e/74407aed965a4ab6ddd93a7ded3180b730d281c77b765788419484cdfeef/greenlet-3.2.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:2917bdf657f5859fbf3386b12d68ede4cf1f04c90c3a6bc1f013dd68a22e2269", size = 1612508 }, + { url = "https://files.pythonhosted.org/packages/0d/da/343cd760ab2f92bac1845ca07ee3faea9fe52bee65f7bcb19f16ad7de08b/greenlet-3.2.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:015d48959d4add5d6c9f6c5210ee3803a830dce46356e3bc326d6776bde54681", size = 1680760 }, { url = "https://files.pythonhosted.org/packages/e3/a5/6ddab2b4c112be95601c13428db1d8b6608a8b6039816f2ba09c346c08fc/greenlet-3.2.4-cp314-cp314-win_amd64.whl", hash = "sha256:e37ab26028f12dbb0ff65f29a8d3d44a765c61e729647bf2ddfbbed621726f01", size = 303425 }, ] @@ -745,6 +935,7 @@ version = "0.1.0" source = { editable = "." } dependencies = [ { name = "beautifulsoup4" }, + { name = "dotenv" }, { name = "duckdb" }, { name = "marimo" }, { name = "markdown-to-json" }, @@ -757,13 +948,16 @@ dependencies = [ { name = "pytest" }, { name = "pytest-cov" }, { name = "pytest-mock" }, + { name = "python-dotenv" }, { name = "requests" }, { name = "streamlit" }, + { name = "weasyprint" }, ] [package.metadata] requires-dist = [ { name = "beautifulsoup4", specifier = ">=4.14.2" }, + { name = "dotenv", specifier = ">=0.9.9" }, { name = "duckdb", specifier = ">=1.4.1" }, { name = "marimo", specifier = ">=0.16.5" }, { name = "markdown-to-json", specifier = ">=2.1.2" }, @@ -776,8 +970,10 @@ requires-dist = [ { name = "pytest", specifier = ">=8.4.2" }, { name = "pytest-cov", specifier = ">=7.0.0" }, { name = "pytest-mock", specifier = ">=3.15.1" }, + { name = "python-dotenv", specifier = ">=1.2.1" }, { name = "requests", specifier = ">=2.32.5" }, { name = "streamlit", specifier = ">=1.50.0" }, + { name = "weasyprint", specifier = ">=66.0" }, ] [[package]] @@ -948,6 +1144,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e5/4e/519c1bc1876625fe6b71e9a28287c43ec2f20f73c658b9ae1d485c0c206e/pyarrow-21.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:222c39e2c70113543982c6b34f3077962b44fca38c0bd9e68bb6781534425c10", size = 26371006 }, ] +[[package]] +name = "pycparser" +version = "2.23" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fe/cf/d2d3b9f5699fb1e4615c8e32ff220203e43b248e1dfcc6736ad9057731ca/pycparser-2.23.tar.gz", hash = "sha256:78816d4f24add8f10a06d6f05b4d424ad9e96cfebf68a4ddc99c65c0720d00c2", size = 173734 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/e3/59cd50310fc9b59512193629e1984c1f95e5c8ae6e5d8c69532ccc65a7fe/pycparser-2.23-py3-none-any.whl", hash = "sha256:e5c6e8d3fbad53479cab09ac03729e0a9faf2bee3db8208a550daf5af81a5934", size = 118140 }, +] + [[package]] name = "pydantic" version = "2.11.10" @@ -1018,6 +1223,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ab/4c/b888e6cf58bd9db9c93f40d1c6be8283ff49d88919231afe93a6bcf61626/pydeck-0.9.1-py2.py3-none-any.whl", hash = "sha256:b3f75ba0d273fc917094fa61224f3f6076ca8752b93d46faf3bcfd9f9d59b038", size = 6900403 }, ] +[[package]] +name = "pydyf" +version = "0.11.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2e/c2/97fc6ce4ce0045080dc99446def812081b57750ed8aa67bfdfafa4561fe5/pydyf-0.11.0.tar.gz", hash = "sha256:394dddf619cca9d0c55715e3c55ea121a9bf9cbc780cdc1201a2427917b86b64", size = 17769 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c9/ac/d5db977deaf28c6ecbc61bbca269eb3e8f0b3a1f55c8549e5333e606e005/pydyf-0.11.0-py3-none-any.whl", hash = "sha256:0aaf9e2ebbe786ec7a78ec3fbffa4cdcecde53fd6f563221d53c6bc1328848a3", size = 8104 }, +] + [[package]] name = "pyee" version = "13.0.0" @@ -1103,6 +1317,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/19/99/f8fc04ae46fbf721b2935c59f3542810e72f50a4cb5b8aa092b6246a643f/pymongo-4.15.2-cp314-cp314t-win_arm64.whl", hash = "sha256:2c816a9e9d4aaaa0e4e9fb2534b72957666d262f3ce874a0408f8b925cfd4d99", size = 1050833 }, ] +[[package]] +name = "pyphen" +version = "0.17.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/69/56/e4d7e1bd70d997713649c5ce530b2d15a5fc2245a74ca820fc2d51d89d4d/pyphen-0.17.2.tar.gz", hash = "sha256:f60647a9c9b30ec6c59910097af82bc5dd2d36576b918e44148d8b07ef3b4aa3", size = 2079470 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/1f/c2142d2edf833a90728e5cdeb10bdbdc094dde8dbac078cee0cf33f5e11b/pyphen-0.17.2-py3-none-any.whl", hash = "sha256:3a07fb017cb2341e1d9ff31b8634efb1ae4dc4b130468c7c39dd3d32e7c3affd", size = 2079358 }, +] + [[package]] name = "pytest" version = "8.4.2" @@ -1157,6 +1380,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892 }, ] +[[package]] +name = "python-dotenv" +version = "1.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f0/26/19cadc79a718c5edbec86fd4919a6b6d3f681039a2f6d66d14be94e75fb9/python_dotenv-1.2.1.tar.gz", hash = "sha256:42667e897e16ab0d66954af0e60a9caa94f0fd4ecf3aaf6d2d260eec1aa36ad6", size = 44221 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/14/1b/a298b06749107c305e1fe0f814c6c74aea7b2f1e10989cb30f544a1b3253/python_dotenv-1.2.1-py3-none-any.whl", hash = "sha256:b81ee9561e9ca4004139c6cbba3a238c32b03e4894671e181b671e8cb8425d61", size = 21230 }, +] + [[package]] name = "pytz" version = "2025.2" @@ -1409,6 +1641,30 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e5/30/643397144bfbfec6f6ef821f36f33e57d35946c44a2352d3c9f0ae847619/tenacity-9.1.2-py3-none-any.whl", hash = "sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138", size = 28248 }, ] +[[package]] +name = "tinycss2" +version = "1.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "webencodings" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7a/fd/7a5ee21fd08ff70d3d33a5781c255cbe779659bd03278feb98b19ee550f4/tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7", size = 87085 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e6/34/ebdc18bae6aa14fbee1a08b63c015c72b64868ff7dae68808ab500c492e2/tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289", size = 26610 }, +] + +[[package]] +name = "tinyhtml5" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "webencodings" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fd/03/6111ed99e9bf7dfa1c30baeef0e0fb7e0bd387bd07f8e5b270776fe1de3f/tinyhtml5-2.0.0.tar.gz", hash = "sha256:086f998833da24c300c414d9fe81d9b368fd04cb9d2596a008421cbc705fcfcc", size = 179507 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5c/de/27c57899297163a4a84104d5cec0af3b1ac5faf62f44667e506373c6b8ce/tinyhtml5-2.0.0-py3-none-any.whl", hash = "sha256:13683277c5b176d070f82d099d977194b7a1e26815b016114f581a74bbfbf47e", size = 39793 }, +] + [[package]] name = "toml" version = "0.10.2" @@ -1516,6 +1772,34 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/33/e8/e40370e6d74ddba47f002a32919d91310d6074130fe4e17dabcafc15cbf1/watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f", size = 79067 }, ] +[[package]] +name = "weasyprint" +version = "66.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi" }, + { name = "cssselect2" }, + { name = "fonttools", extra = ["woff"] }, + { name = "pillow" }, + { name = "pydyf" }, + { name = "pyphen" }, + { name = "tinycss2" }, + { name = "tinyhtml5" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/32/99/480b5430b7eb0916e7d5df1bee7d9508b28b48fee28da894d0a050e0e930/weasyprint-66.0.tar.gz", hash = "sha256:da71dc87dc129ac9cffdc65e5477e90365ab9dbae45c744014ec1d06303dde40", size = 504224 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0f/d1/c5d9b341bf3d556c1e4c6566b3efdda0b1bb175510aa7b09dd3eee246923/weasyprint-66.0-py3-none-any.whl", hash = "sha256:82b0783b726fcd318e2c977dcdddca76515b30044bc7a830cc4fbe717582a6d0", size = 301965 }, +] + +[[package]] +name = "webencodings" +version = "0.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47/webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923", size = 9721 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", size = 11774 }, +] + [[package]] name = "websockets" version = "15.0.1" @@ -1546,3 +1830,31 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/1b/6c/c65773d6cab416a64d191d6ee8a8b1c68a09970ea6909d16965d26bfed1e/websockets-15.0.1-cp313-cp313-win_amd64.whl", hash = "sha256:e09473f095a819042ecb2ab9465aee615bd9c2028e4ef7d933600a8401c79561", size = 176837 }, { url = "https://files.pythonhosted.org/packages/fa/a8/5b41e0da817d64113292ab1f8247140aac61cbf6cfd085d6a0fa77f4984f/websockets-15.0.1-py3-none-any.whl", hash = "sha256:f7a866fbc1e97b5c617ee4116daaa09b722101d4a3c170c787450ba409f9736f", size = 169743 }, ] + +[[package]] +name = "zopfli" +version = "0.2.3.post1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5e/7c/a8f6696e694709e2abcbccd27d05ef761e9b6efae217e11d977471555b62/zopfli-0.2.3.post1.tar.gz", hash = "sha256:96484dc0f48be1c5d7ae9f38ed1ce41e3675fd506b27c11a6607f14b49101e99", size = 175629 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3f/ce/b6441cc01881d06e0b5883f32c44e7cc9772e0d04e3e59277f59f80b9a19/zopfli-0.2.3.post1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:3f0197b6aa6eb3086ae9e66d6dd86c4d502b6c68b0ec490496348ae8c05ecaef", size = 295489 }, + { url = "https://files.pythonhosted.org/packages/93/f0/24dd708f00ae0a925bc5c9edae858641c80f6a81a516810dc4d21688a930/zopfli-0.2.3.post1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:5fcfc0dc2761e4fcc15ad5d273b4d58c2e8e059d3214a7390d4d3c8e2aee644e", size = 163010 }, + { url = "https://files.pythonhosted.org/packages/65/57/0378eeeb5e3e1e83b1b0958616b2bf954f102ba5b0755b9747dafbd8cb72/zopfli-0.2.3.post1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cac2b37ab21c2b36a10b685b1893ebd6b0f83ae26004838ac817680881576567", size = 823649 }, + { url = "https://files.pythonhosted.org/packages/ab/8a/3ab8a616d4655acf5cf63c40ca84e434289d7d95518a1a42d28b4a7228f8/zopfli-0.2.3.post1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d5ab297d660b75c159190ce6d73035502310e40fd35170aed7d1a1aea7ddd65", size = 826557 }, + { url = "https://files.pythonhosted.org/packages/ed/4d/7f6820af119c4fec6efaf007bffee7bc9052f695853a711a951be7afd26b/zopfli-0.2.3.post1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ba214f4f45bec195ee8559651154d3ac2932470b9d91c5715fc29c013349f8c", size = 851127 }, + { url = "https://files.pythonhosted.org/packages/e1/db/1ef5353ab06f9f2fb0c25ed0cddf1418fe275cc2ee548bc4a29340c44fe1/zopfli-0.2.3.post1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c1e0ed5d84ffa2d677cc9582fc01e61dab2e7ef8b8996e055f0a76167b1b94df", size = 1754183 }, + { url = "https://files.pythonhosted.org/packages/39/03/44f8f39950354d330fa798e4bab1ac8e38ec787d3fde25d5b9c7770065a2/zopfli-0.2.3.post1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:bfa1eb759e07d8b7aa7a310a2bc535e127ee70addf90dc8d4b946b593c3e51a8", size = 1905945 }, + { url = "https://files.pythonhosted.org/packages/74/7b/94b920c33cc64255f59e3cfc77c829b5c6e60805d189baeada728854a342/zopfli-0.2.3.post1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:cd2c002f160502608dcc822ed2441a0f4509c52e86fcfd1a09e937278ed1ca14", size = 1835885 }, + { url = "https://files.pythonhosted.org/packages/ad/89/c869ac844351e285a6165e2da79b715b0619a122e3160d183805adf8ab45/zopfli-0.2.3.post1-cp312-cp312-win32.whl", hash = "sha256:7be5cc6732eb7b4df17305d8a7b293223f934a31783a874a01164703bc1be6cd", size = 82743 }, + { url = "https://files.pythonhosted.org/packages/29/e6/c98912fd3a589d8a7316c408fd91519f72c237805c4400b753e3942fda0b/zopfli-0.2.3.post1-cp312-cp312-win_amd64.whl", hash = "sha256:4e50ffac74842c1c1018b9b73875a0d0a877c066ab06bf7cccbaa84af97e754f", size = 99403 }, + { url = "https://files.pythonhosted.org/packages/2b/24/0e552e2efce9a20625b56e9609d1e33c2966be33fc008681121ec267daec/zopfli-0.2.3.post1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ecb7572df5372abce8073df078207d9d1749f20b8b136089916a4a0868d56051", size = 295485 }, + { url = "https://files.pythonhosted.org/packages/08/83/b2564369fb98797a617fe2796097b1d719a4937234375757ad2a3febc04b/zopfli-0.2.3.post1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a1cf720896d2ce998bc8e051d4b4ce0d8bec007aab6243102e8e1d22a0b2fb3f", size = 163000 }, + { url = "https://files.pythonhosted.org/packages/3c/55/81d419739c2aab35e19b58bce5498dcb58e6446e5eb69f2d3c748b1c9151/zopfli-0.2.3.post1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5aad740b4d4fcbaaae4887823925166ffd062db3b248b3f432198fc287381d1a", size = 823699 }, + { url = "https://files.pythonhosted.org/packages/9e/91/89f07c8ea3c9bc64099b3461627b07a8384302235ee0f357eaa86f98f509/zopfli-0.2.3.post1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6617fb10f9e4393b331941861d73afb119cd847e88e4974bdbe8068ceef3f73f", size = 826612 }, + { url = "https://files.pythonhosted.org/packages/41/31/46670fc0c7805d42bc89702440fa9b73491d68abbc39e28d687180755178/zopfli-0.2.3.post1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a53b18797cdef27e019db595d66c4b077325afe2fd62145953275f53d84ce40c", size = 851148 }, + { url = "https://files.pythonhosted.org/packages/22/00/71ad39277bbb88f9fd20fb786bd3ff2ea4025c53b31652a0da796fb546cd/zopfli-0.2.3.post1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b78008a69300d929ca2efeffec951b64a312e9a811e265ea4a907ab546d79fa6", size = 1754215 }, + { url = "https://files.pythonhosted.org/packages/d0/4e/e542c508d20c3dfbef1b90fcf726f824f505e725747f777b0b7b7d1deb95/zopfli-0.2.3.post1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:0aa5f90d6298bda02a95bc8dc8c3c19004d5a4e44bda00b67ca7431d857b4b54", size = 1905988 }, + { url = "https://files.pythonhosted.org/packages/ba/a5/817ac1ecc888723e91dc172e8c6eeab9f48a1e52285803b965084e11bbd5/zopfli-0.2.3.post1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:2768c877f76c8a0e7519b1c86c93757f3c01492ddde55751e9988afb7eff64e1", size = 1835907 }, + { url = "https://files.pythonhosted.org/packages/cd/35/2525f90c972d8aafc39784a8c00244eeee8e8221b26cbc576748ee9dc1cd/zopfli-0.2.3.post1-cp313-cp313-win32.whl", hash = "sha256:71390dbd3fbf6ebea9a5d85ffed8c26ee1453ee09248e9b88486e30e0397b775", size = 82742 }, + { url = "https://files.pythonhosted.org/packages/2f/c6/49b27570923956d52d37363e8f5df3a31a61bd7719bb8718527a9df3ae5f/zopfli-0.2.3.post1-cp313-cp313-win_amd64.whl", hash = "sha256:a86eb88e06bd87e1fff31dac878965c26b0c26db59ddcf78bb0379a954b120de", size = 99408 }, +]