diff --git a/mpcontribs-api/gunicorn.conf.py b/mpcontribs-api/gunicorn.conf.py index fc24a8c25..a28f66479 100644 --- a/mpcontribs-api/gunicorn.conf.py +++ b/mpcontribs-api/gunicorn.conf.py @@ -6,9 +6,11 @@ statsd_host = "{}:8125".format(os.getenv("DD_AGENT_HOST")) accesslog = "-" errorlog = "-" -access_log_format = '{}/{}: %(h)s %(t)s %(m)s %(U)s?%(q)s %(H)s %(s)s %(b)s "%(f)s" "%(a)s" %(D)s %(p)s %({{x-consumer-id}}i)s'.format( - os.getenv("SUPERVISOR_GROUP_NAME"), os.getenv("SUPERVISOR_PROCESS_NAME") -) +access_log_format = ( +'{}/{}: %(h)s %(t)s %(m)s %(U)s?%(q)s %(H)s %(s)s %(b)s "%(f)s" "%(a)s" %(D)s %(p)s %({{x-consumer-id}}i)s' + .format(os.getenv("SUPERVISOR_GROUP_NAME"), + os.getenv("SUPERVISOR_PROCESS_NAME")) + ) max_requests = os.getenv("MAX_REQUESTS") max_requests_jitter = os.getenv("MAX_REQUESTS_JITTER") proc_name = os.getenv("SUPERVISOR_PROCESS_NAME") diff --git a/mpcontribs-api/mpcontribs/api/attachments/document.py b/mpcontribs-api/mpcontribs/api/attachments/document.py index c5584a11a..0b7b72b3a 100644 --- a/mpcontribs-api/mpcontribs/api/attachments/document.py +++ b/mpcontribs-api/mpcontribs/api/attachments/document.py @@ -44,7 +44,8 @@ def post_init(cls, sender, document, **kwargs): if "content" in requested_fields: if not document.md5: # document.reload("md5") # TODO AttributeError: _changed_fields - raise ValueError("Please also request md5 field to retrieve attachment content!") + raise ValueError( + "Please also request md5 field to retrieve attachment content!") retr = s3_client.get_object(Bucket=BUCKET, Key=document.md5) document.content = b64encode(retr["Body"].read()).decode("utf-8") diff --git a/mpcontribs-api/mpcontribs/api/contributions/document.py b/mpcontribs-api/mpcontribs/api/contributions/document.py index 55c9e204b..d46206196 100644 --- a/mpcontribs-api/mpcontribs/api/contributions/document.py +++ b/mpcontribs-api/mpcontribs/api/contributions/document.py @@ -74,7 +74,7 @@ def format_cell(cell): q = truncate_digits(q) try: return str(q.nominal_value) if isnan(q.std_dev) else str(q) - except Exception: + except UnicodeEncodeError: return cell diff --git a/mpcontribs-api/mpcontribs/api/core.py b/mpcontribs-api/mpcontribs/api/core.py index 6524d099f..7d78a3e19 100644 --- a/mpcontribs-api/mpcontribs/api/core.py +++ b/mpcontribs-api/mpcontribs/api/core.py @@ -120,140 +120,26 @@ def get_specs(klass, method, collection): "description": description, } - field_pagination_params = [] - for field, limits in klass.resource.fields_to_paginate.items(): - field_pagination_params.append( - { - "name": f"{field}_page", - "in": "query", - "default": 1, - "type": "integer", - "description": f"page to retrieve for {field} field", - } - ) - field_pagination_params.append( - { - "name": f"{field}_per_page", - "in": "query", - "default": limits[0], - "maximum": limits[1], - "type": "integer", - "description": f"number of items to retrieve per page for {field} field", - } - ) + field_pagination_params = _populate_field_pagination_params(klass) - filter_params = [] - if hasattr(klass.resource, "filters"): - for k, v in klass.resource.filters.items(): - filter_params += get_filter_params(k, v) + filter_params = _populate_filter_params(klass) - order_params = [] - if klass.resource.allowed_ordering: - allowed_ordering = [ - o.pattern if isinstance(o, Pattern) else o - for o in klass.resource.allowed_ordering - ] - order_params = [ - { - "name": "_sort", - "in": "query", - "type": "string", - "description": f"sort {collection} via {allowed_ordering}. Prepend +/- for asc/desc.", - } - ] + order_params = _populate_order_params(klass, collection) spec = None if method_name == "Fetch": - params = [ - { - "name": "pk", - "in": "path", - "type": "string", - "required": True, - "description": f"{collection[:-1]} (primary key)", - } - ] - if fields_param is not None: - params.append(fields_param) - params += field_pagination_params - spec = { - "summary": f"Retrieve a {collection[:-1]}.", - "operationId": f"get{doc_name}By{id_field}", - "parameters": params, - "responses": { - 200: { - "description": f"single {collection} entry", - "schema": {"$ref": f"#/definitions/{klass.schema_name}"}, - }, - "default": default_response, - }, - } + _handle_fetch_method(klass, collection, default_response + , id_field, doc_name, fields_param, field_pagination_params) elif method_name == "BulkFetch": - params = [fields_param] if fields_param is not None else [] - params += field_pagination_params - params += order_params - params += filter_params - schema_props = { - "data": { - "type": "array", - "items": {"$ref": f"#/definitions/{klass.schema_name}"}, - } - } - if klass.resource.paginate: - schema_props["has_more"] = {"type": "boolean"} - schema_props["total_count"] = {"type": "integer"} - schema_props["total_pages"] = {"type": "integer"} - params += get_limit_params(klass.resource, method_name) - spec = { - "summary": f"Filter and retrieve {collection}.", - "operationId": f"query{doc_name}s", - "parameters": params, - "responses": { - 200: { - "description": f"list of {collection}", - "schema": {"type": "object", "properties": schema_props}, - }, - "default": default_response, - }, - } + _handle_bulk_fetch_method(klass, collection, method_name, default_response + , doc_name, fields_param, field_pagination_params + , filter_params, order_params) elif method_name == "Download": - params = [ - { - "name": "short_mime", - "in": "path", - "type": "string", - "required": True, - "description": "MIME Download Type: gz", - "default": "gz", - }, - { - "name": "format", - "in": "query", - "type": "string", - "required": True, - "description": f"download {collection} in different formats: {klass.resource.download_formats}", - }, - ] - params += [fields_param] if fields_param is not None else [] - params += order_params - params += filter_params - if klass.resource.paginate: - params += get_limit_params(klass.resource, method_name) - spec = { - "summary": f"Filter and download {collection}.", - "operationId": f"download{doc_name}s", - "parameters": params, - "produces": ["application/gzip"], - "responses": { - 200: { - "description": f"{collection} download", - "schema": {"type": "file"}, - }, - "default": default_response, - }, - } + _handle_downlaod_method(klass, collection, method_name + , default_response, doc_name, fields_param + , filter_params, order_params) elif method_name == "Create": spec = { @@ -337,8 +223,56 @@ def get_specs(klass, method, collection): }, } elif method_name == "BulkUpdate": - params = filter_params - params.append( + _handle_bulk_update_method(klass, collection, method_name, default_response, doc_name, filter_params) + + elif method_name == "BulkDelete": + _handle_bulk_delete_method(klass, collection, method_name, default_response, doc_name, filter_params) + + elif method_name == "Delete": + spec = { + "summary": f"Delete a {collection[:-1]}.", + "operationId": f"delete{doc_name}By{id_field}", + "parameters": [ + { + "name": "pk", + "in": "path", + "type": "string", + "required": True, + "description": f"The {collection[:-1]} (primary key) to delete", + } + ], + "responses": { + 200: {"description": f"{collection[:-1]} deleted"}, + "default": default_response, + }, + } + + return spec + +def _handle_bulk_delete_method(klass, collection, method_name, default_response, doc_name, filter_params): + params = filter_params + schema_props = {"count": {"type": "integer"}} + if klass.resource.paginate: + schema_props["has_more"] = {"type": "boolean"} + schema_props["total_count"] = {"type": "integer"} + schema_props["total_pages"] = {"type": "integer"} + params += get_limit_params(klass.resource, method_name) + spec = { + "summary": f"Filter and delete {collection}.", + "operationId": f"delete{doc_name}s", + "parameters": params, + "responses": { + 200: { + "description": f"Number of {collection} deleted", + "schema": {"type": "object", "properties": schema_props}, + }, + "default": default_response, + }, + } + +def _handle_bulk_update_method(klass, collection, method_name, default_response, doc_name, filter_params): + params = filter_params + params.append( { "name": f"{collection}", "in": "body", @@ -346,13 +280,13 @@ def get_specs(klass, method, collection): "schema": {"type": "object"}, } ) - schema_props = {"count": {"type": "integer"}} - if klass.resource.paginate: - schema_props["has_more"] = {"type": "boolean"} - schema_props["total_count"] = {"type": "integer"} - schema_props["total_pages"] = {"type": "integer"} - params += get_limit_params(klass.resource, method_name) - spec = { + schema_props = {"count": {"type": "integer"}} + if klass.resource.paginate: + schema_props["has_more"] = {"type": "boolean"} + schema_props["total_count"] = {"type": "integer"} + schema_props["total_pages"] = {"type": "integer"} + params += get_limit_params(klass.resource, method_name) + spec = { "summary": f"Filter and update {collection}.", "operationId": f"update{doc_name}s", "parameters": params, @@ -365,47 +299,147 @@ def get_specs(klass, method, collection): }, } - elif method_name == "BulkDelete": - params = filter_params - schema_props = {"count": {"type": "integer"}} - if klass.resource.paginate: - schema_props["has_more"] = {"type": "boolean"} - schema_props["total_count"] = {"type": "integer"} - schema_props["total_pages"] = {"type": "integer"} - params += get_limit_params(klass.resource, method_name) - spec = { - "summary": f"Filter and delete {collection}.", - "operationId": f"delete{doc_name}s", +def _handle_downlaod_method(klass, collection, method_name, default_response, doc_name, fields_param, filter_params, order_params): + params = [ + { + "name": "short_mime", + "in": "path", + "type": "string", + "required": True, + "description": "MIME Download Type: gz", + "default": "gz", + }, + { + "name": "format", + "in": "query", + "type": "string", + "required": True, + "description": f"download {collection} in different formats: {klass.resource.download_formats}", + }, + ] + params += [fields_param] if fields_param is not None else [] + params += order_params + params += filter_params + if klass.resource.paginate: + params += get_limit_params(klass.resource, method_name) + spec = { + "summary": f"Filter and download {collection}.", + "operationId": f"download{doc_name}s", "parameters": params, + "produces": ["application/gzip"], "responses": { 200: { - "description": f"Number of {collection} deleted", + "description": f"{collection} download", + "schema": {"type": "file"}, + }, + "default": default_response, + }, + } + +def _handle_bulk_fetch_method(klass, collection, method_name, default_response, doc_name, fields_param, field_pagination_params, filter_params, order_params): + params = [fields_param] if fields_param is not None else [] + params += field_pagination_params + params += order_params + params += filter_params + schema_props = { + "data": { + "type": "array", + "items": {"$ref": f"#/definitions/{klass.schema_name}"}, + } + } + if klass.resource.paginate: + schema_props["has_more"] = {"type": "boolean"} + schema_props["total_count"] = {"type": "integer"} + schema_props["total_pages"] = {"type": "integer"} + params += get_limit_params(klass.resource, method_name) + spec = { + "summary": f"Filter and retrieve {collection}.", + "operationId": f"query{doc_name}s", + "parameters": params, + "responses": { + 200: { + "description": f"list of {collection}", "schema": {"type": "object", "properties": schema_props}, }, "default": default_response, }, } - elif method_name == "Delete": - spec = { - "summary": f"Delete a {collection[:-1]}.", - "operationId": f"delete{doc_name}By{id_field}", - "parameters": [ - { - "name": "pk", - "in": "path", - "type": "string", - "required": True, - "description": f"The {collection[:-1]} (primary key) to delete", - } - ], +def _handle_fetch_method(klass, collection, default_response, id_field, doc_name, fields_param, field_pagination_params): + params = [ + { + "name": "pk", + "in": "path", + "type": "string", + "required": True, + "description": f"{collection[:-1]} (primary key)", + } + ] + if fields_param is not None: + params.append(fields_param) + params += field_pagination_params + spec = { + "summary": f"Retrieve a {collection[:-1]}.", + "operationId": f"get{doc_name}By{id_field}", + "parameters": params, "responses": { - 200: {"description": f"{collection[:-1]} deleted"}, + 200: { + "description": f"single {collection} entry", + "schema": {"$ref": f"#/definitions/{klass.schema_name}"}, + }, "default": default_response, }, } - return spec +def _populate_order_params(klass, collection): + order_params = [] + if klass.resource.allowed_ordering: + allowed_ordering = [ + o.pattern if isinstance(o, Pattern) else o + for o in klass.resource.allowed_ordering + ] + order_params = [ + { + "name": "_sort", + "in": "query", + "type": "string", + "description": f"sort {collection} via {allowed_ordering}. Prepend +/- for asc/desc.", + } + ] + + return order_params + +def _populate_filter_params(klass): + filter_params = [] + if hasattr(klass.resource, "filters"): + for k, v in klass.resource.filters.items(): + filter_params += get_filter_params(k, v) + return filter_params + +def _populate_field_pagination_params(klass): + field_pagination_params = [] + for field, limits in klass.resource.fields_to_paginate.items(): + field_pagination_params.append( + { + "name": f"{field}_page", + "in": "query", + "default": 1, + "type": "integer", + "description": f"page to retrieve for {field} field", + } + ) + field_pagination_params.append( + { + "name": f"{field}_per_page", + "in": "query", + "default": limits[0], + "maximum": limits[1], + "type": "integer", + "description": f"number of items to retrieve per page for {field} field", + } + ) + + return field_pagination_params class SwaggerView(OriginalSwaggerView, ResourceView): @@ -540,17 +574,11 @@ def has_read_permission(self, request, qs): approved_public_filter = Q(is_public=True, is_approved=True) if request.path.startswith("/projects/"): - # external or internal requests can both read full project info - # anonymous requests can only read public approved projects - if is_anonymous: - return qs.filter(approved_public_filter) - - # authenticated requests can read approved public or accessible non-public projects - qfilter = approved_public_filter | Q(owner=username) - if groups: - qfilter |= Q(name__in=list(groups)) - - return qs.filter(qfilter) + return self._handle_projects(is_anonymous + , qs + , approved_public_filter + , username + , groups) else: # contributions are set private/public independent from projects # anonymous requests: @@ -562,32 +590,11 @@ def has_read_permission(self, request, qs): component = request.path.split("/")[1] if component == "contributions": - q = qs._query - if is_anonymous and is_external: - qs = qs.exclude("data") - - if q and "project" in q and isinstance(q["project"], str): - projects = self.get_projects() - try: - project = projects.get(name=q["project"]) - except DoesNotExist: - return qs.none() - - if project.owner == username or project.name in groups: - return qs - elif project.is_public and project.is_approved: - return qs.filter(is_public=True) - else: - return qs.none() - else: - names = None - if q and "project" in q and "$in" in q["project"]: - names = q.pop("project").pop("$in") - - qfilter = self.get_projects_filter( - username, groups, filter_names=names - ) - return qs.filter(qfilter) + return self._handle_contributions(qs + , is_anonymous + , is_external + , username + , groups) else: # get component Object IDs for queryset pk = request.view_args.get("pk") @@ -596,10 +603,7 @@ def has_read_permission(self, request, qs): resource = get_resource(component) qfilter = lambda qs: qs.clone() - if pk: - ids = [resource.get_object(pk, qfilter=qfilter).id] - else: - ids = [o.id for o in resource.get_objects(qfilter=qfilter)[0]] + ids = self._set_ids(qfilter, pk, resource) if not ids: return qs.none() @@ -630,6 +634,55 @@ def has_read_permission(self, request, qs): return qs + def _set_ids(self, qfilter, pk, resource): + if pk: + ids = [resource.get_object(pk, qfilter=qfilter).id] + else: + ids = [o.id for o in resource.get_objects(qfilter=qfilter)[0]] + return ids + + + def _handle_projects(self, is_anonymous, qs, approved_public_filter, username, groups): + # external or internal requests can both read full project info + # anonymous requests can only read public approved projects + if is_anonymous: + return qs.filter(approved_public_filter) + + # authenticated requests can read approved public or accessible non-public projects + qfilter = approved_public_filter | Q(owner=username) + if groups: + qfilter |= Q(name__in=list(groups)) + + return qs.filter(qfilter) + + def _handle_contributions(self, qs, is_anonymous, is_external, username, groups): + q = qs._query + if is_anonymous and is_external: + qs = qs.exclude("data") + + if q and "project" in q and isinstance(q["project"], str): + projects = self.get_projects() + try: + project = projects.get(name=q["project"]) + except DoesNotExist: + return qs.none() + + if project.owner == username or project.name in groups: + return qs + elif project.is_public and project.is_approved: + return qs.filter(is_public=True) + else: + return qs.none() + else: + names = None + if q and "project" in q and "$in" in q["project"]: + names = q.pop("project").pop("$in") + + qfilter = self.get_projects_filter( + username, groups, filter_names=names + ) + return qs.filter(qfilter) + def has_add_permission(self, request, obj): return self.is_admin_or_project_user(request, obj) diff --git a/mpcontribs-api/mpcontribs/api/notebooks/views.py b/mpcontribs-api/mpcontribs/api/notebooks/views.py index e3bf88af8..19dfdc016 100644 --- a/mpcontribs-api/mpcontribs/api/notebooks/views.py +++ b/mpcontribs-api/mpcontribs/api/notebooks/views.py @@ -141,14 +141,7 @@ def make(projects=None, cids=None, force=False): start = time.perf_counter() remaining_time = rq.default_timeout - 5 mask = ["id", "needs_build", "notebook"] - query = Q() - - if projects: - query &= Q(project__in=projects) - if cids: - query &= Q(id__in=cids) - if not force: - query &= Q(needs_build=True) | Q(needs_build__exists=False) + query = _build_query(projects, cids, force) job = get_current_job() ret = {"input": {"projects": projects, "cids": cids, "force": force}} @@ -181,14 +174,7 @@ def make(projects=None, cids=None, force=False): not getattr(document, "needs_build", True): continue - if document.notebook: - try: - nb = Notebooks.objects.get(id=document.notebook.id) - nb.delete() - document.update(unset__notebook="") - logger.debug(f"Notebook {document.notebook.id} deleted.") - except DoesNotExist: - pass + _handle_document_notebook(document) cid = str(document.id) logger.debug(f"prep notebook for {cid} ...") @@ -212,35 +198,11 @@ def make(projects=None, cids=None, force=False): ])), ] - if document.tables: - cells.append(nbf.new_markdown_cell("## Tables")) - for table in document.tables: - cells.append( - nbf.new_code_cell("\n".join([ - f't = client.get_table("{table.id}")', - 't.display()' - ])) - ) + _handle_document_tables(document, cells) - if document.structures: - cells.append(nbf.new_markdown_cell("## Structures")) - for structure in document.structures: - cells.append( - nbf.new_code_cell("\n".join([ - f's = client.get_structure("{structure.id}")', - 's.display()' - ])) - ) + _handle_document_structures(document, cells) - if document.attachments: - cells.append(nbf.new_markdown_cell("## Attachments")) - for attachment in document.attachments: - cells.append( - nbf.new_code_cell("\n".join([ - f'a = client.get_attachment("{attachment.id}")', - 'a.info()' - ])) - ) + _handle_document_attachmentss(document, cells) try: outputs = execute_cells(cid, cells) @@ -265,23 +227,10 @@ def make(projects=None, cids=None, force=False): for idx, output in outputs.items(): cells[idx]["outputs"] = output - doc = nbf.new_notebook() - doc["cells"] = [ - nbf.new_code_cell("from mpcontribs.client import Client"), - nbf.new_code_cell(f'client = Client()'), - ] - doc["cells"] += cells[1:] # skip localhost Client - - try: - nb = Notebooks(**doc).save() - document.update(notebook=nb, needs_build=False) - except Exception as e: - if job: - restart_kernels() + doc = _set_doc(cells) - ret["result"] = { - "status": "ERROR", "cid": cid, "count": count, "total": total, "exc": str(e) - } + ret = _update_doc_notebook(doc, document, job, cid, count, total) + if ret: return ret count += 1 @@ -291,3 +240,82 @@ def make(projects=None, cids=None, force=False): ret["result"] = {"status": "COMPLETED", "count": count, "total": total} return ret + +def _update_doc_notebook(doc, document, job, cid, count, total): + ret = None + try: + nb = Notebooks(**doc).save() + document.update(notebook=nb, needs_build=False) + except Exception as e: + if job: + restart_kernels() + + ret["result"] = { + "status": "ERROR", "cid": cid, "count": count, "total": total, "exc": str(e) + } + return ret + + +def _set_doc(cells): + doc = nbf.new_notebook() + doc["cells"] = [ + nbf.new_code_cell("from mpcontribs.client import Client"), + nbf.new_code_cell(f'client = Client()'), + ] + doc["cells"] += cells[1:] # skip localhost Client + + return doc + +def _handle_document_notebook(document): + if document.notebook: + try: + nb = Notebooks.objects.get(id=document.notebook.id) + nb.delete() + document.update(unset__notebook="") + logger.debug(f"Notebook {document.notebook.id} deleted.") + except DoesNotExist: + pass + +def _handle_document_attachmentss(document, cells): + if document.attachments: + cells.append(nbf.new_markdown_cell("## Attachments")) + for attachment in document.attachments: + cells.append( + nbf.new_code_cell("\n".join([ + f'a = client.get_attachment("{attachment.id}")', + 'a.info()' + ])) + ) + +def _handle_document_structures(document, cells): + if document.structures: + cells.append(nbf.new_markdown_cell("## Structures")) + for structure in document.structures: + cells.append( + nbf.new_code_cell("\n".join([ + f's = client.get_structure("{structure.id}")', + 's.display()' + ])) + ) + +def _handle_document_tables(document, cells): + if document.tables: + cells.append(nbf.new_markdown_cell("## Tables")) + for table in document.tables: + cells.append( + nbf.new_code_cell("\n".join([ + f't = client.get_table("{table.id}")', + 't.display()' + ])) + ) + +def _build_query(projects, cids, force): + query = Q() + + if projects: + query &= Q(project__in=projects) + if cids: + query &= Q(id__in=cids) + if not force: + query &= Q(needs_build=True) | Q(needs_build__exists=False) + return query diff --git a/mpcontribs-api/mpcontribs/api/projects/document.py b/mpcontribs-api/mpcontribs/api/projects/document.py index 868574723..4328f0c90 100644 --- a/mpcontribs-api/mpcontribs/api/projects/document.py +++ b/mpcontribs-api/mpcontribs/api/projects/document.py @@ -263,11 +263,7 @@ def post_save(cls, sender, document, **kwargs): remap(merged, visit=visit, enter=enter), reducer="dot" ) - for k, v in flat.items(): - if k.startswith("data."): - columns[k] = Column(path=k) - if v is not None: - columns[k].unit = v + cls.update_columns_by_flat(columns, flat) # start pipeline for stats: match project pipeline = [{"$match": {"project": document.id}}] @@ -366,6 +362,14 @@ def post_save(cls, sender, document, **kwargs): stats = Stats(**stats_kwargs) document.update(stats=stats, columns=columns.values()) + @classmethod + def update_columns_by_flat(cls, columns, flat): + for k, v in flat.items(): + if k.startswith("data."): + columns[k] = Column(path=k) + if v is not None: + columns[k].unit = v + @classmethod def post_delete(cls, sender, document, **kwargs): admin_email = current_app.config["MAIL_DEFAULT_SENDER"] diff --git a/mpcontribs-api/requirements/deployment.txt b/mpcontribs-api/requirements/deployment.txt index dd668c8ed..1f3c1652a 100644 --- a/mpcontribs-api/requirements/deployment.txt +++ b/mpcontribs-api/requirements/deployment.txt @@ -34,9 +34,9 @@ blinker==1.9.0 # via mpcontribs-api (MPContribs/mpcontribs-api/setup.py) boltons==24.1.0 # via mpcontribs-api (MPContribs/mpcontribs-api/setup.py) -boto3==1.35.59 +boto3==1.35.63 # via flask-mongorest-mpcontribs -botocore==1.35.59 +botocore==1.35.63 # via # boto3 # s3transfer @@ -72,7 +72,7 @@ cycler==0.12.1 # via matplotlib dateparser==1.2.0 # via mpcontribs-api (MPContribs/mpcontribs-api/setup.py) -ddtrace==2.16.1 +ddtrace==2.16.2 # via mpcontribs-api (MPContribs/mpcontribs-api/setup.py) debugpy==1.8.8 # via ipykernel @@ -80,7 +80,7 @@ decorator==5.1.1 # via ipython defusedxml==0.7.1 # via nbconvert -deprecated==1.2.14 +deprecated==1.2.15 # via opentelemetry-api dnspython==2.7.0 # via @@ -122,7 +122,7 @@ flask-sse==1.0.0 # via flask-mongorest-mpcontribs flatten-dict==0.4.2 # via flask-mongorest-mpcontribs -fonttools==4.54.1 +fonttools==4.55.0 # via matplotlib fqdn==1.5.1 # via jsonschema @@ -343,7 +343,7 @@ pygments==2.18.0 # via # ipython # nbconvert -pymatgen==2024.10.29 +pymatgen==2024.11.13 # via mpcontribs-api (MPContribs/mpcontribs-api/setup.py) pymongo==4.10.1 # via @@ -437,7 +437,7 @@ send2trash==1.8.3 # via # jupyter-server # notebook -setproctitle==1.3.3 +setproctitle==1.3.4 # via mpcontribs-api (MPContribs/mpcontribs-api/setup.py) six==1.16.0 # via diff --git a/mpcontribs-api/requirements/ubuntu-latest_py3.10.txt b/mpcontribs-api/requirements/ubuntu-latest_py3.10.txt index d51a63a78..15bc65687 100644 --- a/mpcontribs-api/requirements/ubuntu-latest_py3.10.txt +++ b/mpcontribs-api/requirements/ubuntu-latest_py3.10.txt @@ -36,9 +36,9 @@ blinker==1.9.0 # via mpcontribs-api (setup.py) boltons==24.1.0 # via mpcontribs-api (setup.py) -boto3==1.35.57 +boto3==1.35.63 # via flask-mongorest-mpcontribs -botocore==1.35.57 +botocore==1.35.63 # via # boto3 # s3transfer @@ -60,7 +60,7 @@ click==8.1.7 # rq comm==0.2.2 # via ipykernel -contourpy==1.3.0 +contourpy==1.3.1 # via matplotlib cramjam==2.9.0 # via python-snappy @@ -74,7 +74,7 @@ cycler==0.12.1 # via matplotlib dateparser==1.2.0 # via mpcontribs-api (setup.py) -ddtrace==2.16.0 +ddtrace==2.16.2 # via mpcontribs-api (setup.py) debugpy==1.8.8 # via ipykernel @@ -82,7 +82,7 @@ decorator==5.1.1 # via ipython defusedxml==0.7.1 # via nbconvert -deprecated==1.2.14 +deprecated==1.2.15 # via opentelemetry-api dnspython==2.7.0 # via @@ -128,13 +128,13 @@ flask-sse==1.0.0 # via flask-mongorest-mpcontribs flatten-dict==0.4.2 # via flask-mongorest-mpcontribs -fonttools==4.54.1 +fonttools==4.55.0 # via matplotlib fqdn==1.5.1 # via jsonschema freezegun==1.5.1 # via rq-scheduler -gevent==24.10.3 +gevent==24.11.1 # via gunicorn greenlet==3.1.1 # via gevent @@ -344,7 +344,7 @@ pygments==2.18.0 # via # ipython # nbconvert -pymatgen==2024.10.29 +pymatgen==2024.11.13 # via mpcontribs-api (setup.py) pymongo==4.10.1 # via @@ -436,7 +436,7 @@ send2trash==1.8.3 # via # jupyter-server # notebook -setproctitle==1.3.3 +setproctitle==1.3.4 # via mpcontribs-api (setup.py) six==1.16.0 # via diff --git a/mpcontribs-api/requirements/ubuntu-latest_py3.10_extras.txt b/mpcontribs-api/requirements/ubuntu-latest_py3.10_extras.txt index 2f0a412ee..301849b5b 100644 --- a/mpcontribs-api/requirements/ubuntu-latest_py3.10_extras.txt +++ b/mpcontribs-api/requirements/ubuntu-latest_py3.10_extras.txt @@ -36,9 +36,9 @@ blinker==1.9.0 # via mpcontribs-api (setup.py) boltons==24.1.0 # via mpcontribs-api (setup.py) -boto3==1.35.57 +boto3==1.35.63 # via flask-mongorest-mpcontribs -botocore==1.35.57 +botocore==1.35.63 # via # boto3 # s3transfer @@ -60,7 +60,7 @@ click==8.1.7 # rq comm==0.2.2 # via ipykernel -contourpy==1.3.0 +contourpy==1.3.1 # via matplotlib cramjam==2.9.0 # via python-snappy @@ -74,7 +74,7 @@ cycler==0.12.1 # via matplotlib dateparser==1.2.0 # via mpcontribs-api (setup.py) -ddtrace==2.16.0 +ddtrace==2.16.2 # via mpcontribs-api (setup.py) debugpy==1.8.8 # via ipykernel @@ -82,7 +82,7 @@ decorator==5.1.1 # via ipython defusedxml==0.7.1 # via nbconvert -deprecated==1.2.14 +deprecated==1.2.15 # via opentelemetry-api dnspython==2.7.0 # via @@ -131,13 +131,13 @@ flask-sse==1.0.0 # via flask-mongorest-mpcontribs flatten-dict==0.4.2 # via flask-mongorest-mpcontribs -fonttools==4.54.1 +fonttools==4.55.0 # via matplotlib fqdn==1.5.1 # via jsonschema freezegun==1.5.1 # via rq-scheduler -gevent==24.10.3 +gevent==24.11.1 # via gunicorn greenlet==3.1.1 # via gevent @@ -358,7 +358,7 @@ pygments==2.18.0 # via # ipython # nbconvert -pymatgen==2024.10.29 +pymatgen==2024.11.13 # via mpcontribs-api (setup.py) pymongo==4.10.1 # via @@ -452,7 +452,7 @@ send2trash==1.8.3 # via # jupyter-server # notebook -setproctitle==1.3.3 +setproctitle==1.3.4 # via mpcontribs-api (setup.py) six==1.16.0 # via @@ -486,7 +486,7 @@ terminado==0.18.1 # notebook tinycss2==1.4.0 # via nbconvert -tomli==2.0.2 +tomli==2.1.0 # via pytest tornado==6.4.1 # via diff --git a/mpcontribs-api/requirements/ubuntu-latest_py3.11.txt b/mpcontribs-api/requirements/ubuntu-latest_py3.11.txt index 0120c1786..dd70eab2f 100644 --- a/mpcontribs-api/requirements/ubuntu-latest_py3.11.txt +++ b/mpcontribs-api/requirements/ubuntu-latest_py3.11.txt @@ -34,9 +34,9 @@ blinker==1.9.0 # via mpcontribs-api (setup.py) boltons==24.1.0 # via mpcontribs-api (setup.py) -boto3==1.35.57 +boto3==1.35.63 # via flask-mongorest-mpcontribs -botocore==1.35.57 +botocore==1.35.63 # via # boto3 # s3transfer @@ -58,7 +58,7 @@ click==8.1.7 # rq comm==0.2.2 # via ipykernel -contourpy==1.3.0 +contourpy==1.3.1 # via matplotlib cramjam==2.9.0 # via python-snappy @@ -72,7 +72,7 @@ cycler==0.12.1 # via matplotlib dateparser==1.2.0 # via mpcontribs-api (setup.py) -ddtrace==2.16.0 +ddtrace==2.16.2 # via mpcontribs-api (setup.py) debugpy==1.8.8 # via ipykernel @@ -80,7 +80,7 @@ decorator==5.1.1 # via ipython defusedxml==0.7.1 # via nbconvert -deprecated==1.2.14 +deprecated==1.2.15 # via opentelemetry-api dnspython==2.7.0 # via @@ -122,13 +122,13 @@ flask-sse==1.0.0 # via flask-mongorest-mpcontribs flatten-dict==0.4.2 # via flask-mongorest-mpcontribs -fonttools==4.54.1 +fonttools==4.55.0 # via matplotlib fqdn==1.5.1 # via jsonschema freezegun==1.5.1 # via rq-scheduler -gevent==24.10.3 +gevent==24.11.1 # via gunicorn greenlet==3.1.1 # via gevent @@ -338,7 +338,7 @@ pygments==2.18.0 # via # ipython # nbconvert -pymatgen==2024.10.29 +pymatgen==2024.11.13 # via mpcontribs-api (setup.py) pymongo==4.10.1 # via @@ -430,7 +430,7 @@ send2trash==1.8.3 # via # jupyter-server # notebook -setproctitle==1.3.3 +setproctitle==1.3.4 # via mpcontribs-api (setup.py) six==1.16.0 # via diff --git a/mpcontribs-api/requirements/ubuntu-latest_py3.11_extras.txt b/mpcontribs-api/requirements/ubuntu-latest_py3.11_extras.txt index e962533d6..cd7b350e5 100644 --- a/mpcontribs-api/requirements/ubuntu-latest_py3.11_extras.txt +++ b/mpcontribs-api/requirements/ubuntu-latest_py3.11_extras.txt @@ -34,9 +34,9 @@ blinker==1.9.0 # via mpcontribs-api (setup.py) boltons==24.1.0 # via mpcontribs-api (setup.py) -boto3==1.35.57 +boto3==1.35.63 # via flask-mongorest-mpcontribs -botocore==1.35.57 +botocore==1.35.63 # via # boto3 # s3transfer @@ -58,7 +58,7 @@ click==8.1.7 # rq comm==0.2.2 # via ipykernel -contourpy==1.3.0 +contourpy==1.3.1 # via matplotlib cramjam==2.9.0 # via python-snappy @@ -72,7 +72,7 @@ cycler==0.12.1 # via matplotlib dateparser==1.2.0 # via mpcontribs-api (setup.py) -ddtrace==2.16.0 +ddtrace==2.16.2 # via mpcontribs-api (setup.py) debugpy==1.8.8 # via ipykernel @@ -80,7 +80,7 @@ decorator==5.1.1 # via ipython defusedxml==0.7.1 # via nbconvert -deprecated==1.2.14 +deprecated==1.2.15 # via opentelemetry-api dnspython==2.7.0 # via @@ -124,13 +124,13 @@ flask-sse==1.0.0 # via flask-mongorest-mpcontribs flatten-dict==0.4.2 # via flask-mongorest-mpcontribs -fonttools==4.54.1 +fonttools==4.55.0 # via matplotlib fqdn==1.5.1 # via jsonschema freezegun==1.5.1 # via rq-scheduler -gevent==24.10.3 +gevent==24.11.1 # via gunicorn greenlet==3.1.1 # via gevent @@ -351,7 +351,7 @@ pygments==2.18.0 # via # ipython # nbconvert -pymatgen==2024.10.29 +pymatgen==2024.11.13 # via mpcontribs-api (setup.py) pymongo==4.10.1 # via @@ -445,7 +445,7 @@ send2trash==1.8.3 # via # jupyter-server # notebook -setproctitle==1.3.3 +setproctitle==1.3.4 # via mpcontribs-api (setup.py) six==1.16.0 # via diff --git a/mpcontribs-client/requirements/deployment.txt b/mpcontribs-client/requirements/deployment.txt index f8ec44878..067fe9e8c 100644 --- a/mpcontribs-client/requirements/deployment.txt +++ b/mpcontribs-client/requirements/deployment.txt @@ -40,7 +40,7 @@ filetype==1.2.0 # via mpcontribs-client (MPContribs/mpcontribs-client/setup.py) flatten-dict==0.4.2 # via mpcontribs-client (MPContribs/mpcontribs-client/setup.py) -fonttools==4.54.1 +fonttools==4.55.0 # via matplotlib fqdn==1.5.1 # via jsonschema @@ -138,7 +138,7 @@ pygments==2.18.0 # via ipython pyisemail==2.0.1 # via mpcontribs-client (MPContribs/mpcontribs-client/setup.py) -pymatgen==2024.10.29 +pymatgen==2024.11.13 # via mpcontribs-client (MPContribs/mpcontribs-client/setup.py) pymongo==4.10.1 # via mpcontribs-client (MPContribs/mpcontribs-client/setup.py) @@ -171,7 +171,7 @@ requests==2.32.3 # bravado-core # pymatgen # requests-futures -requests-futures==1.0.1 +requests-futures==1.0.2 # via mpcontribs-client (MPContribs/mpcontribs-client/setup.py) rfc3339-validator==0.1.4 # via jsonschema diff --git a/mpcontribs-client/requirements/ubuntu-latest_py3.10.txt b/mpcontribs-client/requirements/ubuntu-latest_py3.10.txt index 16bc7bce4..2738e0dd3 100644 --- a/mpcontribs-client/requirements/ubuntu-latest_py3.10.txt +++ b/mpcontribs-client/requirements/ubuntu-latest_py3.10.txt @@ -24,7 +24,7 @@ certifi==2024.8.30 # via requests charset-normalizer==3.4.0 # via requests -contourpy==1.3.0 +contourpy==1.3.1 # via matplotlib cycler==0.12.1 # via matplotlib @@ -42,7 +42,7 @@ filetype==1.2.0 # via mpcontribs-client (setup.py) flatten-dict==0.4.2 # via mpcontribs-client (setup.py) -fonttools==4.54.1 +fonttools==4.55.0 # via matplotlib fqdn==1.5.1 # via jsonschema @@ -136,7 +136,7 @@ pygments==2.18.0 # via ipython pyisemail==2.0.1 # via mpcontribs-client (setup.py) -pymatgen==2024.10.29 +pymatgen==2024.11.13 # via mpcontribs-client (setup.py) pymongo==4.10.1 # via mpcontribs-client (setup.py) @@ -169,7 +169,7 @@ requests==2.32.3 # bravado-core # pymatgen # requests-futures -requests-futures==1.0.1 +requests-futures==1.0.2 # via mpcontribs-client (setup.py) rfc3339-validator==0.1.4 # via jsonschema diff --git a/mpcontribs-client/requirements/ubuntu-latest_py3.10_extras.txt b/mpcontribs-client/requirements/ubuntu-latest_py3.10_extras.txt index d7cc59d10..38198e17f 100644 --- a/mpcontribs-client/requirements/ubuntu-latest_py3.10_extras.txt +++ b/mpcontribs-client/requirements/ubuntu-latest_py3.10_extras.txt @@ -24,9 +24,9 @@ certifi==2024.8.30 # via requests charset-normalizer==3.4.0 # via requests -contourpy==1.3.0 +contourpy==1.3.1 # via matplotlib -coverage[toml]==7.6.4 +coverage[toml]==7.6.7 # via pytest-cov cycler==0.12.1 # via matplotlib @@ -50,7 +50,7 @@ flake8==7.1.1 # pytest-flake8 flatten-dict==0.4.2 # via mpcontribs-client (setup.py) -fonttools==4.54.1 +fonttools==4.55.0 # via matplotlib fqdn==1.5.1 # via jsonschema @@ -161,7 +161,7 @@ pygments==2.18.0 # via ipython pyisemail==2.0.1 # via mpcontribs-client (setup.py) -pymatgen==2024.10.29 +pymatgen==2024.11.13 # via mpcontribs-client (setup.py) pymongo==4.10.1 # via mpcontribs-client (setup.py) @@ -206,7 +206,7 @@ requests==2.32.3 # bravado-core # pymatgen # requests-futures -requests-futures==1.0.1 +requests-futures==1.0.2 # via mpcontribs-client (setup.py) rfc3339-validator==0.1.4 # via jsonschema @@ -253,7 +253,7 @@ tabulate==0.9.0 # via pymatgen tenacity==9.0.0 # via plotly -tomli==2.0.2 +tomli==2.1.0 # via # coverage # pytest diff --git a/mpcontribs-client/requirements/ubuntu-latest_py3.11.txt b/mpcontribs-client/requirements/ubuntu-latest_py3.11.txt index 40d8b4438..0f6856cb9 100644 --- a/mpcontribs-client/requirements/ubuntu-latest_py3.11.txt +++ b/mpcontribs-client/requirements/ubuntu-latest_py3.11.txt @@ -24,7 +24,7 @@ certifi==2024.8.30 # via requests charset-normalizer==3.4.0 # via requests -contourpy==1.3.0 +contourpy==1.3.1 # via matplotlib cycler==0.12.1 # via matplotlib @@ -40,7 +40,7 @@ filetype==1.2.0 # via mpcontribs-client (setup.py) flatten-dict==0.4.2 # via mpcontribs-client (setup.py) -fonttools==4.54.1 +fonttools==4.55.0 # via matplotlib fqdn==1.5.1 # via jsonschema @@ -134,7 +134,7 @@ pygments==2.18.0 # via ipython pyisemail==2.0.1 # via mpcontribs-client (setup.py) -pymatgen==2024.10.29 +pymatgen==2024.11.13 # via mpcontribs-client (setup.py) pymongo==4.10.1 # via mpcontribs-client (setup.py) @@ -167,7 +167,7 @@ requests==2.32.3 # bravado-core # pymatgen # requests-futures -requests-futures==1.0.1 +requests-futures==1.0.2 # via mpcontribs-client (setup.py) rfc3339-validator==0.1.4 # via jsonschema diff --git a/mpcontribs-client/requirements/ubuntu-latest_py3.11_extras.txt b/mpcontribs-client/requirements/ubuntu-latest_py3.11_extras.txt index 11e24b500..de9ca01b4 100644 --- a/mpcontribs-client/requirements/ubuntu-latest_py3.11_extras.txt +++ b/mpcontribs-client/requirements/ubuntu-latest_py3.11_extras.txt @@ -24,9 +24,9 @@ certifi==2024.8.30 # via requests charset-normalizer==3.4.0 # via requests -contourpy==1.3.0 +contourpy==1.3.1 # via matplotlib -coverage[toml]==7.6.4 +coverage[toml]==7.6.7 # via pytest-cov cycler==0.12.1 # via matplotlib @@ -46,7 +46,7 @@ flake8==7.1.1 # pytest-flake8 flatten-dict==0.4.2 # via mpcontribs-client (setup.py) -fonttools==4.54.1 +fonttools==4.55.0 # via matplotlib fqdn==1.5.1 # via jsonschema @@ -157,7 +157,7 @@ pygments==2.18.0 # via ipython pyisemail==2.0.1 # via mpcontribs-client (setup.py) -pymatgen==2024.10.29 +pymatgen==2024.11.13 # via mpcontribs-client (setup.py) pymongo==4.10.1 # via mpcontribs-client (setup.py) @@ -202,7 +202,7 @@ requests==2.32.3 # bravado-core # pymatgen # requests-futures -requests-futures==1.0.1 +requests-futures==1.0.2 # via mpcontribs-client (setup.py) rfc3339-validator==0.1.4 # via jsonschema diff --git a/mpcontribs-kernel-gateway/requirements/deployment.txt b/mpcontribs-kernel-gateway/requirements/deployment.txt index 02f03fac9..30d29d1b6 100644 --- a/mpcontribs-kernel-gateway/requirements/deployment.txt +++ b/mpcontribs-kernel-gateway/requirements/deployment.txt @@ -14,6 +14,8 @@ arrow==1.3.0 # via isoduration asttokens==2.4.1 # via stack-data +async-timeout==5.0.1 + # via kaleido attrs==24.2.0 # via # jsonschema @@ -40,6 +42,8 @@ cffi==1.17.1 # via argon2-cffi-bindings charset-normalizer==3.4.0 # via requests +choreographer==0.99.6 + # via kaleido comm==0.2.2 # via # ipykernel @@ -48,7 +52,7 @@ contourpy==1.3.1 # via matplotlib cycler==0.12.1 # via matplotlib -ddtrace==2.16.1 +ddtrace==2.16.2 # via -r MPContribs/mpcontribs-kernel-gateway/requirements.in debugpy==1.8.8 # via ipykernel @@ -56,7 +60,7 @@ decorator==5.1.1 # via ipython defusedxml==0.7.1 # via nbconvert -deprecated==1.2.14 +deprecated==1.2.15 # via opentelemetry-api dnspython==2.7.0 # via @@ -72,7 +76,7 @@ filetype==1.2.0 # via mpcontribs-client flatten-dict==0.4.2 # via mpcontribs-client -fonttools==4.54.1 +fonttools==4.55.0 # via matplotlib fqdn==1.5.1 # via jsonschema @@ -146,7 +150,7 @@ jupyterlab-pygments==0.3.0 # via nbconvert jupyterlab-widgets==3.0.13 # via ipywidgets -kaleido==0.2.1 +kaleido==0.4.1 # via -r MPContribs/mpcontribs-kernel-gateway/requirements.in kiwisolver==1.4.7 # via matplotlib @@ -262,7 +266,7 @@ pygments==2.18.0 # nbconvert pyisemail==2.0.1 # via mpcontribs-client -pymatgen==2024.10.29 +pymatgen==2024.11.13 # via mpcontribs-client pymongo==4.10.1 # via mpcontribs-client @@ -306,7 +310,7 @@ requests==2.32.3 # jupyter-kernel-gateway # pymatgen # requests-futures -requests-futures==1.0.1 +requests-futures==1.0.2 # via mpcontribs-client rfc3339-validator==0.1.4 # via diff --git a/mpcontribs-kernel-gateway/requirements/ubuntu-latest_py3.10.txt b/mpcontribs-kernel-gateway/requirements/ubuntu-latest_py3.10.txt index e44780dc6..21f674a38 100644 --- a/mpcontribs-kernel-gateway/requirements/ubuntu-latest_py3.10.txt +++ b/mpcontribs-kernel-gateway/requirements/ubuntu-latest_py3.10.txt @@ -14,6 +14,8 @@ arrow==1.3.0 # via isoduration asttokens==2.4.1 # via stack-data +async-timeout==5.0.1 + # via kaleido attrs==24.2.0 # via # jsonschema @@ -40,15 +42,17 @@ cffi==1.17.1 # via argon2-cffi-bindings charset-normalizer==3.4.0 # via requests +choreographer==0.99.6 + # via kaleido comm==0.2.2 # via # ipykernel # ipywidgets -contourpy==1.3.0 +contourpy==1.3.1 # via matplotlib cycler==0.12.1 # via matplotlib -ddtrace==2.16.0 +ddtrace==2.16.2 # via -r requirements.in debugpy==1.8.8 # via ipykernel @@ -56,7 +60,7 @@ decorator==5.1.1 # via ipython defusedxml==0.7.1 # via nbconvert -deprecated==1.2.14 +deprecated==1.2.15 # via opentelemetry-api dnspython==2.7.0 # via @@ -76,7 +80,7 @@ filetype==1.2.0 # via mpcontribs-client flatten-dict==0.4.2 # via mpcontribs-client -fonttools==4.54.1 +fonttools==4.55.0 # via matplotlib fqdn==1.5.1 # via jsonschema @@ -150,7 +154,7 @@ jupyterlab-pygments==0.3.0 # via nbconvert jupyterlab-widgets==3.0.13 # via ipywidgets -kaleido==0.2.1 +kaleido==0.4.1 # via -r requirements.in kiwisolver==1.4.7 # via matplotlib @@ -262,7 +266,7 @@ pygments==2.18.0 # nbconvert pyisemail==2.0.1 # via mpcontribs-client -pymatgen==2024.10.29 +pymatgen==2024.11.13 # via mpcontribs-client pymongo==4.10.1 # via mpcontribs-client @@ -306,7 +310,7 @@ requests==2.32.3 # jupyter-kernel-gateway # pymatgen # requests-futures -requests-futures==1.0.1 +requests-futures==1.0.2 # via mpcontribs-client rfc3339-validator==0.1.4 # via diff --git a/mpcontribs-kernel-gateway/requirements/ubuntu-latest_py3.10_extras.txt b/mpcontribs-kernel-gateway/requirements/ubuntu-latest_py3.10_extras.txt index d5cf43537..22d419f92 100644 --- a/mpcontribs-kernel-gateway/requirements/ubuntu-latest_py3.10_extras.txt +++ b/mpcontribs-kernel-gateway/requirements/ubuntu-latest_py3.10_extras.txt @@ -14,6 +14,8 @@ arrow==1.3.0 # via isoduration asttokens==2.4.1 # via stack-data +async-timeout==5.0.1 + # via kaleido attrs==24.2.0 # via # jsonschema @@ -40,15 +42,17 @@ cffi==1.17.1 # via argon2-cffi-bindings charset-normalizer==3.4.0 # via requests +choreographer==0.99.6 + # via kaleido comm==0.2.2 # via # ipykernel # ipywidgets -contourpy==1.3.0 +contourpy==1.3.1 # via matplotlib cycler==0.12.1 # via matplotlib -ddtrace==2.16.0 +ddtrace==2.16.2 # via -r requirements.in debugpy==1.8.8 # via ipykernel @@ -56,7 +60,7 @@ decorator==5.1.1 # via ipython defusedxml==0.7.1 # via nbconvert -deprecated==1.2.14 +deprecated==1.2.15 # via opentelemetry-api dnspython==2.7.0 # via @@ -76,7 +80,7 @@ filetype==1.2.0 # via mpcontribs-client flatten-dict==0.4.2 # via mpcontribs-client -fonttools==4.54.1 +fonttools==4.55.0 # via matplotlib fqdn==1.5.1 # via jsonschema @@ -150,7 +154,7 @@ jupyterlab-pygments==0.3.0 # via nbconvert jupyterlab-widgets==3.0.13 # via ipywidgets -kaleido==0.2.1 +kaleido==0.4.1 # via -r requirements.in kiwisolver==1.4.7 # via matplotlib @@ -262,7 +266,7 @@ pygments==2.18.0 # nbconvert pyisemail==2.0.1 # via mpcontribs-client -pymatgen==2024.10.29 +pymatgen==2024.11.13 # via mpcontribs-client pymongo==4.10.1 # via mpcontribs-client @@ -306,7 +310,7 @@ requests==2.32.3 # jupyter-kernel-gateway # pymatgen # requests-futures -requests-futures==1.0.1 +requests-futures==1.0.2 # via mpcontribs-client rfc3339-validator==0.1.4 # via diff --git a/mpcontribs-kernel-gateway/requirements/ubuntu-latest_py3.11.txt b/mpcontribs-kernel-gateway/requirements/ubuntu-latest_py3.11.txt index 476d8d5e8..f8d6dc33e 100644 --- a/mpcontribs-kernel-gateway/requirements/ubuntu-latest_py3.11.txt +++ b/mpcontribs-kernel-gateway/requirements/ubuntu-latest_py3.11.txt @@ -14,6 +14,8 @@ arrow==1.3.0 # via isoduration asttokens==2.4.1 # via stack-data +async-timeout==5.0.1 + # via kaleido attrs==24.2.0 # via # jsonschema @@ -40,15 +42,17 @@ cffi==1.17.1 # via argon2-cffi-bindings charset-normalizer==3.4.0 # via requests +choreographer==0.99.6 + # via kaleido comm==0.2.2 # via # ipykernel # ipywidgets -contourpy==1.3.0 +contourpy==1.3.1 # via matplotlib cycler==0.12.1 # via matplotlib -ddtrace==2.16.0 +ddtrace==2.16.2 # via -r requirements.in debugpy==1.8.8 # via ipykernel @@ -56,7 +60,7 @@ decorator==5.1.1 # via ipython defusedxml==0.7.1 # via nbconvert -deprecated==1.2.14 +deprecated==1.2.15 # via opentelemetry-api dnspython==2.7.0 # via @@ -72,7 +76,7 @@ filetype==1.2.0 # via mpcontribs-client flatten-dict==0.4.2 # via mpcontribs-client -fonttools==4.54.1 +fonttools==4.55.0 # via matplotlib fqdn==1.5.1 # via jsonschema @@ -146,7 +150,7 @@ jupyterlab-pygments==0.3.0 # via nbconvert jupyterlab-widgets==3.0.13 # via ipywidgets -kaleido==0.2.1 +kaleido==0.4.1 # via -r requirements.in kiwisolver==1.4.7 # via matplotlib @@ -258,7 +262,7 @@ pygments==2.18.0 # nbconvert pyisemail==2.0.1 # via mpcontribs-client -pymatgen==2024.10.29 +pymatgen==2024.11.13 # via mpcontribs-client pymongo==4.10.1 # via mpcontribs-client @@ -302,7 +306,7 @@ requests==2.32.3 # jupyter-kernel-gateway # pymatgen # requests-futures -requests-futures==1.0.1 +requests-futures==1.0.2 # via mpcontribs-client rfc3339-validator==0.1.4 # via diff --git a/mpcontribs-kernel-gateway/requirements/ubuntu-latest_py3.11_extras.txt b/mpcontribs-kernel-gateway/requirements/ubuntu-latest_py3.11_extras.txt index 148fd73f9..9d9c509f0 100644 --- a/mpcontribs-kernel-gateway/requirements/ubuntu-latest_py3.11_extras.txt +++ b/mpcontribs-kernel-gateway/requirements/ubuntu-latest_py3.11_extras.txt @@ -14,6 +14,8 @@ arrow==1.3.0 # via isoduration asttokens==2.4.1 # via stack-data +async-timeout==5.0.1 + # via kaleido attrs==24.2.0 # via # jsonschema @@ -40,15 +42,17 @@ cffi==1.17.1 # via argon2-cffi-bindings charset-normalizer==3.4.0 # via requests +choreographer==0.99.6 + # via kaleido comm==0.2.2 # via # ipykernel # ipywidgets -contourpy==1.3.0 +contourpy==1.3.1 # via matplotlib cycler==0.12.1 # via matplotlib -ddtrace==2.16.0 +ddtrace==2.16.2 # via -r requirements.in debugpy==1.8.8 # via ipykernel @@ -56,7 +60,7 @@ decorator==5.1.1 # via ipython defusedxml==0.7.1 # via nbconvert -deprecated==1.2.14 +deprecated==1.2.15 # via opentelemetry-api dnspython==2.7.0 # via @@ -72,7 +76,7 @@ filetype==1.2.0 # via mpcontribs-client flatten-dict==0.4.2 # via mpcontribs-client -fonttools==4.54.1 +fonttools==4.55.0 # via matplotlib fqdn==1.5.1 # via jsonschema @@ -146,7 +150,7 @@ jupyterlab-pygments==0.3.0 # via nbconvert jupyterlab-widgets==3.0.13 # via ipywidgets -kaleido==0.2.1 +kaleido==0.4.1 # via -r requirements.in kiwisolver==1.4.7 # via matplotlib @@ -258,7 +262,7 @@ pygments==2.18.0 # nbconvert pyisemail==2.0.1 # via mpcontribs-client -pymatgen==2024.10.29 +pymatgen==2024.11.13 # via mpcontribs-client pymongo==4.10.1 # via mpcontribs-client @@ -302,7 +306,7 @@ requests==2.32.3 # jupyter-kernel-gateway # pymatgen # requests-futures -requests-futures==1.0.1 +requests-futures==1.0.2 # via mpcontribs-client rfc3339-validator==0.1.4 # via diff --git a/mpcontribs-portal/requirements/deployment.txt b/mpcontribs-portal/requirements/deployment.txt index 78d10d56d..15f88f559 100644 --- a/mpcontribs-portal/requirements/deployment.txt +++ b/mpcontribs-portal/requirements/deployment.txt @@ -22,9 +22,9 @@ boltons==24.1.0 # via # mpcontribs-client # mpcontribs-portal (MPContribs/mpcontribs-portal/setup.py) -boto3==1.35.59 +boto3==1.35.63 # via mpcontribs-portal (MPContribs/mpcontribs-portal/setup.py) -botocore==1.35.59 +botocore==1.35.63 # via # boto3 # s3transfer @@ -46,7 +46,7 @@ contourpy==1.3.1 # via matplotlib cycler==0.12.1 # via matplotlib -ddtrace==2.16.1 +ddtrace==2.16.2 # via mpcontribs-portal (MPContribs/mpcontribs-portal/setup.py) debugpy==1.8.8 # via ipykernel @@ -54,7 +54,7 @@ decorator==5.1.1 # via ipython defusedxml==0.7.1 # via nbconvert -deprecated==1.2.14 +deprecated==1.2.15 # via opentelemetry-api django==3.2.25 # via @@ -83,7 +83,7 @@ filetype==1.2.0 # via mpcontribs-client flatten-dict==0.4.2 # via mpcontribs-client -fonttools==4.54.1 +fonttools==4.55.0 # via matplotlib fqdn==1.5.1 # via jsonschema @@ -257,7 +257,7 @@ pygments==2.18.0 # nbconvert pyisemail==2.0.1 # via mpcontribs-client -pymatgen==2024.10.29 +pymatgen==2024.11.13 # via mpcontribs-client pymongo==4.10.1 # via mpcontribs-client @@ -299,7 +299,7 @@ requests==2.32.3 # bravado-core # pymatgen # requests-futures -requests-futures==1.0.1 +requests-futures==1.0.2 # via mpcontribs-client rfc3339-validator==0.1.4 # via jsonschema @@ -324,7 +324,7 @@ scipy==1.14.1 # pymatgen semantic-version==2.10.0 # via mpcontribs-client -setproctitle==1.3.3 +setproctitle==1.3.4 # via mpcontribs-portal (MPContribs/mpcontribs-portal/setup.py) simplejson==3.19.3 # via @@ -343,7 +343,7 @@ soupsieve==2.6 # via beautifulsoup4 spglib==2.5.0 # via pymatgen -sqlparse==0.5.1 +sqlparse==0.5.2 # via django stack-data==0.6.3 # via ipython diff --git a/mpcontribs-portal/requirements/ubuntu-latest_py3.10.txt b/mpcontribs-portal/requirements/ubuntu-latest_py3.10.txt index 3c84729df..e508e91cb 100644 --- a/mpcontribs-portal/requirements/ubuntu-latest_py3.10.txt +++ b/mpcontribs-portal/requirements/ubuntu-latest_py3.10.txt @@ -24,9 +24,9 @@ boltons==24.1.0 # via # mpcontribs-client # mpcontribs-portal (setup.py) -boto3==1.35.57 +boto3==1.35.63 # via mpcontribs-portal (setup.py) -botocore==1.35.57 +botocore==1.35.63 # via # boto3 # s3transfer @@ -44,11 +44,11 @@ charset-normalizer==3.4.0 # via requests comm==0.2.2 # via ipykernel -contourpy==1.3.0 +contourpy==1.3.1 # via matplotlib cycler==0.12.1 # via matplotlib -ddtrace==2.16.0 +ddtrace==2.16.2 # via mpcontribs-portal (setup.py) debugpy==1.8.8 # via ipykernel @@ -56,7 +56,7 @@ decorator==5.1.1 # via ipython defusedxml==0.7.1 # via nbconvert -deprecated==1.2.14 +deprecated==1.2.15 # via opentelemetry-api django==3.2.25 # via @@ -87,11 +87,11 @@ filetype==1.2.0 # via mpcontribs-client flatten-dict==0.4.2 # via mpcontribs-client -fonttools==4.54.1 +fonttools==4.55.0 # via matplotlib fqdn==1.5.1 # via jsonschema -gevent==24.10.3 +gevent==24.11.1 # via gunicorn greenlet==3.1.1 # via gevent @@ -257,7 +257,7 @@ pygments==2.18.0 # nbconvert pyisemail==2.0.1 # via mpcontribs-client -pymatgen==2024.10.29 +pymatgen==2024.11.13 # via mpcontribs-client pymongo==4.10.1 # via mpcontribs-client @@ -299,7 +299,7 @@ requests==2.32.3 # bravado-core # pymatgen # requests-futures -requests-futures==1.0.1 +requests-futures==1.0.2 # via mpcontribs-client rfc3339-validator==0.1.4 # via jsonschema @@ -323,7 +323,7 @@ scipy==1.14.1 # pymatgen semantic-version==2.10.0 # via mpcontribs-client -setproctitle==1.3.3 +setproctitle==1.3.4 # via mpcontribs-portal (setup.py) simplejson==3.19.3 # via @@ -342,7 +342,7 @@ soupsieve==2.6 # via beautifulsoup4 spglib==2.5.0 # via pymatgen -sqlparse==0.5.1 +sqlparse==0.5.2 # via django stack-data==0.6.3 # via ipython diff --git a/mpcontribs-portal/requirements/ubuntu-latest_py3.10_extras.txt b/mpcontribs-portal/requirements/ubuntu-latest_py3.10_extras.txt index ce1197b33..5b60e6106 100644 --- a/mpcontribs-portal/requirements/ubuntu-latest_py3.10_extras.txt +++ b/mpcontribs-portal/requirements/ubuntu-latest_py3.10_extras.txt @@ -24,9 +24,9 @@ boltons==24.1.0 # via # mpcontribs-client # mpcontribs-portal (setup.py) -boto3==1.35.57 +boto3==1.35.63 # via mpcontribs-portal (setup.py) -botocore==1.35.57 +botocore==1.35.63 # via # boto3 # s3transfer @@ -44,11 +44,11 @@ charset-normalizer==3.4.0 # via requests comm==0.2.2 # via ipykernel -contourpy==1.3.0 +contourpy==1.3.1 # via matplotlib cycler==0.12.1 # via matplotlib -ddtrace==2.16.0 +ddtrace==2.16.2 # via mpcontribs-portal (setup.py) debugpy==1.8.8 # via ipykernel @@ -56,7 +56,7 @@ decorator==5.1.1 # via ipython defusedxml==0.7.1 # via nbconvert -deprecated==1.2.14 +deprecated==1.2.15 # via opentelemetry-api django==3.2.25 # via @@ -91,11 +91,11 @@ flake8==7.1.1 # via mpcontribs-portal (setup.py) flatten-dict==0.4.2 # via mpcontribs-client -fonttools==4.54.1 +fonttools==4.55.0 # via matplotlib fqdn==1.5.1 # via jsonschema -gevent==24.10.3 +gevent==24.11.1 # via gunicorn greenlet==3.1.1 # via gevent @@ -272,7 +272,7 @@ pygments==2.18.0 # nbconvert pyisemail==2.0.1 # via mpcontribs-client -pymatgen==2024.10.29 +pymatgen==2024.11.13 # via mpcontribs-client pymongo==4.10.1 # via mpcontribs-client @@ -316,7 +316,7 @@ requests==2.32.3 # bravado-core # pymatgen # requests-futures -requests-futures==1.0.1 +requests-futures==1.0.2 # via mpcontribs-client rfc3339-validator==0.1.4 # via jsonschema @@ -340,7 +340,7 @@ scipy==1.14.1 # pymatgen semantic-version==2.10.0 # via mpcontribs-client -setproctitle==1.3.3 +setproctitle==1.3.4 # via mpcontribs-portal (setup.py) simplejson==3.19.3 # via @@ -359,7 +359,7 @@ soupsieve==2.6 # via beautifulsoup4 spglib==2.5.0 # via pymatgen -sqlparse==0.5.1 +sqlparse==0.5.2 # via django stack-data==0.6.3 # via ipython @@ -375,7 +375,7 @@ tenacity==9.0.0 # via plotly tinycss2==1.4.0 # via nbconvert -tomli==2.0.2 +tomli==2.1.0 # via pytest tornado==6.4.1 # via diff --git a/mpcontribs-portal/requirements/ubuntu-latest_py3.11.txt b/mpcontribs-portal/requirements/ubuntu-latest_py3.11.txt index 30f87964f..54c051319 100644 --- a/mpcontribs-portal/requirements/ubuntu-latest_py3.11.txt +++ b/mpcontribs-portal/requirements/ubuntu-latest_py3.11.txt @@ -22,9 +22,9 @@ boltons==24.1.0 # via # mpcontribs-client # mpcontribs-portal (setup.py) -boto3==1.35.57 +boto3==1.35.63 # via mpcontribs-portal (setup.py) -botocore==1.35.57 +botocore==1.35.63 # via # boto3 # s3transfer @@ -42,11 +42,11 @@ charset-normalizer==3.4.0 # via requests comm==0.2.2 # via ipykernel -contourpy==1.3.0 +contourpy==1.3.1 # via matplotlib cycler==0.12.1 # via matplotlib -ddtrace==2.16.0 +ddtrace==2.16.2 # via mpcontribs-portal (setup.py) debugpy==1.8.8 # via ipykernel @@ -54,7 +54,7 @@ decorator==5.1.1 # via ipython defusedxml==0.7.1 # via nbconvert -deprecated==1.2.14 +deprecated==1.2.15 # via opentelemetry-api django==3.2.25 # via @@ -83,11 +83,11 @@ filetype==1.2.0 # via mpcontribs-client flatten-dict==0.4.2 # via mpcontribs-client -fonttools==4.54.1 +fonttools==4.55.0 # via matplotlib fqdn==1.5.1 # via jsonschema -gevent==24.10.3 +gevent==24.11.1 # via gunicorn greenlet==3.1.1 # via gevent @@ -253,7 +253,7 @@ pygments==2.18.0 # nbconvert pyisemail==2.0.1 # via mpcontribs-client -pymatgen==2024.10.29 +pymatgen==2024.11.13 # via mpcontribs-client pymongo==4.10.1 # via mpcontribs-client @@ -295,7 +295,7 @@ requests==2.32.3 # bravado-core # pymatgen # requests-futures -requests-futures==1.0.1 +requests-futures==1.0.2 # via mpcontribs-client rfc3339-validator==0.1.4 # via jsonschema @@ -319,7 +319,7 @@ scipy==1.14.1 # pymatgen semantic-version==2.10.0 # via mpcontribs-client -setproctitle==1.3.3 +setproctitle==1.3.4 # via mpcontribs-portal (setup.py) simplejson==3.19.3 # via @@ -338,7 +338,7 @@ soupsieve==2.6 # via beautifulsoup4 spglib==2.5.0 # via pymatgen -sqlparse==0.5.1 +sqlparse==0.5.2 # via django stack-data==0.6.3 # via ipython diff --git a/mpcontribs-portal/requirements/ubuntu-latest_py3.11_extras.txt b/mpcontribs-portal/requirements/ubuntu-latest_py3.11_extras.txt index d72ba2649..fcf3f0c5e 100644 --- a/mpcontribs-portal/requirements/ubuntu-latest_py3.11_extras.txt +++ b/mpcontribs-portal/requirements/ubuntu-latest_py3.11_extras.txt @@ -22,9 +22,9 @@ boltons==24.1.0 # via # mpcontribs-client # mpcontribs-portal (setup.py) -boto3==1.35.57 +boto3==1.35.63 # via mpcontribs-portal (setup.py) -botocore==1.35.57 +botocore==1.35.63 # via # boto3 # s3transfer @@ -42,11 +42,11 @@ charset-normalizer==3.4.0 # via requests comm==0.2.2 # via ipykernel -contourpy==1.3.0 +contourpy==1.3.1 # via matplotlib cycler==0.12.1 # via matplotlib -ddtrace==2.16.0 +ddtrace==2.16.2 # via mpcontribs-portal (setup.py) debugpy==1.8.8 # via ipykernel @@ -54,7 +54,7 @@ decorator==5.1.1 # via ipython defusedxml==0.7.1 # via nbconvert -deprecated==1.2.14 +deprecated==1.2.15 # via opentelemetry-api django==3.2.25 # via @@ -85,11 +85,11 @@ flake8==7.1.1 # via mpcontribs-portal (setup.py) flatten-dict==0.4.2 # via mpcontribs-client -fonttools==4.54.1 +fonttools==4.55.0 # via matplotlib fqdn==1.5.1 # via jsonschema -gevent==24.10.3 +gevent==24.11.1 # via gunicorn greenlet==3.1.1 # via gevent @@ -266,7 +266,7 @@ pygments==2.18.0 # nbconvert pyisemail==2.0.1 # via mpcontribs-client -pymatgen==2024.10.29 +pymatgen==2024.11.13 # via mpcontribs-client pymongo==4.10.1 # via mpcontribs-client @@ -310,7 +310,7 @@ requests==2.32.3 # bravado-core # pymatgen # requests-futures -requests-futures==1.0.1 +requests-futures==1.0.2 # via mpcontribs-client rfc3339-validator==0.1.4 # via jsonschema @@ -334,7 +334,7 @@ scipy==1.14.1 # pymatgen semantic-version==2.10.0 # via mpcontribs-client -setproctitle==1.3.3 +setproctitle==1.3.4 # via mpcontribs-portal (setup.py) simplejson==3.19.3 # via @@ -353,7 +353,7 @@ soupsieve==2.6 # via beautifulsoup4 spglib==2.5.0 # via pymatgen -sqlparse==0.5.1 +sqlparse==0.5.2 # via django stack-data==0.6.3 # via ipython