tea_learning_PR

#5
Files changed (5) hide show
  1. Dockerfile +14 -5
  2. app.py +1 -11
  3. assets/css/custom.css +0 -25
  4. requirements.in +2 -1
  5. requirements.txt +19 -36
Dockerfile CHANGED
@@ -1,9 +1,18 @@
1
- FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim
 
 
 
 
 
2
 
3
  WORKDIR /app
4
 
5
- COPY requirements.txt .
6
- RUN uv pip sync --system requirements.txt
7
- COPY . .
 
 
 
 
8
 
9
- ENTRYPOINT ["gunicorn", "app:app", "--workers", "4", "--bind", "0.0.0.0:7860"]
 
1
+ # read the doc: https://huggingface.co/docs/hub/spaces-sdks-docker
2
+ # you will also find guides on how best to write your Dockerfile
3
+
4
+ FROM python:3.12
5
+
6
+ RUN useradd -m -u 1000 user
7
 
8
  WORKDIR /app
9
 
10
+ COPY --chown=user ./requirements.txt requirements.txt
11
+
12
+ RUN pip install --no-cache-dir --upgrade -r requirements.txt
13
+
14
+ COPY --chown=user . /app
15
+
16
+ EXPOSE 7860
17
 
18
+ CMD ["gunicorn", "-w", "4", "-b", "0.0.0.0:7860", "app:server"]
app.py CHANGED
@@ -1,7 +1,5 @@
1
  """Example to show dashboard configuration."""
2
 
3
- from dash import html, get_asset_url
4
- import dash_bootstrap_components as dbc
5
  import pandas as pd
6
  import vizro.models as vm
7
  from utils._charts import COLUMN_DEFS, FlexContainer, area, bar, choropleth, pie
@@ -250,15 +248,7 @@ dashboard = vm.Dashboard(
250
  )
251
 
252
  app = Vizro().build(dashboard)
253
- app.dash.layout.children.append(
254
- dbc.NavLink(
255
- ["Made with ", html.Img(src=get_asset_url("images/logo.svg"), id="banner", alt="Vizro logo"), "vizro"],
256
- href="https://github.com/mckinsey/vizro",
257
- target="_blank",
258
- external_link=True,
259
- className="anchor-container",
260
- )
261
- )
262
 
263
  if __name__ == "__main__":
264
  app.run()
 
1
  """Example to show dashboard configuration."""
2
 
 
 
3
  import pandas as pd
4
  import vizro.models as vm
5
  from utils._charts import COLUMN_DEFS, FlexContainer, area, bar, choropleth, pie
 
248
  )
249
 
250
  app = Vizro().build(dashboard)
251
+ server = app.dash.server
 
 
 
 
 
 
 
 
252
 
253
  if __name__ == "__main__":
254
  app.run()
assets/css/custom.css CHANGED
@@ -38,28 +38,3 @@
38
  #kpi-reverse-coloring .card-kpi:has(.color-neg) {
39
  border-left: 4px solid var(--bs-blue);
40
  }
41
-
42
- .anchor-container {
43
- align-items: center;
44
- background: var(--text-primary);
45
- border-top-left-radius: 8px;
46
- bottom: 0;
47
- color: var(--text-primary-inverted);
48
- display: flex;
49
- font-size: 0.8rem;
50
- font-weight: 500;
51
- height: 24px;
52
- padding: 0 12px;
53
- position: fixed;
54
- right: 0;
55
- }
56
-
57
- .anchor-container:focus,
58
- .anchor-container:hover {
59
- background: var(--text-secondary);
60
- color: var(--text-primary-inverted);
61
- }
62
-
63
- img#banner {
64
- height: 16px;
65
- }
 
38
  #kpi-reverse-coloring .card-kpi:has(.color-neg) {
39
  border-left: 4px solid var(--bs-blue);
40
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
requirements.in CHANGED
@@ -1,2 +1,3 @@
 
1
  gunicorn
2
- vizro==0.1.28
 
1
+
2
  gunicorn
3
+ vizro
requirements.txt CHANGED
@@ -2,22 +2,16 @@
2
  # uv pip compile requirements.in -o requirements.txt
3
  annotated-types==0.7.0
4
  # via pydantic
5
- autoflake==2.3.1
6
- # via vizro
7
- black==24.10.0
8
- # via vizro
9
  blinker==1.8.2
10
  # via flask
11
  cachelib==0.9.0
12
  # via flask-caching
13
- certifi==2024.8.30
14
  # via requests
15
  charset-normalizer==3.3.2
16
  # via requests
17
  click==8.1.7
18
- # via
19
- # black
20
- # flask
21
  dash==2.17.1
22
  # via
23
  # dash-ag-grid
@@ -43,12 +37,10 @@ flask-caching==2.3.0
43
  # via vizro
