geo-activity-playground 0.24.0__py3-none-any.whl → 0.24.2__py3-none-any.whl
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.
- geo_activity_playground/core/activities.py +5 -0
- geo_activity_playground/importers/strava_api.py +2 -1
- geo_activity_playground/webui/activity/blueprint.py +1 -1
- geo_activity_playground/webui/activity/controller.py +1 -1
- geo_activity_playground/webui/equipment/controller.py +80 -39
- geo_activity_playground/webui/equipment/templates/equipment/index.html.j2 +14 -3
- geo_activity_playground/webui/heatmap/heatmap_controller.py +3 -1
- geo_activity_playground/webui/summary/controller.py +11 -8
- {geo_activity_playground-0.24.0.dist-info → geo_activity_playground-0.24.2.dist-info}/METADATA +1 -1
- {geo_activity_playground-0.24.0.dist-info → geo_activity_playground-0.24.2.dist-info}/RECORD +13 -13
- {geo_activity_playground-0.24.0.dist-info → geo_activity_playground-0.24.2.dist-info}/LICENSE +0 -0
- {geo_activity_playground-0.24.0.dist-info → geo_activity_playground-0.24.2.dist-info}/WHEEL +0 -0
- {geo_activity_playground-0.24.0.dist-info → geo_activity_playground-0.24.2.dist-info}/entry_points.txt +0 -0
@@ -48,6 +48,10 @@ class ActivityRepository:
|
|
48
48
|
self.meta = pd.read_parquet(activities_path())
|
49
49
|
self.meta.index = self.meta["id"]
|
50
50
|
self.meta.index.name = "index"
|
51
|
+
if not pd.api.types.is_dtype_equal(
|
52
|
+
self.meta["start"].dtype, "datetime64[ns]"
|
53
|
+
):
|
54
|
+
self.meta["start"] = convert_to_datetime_ns(self.meta["start"])
|
51
55
|
else:
|
52
56
|
self.meta = pd.DataFrame()
|
53
57
|
|
@@ -88,6 +92,7 @@ class ActivityRepository:
|
|
88
92
|
old_df = self.meta.loc[is_kept]
|
89
93
|
else:
|
90
94
|
old_df = self.meta
|
95
|
+
|
91
96
|
self.meta = pd.concat([old_df, new_df])
|
92
97
|
assert pd.api.types.is_dtype_equal(
|
93
98
|
self.meta["start"].dtype, "datetime64[ns]"
|
@@ -17,6 +17,7 @@ from tqdm import tqdm
|
|
17
17
|
from geo_activity_playground.core.activities import ActivityRepository
|
18
18
|
from geo_activity_playground.core.config import get_config
|
19
19
|
from geo_activity_playground.core.paths import cache_dir
|
20
|
+
from geo_activity_playground.core.time_conversion import convert_to_datetime_ns
|
20
21
|
|
21
22
|
|
22
23
|
logger = logging.getLogger(__name__)
|
@@ -165,7 +166,7 @@ def try_import_strava(repository: ActivityRepository) -> bool:
|
|
165
166
|
"distance_km": activity.distance.magnitude / 1000,
|
166
167
|
"name": activity.name,
|
167
168
|
"kind": str(activity.type),
|
168
|
-
"start": activity.start_date,
|
169
|
+
"start": convert_to_datetime_ns(activity.start_date),
|
169
170
|
"elapsed_time": activity.elapsed_time,
|
170
171
|
"equipment": gear_names[activity.gear_id],
|
171
172
|
"calories": detailed_activity.calories,
|
@@ -452,7 +452,7 @@ def make_sharepic(activity: ActivityMeta, time_series: pd.DataFrame) -> bytes:
|
|
452
452
|
f"\n{activity['distance_km']:.1f} km",
|
453
453
|
re.sub(r"^0 days ", "", f"{activity['elapsed_time']}"),
|
454
454
|
]
|
455
|
-
if activity["calories"]:
|
455
|
+
if activity["calories"] and not pd.isna(activity["calories"]):
|
456
456
|
facts.append(f"{activity['calories']:.0f} kcal")
|
457
457
|
if activity["steps"] and not pd.isna(activity["steps"]):
|
458
458
|
facts.append(f"{activity['steps']:.0f} steps")
|
@@ -10,64 +10,105 @@ class EquipmentController:
|
|
10
10
|
self._repository = repository
|
11
11
|
|
12
12
|
def render(self) -> dict:
|
13
|
-
|
14
|
-
|
15
|
-
.apply(
|
16
|
-
|
17
|
-
|
18
|
-
"time": group["start"],
|
19
|
-
"total_distance_km": group["distance_km"].cumsum(),
|
20
|
-
}
|
21
|
-
),
|
22
|
-
include_groups=False,
|
23
|
-
)
|
24
|
-
.reset_index()
|
25
|
-
)
|
26
|
-
|
27
|
-
plot = (
|
28
|
-
alt.Chart(
|
29
|
-
total_distances,
|
30
|
-
height=250,
|
31
|
-
width=250,
|
32
|
-
title="Equipment Usage over Time",
|
33
|
-
)
|
34
|
-
.mark_line(interpolate="step-after")
|
35
|
-
.encode(
|
36
|
-
alt.X("time", title="Date"),
|
37
|
-
alt.Y("total_distance_km", title="Cumulative distance / km"),
|
38
|
-
)
|
39
|
-
.facet("equipment", columns=4, title="Equipment")
|
40
|
-
.resolve_scale(y="independent")
|
41
|
-
.resolve_axis(x="independent")
|
42
|
-
.interactive()
|
43
|
-
.to_json(format="vega")
|
13
|
+
kind_per_equipment = self._repository.meta.groupby("equipment").apply(
|
14
|
+
lambda group: group.groupby("kind")
|
15
|
+
.apply(lambda group2: sum(group2["distance_km"]), include_groups=False)
|
16
|
+
.idxmax(),
|
17
|
+
include_groups=False,
|
44
18
|
)
|
45
19
|
|
46
20
|
equipment_summary = (
|
47
21
|
self._repository.meta.groupby("equipment")
|
48
22
|
.apply(
|
49
|
-
lambda group: pd.
|
23
|
+
lambda group: pd.Series(
|
50
24
|
{
|
51
25
|
"total_distance_km": group["distance_km"].sum(),
|
52
26
|
"first_use": group["start"].iloc[0],
|
53
27
|
"last_use": group["start"].iloc[-1],
|
54
28
|
},
|
55
|
-
index=[0],
|
56
29
|
),
|
57
30
|
include_groups=False,
|
58
31
|
)
|
59
|
-
.reset_index()
|
60
32
|
.sort_values("last_use", ascending=False)
|
61
33
|
)
|
62
34
|
|
35
|
+
equipment_summary["primarily_used_for"] = None
|
36
|
+
for equipment, kind in kind_per_equipment.items():
|
37
|
+
equipment_summary.loc[equipment, "primarily_used_for"] = kind
|
38
|
+
|
39
|
+
equipment_variables = {}
|
40
|
+
for equipment in equipment_summary.index:
|
41
|
+
selection = self._repository.meta.loc[
|
42
|
+
self._repository.meta["equipment"] == equipment
|
43
|
+
]
|
44
|
+
total_distances = pd.DataFrame(
|
45
|
+
{
|
46
|
+
"time": selection["start"],
|
47
|
+
"total_distance_km": selection["distance_km"].cumsum(),
|
48
|
+
}
|
49
|
+
)
|
50
|
+
|
51
|
+
total_distances_plot = (
|
52
|
+
alt.Chart(
|
53
|
+
total_distances,
|
54
|
+
height=300,
|
55
|
+
width=300,
|
56
|
+
title="Usage over Time",
|
57
|
+
)
|
58
|
+
.mark_line(interpolate="step-after")
|
59
|
+
.encode(
|
60
|
+
alt.X("time", title="Date"),
|
61
|
+
alt.Y("total_distance_km", title="Cumulative distance / km"),
|
62
|
+
)
|
63
|
+
.interactive()
|
64
|
+
.to_json(format="vega")
|
65
|
+
)
|
66
|
+
|
67
|
+
yearly_distance_plot = (
|
68
|
+
alt.Chart(
|
69
|
+
selection,
|
70
|
+
height=300,
|
71
|
+
title="Yearly distance",
|
72
|
+
)
|
73
|
+
.mark_bar()
|
74
|
+
.encode(
|
75
|
+
alt.X("year(start):O", title="Year"),
|
76
|
+
alt.Y("sum(distance_km)", title="Distance / km"),
|
77
|
+
)
|
78
|
+
.to_json(format="vega")
|
79
|
+
)
|
80
|
+
|
81
|
+
usages_plot = (
|
82
|
+
alt.Chart(
|
83
|
+
selection,
|
84
|
+
height=300,
|
85
|
+
title="Kinds",
|
86
|
+
)
|
87
|
+
.mark_bar()
|
88
|
+
.encode(
|
89
|
+
alt.X("kind", title="Year"),
|
90
|
+
alt.Y("sum(distance_km)", title="Distance / km"),
|
91
|
+
)
|
92
|
+
.to_json(format="vega")
|
93
|
+
)
|
94
|
+
|
95
|
+
equipment_variables[equipment] = {
|
96
|
+
"total_distances_plot": total_distances_plot,
|
97
|
+
"total_distances_plot_id": f"total_distances_plot_{hash(equipment)}",
|
98
|
+
"yearly_distance_plot": yearly_distance_plot,
|
99
|
+
"yearly_distance_plot_id": f"yearly_distance_plot_{hash(equipment)}",
|
100
|
+
"usages_plot": usages_plot,
|
101
|
+
"usages_plot_id": f"usages_plot_{hash(equipment)}",
|
102
|
+
}
|
103
|
+
|
63
104
|
config = get_config()
|
64
105
|
if "offsets" in config:
|
65
106
|
for equipment, offset in config["offsets"].items():
|
66
|
-
equipment_summary.loc[
|
67
|
-
equipment_summary["equipment"] == equipment, "total_distance_km"
|
68
|
-
] += offset
|
107
|
+
equipment_summary.loc[equipment, "total_distance_km"] += offset
|
69
108
|
|
70
109
|
return {
|
71
|
-
"
|
72
|
-
"equipment_summary": equipment_summary.to_dict(
|
110
|
+
"equipment_variables": equipment_variables,
|
111
|
+
"equipment_summary": equipment_summary.reset_index().to_dict(
|
112
|
+
orient="records"
|
113
|
+
),
|
73
114
|
}
|
@@ -13,6 +13,7 @@
|
|
13
13
|
<thead>
|
14
14
|
<tr>
|
15
15
|
<th>Equipment</th>
|
16
|
+
<th>Primarily used for</th>
|
16
17
|
<th style="text-align: right;">Distance / km</th>
|
17
18
|
<th style="text-align: right;">First use</th>
|
18
19
|
<th style="text-align: right;">Last use</th>
|
@@ -22,6 +23,7 @@
|
|
22
23
|
{% for equipment in equipment_summary %}
|
23
24
|
<tr>
|
24
25
|
<td>{{ equipment.equipment }}</td>
|
26
|
+
<td>{{ equipment.primarily_used_for }}</td>
|
25
27
|
<td style="text-align: right;">{{ equipment.total_distance_km|int }}</td>
|
26
28
|
<td style="text-align: right;">{{ equipment.first_use.date() }}</td>
|
27
29
|
<td style="text-align: right;">{{ equipment.last_use.date() }}</td>
|
@@ -34,13 +36,22 @@
|
|
34
36
|
|
35
37
|
<div class="row mb-3">
|
36
38
|
<div class="col">
|
37
|
-
<h2>
|
39
|
+
<h2>Details for each equipment</h2>
|
38
40
|
</div>
|
39
41
|
</div>
|
40
42
|
|
43
|
+
{% for equipment, data in equipment_variables.items() %}
|
44
|
+
<h3>{{ equipment }}</h3>
|
41
45
|
<div class="row mb-3">
|
42
|
-
<div class="col">
|
43
|
-
{{ vega_direct(
|
46
|
+
<div class="col-md-4">
|
47
|
+
{{ vega_direct(data.total_distances_plot_id, data.total_distances_plot) }}
|
48
|
+
</div>
|
49
|
+
<div class="col-md-4">
|
50
|
+
{{ vega_direct(data.yearly_distance_plot_id, data.yearly_distance_plot) }}
|
51
|
+
</div>
|
52
|
+
<div class="col-md-4">
|
53
|
+
{{ vega_direct(data.usages_plot_id, data.usages_plot) }}
|
44
54
|
</div>
|
45
55
|
</div>
|
56
|
+
{% endfor %}
|
46
57
|
{% endblock %}
|
@@ -11,6 +11,7 @@ from geo_activity_playground.core.activities import ActivityRepository
|
|
11
11
|
from geo_activity_playground.core.heatmap import convert_to_grayscale
|
12
12
|
from geo_activity_playground.core.heatmap import GeoBounds
|
13
13
|
from geo_activity_playground.core.heatmap import get_sensible_zoom_level
|
14
|
+
from geo_activity_playground.core.heatmap import PixelBounds
|
14
15
|
from geo_activity_playground.core.tasks import work_tracker
|
15
16
|
from geo_activity_playground.core.tiles import get_tile
|
16
17
|
from geo_activity_playground.core.tiles import get_tile_upper_left_lat_lon
|
@@ -140,8 +141,9 @@ class HeatmapController:
|
|
140
141
|
) -> bytes:
|
141
142
|
geo_bounds = GeoBounds(south, west, north, east)
|
142
143
|
tile_bounds = get_sensible_zoom_level(geo_bounds, (4000, 4000))
|
144
|
+
pixel_bounds = PixelBounds.from_tile_bounds(tile_bounds)
|
143
145
|
|
144
|
-
background = np.zeros((*
|
146
|
+
background = np.zeros((*pixel_bounds.shape, 3))
|
145
147
|
for x in range(tile_bounds.x_tile_min, tile_bounds.x_tile_max):
|
146
148
|
for y in range(tile_bounds.y_tile_min, tile_bounds.y_tile_max):
|
147
149
|
tile = np.array(get_tile(tile_bounds.zoom, x, y)) / 255
|
@@ -61,11 +61,13 @@ def nominate_activities(meta: pd.DataFrame) -> dict[int, list[str]]:
|
|
61
61
|
i = subset["elapsed_time"].idxmax()
|
62
62
|
nominations[i].append(f"Longest elapsed time: {meta.loc[i].elapsed_time}")
|
63
63
|
|
64
|
-
|
65
|
-
|
64
|
+
if "calories" in subset.columns:
|
65
|
+
i = subset["calories"].idxmax()
|
66
|
+
nominations[i].append(f"Most calories burnt: {meta.loc[i].calories:.0f} kcal")
|
66
67
|
|
67
|
-
|
68
|
-
|
68
|
+
if "steps" in subset:
|
69
|
+
i = subset["steps"].idxmax()
|
70
|
+
nominations[i].append(f"Most steps: {meta.loc[i].steps:.0f}")
|
69
71
|
|
70
72
|
for kind, group in meta.groupby("kind"):
|
71
73
|
for key, text in [
|
@@ -83,10 +85,11 @@ def nominate_activities(meta: pd.DataFrame) -> dict[int, list[str]]:
|
|
83
85
|
),
|
84
86
|
("steps", lambda row: f"Most steps for {row.kind}: {row.steps:.0f}"),
|
85
87
|
]:
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
88
|
+
if key in group.columns:
|
89
|
+
series = group[key]
|
90
|
+
i = series.idxmax()
|
91
|
+
if not pd.isna(i):
|
92
|
+
nominations[i].append(text(meta.loc[i]))
|
90
93
|
|
91
94
|
return nominations
|
92
95
|
|
{geo_activity_playground-0.24.0.dist-info → geo_activity_playground-0.24.2.dist-info}/RECORD
RENAMED
@@ -1,7 +1,7 @@
|
|
1
1
|
geo_activity_playground/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
2
|
geo_activity_playground/__main__.py,sha256=pAl5_cWjuNyGmE_zMoPtG7Gc7r7lNk3psn9CAxzP2fU,4131
|
3
3
|
geo_activity_playground/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
4
|
-
geo_activity_playground/core/activities.py,sha256=
|
4
|
+
geo_activity_playground/core/activities.py,sha256=giZYepqGK3NujGpcCrYvF0rYDyVMopIMdXrvWBvbRm4,11606
|
5
5
|
geo_activity_playground/core/activity_parsers.py,sha256=pjYjnaAXsWfUNOoomYWOmmFZO5Qs076RWM-pqNdo7BA,10905
|
6
6
|
geo_activity_playground/core/cache_migrations.py,sha256=tkGA0h69-m-0Ek7JjvfVOX45YXLXkh_ZvC2TKB_fvbA,4281
|
7
7
|
geo_activity_playground/core/config.py,sha256=YjqCiEmIAa-GM1-JfBctMEsl8-I56pZyyDdTyPduOzw,477
|
@@ -21,14 +21,14 @@ geo_activity_playground/explorer/tile_visits.py,sha256=fkn2Pgk-pBmC0ywDa0g2T9f4L
|
|
21
21
|
geo_activity_playground/explorer/video.py,sha256=ROAmV9shfJyqTgnXVD41KFORiwnRgVpEWenIq4hMCRM,4389
|
22
22
|
geo_activity_playground/importers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
23
23
|
geo_activity_playground/importers/directory.py,sha256=6KUxMMJELq1WWQSbqAWt6ZVlZh7Np3LMJNkt6jPN5eI,4506
|
24
|
-
geo_activity_playground/importers/strava_api.py,sha256=
|
24
|
+
geo_activity_playground/importers/strava_api.py,sha256=FJYamDBmHmB8uA9dNc0h0j7EgZPCofCspL2Wfq-PrTg,7869
|
25
25
|
geo_activity_playground/importers/strava_checkout.py,sha256=nvZX7skevqMWdW9Gxzt4VhwCaI3wv2z5g-ODv6ZWxng,8078
|
26
26
|
geo_activity_playground/importers/test_directory.py,sha256=ljXokx7q0OgtHvEdHftcQYEmZJUDVv3OOF5opklxdT4,724
|
27
27
|
geo_activity_playground/importers/test_strava_api.py,sha256=4vX7wDr1a9aRh8myxNrIq6RwDBbP8ZeoXXPc10CAbW4,431
|
28
28
|
geo_activity_playground/webui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
29
29
|
geo_activity_playground/webui/activity/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
30
|
-
geo_activity_playground/webui/activity/blueprint.py,sha256=
|
31
|
-
geo_activity_playground/webui/activity/controller.py,sha256=
|
30
|
+
geo_activity_playground/webui/activity/blueprint.py,sha256=gGMes5ycXi2rMixVYs4NQgzTU1Vttgu50prYAe3--Hs,1749
|
31
|
+
geo_activity_playground/webui/activity/controller.py,sha256=CoNi9dJlGS-pZMEh14eZqWkbbLRHvQ01PEk8jRXpmgU,16665
|
32
32
|
geo_activity_playground/webui/activity/templates/activity/day.html.j2,sha256=r3qKl9uTzOko4R-ZzyYAZt1j61JSevYP4g0Yi06HHPg,2702
|
33
33
|
geo_activity_playground/webui/activity/templates/activity/lines.html.j2,sha256=5gB1aDjRgi_RventenRfC10_FtMT4ch_VuWvA9AMlBY,1121
|
34
34
|
geo_activity_playground/webui/activity/templates/activity/name.html.j2,sha256=RDLEt6ip8_ngmdLgaC5jg92Dk-F2umGwKkd8cWmvVko,2400
|
@@ -46,15 +46,15 @@ geo_activity_playground/webui/eddington/templates/eddington/index.html.j2,sha256
|
|
46
46
|
geo_activity_playground/webui/entry_controller.py,sha256=v8twD3LJ0SoVtvzJoDKnU8dTtMZAKvhNU2AEH2Z87OA,1886
|
47
47
|
geo_activity_playground/webui/equipment/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
48
48
|
geo_activity_playground/webui/equipment/blueprint.py,sha256=YbOAsjk05BMeUlD6wGfxE1amvlLsFjG4HMJn5SBrVRU,551
|
49
|
-
geo_activity_playground/webui/equipment/controller.py,sha256=
|
50
|
-
geo_activity_playground/webui/equipment/templates/equipment/index.html.j2,sha256=
|
49
|
+
geo_activity_playground/webui/equipment/controller.py,sha256=m1LNaGCNJnW97TlKT6x9NfQcMp6RKcZ8Q0I1FTUAvss,4037
|
50
|
+
geo_activity_playground/webui/equipment/templates/equipment/index.html.j2,sha256=FEfxB4XwVYELAOdjVlSlprjJH_kLmE-pNWEEXdPqc6I,1778
|
51
51
|
geo_activity_playground/webui/explorer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
52
52
|
geo_activity_playground/webui/explorer/blueprint.py,sha256=jHE6bb4H2GmYaix9P452Cyrn_30z_Nm705AZ0WNm4HQ,1950
|
53
53
|
geo_activity_playground/webui/explorer/controller.py,sha256=8d0FFrG55ZlPQ5seQC2DegxIkPGIW7pvw8Jm4eJt3fg,10634
|
54
54
|
geo_activity_playground/webui/explorer/templates/explorer/index.html.j2,sha256=OxNt2_VwH-cmVXJrDNfeD-dNB9IrwBjdhhQEqkXxHj0,6529
|
55
55
|
geo_activity_playground/webui/heatmap/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
56
56
|
geo_activity_playground/webui/heatmap/blueprint.py,sha256=bjQu-HL3QN5UpJ6tHOifhcLGlPr_hIKvaRu78md4JqM,1470
|
57
|
-
geo_activity_playground/webui/heatmap/heatmap_controller.py,sha256=
|
57
|
+
geo_activity_playground/webui/heatmap/heatmap_controller.py,sha256=fM92NfeJ_qhXkuAT01Btkzeb_SbAgExxql_OH1G31os,6477
|
58
58
|
geo_activity_playground/webui/heatmap/templates/heatmap/index.html.j2,sha256=YLeu6P4djl8G4qAXR6DhetseqrbOodN7aN4coocknc4,1875
|
59
59
|
geo_activity_playground/webui/search_controller.py,sha256=PzMf7b8tiJKZIZoPvQ9A2hOrzoKV9cS3jq05w2fK94c,532
|
60
60
|
geo_activity_playground/webui/square_planner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -75,7 +75,7 @@ geo_activity_playground/webui/static/site.webmanifest,sha256=4vYxdPMpwTdB8EmOvHk
|
|
75
75
|
geo_activity_playground/webui/strava_controller.py,sha256=-DZ1Ae-0cWx5tia2dJpGfsBBoIya0QO7IC2qa1-7Q_U,779
|
76
76
|
geo_activity_playground/webui/summary/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
77
77
|
geo_activity_playground/webui/summary/blueprint.py,sha256=kzQ6MDOycQKfDcVoEUmL7HYHJA_gu8DlzVHwO37-_jA,514
|
78
|
-
geo_activity_playground/webui/summary/controller.py,sha256=
|
78
|
+
geo_activity_playground/webui/summary/controller.py,sha256=i6A9-S9j9Hm67FcZPzJpqMgxRVsXbDmJiVLGiRtZIqk,8805
|
79
79
|
geo_activity_playground/webui/summary/templates/summary/index.html.j2,sha256=rsII1eMY-xNugh8A9SecnEcDZqkEOWYIfiHAGroQYuM,4442
|
80
80
|
geo_activity_playground/webui/templates/home.html.j2,sha256=23MLQJ1k447NMLcgOGgTSNiPXFvdC2bQvACkDZbGo5k,2182
|
81
81
|
geo_activity_playground/webui/templates/page.html.j2,sha256=aeTYem0CpOOPvWa5KzVKH1BiPJlF0LHqChL1IhpAUO0,7292
|
@@ -88,8 +88,8 @@ geo_activity_playground/webui/upload/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeu
|
|
88
88
|
geo_activity_playground/webui/upload/blueprint.py,sha256=2l5q1LYtjgLF_3CAyPvCLx-wMebp14OJvgZBzGILdmQ,801
|
89
89
|
geo_activity_playground/webui/upload/controller.py,sha256=QrHfqRxroLuzBBNNSheUx-qJ9ww1sXT1oPdpS7Jx_ro,4092
|
90
90
|
geo_activity_playground/webui/upload/templates/upload/index.html.j2,sha256=hfXkEXaz_MkM46rU56423D6V6WtK-EAXPszSY-_-Tx8,1471
|
91
|
-
geo_activity_playground-0.24.
|
92
|
-
geo_activity_playground-0.24.
|
93
|
-
geo_activity_playground-0.24.
|
94
|
-
geo_activity_playground-0.24.
|
95
|
-
geo_activity_playground-0.24.
|
91
|
+
geo_activity_playground-0.24.2.dist-info/LICENSE,sha256=4RpAwKO8bPkfXH2lnpeUW0eLkNWglyG4lbrLDU_MOwY,1070
|
92
|
+
geo_activity_playground-0.24.2.dist-info/METADATA,sha256=Rele9lf2wXKFJkEXlZYiRY8AMzjTwwN9RBvYY9ieAkc,1665
|
93
|
+
geo_activity_playground-0.24.2.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
|
94
|
+
geo_activity_playground-0.24.2.dist-info/entry_points.txt,sha256=pbNlLI6IIZIp7nPYCfAtiSiz2oxJSCl7DODD6SPkLKk,81
|
95
|
+
geo_activity_playground-0.24.2.dist-info/RECORD,,
|
{geo_activity_playground-0.24.0.dist-info → geo_activity_playground-0.24.2.dist-info}/LICENSE
RENAMED
File without changes
|
File without changes
|
File without changes
|