geo-activity-playground 1.3.0__tar.gz → 1.3.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.
Files changed (176) hide show
  1. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/PKG-INFO +2 -1
  2. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/core/enrichment.py +3 -0
  3. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/importers/activity_parsers.py +10 -1
  4. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/importers/directory.py +10 -3
  5. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/importers/strava_api.py +2 -0
  6. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/importers/strava_checkout.py +2 -1
  7. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/app.py +6 -0
  8. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/templates/activity/show.html.j2 +2 -0
  9. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/pyproject.toml +2 -1
  10. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/LICENSE +0 -0
  11. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/__init__.py +0 -0
  12. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/__main__.py +0 -0
  13. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/alembic/README +0 -0
  14. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/alembic/env.py +0 -0
  15. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/alembic/script.py.mako +0 -0
  16. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/alembic/versions/0f02b92c4f94_add_tag_color.py +0 -0
  17. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/alembic/versions/38882503dc7c_add_tags_to_activities.py +0 -0
  18. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/alembic/versions/451e7836b53d_add_square_planner_bookmark.py +0 -0
  19. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/alembic/versions/63d3b7f6f93c_initial_version.py +0 -0
  20. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/alembic/versions/85fe0348e8a2_add_time_series_uuid_field.py +0 -0
  21. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/alembic/versions/93cc82ad1b60_add_parametricplotspec.py +0 -0
  22. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/alembic/versions/ab83b9d23127_add_upstream_id.py +0 -0
  23. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/alembic/versions/b03491c593f6_add_crop_indices.py +0 -0
  24. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/alembic/versions/da2cba03b71d_add_photos.py +0 -0
  25. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/alembic/versions/dc8073871da7_add_plotspec_group_by.py +0 -0
  26. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/alembic/versions/e02e27876deb_add_square_planner_bookmark_name.py +0 -0
  27. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/alembic/versions/f2f50843be2d_make_all_fields_in_activity_nullable.py +0 -0
  28. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/alembic/versions/script.py.mako +0 -0
  29. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/core/__init__.py +0 -0
  30. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/core/activities.py +0 -0
  31. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/core/config.py +0 -0
  32. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/core/coordinates.py +0 -0
  33. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/core/copernicus_dem.py +0 -0
  34. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/core/datamodel.py +0 -0
  35. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/core/export.py +0 -0
  36. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/core/heart_rate.py +0 -0
  37. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/core/meta_search.py +0 -0
  38. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/core/missing_values.py +0 -0
  39. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/core/parametric_plot.py +0 -0
  40. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/core/paths.py +0 -0
  41. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/core/privacy_zones.py +0 -0
  42. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/core/raster_map.py +0 -0
  43. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/core/similarity.py +0 -0
  44. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/core/summary_stats.py +0 -0
  45. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/core/tasks.py +0 -0
  46. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/core/test_datamodel.py +0 -0
  47. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/core/test_meta_search.py +0 -0
  48. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/core/test_missing_values.py +0 -0
  49. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/core/test_pandas_timezone.py +0 -0
  50. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/core/test_summary_stats.py +0 -0
  51. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/core/test_tiles.py +0 -0
  52. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/core/test_time_zone_from_location.py +0 -0
  53. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/core/test_time_zone_import.py +0 -0
  54. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/core/test_timezone_sqlalchemy.py +0 -0
  55. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/core/tiles.py +0 -0
  56. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/core/time_conversion.py +0 -0
  57. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/explorer/__init__.py +0 -0
  58. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/explorer/grid_file.py +0 -0
  59. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/explorer/tile_visits.py +0 -0
  60. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/explorer/video.py +0 -0
  61. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/heatmap_video.py +0 -0
  62. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/importers/__init__.py +0 -0
  63. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/importers/csv_parser.py +0 -0
  64. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/importers/test_csv_parser.py +0 -0
  65. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/importers/test_directory.py +0 -0
  66. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/importers/test_strava_api.py +0 -0
  67. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/__init__.py +0 -0
  68. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/authenticator.py +0 -0
  69. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/blueprints/__init__.py +0 -0
  70. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/blueprints/activity_blueprint.py +0 -0
  71. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/blueprints/auth_blueprint.py +0 -0
  72. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/blueprints/bubble_chart_blueprint.py +0 -0
  73. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/blueprints/calendar_blueprint.py +0 -0
  74. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/blueprints/eddington_blueprints.py +0 -0
  75. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/blueprints/entry_views.py +0 -0
  76. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/blueprints/equipment_blueprint.py +0 -0
  77. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/blueprints/explorer_blueprint.py +0 -0
  78. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/blueprints/export_blueprint.py +0 -0
  79. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/blueprints/hall_of_fame_blueprint.py +0 -0
  80. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/blueprints/heatmap_blueprint.py +0 -0
  81. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/blueprints/photo_blueprint.py +0 -0
  82. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/blueprints/plot_builder_blueprint.py +0 -0
  83. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/blueprints/search_blueprint.py +0 -0
  84. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/blueprints/settings_blueprint.py +0 -0
  85. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/blueprints/square_planner_blueprint.py +0 -0
  86. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/blueprints/summary_blueprint.py +0 -0
  87. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/blueprints/tile_blueprint.py +0 -0
  88. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/blueprints/time_zone_fixer_blueprint.py +0 -0
  89. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/blueprints/upload_blueprint.py +0 -0
  90. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/columns.py +0 -0
  91. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/flasher.py +0 -0
  92. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/plot_util.py +0 -0
  93. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/search_util.py +0 -0
  94. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/static/bootstrap/bootstrap-dark-mode.js +0 -0
  95. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/static/bootstrap/bootstrap.bundle.min.js +0 -0
  96. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/static/bootstrap/bootstrap.min.css +0 -0
  97. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/static/favicons/android-chrome-192x192.png +0 -0
  98. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/static/favicons/android-chrome-512x512.png +0 -0
  99. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/static/favicons/apple-touch-icon.png +0 -0
  100. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/static/favicons/browserconfig.xml +0 -0
  101. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/static/favicons/favicon-16x16.png +0 -0
  102. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/static/favicons/favicon-32x32.png +0 -0
  103. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/static/favicons/favicon-48x48.png +0 -0
  104. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/static/favicons/favicon.ico +0 -0
  105. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/static/favicons/favicon.svg +0 -0
  106. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/static/favicons/mstile-150x150.png +0 -0
  107. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/static/favicons/site.webmanifest +0 -0
  108. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/static/favicons/web-app-manifest-192x192.png +0 -0
  109. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/static/favicons/web-app-manifest-512x512.png +0 -0
  110. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/static/images/layers-2x.png +0 -0
  111. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/static/images/layers.png +0 -0
  112. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/static/images/marker-icon-2x.png +0 -0
  113. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/static/images/marker-icon.png +0 -0
  114. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/static/images/marker-shadow.png +0 -0
  115. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/static/leaflet/Leaflet.fullscreen.min.js +0 -0
  116. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/static/leaflet/MarkerCluster.Default.css +0 -0
  117. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/static/leaflet/MarkerCluster.css +0 -0
  118. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/static/leaflet/fullscreen.png +0 -0
  119. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/static/leaflet/fullscreen@2x.png +0 -0
  120. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/static/leaflet/leaflet.css +0 -0
  121. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/static/leaflet/leaflet.fullscreen.css +0 -0
  122. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/static/leaflet/leaflet.js +0 -0
  123. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/static/leaflet/leaflet.markercluster.js +0 -0
  124. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/static/server-side-explorer.js +0 -0
  125. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/static/table-sort.min.js +0 -0
  126. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/static/vega/vega-embed@6.js +0 -0
  127. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/static/vega/vega-lite@4.js +0 -0
  128. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/static/vega/vega@5.js +0 -0
  129. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/templates/activity/day.html.j2 +0 -0
  130. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/templates/activity/edit.html.j2 +0 -0
  131. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/templates/activity/lines.html.j2 +0 -0
  132. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/templates/activity/name.html.j2 +0 -0
  133. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/templates/activity/trim.html.j2 +0 -0
  134. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/templates/auth/index.html.j2 +0 -0
  135. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/templates/bubble_chart/index.html.j2 +0 -0
  136. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/templates/calendar/index.html.j2 +0 -0
  137. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/templates/calendar/month.html.j2 +0 -0
  138. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/templates/eddington/distance.html.j2 +0 -0
  139. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/templates/eddington/elevation_gain.html.j2 +0 -0
  140. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/templates/elevation_eddington/index.html.j2 +0 -0
  141. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/templates/equipment/index.html.j2 +0 -0
  142. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/templates/explorer/server-side.html.j2 +0 -0
  143. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/templates/export/index.html.j2 +0 -0
  144. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/templates/hall_of_fame/index.html.j2 +0 -0
  145. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/templates/heatmap/index.html.j2 +0 -0
  146. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/templates/home.html.j2 +0 -0
  147. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/templates/page.html.j2 +0 -0
  148. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/templates/photo/map.html.j2 +0 -0
  149. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/templates/photo/new.html.j2 +0 -0
  150. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/templates/plot-macros.html.j2 +0 -0
  151. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/templates/plot_builder/edit.html.j2 +0 -0
  152. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/templates/plot_builder/import-spec.html.j2 +0 -0
  153. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/templates/plot_builder/index.html.j2 +0 -0
  154. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/templates/search/index.html.j2 +0 -0
  155. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/templates/search_form.html.j2 +0 -0
  156. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/templates/settings/admin-password.html.j2 +0 -0
  157. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/templates/settings/color-schemes.html.j2 +0 -0
  158. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/templates/settings/heart-rate.html.j2 +0 -0
  159. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/templates/settings/index.html.j2 +0 -0
  160. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/templates/settings/manage-equipments.html.j2 +0 -0
  161. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/templates/settings/manage-kinds.html.j2 +0 -0
  162. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/templates/settings/metadata-extraction.html.j2 +0 -0
  163. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/templates/settings/privacy-zones.html.j2 +0 -0
  164. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/templates/settings/segmentation.html.j2 +0 -0
  165. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/templates/settings/sharepic.html.j2 +0 -0
  166. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/templates/settings/strava.html.j2 +0 -0
  167. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/templates/settings/tags-edit.html.j2 +0 -0
  168. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/templates/settings/tags-list.html.j2 +0 -0
  169. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/templates/settings/tags-new.html.j2 +0 -0
  170. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/templates/settings/tile-source.html.j2 +0 -0
  171. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/templates/square_planner/index.html.j2 +0 -0
  172. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/templates/summary/index.html.j2 +0 -0
  173. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/templates/summary/vega-chart.html.j2 +0 -0
  174. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/templates/time_zone_fixer/index.html.j2 +0 -0
  175. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/templates/upload/index.html.j2 +0 -0
  176. {geo_activity_playground-1.3.0 → geo_activity_playground-1.3.1}/geo_activity_playground/webui/templates/upload/reload.html.j2 +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: geo-activity-playground