44
  gunicorn==23.0.0
45
  # via -r requirements.in
46
- idna==3.8
47
  # via requests
48
  importlib-metadata==8.4.0
49
- # via
50
- # dash
51
- # flask
52
  itsdangerous==2.2.0
53
  # via flask
54
  jinja2==3.1.4
@@ -57,33 +49,24 @@ markupsafe==2.1.5
57
  # via
58
  # jinja2
59
  # werkzeug
60
- mypy-extensions==1.0.0
61
- # via black
62
  nest-asyncio==1.6.0
63
  # via dash
64
- numpy==2.0.2
65
- # via pandas
 
 
66
  packaging==24.1
67
  # via
68
- # black
69
  # gunicorn
70
  # plotly
71
  pandas==2.2.2
72
  # via vizro
73
- pathspec==0.12.1
74
- # via black
75
- platformdirs==4.3.6
76
- # via black
77
- plotly==5.24.0
78
- # via
79
- # dash
80
- # vizro
81
  pydantic==2.8.2
82
  # via vizro
83
  pydantic-core==2.20.1
84
  # via pydantic
85
- pyflakes==3.2.0
86
- # via autoflake
87
  python-dateutil==2.9.0.post0
88
  # via pandas
89
  pytz==2024.1
@@ -92,21 +75,20 @@ requests==2.32.3
92
  # via dash
93
  retrying==1.3.4
94
  # via dash
95
- setuptools==74.0.0
96
- # via dash
 
 
 
 
97
  six==1.16.0
98
  # via
99
  # python-dateutil
100
  # retrying
101
  tenacity==9.0.0
102
  # via plotly
103
- tomli==2.1.0
104
- # via
105
- # autoflake
106
- # black
107
  typing-extensions==4.12.2
108
  # via
109
- # black
110
  # dash
111
  # pydantic
112
  # pydantic-core
@@ -114,13 +96,14 @@ tzdata==2024.1
114
  # via pandas
115
  urllib3==2.2.2
116
  # via requests
117
- vizro==0.1.28
118
  # via -r requirements.in
119
  werkzeug==3.0.4
120
  # via
121
  # dash
122
  # flask
 
123
  wrapt==1.16.0
124
  # via vizro
125
- zipp==3.20.1
126
  # via importlib-metadata
 
2
  # uv pip compile requirements.in -o requirements.txt
3
  annotated-types==0.7.0
4
  # via pydantic
 
 
 
 
5
  blinker==1.8.2
6
  # via flask
7
  cachelib==0.9.0
8
  # via flask-caching
9
+ certifi==2024.7.4
10
  # via requests
11
  charset-normalizer==3.3.2
12
  # via requests
13
  click==8.1.7
14
+ # via flask
 
 
15
  dash==2.17.1
16
  # via
17
  # dash-ag-grid
 
37
  # via vizro
38
  gunicorn==23.0.0
39
  # via -r requirements.in
40
+ idna==3.7
41
  # via requests
42
  importlib-metadata==8.4.0
43
+ # via dash
 
 
44
  itsdangerous==2.2.0
45
  # via flask
46
  jinja2==3.1.4
 
49
  # via
50
  # jinja2
51
  # werkzeug
 
 
52
  nest-asyncio==1.6.0
53
  # via dash
54
+ numpy==2.1.0
55
+ # via
56
+ # pandas
57
+ # vizro
58
  packaging==24.1
59
  # via
 
60
  # gunicorn
61
  # plotly
62
  pandas==2.2.2
63
  # via vizro
64
+ plotly==5.23.0
65
+ # via dash
 
 
 
 
 
 
66
  pydantic==2.8.2
67
  # via vizro
68
  pydantic-core==2.20.1
69
  # via pydantic
 
 
70
  python-dateutil==2.9.0.post0
71
  # via pandas
72
  pytz==2024.1
 
75
  # via dash
76
  retrying==1.3.4
77
  # via dash
78
+ ruff==0.6.1
79
+ # via vizro
80
+ setuptools==73.0.1
81
+ # via
82
+ # dash
83
+ # vizro
84
  six==1.16.0
85
  # via
86
  # python-dateutil
87
  # retrying
88
  tenacity==9.0.0
89
  # via plotly
 
 
 
 
90
  typing-extensions==4.12.2
91
  # via
 
92
  # dash
93
  # pydantic
94
  # pydantic-core
 
96
  # via pandas
97
  urllib3==2.2.2
98
  # via requests
99
+ vizro==0.1.20
100
  # via -r requirements.in
101
  werkzeug==3.0.4
102
  # via
103
  # dash
104
  # flask
105
+ # vizro
106
  wrapt==1.16.0
107
  # via vizro
108
+ zipp==3.20.0
109
  # via importlib-metadata