PyMieSimX 0.2.0__tar.gz → 0.2.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of PyMieSimX might be problematic. Click here for more details.

Files changed (97) hide show
  1. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PKG-INFO +1 -1
  2. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/gui/assets/dashboard.css +86 -38
  3. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/gui/pages/home.py +12 -4
  4. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX.egg-info/PKG-INFO +1 -1
  5. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX.egg-info/scm_version.json +2 -2
  6. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/tests/browser/test_dashboard.py +1 -1
  7. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/.coveragerc +0 -0
  8. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/.flake8 +0 -0
  9. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/.github/dependabot.yml +0 -0
  10. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/.github/workflows/deploy_PyPi.yml +0 -0
  11. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/.github/workflows/deploy_anaconda.yml +0 -0
  12. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/.github/workflows/deploy_coverage.yml +0 -0
  13. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/.github/workflows/quality.yml +0 -0
  14. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/.github/workflows/tests.yml +0 -0
  15. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/.gitignore +0 -0
  16. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/.pre-commit-config.yaml +0 -0
  17. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/AGENTS.md +0 -0
  18. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/CONTRIBUTING.md +0 -0
  19. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/Dockerfile +0 -0
  20. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/LICENSE +0 -0
  21. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/__init__.py +0 -0
  22. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/__main__.py +0 -0
  23. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/api.py +0 -0
  24. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/application/__init__.py +0 -0
  25. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/application/wsgi.py +0 -0
  26. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/gui/__init__.py +0 -0
  27. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/gui/admin.py +0 -0
  28. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/gui/assets/card-state.js +0 -0
  29. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/gui/assets/default-settings.json +0 -0
  30. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/gui/assets/home-spf-radial.gif +0 -0
  31. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/gui/assets/home-spf-radial.png +0 -0
  32. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/gui/assets/logo.png +0 -0
  33. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/gui/assets/materials-stock.json +0 -0
  34. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/gui/assets/pymiesim-favicon.svg +0 -0
  35. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/gui/assets/pymiesim-logo-dark.svg +0 -0
  36. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/gui/assets/pymiesim-logo.svg +0 -0
  37. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/gui/callback_helpers.py +0 -0
  38. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/gui/callbacks.py +0 -0
  39. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/gui/components/__init__.py +0 -0
  40. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/gui/components/cards.py +0 -0
  41. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/gui/computation.py +0 -0
  42. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/gui/defaults.py +0 -0
  43. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/gui/experiment_service.py +0 -0
  44. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/gui/interface.py +0 -0
  45. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/gui/jobs.py +0 -0
  46. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/gui/layout.py +0 -0
  47. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/gui/material_catalog.py +0 -0
  48. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/gui/models.py +0 -0
  49. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/gui/pages/__init__.py +0 -0
  50. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/gui/pages/citation.py +0 -0
  51. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/gui/pages/documentation.py +0 -0
  52. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/gui/pages/experiment/__init__.py +0 -0
  53. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/gui/pages/experiment/page.py +0 -0
  54. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/gui/pages/experiment/sections/__init__.py +0 -0
  55. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/gui/pages/experiment/sections/configuration.py +0 -0
  56. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/gui/pages/field_syntax.py +0 -0
  57. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/gui/pages/install_local.py +0 -0
  58. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/gui/pages/population.py +0 -0
  59. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/gui/pages/sellmeier.py +0 -0
  60. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/gui/pages/settings.py +0 -0
  61. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/gui/pages/single/__init__.py +0 -0
  62. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/gui/pages/single/page.py +0 -0
  63. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/gui/pages/single/sections/__init__.py +0 -0
  64. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/gui/pages/single/sections/representations.py +0 -0
  65. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/gui/pages/single/sections/setup.py +0 -0
  66. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/gui/parsing.py +0 -0
  67. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/gui/plotting.py +0 -0
  68. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/gui/population_service.py +0 -0
  69. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/gui/schemas.py +0 -0
  70. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/gui/services.py +0 -0
  71. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/gui/single_service.py +0 -0
  72. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/gui/usage_metrics.py +0 -0
  73. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX/gui/validation.py +0 -0
  74. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX.egg-info/SOURCES.txt +0 -0
  75. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX.egg-info/dependency_links.txt +0 -0
  76. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX.egg-info/entry_points.txt +0 -0
  77. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX.egg-info/requires.txt +0 -0
  78. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX.egg-info/scm_file_list.json +0 -0
  79. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/PyMieSimX.egg-info/top_level.txt +0 -0
  80. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/README.rst +0 -0
  81. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/conda.recipe/meta.yaml +0 -0
  82. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/makefile +0 -0
  83. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/pyproject.toml +0 -0
  84. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/pytest.ini +0 -0
  85. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/setup.cfg +0 -0
  86. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/tests/gui/cli.py +0 -0
  87. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/tests/gui/test_admin.py +0 -0
  88. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/tests/gui/test_api.py +0 -0
  89. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/tests/gui/test_dash_callbacks.py +0 -0
  90. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/tests/gui/test_home.py +0 -0
  91. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/tests/gui/test_population.py +0 -0
  92. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/tests/gui/test_services.py +0 -0
  93. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/tests/gui/test_usage_metrics.py +0 -0
  94. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/tools/generate_home_spf.py +0 -0
  95. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/tools/next_release_version.py +0 -0
  96. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/tools/release_tag.py +0 -0
  97. {pymiesimx-0.2.0 → pymiesimx-0.2.1}/tools/verify_conda_artifact.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PyMieSimX