3
- Version: 1.3.0
3
+ Version: 1.3.1
4
4
  Summary: Analysis of geo data activities like rides, runs or hikes.
5
5
  License: MIT
6
6
  Author: Martin Ueding
@@ -41,6 +41,7 @@ Requires-Dist: shapely (>=2.0.5,<3.0.0)
41
41
  Requires-Dist: sqlalchemy (>=2.0.40,<3.0.0)
42
42
  Requires-Dist: stravalib (>=2.0,<3.0)
43
43
  Requires-Dist: tcxreader (>=0.4.5,<0.5.0)
44
+ Requires-Dist: tifffile (==2025.5.10)
44
45
  Requires-Dist: tomli (>=2.0.1,<3.0.0) ; python_version < "3.11"
45
46
  Requires-Dist: tqdm (>=4.64.0,<5.0.0)
46
47
  Requires-Dist: vegafusion-python-embed (>=1.4.3,<2.0.0)
@@ -1,5 +1,6 @@
1
1
  import datetime
2
2
  import logging
3
+ import uuid
3
4
  import zoneinfo
4
5
  from typing import Callable
5
6
 
@@ -268,6 +269,8 @@ def update_and_commit(
268
269
  activity: Activity, time_series: pd.DataFrame, config: Config
269
270
  ) -> None:
270
271
  changed = apply_enrichments(activity, time_series, config)
272
+ if not activity.time_series_uuid:
273
+ activity.time_series_uuid = str(uuid.uuid4())
271
274
  if changed:
272
275
  activity.replace_time_series(time_series)
273
276
  DB.session.add(activity)
@@ -27,6 +27,9 @@ def read_activity(path: pathlib.Path) -> tuple[Activity, pd.DataFrame]:
27
27
  suffixes = [s.lower() for s in path.suffixes]
28
28
  activity = Activity()
29
29
 
30
+ if len(suffixes) == 0:
31
+ raise ActivityParseError(f"File has no suffix, ignoring")
32
+
30
33
  if suffixes[-1] == ".gz":
31
34
  opener = gzip.open
32
35
  file_type = suffixes[-2]
@@ -132,7 +135,13 @@ def read_fit_activity(path: pathlib.Path, open) -> tuple[Activity, pd.DataFrame]
132
135
  factor = _fit_speed_unit_factor(
133
136
  fields["enhanced_speed"].units
134
137
  )
135
- row["speed"] = values["enhanced_speed"] * factor
138
+ try:
139
+ row["speed"] = values["enhanced_speed"] * factor
140
+ except TypeError as e:
141
+ # https://github.com/martin-ueding/geo-activity-playground/issues/301
142
+ raise ActivityParseError(
143
+ f'Cannot work with {values["enhanced_speed"]!r}, {factor!r}'
144
+ ) from e
136
145
  if "grade" in fields:
137
146
  row["grade"] = values["grade"]
138
147
  if "temperature" in fields:
@@ -38,13 +38,15 @@ def import_from_directory(
38
38
  and not path.suffix in config.ignore_suffixes
39
39
  ]
40
40
 
41
- for activity_path in activity_paths:
41
+ for i, activity_path in enumerate(activity_paths):
42
42
  with DB.session.no_autoflush:
43
43
  activity = DB.session.scalar(
44
44
  sqlalchemy.select(Activity).filter(Activity.path == str(activity_path))
45
45
  )
46
46
  if activity is None:
47
- import_from_file(activity_path, repository, tile_visit_accessor, config)
47
+ import_from_file(
48
+ activity_path, repository, tile_visit_accessor, config, i
49
+ )
48
50
 
49
51
 
50
52
  def import_from_file(
@@ -52,6 +54,7 @@ def import_from_file(
52
54
  repository: ActivityRepository,
53
55
  tile_visit_accessor: TileVisitAccessor,
54
56
  config: Config,
57
+ i: int,
55
58
  ) -> None:
56
59
  logger.info(f"Importing {path} …")
57
60
  try:
@@ -74,6 +77,10 @@ def import_from_file(
74
77
 
75
78
  meta_from_path = _get_metadata_from_path(path, config.metadata_extraction_regexes)
76
79
  activity.name = meta_from_path.get("name", activity.name)
80
+ if "equipment" in meta_from_path:
81
+ activity.equipment = get_or_make_equipment(meta_from_path["equipment"], config)
82
+ if "kind" in meta_from_path:
83
+ activity.kind = get_or_make_kind(meta_from_path["kind"])
77
84
  if activity.equipment is None:
78
85
  activity.equipment = get_or_make_equipment(
79
86
  meta_from_path.get("equipment", DEFAULT_UNKNOWN_NAME), config
@@ -85,7 +92,7 @@ def import_from_file(
85
92
 
86
93
  update_and_commit(activity, time_series, config)
87
94
 
88
- if len(repository) > 0:
95
+ if len(repository) > 0 and i % 50 == 0:
89
96
  compute_tile_visits_new(repository, tile_visit_accessor)
90
97
  compute_tile_evolution(tile_visit_accessor.tile_state, config)
91
98
  tile_visit_accessor.save()
@@ -25,6 +25,8 @@ from ..core.paths import strava_api_dir
25
25
  from ..core.paths import strava_last_activity_date_path
26
26
  from ..core.tasks import get_state
27
27
  from ..core.tasks import set_state
28
+ from ..explorer.tile_visits import compute_tile_evolution
29
+ from ..explorer.tile_visits import compute_tile_visits_new
28
30
  from ..explorer.tile_visits import TileVisitAccessor
29
31
 
30
32
 
@@ -3,6 +3,7 @@ import logging
3
3
  import pathlib
4
4
  import shutil
5
5
  import sys
6
+ import urllib.parse
6
7
  import zoneinfo
7
8
  from typing import Optional
8
9
 
@@ -266,7 +267,7 @@ def convert_strava_checkout(
266
267
  "-",
267
268
  f"{activity_date.hour:02d}-{activity_date.minute:02d}-{activity_date.second:02d}",
268
269
  " ",
269
- activity_name.replace("/", "_"),
270
+ urllib.parse.quote_plus(activity_name),
270
271
  ]
271
272
  + activity_file.suffixes
272
273
  )
@@ -131,6 +131,12 @@ def web_ui_main(
131
131
  old_path = TIME_SERIES_DIR() / f"{activity.id}.parquet"
132
132
  if old_path.exists() and not activity.time_series_path.exists():
133
133
  old_path.rename(activity.time_series_path)
134
+ if not activity.time_series_path.exists():
135
+ logger.error(
136
+ f"Time series for {activity.id=}, expected at {activity.time_series_path}, does not exist. Deleting activity."
137
+ )
138
+ DB.session.delete(activity)
139
+ DB.session.commit()
134
140
 
135
141
  if not skip_reload:
136
142
  thread = threading.Thread(
@@ -42,6 +42,8 @@
42
42
  <dt>Average elapsed speed</dt>
43
43
  <dd>{{ activity.average_speed_elapsed_kmh|round(1) }} km/h = {{
44
44
  (60/activity.average_speed_elapsed_kmh)|round(1) }} min/km</dd>
45
+ {% endif %}
46
+ {% if date is defined %}
45
47
  <dt>Start time</dt>
46
48
  <dd><a href="{{ url_for('activity.day', year=date.year, month=date.month, day=date.day) }}">{{ date }}</a>
47
49
  {{ time }} {{ activity.iana_timezone }}
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "geo-activity-playground"
3
- version = "1.3.0"
3
+ version = "1.3.1"
4
4
  description = "Analysis of geo data activities like rides, runs or hikes."
5
5
  authors = ["Martin Ueding <mu@martin-ueding.de>"]
6
6
  license = "MIT"
@@ -47,6 +47,7 @@ scipy = "^1.16.0"
47
47
  geotiff = "^0.2.10"
48
48
  numcodecs = "<0.15.0"
49
49
  imagecodecs = "^2025.3.30"
50
+ tifffile = "2025.5.10"
50
51
 
51
52
  [tool.poetry.group.dev.dependencies]
52
53
  black = "^24.0.0"