udata 14.0.0__py3-none-any.whl → 14.4.1.dev7__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.
Potentially problematic release.
This version of udata might be problematic. Click here for more details.
- udata/api_fields.py +35 -4
- udata/app.py +18 -20
- udata/auth/__init__.py +29 -6
- udata/auth/forms.py +2 -2
- udata/auth/views.py +6 -3
- udata/commands/serve.py +3 -11
- udata/commands/tests/test_fixtures.py +9 -9
- udata/core/access_type/api.py +1 -1
- udata/core/access_type/constants.py +12 -8
- udata/core/activity/api.py +5 -6
- udata/core/badges/tests/test_commands.py +6 -6
- udata/core/csv.py +5 -0
- udata/core/dataservices/models.py +1 -1
- udata/core/dataservices/tasks.py +7 -0
- udata/core/dataset/api.py +2 -0
- udata/core/dataset/models.py +2 -2
- udata/core/dataset/permissions.py +31 -0
- udata/core/dataset/tasks.py +17 -5
- udata/core/discussions/models.py +1 -0
- udata/core/organization/api.py +8 -5
- udata/core/organization/mails.py +1 -1
- udata/core/organization/models.py +9 -1
- udata/core/organization/notifications.py +84 -0
- udata/core/organization/permissions.py +1 -1
- udata/core/organization/tasks.py +3 -0
- udata/core/pages/tests/test_api.py +32 -0
- udata/core/post/api.py +24 -69
- udata/core/post/models.py +84 -16
- udata/core/post/tests/test_api.py +24 -1
- udata/core/reports/api.py +18 -0
- udata/core/reports/models.py +42 -2
- udata/core/reuse/models.py +1 -1
- udata/core/reuse/tasks.py +7 -0
- udata/core/spatial/forms.py +2 -2
- udata/core/user/models.py +5 -1
- udata/features/notifications/api.py +7 -18
- udata/features/notifications/models.py +56 -0
- udata/features/notifications/tasks.py +25 -0
- udata/flask_mongoengine/engine.py +0 -4
- udata/frontend/markdown.py +2 -1
- udata/harvest/actions.py +21 -1
- udata/harvest/api.py +25 -8
- udata/harvest/backends/base.py +27 -1
- udata/harvest/backends/ckan/harvesters.py +11 -2
- udata/harvest/commands.py +33 -0
- udata/harvest/filters.py +17 -6
- udata/harvest/models.py +16 -0
- udata/harvest/permissions.py +27 -0
- udata/harvest/tests/ckan/test_ckan_backend.py +33 -0
- udata/harvest/tests/test_actions.py +58 -5
- udata/harvest/tests/test_api.py +276 -122
- udata/harvest/tests/test_base_backend.py +86 -1
- udata/harvest/tests/test_dcat_backend.py +57 -10
- udata/harvest/tests/test_filters.py +6 -0
- udata/i18n.py +1 -4
- udata/mail.py +5 -1
- udata/migrations/2025-10-31-create-membership-request-notifications.py +55 -0
- udata/migrations/2025-12-04-add-uuid-to-discussion-messages.py +28 -0
- udata/mongo/slug_fields.py +1 -1
- udata/rdf.py +45 -6
- udata/routing.py +2 -2
- udata/settings.py +7 -0
- udata/tasks.py +1 -0
- udata/templates/mail/message.html +5 -31
- udata/tests/__init__.py +27 -2
- udata/tests/api/__init__.py +108 -21
- udata/tests/api/test_activities_api.py +36 -0
- udata/tests/api/test_auth_api.py +121 -95
- udata/tests/api/test_base_api.py +7 -4
- udata/tests/api/test_datasets_api.py +44 -19
- udata/tests/api/test_organizations_api.py +192 -197
- udata/tests/api/test_reports_api.py +157 -0
- udata/tests/api/test_reuses_api.py +147 -147
- udata/tests/api/test_security_api.py +12 -12
- udata/tests/api/test_swagger.py +4 -4
- udata/tests/api/test_tags_api.py +8 -8
- udata/tests/api/test_user_api.py +1 -1
- udata/tests/apiv2/test_swagger.py +4 -4
- udata/tests/cli/test_cli_base.py +8 -9
- udata/tests/dataset/test_dataset_commands.py +4 -4
- udata/tests/dataset/test_dataset_model.py +66 -26
- udata/tests/dataset/test_dataset_rdf.py +99 -5
- udata/tests/frontend/test_auth.py +24 -1
- udata/tests/frontend/test_csv.py +0 -3
- udata/tests/helpers.py +25 -27
- udata/tests/organization/test_notifications.py +67 -2
- udata/tests/plugin.py +6 -261
- udata/tests/site/test_site_csv_exports.py +22 -10
- udata/tests/test_activity.py +9 -9
- udata/tests/test_dcat_commands.py +2 -2
- udata/tests/test_discussions.py +5 -5
- udata/tests/test_migrations.py +21 -21
- udata/tests/test_notifications.py +15 -57
- udata/tests/test_notifications_task.py +43 -0
- udata/tests/test_owned.py +81 -1
- udata/tests/test_storages.py +25 -19
- udata/tests/test_topics.py +77 -61
- udata/tests/test_uris.py +33 -0
- udata/tests/workers/test_jobs_commands.py +23 -23
- udata/translations/ar/LC_MESSAGES/udata.mo +0 -0
- udata/translations/ar/LC_MESSAGES/udata.po +187 -108
- udata/translations/de/LC_MESSAGES/udata.mo +0 -0
- udata/translations/de/LC_MESSAGES/udata.po +187 -108
- udata/translations/es/LC_MESSAGES/udata.mo +0 -0
- udata/translations/es/LC_MESSAGES/udata.po +187 -108
- udata/translations/fr/LC_MESSAGES/udata.mo +0 -0
- udata/translations/fr/LC_MESSAGES/udata.po +188 -109
- udata/translations/it/LC_MESSAGES/udata.mo +0 -0
- udata/translations/it/LC_MESSAGES/udata.po +187 -108
- udata/translations/pt/LC_MESSAGES/udata.mo +0 -0
- udata/translations/pt/LC_MESSAGES/udata.po +187 -108
- udata/translations/sr/LC_MESSAGES/udata.mo +0 -0
- udata/translations/sr/LC_MESSAGES/udata.po +187 -108
- udata/translations/udata.pot +215 -106
- udata/uris.py +0 -2
- udata-14.4.1.dev7.dist-info/METADATA +109 -0
- {udata-14.0.0.dist-info → udata-14.4.1.dev7.dist-info}/RECORD +121 -123
- udata/core/post/forms.py +0 -30
- udata/flask_mongoengine/json.py +0 -38
- udata/templates/mail/base.html +0 -105
- udata/templates/mail/base.txt +0 -6
- udata/templates/mail/button.html +0 -3
- udata/templates/mail/layouts/1-column.html +0 -19
- udata/templates/mail/layouts/2-columns.html +0 -20
- udata/templates/mail/layouts/center-panel.html +0 -16
- udata-14.0.0.dist-info/METADATA +0 -132
- {udata-14.0.0.dist-info → udata-14.4.1.dev7.dist-info}/WHEEL +0 -0
- {udata-14.0.0.dist-info → udata-14.4.1.dev7.dist-info}/entry_points.txt +0 -0
- {udata-14.0.0.dist-info → udata-14.4.1.dev7.dist-info}/licenses/LICENSE +0 -0
- {udata-14.0.0.dist-info → udata-14.4.1.dev7.dist-info}/top_level.txt +0 -0
udata/templates/mail/base.html
DELETED
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
2
|
-
<html xmlns="http://www.w3.org/1999/xhtml" style="margin: 0;padding: 0;font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif;">
|
|
3
|
-
<head>
|
|
4
|
-
<!-- If you delete this meta tag, Half Life 3 will never be released. -->
|
|
5
|
-
<meta name="viewport" content="width=device-width">
|
|
6
|
-
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
|
7
|
-
<title>{{config.SITE_TITLE}} - {{subject}}</title>
|
|
8
|
-
<style>
|
|
9
|
-
/* -------------------------------------------
|
|
10
|
-
PHONE
|
|
11
|
-
For clients that support media queries.
|
|
12
|
-
Nothing fancy.
|
|
13
|
-
-------------------------------------------- */
|
|
14
|
-
@media only screen and (max-width: 600px) {
|
|
15
|
-
|
|
16
|
-
a[class="btn"] { display:block!important; margin-bottom:10px!important; background-image:none!important; margin-right:0!important;}
|
|
17
|
-
|
|
18
|
-
div[class="column"] { width: auto!important; float:none!important;}
|
|
19
|
-
|
|
20
|
-
table.social div[class="column"] {
|
|
21
|
-
width:auto!important;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
</style>
|
|
25
|
-
{% block head %}{% endblock %}
|
|
26
|
-
</head>
|
|
27
|
-
|
|
28
|
-
<body bgcolor="#efefef" style="margin: 0;padding: 0;font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif;-webkit-font-smoothing: antialiased;-webkit-text-size-adjust: none;height: 100%;color: #373737;width: 100%!important;background-color: #efefef;">
|
|
29
|
-
|
|
30
|
-
<!-- HEADER -->
|
|
31
|
-
<table class="head-wrap" cellpadding="0" cellspacing="0" style="margin: 0;padding: 0;font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif;width: 100%;">
|
|
32
|
-
<tr style="margin: 0;padding: 0;font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif;">
|
|
33
|
-
<td style="margin: 0;padding: 0;font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif;"></td>
|
|
34
|
-
<td class="header container" style="margin: 0 auto!important;padding: 0;font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif;display: block!important;max-width: 628px!important;clear: both!important;">
|
|
35
|
-
|
|
36
|
-
<div style="margin: 0;padding: 0;font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif;">
|
|
37
|
-
<table cellpadding="0" cellspacing="0" style="margin: 0;padding: 0;font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif;">
|
|
38
|
-
<tr style="margin: 0;padding: 0;font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif;">
|
|
39
|
-
<td align="center" class="head-message" style="margin: 0;padding: 16px;font-family: arial,helvetica,sans-serif;color: #888888;font-size: 11px;">
|
|
40
|
-
{% if browser_url %}
|
|
41
|
-
{% set link =
|
|
42
|
-
'<a href="'|safe
|
|
43
|
-
+ browser_link
|
|
44
|
-
+ '"Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif;color: #2081c5;text-decoration: none;"> '|safe
|
|
45
|
-
+ _('on your browser.')
|
|
46
|
-
+ '</a>'|safe
|
|
47
|
-
%}
|
|
48
|
-
{{ _('View this email %(link)s', link=link) }}
|
|
49
|
-
{% else %}
|
|
50
|
-
|
|
51
|
-
{% endif %}
|
|
52
|
-
</td>
|
|
53
|
-
</tr>
|
|
54
|
-
</table>
|
|
55
|
-
</div>
|
|
56
|
-
|
|
57
|
-
</td>
|
|
58
|
-
<td style="margin: 0;padding: 0;font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif;"></td>
|
|
59
|
-
</tr>
|
|
60
|
-
</table><!-- /HEADER -->
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
<!-- BODY -->
|
|
64
|
-
<table class="body-wrap" cellpadding="0" cellspacing="0" style="margin: 0;padding: 0;font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif;width: 100%;">
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
<tr style="margin: 0;padding: 0;font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif;">
|
|
69
|
-
<td style="margin: 0;padding: 0;font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif;"></td>
|
|
70
|
-
<td class="container" bgcolor="#FFFFFF" style="margin: 0 auto!important;padding: 0;font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif;display: block!important;max-width: 628px!important;clear: both!important;">
|
|
71
|
-
|
|
72
|
-
<div class="content" style="margin: 0 auto;padding: 35px 47px;font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif;max-width: 628px;display: block;">
|
|
73
|
-
<table style="margin: 0;padding: 0;font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif;width: 100%;">
|
|
74
|
-
<tr style="margin: 0;padding: 0;font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif;">
|
|
75
|
-
<td style="margin: 0;padding: 0;font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif;">
|
|
76
|
-
<h3 style="margin: 0;padding: 0;font-family: "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif;line-height: 1.1;margin-bottom: 15px;color: #000;font-weight: 500;font-size: 24px;">{{ _('Hi %(user)s', user=recipient.first_name) }}</h3>
|
|
77
|
-
</td>
|
|
78
|
-
</tr>
|
|
79
|
-
<tr style="margin: 0;padding: 0;">
|
|
80
|
-
<td style="margin: 0;padding: 0;font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif;margin-bottom: 20px;font-weight: normal;font-size: 14px;line-height: 1.5;">
|
|
81
|
-
{% block body %}{% endblock %}
|
|
82
|
-
</td>
|
|
83
|
-
</tr>
|
|
84
|
-
|
|
85
|
-
<tr style="margin: 0;padding: 0;">
|
|
86
|
-
<td style="margin: 0;padding: 0;">
|
|
87
|
-
<p style="margin: 0;padding: 0;font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif;margin-top: 20px;margin-bottom: 20px;font-weight: normal;font-size: 14px;line-height: 1.5;">{{ _('See you soon on the platform') }}<br/>
|
|
88
|
-
<i>{{ _('The %(site)s team', site=config.SITE_TITLE) }}</i></p>
|
|
89
|
-
</td>
|
|
90
|
-
</tr>
|
|
91
|
-
|
|
92
|
-
</table>
|
|
93
|
-
|
|
94
|
-
</div></td>
|
|
95
|
-
</tr>
|
|
96
|
-
</table>
|
|
97
|
-
<!-- /content -->
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
<td style="margin: 0;padding: 0;font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif;"></td>
|
|
101
|
-
|
|
102
|
-
<!-- /BODY -->
|
|
103
|
-
|
|
104
|
-
</body>
|
|
105
|
-
</html>
|
udata/templates/mail/base.txt
DELETED
udata/templates/mail/button.html
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
{% macro mail_button(label, url) %}
|
|
2
|
-
<a class="btn" href="{{ url }}" style="margin: 30px 15px;padding: 8px 20px;font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif;color: #ffffff;text-decoration: none;background-color: #438fc5;font-weight: bold;text-align: center;cursor: pointer;display: inline-block;font-size: 11px;text-transform: uppercase;">{{ label }}</a>
|
|
3
|
-
{% endmacro %}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
{% extends 'base.html' %}
|
|
2
|
-
{% from 'macros/breadcrumb.html' import breadcrumb with context %}
|
|
3
|
-
{% set section_class = section_class|default('default') %}
|
|
4
|
-
{% set toolbar_class = toolbar_class|default('') %}
|
|
5
|
-
|
|
6
|
-
{% block content %}
|
|
7
|
-
{{ breadcrumb(self,
|
|
8
|
-
breadcrum_class=breadcrum_class,
|
|
9
|
-
toolbar_class=toolbar_class
|
|
10
|
-
) }}
|
|
11
|
-
|
|
12
|
-
<section class="{{ section_class }}">
|
|
13
|
-
<div class="{{ container_class }}">
|
|
14
|
-
{% block main_content %}{% endblock %}
|
|
15
|
-
</div>
|
|
16
|
-
</section>
|
|
17
|
-
|
|
18
|
-
{% block extra_sections %}{% endblock %}
|
|
19
|
-
{% endblock %}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
{% extends 'base.html' %}
|
|
2
|
-
{% from 'macros/breadcrumb.html' import breadcrumb with context %}
|
|
3
|
-
{% set section_class = section_class|default('default') %}
|
|
4
|
-
|
|
5
|
-
{% block content %}
|
|
6
|
-
{{ breadcrumb(self) }}
|
|
7
|
-
|
|
8
|
-
<section class="{{ section_class }}">
|
|
9
|
-
<div class="container {{ container_class }}">
|
|
10
|
-
<div class="row">
|
|
11
|
-
<div class="col-lg-8">
|
|
12
|
-
{% block main_content %}{% endblock %}
|
|
13
|
-
</div>
|
|
14
|
-
<aside class="col-lg-4">
|
|
15
|
-
{% block sidebar %}{% endblock %}
|
|
16
|
-
</aside>
|
|
17
|
-
</div>
|
|
18
|
-
</div>
|
|
19
|
-
</section>
|
|
20
|
-
{% endblock %}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
{% extends 'raw.html' %}
|
|
2
|
-
|
|
3
|
-
{% set body_class = 'panel-center' %}
|
|
4
|
-
|
|
5
|
-
{% block body %}
|
|
6
|
-
<div class="container">
|
|
7
|
-
<div class="row">
|
|
8
|
-
<div class="col-sm-10 col-sm-offset-1 col-md-8 col-md-offset-2">
|
|
9
|
-
<div class="panel panel-default">
|
|
10
|
-
{% block panel_content %}
|
|
11
|
-
{% endblock %}
|
|
12
|
-
</div>
|
|
13
|
-
</div>
|
|
14
|
-
</div>
|
|
15
|
-
</div>
|
|
16
|
-
{% endblock %}
|
udata-14.0.0.dist-info/METADATA
DELETED
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: udata
|
|
3
|
-
Version: 14.0.0
|
|
4
|
-
Summary: Open data portal
|
|
5
|
-
Author-email: Opendata Team <opendatateam@data.gouv.fr>
|
|
6
|
-
Maintainer-email: Opendata Team <opendatateam@data.gouv.fr>
|
|
7
|
-
License: MIT
|
|
8
|
-
Project-URL: Homepage, https://github.com/opendatateam/udata
|
|
9
|
-
Project-URL: Repository, https://github.com/opendatateam/udata
|
|
10
|
-
Project-URL: Documentation, https://udata.readthedocs.io/
|
|
11
|
-
Project-URL: Bug Tracker, https://github.com/opendatateam/udata/issues
|
|
12
|
-
Keywords: udata,open data,portal,data
|
|
13
|
-
Classifier: Development Status :: 5 - Production/Stable
|
|
14
|
-
Classifier: Programming Language :: Python
|
|
15
|
-
Classifier: Environment :: Web Environment
|
|
16
|
-
Classifier: Operating System :: OS Independent
|
|
17
|
-
Classifier: Intended Audience :: Developers
|
|
18
|
-
Classifier: Topic :: System :: Software Distribution
|
|
19
|
-
Classifier: Programming Language :: Python :: 3
|
|
20
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
21
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
22
|
-
Classifier: Programming Language :: Python :: 3.13
|
|
23
|
-
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
24
|
-
Classifier: License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)
|
|
25
|
-
Requires-Python: <3.14,>=3.11
|
|
26
|
-
Description-Content-Type: text/markdown
|
|
27
|
-
License-File: LICENSE
|
|
28
|
-
Requires-Dist: authlib==1.5.1
|
|
29
|
-
Requires-Dist: awesome-slugify==1.6.5
|
|
30
|
-
Requires-Dist: babel==2.17.0
|
|
31
|
-
Requires-Dist: bcrypt==4.3.0
|
|
32
|
-
Requires-Dist: bleach[css]==6.2.0
|
|
33
|
-
Requires-Dist: blinker==1.5
|
|
34
|
-
Requires-Dist: boto3==1.26.102
|
|
35
|
-
Requires-Dist: botocore==1.29.165
|
|
36
|
-
Requires-Dist: celery==5.4.0
|
|
37
|
-
Requires-Dist: celerybeat-mongo==0.2.0
|
|
38
|
-
Requires-Dist: click==8.1.8
|
|
39
|
-
Requires-Dist: cryptography==44.0.2
|
|
40
|
-
Requires-Dist: email-validator==2.2.0
|
|
41
|
-
Requires-Dist: factory-boy==3.3.3
|
|
42
|
-
Requires-Dist: feedgenerator==2.1.0
|
|
43
|
-
Requires-Dist: flask==2.1.2
|
|
44
|
-
Requires-Dist: flask-babel==4.0.0
|
|
45
|
-
Requires-Dist: flask-caching==2.3.1
|
|
46
|
-
Requires-Dist: flask-cdn==1.5.3
|
|
47
|
-
Requires-Dist: flask-gravatar==0.5.0
|
|
48
|
-
Requires-Dist: flask-login==0.6.3
|
|
49
|
-
Requires-Dist: flask-mail==0.10.0
|
|
50
|
-
Requires-Dist: flask-principal==0.4.0
|
|
51
|
-
Requires-Dist: flask-restx==1.3.0
|
|
52
|
-
Requires-Dist: flask-security-too==5.1.2
|
|
53
|
-
Requires-Dist: flask-sitemap==0.4.0
|
|
54
|
-
Requires-Dist: flask-storage~=1.4.0
|
|
55
|
-
Requires-Dist: flask-wtf==1.2.2
|
|
56
|
-
Requires-Dist: geojson==3.2.0
|
|
57
|
-
Requires-Dist: geomet==1.1.0
|
|
58
|
-
Requires-Dist: html2text==2024.2.26
|
|
59
|
-
Requires-Dist: humanfriendly==10.0
|
|
60
|
-
Requires-Dist: importlib-resources==6.5.2
|
|
61
|
-
Requires-Dist: itsdangerous==2.2.0
|
|
62
|
-
Requires-Dist: jinja2==3.1.6
|
|
63
|
-
Requires-Dist: jsonschema==4.23.0
|
|
64
|
-
Requires-Dist: kombu[redis]==5.5.0
|
|
65
|
-
Requires-Dist: langdetect==1.0.9
|
|
66
|
-
Requires-Dist: levenshtein==0.27.1
|
|
67
|
-
Requires-Dist: lxml==5.3.1
|
|
68
|
-
Requires-Dist: mistune==3.1.3
|
|
69
|
-
Requires-Dist: mongoengine==0.29.1
|
|
70
|
-
Requires-Dist: netaddr==1.3.0
|
|
71
|
-
Requires-Dist: pillow==9.2.0
|
|
72
|
-
Requires-Dist: pydenticon==0.3.1
|
|
73
|
-
Requires-Dist: pymongo==4.11.3
|
|
74
|
-
Requires-Dist: python-dateutil==2.9.0.post0
|
|
75
|
-
Requires-Dist: pytz==2025.1
|
|
76
|
-
Requires-Dist: rdflib==7.1.3
|
|
77
|
-
Requires-Dist: redis==5.2.1
|
|
78
|
-
Requires-Dist: requests==2.32.4
|
|
79
|
-
Requires-Dist: saxonche==12.8.0
|
|
80
|
-
Requires-Dist: sentry-sdk[flask]==2.23.1
|
|
81
|
-
Requires-Dist: speaklater==1.3
|
|
82
|
-
Requires-Dist: tlds==2025022800
|
|
83
|
-
Requires-Dist: typing-extensions==4.12.2
|
|
84
|
-
Requires-Dist: tzdata==2025.1
|
|
85
|
-
Requires-Dist: urlextract==1.9.0
|
|
86
|
-
Requires-Dist: urllib3==1.26.20
|
|
87
|
-
Requires-Dist: voluptuous==0.15.2
|
|
88
|
-
Requires-Dist: werkzeug==2.2.3
|
|
89
|
-
Requires-Dist: wtforms[email]==3.2.1
|
|
90
|
-
Requires-Dist: wtforms-json==0.3.5
|
|
91
|
-
Provides-Extra: dev
|
|
92
|
-
Requires-Dist: flask-shell-ipython<1.0,>=0.5.3; extra == "dev"
|
|
93
|
-
Requires-Dist: invoke<3.0,>=2.2.0; extra == "dev"
|
|
94
|
-
Requires-Dist: pip-tools<8.0,>=7.4.1; extra == "dev"
|
|
95
|
-
Requires-Dist: pre-commit<5.0,>=4.2.0; extra == "dev"
|
|
96
|
-
Requires-Dist: ruff<1.0,>=0.11.0; extra == "dev"
|
|
97
|
-
Provides-Extra: test
|
|
98
|
-
Requires-Dist: faker<38.0,>=37.0.2; extra == "test"
|
|
99
|
-
Requires-Dist: feedparser<7.0,>=6.0.11; extra == "test"
|
|
100
|
-
Requires-Dist: httpretty<2.0,>=1.1.4; extra == "test"
|
|
101
|
-
Requires-Dist: mock<6.0,>=5.2.0; extra == "test"
|
|
102
|
-
Requires-Dist: pytest<9.0,>=8.3.5; extra == "test"
|
|
103
|
-
Requires-Dist: pytest-env<2.0,>=1.1.5; extra == "test"
|
|
104
|
-
Requires-Dist: pytest-flask<2.0,>=1.3.0; extra == "test"
|
|
105
|
-
Requires-Dist: pytest-mock<4.0,>=3.14.0; extra == "test"
|
|
106
|
-
Requires-Dist: pytest-sugar<2.0,>=1.0.0; extra == "test"
|
|
107
|
-
Requires-Dist: requests-mock<2.0,>=1.12.1; extra == "test"
|
|
108
|
-
Provides-Extra: doc
|
|
109
|
-
Requires-Dist: mkdocs<2.0,>=1.6.1; extra == "doc"
|
|
110
|
-
Provides-Extra: report
|
|
111
|
-
Requires-Dist: coverage[toml]<8.0,>=7.7.0; extra == "report"
|
|
112
|
-
Requires-Dist: flake8<8.0,>=7.1.2; extra == "report"
|
|
113
|
-
Requires-Dist: pytest-cov<8.0,>=7.0.0; extra == "report"
|
|
114
|
-
Dynamic: license-file
|
|
115
|
-
|
|
116
|
-
<p align="center"><img src="https://i.imgur.com/rlRox1c.png"></p>
|
|
117
|
-
|
|
118
|
-
udata
|
|
119
|
-
=====
|
|
120
|
-
|
|
121
|
-
Customizable and skinnable social platform dedicated to (open) data.
|
|
122
|
-
|
|
123
|
-
The [full documentation][readthedocs-url] is hosted on Read the Docs.
|
|
124
|
-
|
|
125
|
-
udata is maintained by [data.gouv.fr](https://data.gouv.fr/), the
|
|
126
|
-
French public agency in charge of open data. data.gouv.fr is responsible
|
|
127
|
-
for publishing udata's roadmap and for building consensus around it.
|
|
128
|
-
|
|
129
|
-
It is collectively taken care of by members of the
|
|
130
|
-
[OpenDataTeam](https://github.com/opendatateam).
|
|
131
|
-
|
|
132
|
-
[readthedocs-url]: https://udata.readthedocs.io/en/stable/
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|