3
- Version: 0.2.0
3
+ Version: 0.2.1
4
4
  Summary: Graphical Dash interface for PyMieSim.
5
5
  Author-email: Martin Poinsinet de Sivry-Houle <martin.poinsinet.de.sivry@gmail.com>
6
6
  License-Expression: MIT
@@ -499,9 +499,9 @@ html .home-metric-tile { font-size: .92rem !important; }
499
499
  .version-widget-label { font-size: .72rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; opacity: .7; }
500
500
  .version-widget-value { font-size: .92rem; font-weight: 700; }
501
501
 
502
- html .home-page-hero { padding: 26px !important; border-radius: 15px; border-left: 5px solid rgba(13, 110, 253, .75); }
503
- html .home-page-hero h1 { margin: 0 0 8px; font-family: inherit !important; font-size: 2.55rem !important; font-weight: 800; line-height: 1.05; }
504
- html .home-page-hero .hero-text { max-width: 980px; margin: 0; font-size: 1.08rem !important; line-height: normal; opacity: .86; }
502
+ html .home-page-hero { padding: 30px !important; border-radius: 15px; border-left: 5px solid rgba(13, 110, 253, .75); }
503
+ html .home-page-hero h1 { margin: 0 0 12px; letter-spacing: -.045em; font-family: inherit !important; font-size: 2.55rem !important; font-weight: 800; line-height: 1.05; }
504
+ html .home-page-hero .hero-text { max-width: 460px; margin: 0; font-size: 1rem !important; line-height: 1.6; opacity: .7; }
505
505
 
506
506
  html .home-metrics-card > .card-body {
507
507
  display: grid;
@@ -3869,76 +3869,85 @@ html .single-workspace .representation-card {
3869
3869
  display: flex;
3870
3870
  align-items: center;
3871
3871
  justify-content: space-between;
3872
- gap: 24px;
3872
+ gap: 28px;
3873
3873
  flex-wrap: wrap;
3874
3874
  }
3875
3875
 
3876
3876
  .home-hero-copy {
3877
- flex: 1 1 360px;
3877
+ flex: 1 1 300px;
3878
3878
  min-width: 0;
3879
3879
  }
3880
3880
 
3881
3881
  .home-hero-actions {
3882
3882
  display: flex;
3883
3883
  align-items: center;
3884
- justify-content: flex-end;
3885
3884
  flex-wrap: wrap;
3886
- gap: 14px;
3885
+ gap: 26px;
3887
3886
  margin-left: auto;
3888
3887
  }
3889
3888
 
3890
3889
  .home-visit-metric {
3891
3890
  display: flex;
3892
3891
  flex-direction: column;
3893
- align-items: center;
3894
- gap: 3px;
3895
- padding: 9px 16px;
3896
- border: 1px solid #cddcec;
3897
- border-radius: 9px;
3898
- background: #f3f7fc;
3899
- color: #2f4358;
3900
- }
3901
-
3902
- .home-visit-label {
3903
- font-size: .72rem;
3904
- font-weight: 600;
3892
+ gap: 4px;
3893
+ padding-right: 26px;
3894
+ border-right: 1px solid #e5e7eb;
3905
3895
  }
3906
3896
 
3907
3897
  .home-visit-value {
3908
- font-size: 1.2rem;
3898
+ font-size: 1.9rem;
3899
+ font-weight: 750;
3909
3900
  line-height: 1.2;
3901
+ letter-spacing: -.04em;
3910
3902
  font-variant-numeric: tabular-nums;
3911
3903
  }
3912
3904
 
3905
+ .home-visit-label {
3906
+ font-size: .75rem;
3907
+ opacity: .6;
3908
+ }
3909
+
3913
3910
  .home-support-actions {
3914
3911
  display: flex;
3915
3912
  flex-direction: column;
3916
- gap: 9px;
3913
+ gap: 8px;
3917
3914
  }
3918
3915
 
3919
3916
  .home-support-button {
3920
3917
  display: inline-flex;
3921
3918
  align-items: center;
3922
- gap: 9px;
3923
- flex: 0 0 auto;
3924
- padding: 10px 17px;
3925
- border: 1px solid #e8c56b;
3926
- border-radius: 9px;
3927
- background: linear-gradient(135deg, #fff8e3, #ffe8a9);
3928
- color: #704912;
3929
- font-size: .92rem;
3930
- font-weight: 700;
3919
+ gap: 10px;
3920
+ min-height: 42px;
3921
+ padding: 8px 13px;
3922
+ border: 1px solid #e8d6ad;
3923
+ border-radius: 10px;
3924
+ background: #fcf5e7;
3925
+ color: #795520;
3926
+ font-size: .82rem;
3927
+ font-weight: 650;
3928
+ line-height: 1.4;
3931
3929
  text-decoration: none;
3932
- white-space: nowrap;
3933
- box-shadow: 0 3px 9px rgba(151, 104, 23, .10);
3934
- transition: background 150ms ease, box-shadow 150ms ease;
3930
+ transition: background 150ms ease, border-color 150ms ease, box-shadow 150ms ease;
3935
3931
  }
3936
3932
 
3937
3933
  .home-support-button:hover {
3938
- background: #ffe49a;
3939
- color: #58350b;
3934
+ background: #f8ecd2;
3935
+ border-color: #d7bd85;
3936
+ color: #674516;
3940
3937
  text-decoration: none;
3941
- box-shadow: 0 4px 12px rgba(151, 104, 23, .18);
3938
+ box-shadow: 0 2px 6px rgba(112, 79, 25, .08);
3939
+ }
3940
+
3941
+ .home-star-button {
3942
+ background: #fff;
3943
+ border-color: #e5e7eb;
3944
+ color: #343b46;
3945
+ }
3946
+
3947
+ .home-star-button:hover {
3948
+ background: #f5f6f8;
3949
+ border-color: #cbd0d8;
3950
+ color: #343b46;
3942
3951
  }
3943
3952
 
3944
3953
  .home-support-button:focus-visible {
@@ -3947,8 +3956,47 @@ html .single-workspace .representation-card {
3947
3956
  }
3948
3957
 
3949
3958
  .home-support-icon {
3950
- color: #ad6515;
3951
- font-size: 1.1rem;
3959
+ display: inline-flex;
3960
+ align-items: center;
3961
+ justify-content: center;
3962
+ width: 22px;
3963
+ font-size: 1.15rem;
3964
+ line-height: 1;
3965
+ }
3966
+
3967
+ .home-support-label {
3968
+ flex: 1;
3969
+ }
3970
+
3971
+ .home-support-arrow {
3972
+ font-size: 1rem;
3973
+ opacity: .45;
3974
+ }
3975
+
3976
+ @media (max-width: 575px) {
3977
+ html .home-page-hero {
3978
+ padding: 22px !important;
3979
+ gap: 22px;
3980
+ }
3981
+
3982
+ .home-hero-actions {
3983
+ justify-content: space-between;
3984
+ width: 100%;
3985
+ margin-left: 0;
3986
+ gap: 18px;
3987
+ }
3988
+
3989
+ .home-visit-metric {
3990
+ border-right: 0;
3991
+ padding-right: 0;
3992
+ flex-direction: row;
3993
+ align-items: baseline;
3994
+ gap: 10px;
3995
+ }
3996
+
3997
+ .home-support-actions {
3998
+ width: 100%;
3999
+ }
3952
4000
  }
3953
4001
 
3954
4002
  .admin-page {
@@ -41,7 +41,11 @@ def build_home_page(*, home_visits: int | float | None = None):
41
41
  html.Div(
42
42
  [
43
43
  html.A(
44
- [html.Span("\u2665", className="home-support-icon", **{"aria-hidden": "true"}), "Support Developer"],
44
+ [
45
+ html.Span("♥", className="home-support-icon", **{"aria-hidden": "true"}),
46
+ html.Span("Support Developer", className="home-support-label"),
47
+ html.Span("↗", className="home-support-arrow", **{"aria-hidden": "true"}),
48
+ ],
45
49
  id="home-support-developer",
46
50
  href="https://github.com/sponsors/MartinPdeS",
47
51
  target="_blank",
@@ -49,12 +53,16 @@ def build_home_page(*, home_visits: int | float | None = None):
49
53
  className="home-support-button",
50
54
  ),
51
55
  html.A(
52
- [html.Span("\u2605", className="home-support-icon", **{"aria-hidden": "true"}), "Star PyMieSim on GitHub"],
56
+ [
57
+ html.Span("☆", className="home-support-icon", **{"aria-hidden": "true"}),
58
+ html.Span("Star PyMieSim on GitHub", className="home-support-label"),
59
+ html.Span("↗", className="home-support-arrow", **{"aria-hidden": "true"}),
60
+ ],
53
61
  id="home-star-repository",
54
62
  href="https://github.com/MartinPdeS/PyMieSim",
55
63
  target="_blank",
56
64
  rel="noopener noreferrer",
57
- className="home-support-button",
65
+ className="home-support-button home-star-button",
58
66
  ),
59
67
  ],
60
68
  className="home-support-actions",
@@ -108,8 +116,8 @@ def _visit_metric(home_visits: int | float | None):
108
116
  return None
109
117
  return html.Div(
110
118
  [
111
- html.Span("Webapp visits", className="home-visit-label"),
112
119
  html.Strong(f"{int(home_visits):,}", id="home-public-visit-count", className="home-visit-value"),
120
+ html.Span("Webapp visits", className="home-visit-label"),
113
121
  ],
114
122
  className="home-visit-metric",
115
123
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PyMieSimX
3
- Version: 0.2.0
3
+ Version: 0.2.1
4
4
  Summary: Graphical Dash interface for PyMieSim.
5
5
  Author-email: Martin Poinsinet de Sivry-Houle <martin.poinsinet.de.sivry@gmail.com>
6
6
  License-Expression: MIT
@@ -1,7 +1,7 @@
1
1
  {
2
- "tag": "0.2.0",
2
+ "tag": "0.2.1",
3
3
  "distance": 0,
4
- "node": "g010ec0aca17fbe7fc921fcf8589c99417f090489",
4
+ "node": "gc5e23d96d21fb62bac5ab01b2cebc17d600c6260",
5
5
  "dirty": false,
6
6
  "branch": "HEAD",
7
7
  "node_date": "2026-10-03"
@@ -38,7 +38,7 @@ def test_home_star_button_below_support_developer(dash_duo, viewport):
38
38
  support = dash_duo.wait_for_element("#home-support-developer")
39
39
  star = dash_duo.wait_for_element("#home-star-repository")
40
40
  assert star.is_displayed()
41
- assert " ".join(star.text.split()) == "★ Star PyMieSim on GitHub"
41
+ assert star.find_element("css selector", ".home-support-label").text == "Star PyMieSim on GitHub"
42
42
  assert star.get_attribute("href") == "https://github.com/MartinPdeS/PyMieSim"
43
43
  assert star.get_attribute("target") == "_blank"
44
44
  assert set(star.get_attribute("rel").split()) == {"noopener", "noreferrer"}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes