From 2a29668708ee13a5bd37021f07292e673e4270e9 Mon Sep 17 00:00:00 2001 From: Ana Paula Gomes Date: Sun, 15 Dec 2024 16:02:06 -0300 Subject: [PATCH 01/17] Add option to get regional series by state --- bcb/sgs.py | 15 +++++++++++++++ tests/test_series.py | 14 ++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/bcb/sgs.py b/bcb/sgs.py index fdb2610..6dce127 100644 --- a/bcb/sgs.py +++ b/bcb/sgs.py @@ -14,6 +14,10 @@ `_. """ +SGS_CODES_BY_STATE = { + "BA": "15861", +} + class SGSCode: def __init__(self, code, name=None): @@ -129,3 +133,14 @@ def get(codes, start=None, end=None, last=0, multi=True, freq=None): return pd.concat(dfs, axis=1) else: return dfs + + +def get_by_states(states, start=None, end=None, last=0, freq=None): + codes_from_states = [] + for state in states: + found = SGS_CODES_BY_STATE.get(state.upper()) + if not found: + raise Exception(f"Invalid state: {state}") + codes_from_states.append(found) + + return get(codes_from_states, start=start, end=end, last=last, multi=True, freq=freq) diff --git a/tests/test_series.py b/tests/test_series.py index bffa61c..7dba47d 100644 --- a/tests/test_series.py +++ b/tests/test_series.py @@ -1,5 +1,7 @@ from datetime import datetime import pandas as pd +import pytest + from bcb import sgs @@ -87,3 +89,15 @@ def test_get_series(): assert len(x) == 5 assert x.index[0] == datetime.strptime("2021-01-18", "%Y-%m-%d") assert x.index[-1] == datetime.strptime("2021-01-22", "%Y-%m-%d") + + +@pytest.mark.parametrize("states,expected_columns", [ + (["BA"], ["15861"]), + (["ba"], ["15861"]), + #(["ba", "se", "al"], ["1"]) +]) +def test_get_series_by_states(states, expected_columns): + series = sgs.get_by_states(states, last=10) + assert isinstance(series, pd.DataFrame) + assert series.columns == expected_columns + assert len(series) == 10 From 735905452714c5e9f89520f7b986a3ffc8b32ab7 Mon Sep 17 00:00:00 2001 From: Ana Paula Gomes Date: Sun, 15 Dec 2024 17:31:52 -0300 Subject: [PATCH 02/17] Add new entry to regional series --- CHANGELOG.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ce8ae36..1eb6bb5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,8 @@ - # Changelog +## Unpublished +- Add Regional economy series support + ## [0.3.0] - 2024-06-12 - Dependencies updated From dbd814d0e87ea05f000175607e4c59e22eedbd39 Mon Sep 17 00:00:00 2001 From: Ana Paula Gomes Date: Sun, 15 Dec 2024 17:32:05 -0300 Subject: [PATCH 03/17] Fix link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fdc0cf9..655a100 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ pip install python-bcb ## SGS Utiliza o webservice do SGS -(`Sistema Gerenciador de Séries Temporais `_) +([Sistema Gerenciador de Séries Temporais](https://www3.bcb.gov.br/sgspub/)) para obter os dados. ## Conversor de Moedas From e2a3f889625ab7fcba346944013ac187640d486f Mon Sep 17 00:00:00 2001 From: Ana Paula Gomes Date: Sun, 15 Dec 2024 23:03:42 -0300 Subject: [PATCH 04/17] Add regional economy module --- bcb/sgs/__init__.py | 131 +++++++++++++++++++++++++ bcb/sgs/regional_economy.py | 152 +++++++++++++++++++++++++++++ tests/sgs/__init__.py | 0 tests/sgs/test_regional_economy.py | 25 +++++ 4 files changed, 308 insertions(+) create mode 100644 bcb/sgs/__init__.py create mode 100644 bcb/sgs/regional_economy.py create mode 100644 tests/sgs/__init__.py create mode 100644 tests/sgs/test_regional_economy.py diff --git a/bcb/sgs/__init__.py b/bcb/sgs/__init__.py new file mode 100644 index 0000000..d9f3b03 --- /dev/null +++ b/bcb/sgs/__init__.py @@ -0,0 +1,131 @@ +from io import StringIO + +import requests +import pandas as pd + +from bcb.utils import Date + +""" +Sistema Gerenciador de Séries Temporais (SGS) + +O módulo ``sgs`` obtem os dados do webservice do Banco Central, +interface json do serviço BCData/SGS - +`Sistema Gerenciador de Séries Temporais (SGS) +`_. +""" + + +class SGSCode: + def __init__(self, code, name=None): + if name is None: + if isinstance(code, int) or isinstance(code, str): + self.name = str(code) + self.value = int(code) + else: + self.name = str(name) + self.value = int(code) + + +def _codes(codes): + if isinstance(codes, int) or isinstance(codes, str): + yield SGSCode(codes) + elif isinstance(codes, tuple): + yield SGSCode(codes[1], codes[0]) + elif isinstance(codes, list): + for cd in codes: + _ist = isinstance(cd, tuple) + yield SGSCode(cd[1], cd[0]) if _ist else SGSCode(cd) + elif isinstance(codes, dict): + for cd in codes: + yield SGSCode(codes[cd], cd) + + +def _get_url_and_payload(code, start_date, end_date, last): + payload = {"formato": "json"} + if last == 0: + if start_date is not None or end_date is not None: + payload["dataInicial"] = Date(start_date).date.strftime("%d/%m/%Y") + end_date = end_date if end_date else "today" + payload["dataFinal"] = Date(end_date).date.strftime("%d/%m/%Y") + url = "http://api.bcb.gov.br/dados/serie/bcdata.sgs.{}/dados".format(code) + else: + url = ( + "http://api.bcb.gov.br/dados/serie/bcdata.sgs.{}/dados" "/ultimos/{}" + ).format(code, last) + + return {"payload": payload, "url": url} + + +def _format_df(df, code, freq): + cns = {"data": "Date", "valor": code.name, "datafim": "enddate"} + df = df.rename(columns=cns) + if "Date" in df: + df["Date"] = pd.to_datetime(df["Date"], format="%d/%m/%Y") + if "enddate" in df: + df["enddate"] = pd.to_datetime(df["enddate"], format="%d/%m/%Y") + df = df.set_index("Date") + if freq: + df.index = df.index.to_period(freq) + return df + + +def get(codes, start=None, end=None, last=0, multi=True, freq=None): + """ + Retorna um DataFrame pandas com séries temporais obtidas do SGS. + + Parameters + ---------- + + codes : {int, List[int], List[str], Dict[str:int]} + Este argumento pode ser uma das opções: + + * ``int`` : código da série temporal + * ``list`` ou ``tuple`` : lista ou tupla com códigos + * ``list`` ou ``tuple`` : lista ou tupla com pares ``('nome', código)`` + * ``dict`` : dicionário com pares ``{'nome': código}`` + + Com códigos numéricos é interessante utilizar os nomes com os códigos + para definir os nomes nas colunas das séries temporais. + start : str, int, date, datetime, Timestamp + Data de início da série. + Interpreta diferentes tipos e formatos de datas. + end : string, int, date, datetime, Timestamp + Data de início da série. + Interpreta diferentes tipos e formatos de datas. + last : int + Retorna os últimos ``last`` elementos disponíveis da série temporal + solicitada. Se ``last`` for maior que 0 (zero) os argumentos ``start`` + e ``end`` são ignorados. + multi : bool + Define se, quando mais de 1 série for solicitada, a função retorna uma + série multivariada ou uma lista com séries univariadas. + freq : str + Define a frequência a ser utilizada na série temporal + + Returns + ------- + + ``DataFrame`` : + série temporal univariada ou multivariada, + quando solicitado mais de uma série (parâmetro ``multi=True``). + + ``list`` : + lista com séries temporais univariadas, + quando solicitado mais de uma série (parâmetro ``multi=False``). + """ + dfs = [] + for code in _codes(codes): + urd = _get_url_and_payload(code.value, start, end, last) + res = requests.get(urd["url"], params=urd["payload"]) + if res.status_code != 200: + raise Exception("Download error: code = {}".format(code.value)) + df = pd.read_json(StringIO(res.text)) + df = _format_df(df, code, freq) + dfs.append(df) + if len(dfs) == 1: + return dfs[0] + else: + if multi: + return pd.concat(dfs, axis=1) + else: + return dfs diff --git a/bcb/sgs/regional_economy.py b/bcb/sgs/regional_economy.py new file mode 100644 index 0000000..1c9b806 --- /dev/null +++ b/bcb/sgs/regional_economy.py @@ -0,0 +1,152 @@ +from bcb.sgs import get +import pandas as pd + +NON_PERFORMING_LOANS_BY_REGION_PF = { + "N": "", + "NE": "", + "CO": "", + "SE": "", + "S": "", +} +NON_PERFORMING_LOANS_BY_STATE_PF = { + "AC": "15861", + "AL": "", + "AP": "15863", + "AM": "15864", + "BA": "15865", + "CE": "", + "DF": "", + "ES": "", + "GO": "", + "MA": "", + "MT": "", + "MS": "", + "MG": "", + "PA": "15874", + "PB": "", + "PR": "", + "PE": "", + "PI": "", + "RJ": "", + "RN": "", + "RS": "", + "RO": "", + "RR": "", + "SC": "", + "SP": "", + "SE": "", + "TO": "", +} +NON_PERFORMING_LOANS_BY_REGION_PJ = { + "N": "", + "NE": "", + "CO": "", + "SE": "", + "S": "", +} +NON_PERFORMING_LOANS_BY_STATE_PJ = { + "AC": "15861", + "AL": "", + "AP": "15863", + "AM": "15864", + "BA": "15865", + "CE": "", + "DF": "", + "ES": "", + "GO": "", + "MA": "", + "MT": "", + "MS": "", + "MG": "", + "PA": "15874", + "PB": "", + "PR": "", + "PE": "", + "PI": "", + "RJ": "", + "RN": "", + "RS": "", + "RO": "", + "RR": "", + "SC": "", + "SP": "", + "SE": "", + "TO": "" +} +NON_PERFORMING_LOANS_BY_REGION_TOTAL = { + "N": "", + "NE": "", + "CO": "", + "SE": "", + "S": "", +} +NON_PERFORMING_LOANS_BY_STATE_TOTAL = { + "AC": "15861", + "AL": "", + "AP": "15863", + "AM": "15864", + "BA": "15865", + "CE": "", + "DF": "", + "ES": "", + "GO": "", + "MA": "", + "MT": "", + "MS": "", + "MG": "", + "PA": "15874", + "PB": "", + "PR": "", + "PE": "", + "PI": "", + "RJ": "", + "RN": "", + "RS": "", + "RO": "", + "RR": "", + "SC": "", + "SP": "", + "SE": "", + "TO": "" +} + + +def get_non_performing_loans_codes(states_or_region, mode="total"): + """SGS da Inadimplência das operações de crédito. + + Pode ser total, pessoas físicas (PF) ou jurídicas (PJ).""" + non_performing_loans_by_state = NON_PERFORMING_LOANS_BY_STATE_TOTAL + non_performing_loans_by_region = NON_PERFORMING_LOANS_BY_REGION_TOTAL + + is_state = False + is_region = False + states_or_region = [states_or_region] if isinstance(states_or_region, str) else states_or_region + states_or_region = [location.upper() for location in states_or_region] + if any(location in list(non_performing_loans_by_state.keys()) for location in states_or_region): + is_state = True + elif any(location in list(non_performing_loans_by_region.keys()) for location in states_or_region): + is_region = True + + if not is_state and not is_region: + raise Exception(f"Not a valid state or region: {states_or_region}") + + codes = [] + if is_state: + if mode.upper() == "PF": + non_performing_loans_by_state = NON_PERFORMING_LOANS_BY_STATE_PF + elif mode.upper() == "PJ": + non_performing_loans_by_state = NON_PERFORMING_LOANS_BY_STATE_PJ + elif is_region: + if mode.upper() == "PF": + non_performing_loans_by_state = NON_PERFORMING_LOANS_BY_REGION_PF + elif mode.upper() == "PJ": + non_performing_loans_by_state = NON_PERFORMING_LOANS_BY_REGION_PJ + + for location in states_or_region: + codes.append(non_performing_loans_by_state.get(location)) + return codes + + +def get_non_performing_loans(states_or_region, mode="total", start=None, end=None, last=0, freq=None): + codes = get_non_performing_loans_codes(states_or_region, mode=mode) + return get(codes, start=start, end=end, last=last, multi=True, freq=freq) diff --git a/tests/sgs/__init__.py b/tests/sgs/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/sgs/test_regional_economy.py b/tests/sgs/test_regional_economy.py new file mode 100644 index 0000000..92be5e1 --- /dev/null +++ b/tests/sgs/test_regional_economy.py @@ -0,0 +1,25 @@ +import pandas as pd +import pytest +from bcb.sgs.regional_economy import get_non_performing_loans, get_non_performing_loans_codes + + +class TestGetNonPerformingLoansCodes: + @pytest.mark.parametrize("states,expected_codes", [ + (["ba", "pa"], ["15865", "15874"]), + (["BA"], ["15865"]), + ]) + def test_get_non_performing_loans_codes_by_state_total(self, states, expected_codes): + assert get_non_performing_loans_codes(states) == expected_codes + + +class TestGetNonPerformingLoans: + @pytest.mark.parametrize("states,expected_columns", [ + (["BA"], ["15865"]), + (["ba"], ["15865"]), + #(["ba", "se", "al"], ["1"]) + ]) + def test_get_series_by_states(self, states, expected_columns): + series = get_non_performing_loans(states, last=10) + assert isinstance(series, pd.DataFrame) + assert series.columns == expected_columns + assert len(series) == 10 From c180548248da4399d71487165cda1b134ddc824d Mon Sep 17 00:00:00 2001 From: Ana Paula Gomes Date: Sun, 15 Dec 2024 23:04:51 -0300 Subject: [PATCH 05/17] Move sgs module --- bcb/sgs.py | 146 --------------------------------- tests/__init__.py | 0 tests/{ => sgs}/test_series.py | 12 --- 3 files changed, 158 deletions(-) delete mode 100644 bcb/sgs.py create mode 100644 tests/__init__.py rename tests/{ => sgs}/test_series.py (86%) diff --git a/bcb/sgs.py b/bcb/sgs.py deleted file mode 100644 index 6dce127..0000000 --- a/bcb/sgs.py +++ /dev/null @@ -1,146 +0,0 @@ -from io import StringIO - -import requests -import pandas as pd - -from .utils import Date - -""" -Sistema Gerenciador de Séries Temporais (SGS) - -O módulo ``sgs`` obtem os dados do webservice do Banco Central, -interface json do serviço BCData/SGS - -`Sistema Gerenciador de Séries Temporais (SGS) -`_. -""" - -SGS_CODES_BY_STATE = { - "BA": "15861", -} - - -class SGSCode: - def __init__(self, code, name=None): - if name is None: - if isinstance(code, int) or isinstance(code, str): - self.name = str(code) - self.value = int(code) - else: - self.name = str(name) - self.value = int(code) - - -def _codes(codes): - if isinstance(codes, int) or isinstance(codes, str): - yield SGSCode(codes) - elif isinstance(codes, tuple): - yield SGSCode(codes[1], codes[0]) - elif isinstance(codes, list): - for cd in codes: - _ist = isinstance(cd, tuple) - yield SGSCode(cd[1], cd[0]) if _ist else SGSCode(cd) - elif isinstance(codes, dict): - for cd in codes: - yield SGSCode(codes[cd], cd) - - -def _get_url_and_payload(code, start_date, end_date, last): - payload = {"formato": "json"} - if last == 0: - if start_date is not None or end_date is not None: - payload["dataInicial"] = Date(start_date).date.strftime("%d/%m/%Y") - end_date = end_date if end_date else "today" - payload["dataFinal"] = Date(end_date).date.strftime("%d/%m/%Y") - url = "http://api.bcb.gov.br/dados/serie/bcdata.sgs.{}/dados".format(code) - else: - url = ( - "http://api.bcb.gov.br/dados/serie/bcdata.sgs.{}/dados" "/ultimos/{}" - ).format(code, last) - - return {"payload": payload, "url": url} - - -def _format_df(df, code, freq): - cns = {"data": "Date", "valor": code.name, "datafim": "enddate"} - df = df.rename(columns=cns) - if "Date" in df: - df["Date"] = pd.to_datetime(df["Date"], format="%d/%m/%Y") - if "enddate" in df: - df["enddate"] = pd.to_datetime(df["enddate"], format="%d/%m/%Y") - df = df.set_index("Date") - if freq: - df.index = df.index.to_period(freq) - return df - - -def get(codes, start=None, end=None, last=0, multi=True, freq=None): - """ - Retorna um DataFrame pandas com séries temporais obtidas do SGS. - - Parameters - ---------- - - codes : {int, List[int], List[str], Dict[str:int]} - Este argumento pode ser uma das opções: - - * ``int`` : código da série temporal - * ``list`` ou ``tuple`` : lista ou tupla com códigos - * ``list`` ou ``tuple`` : lista ou tupla com pares ``('nome', código)`` - * ``dict`` : dicionário com pares ``{'nome': código}`` - - Com códigos numéricos é interessante utilizar os nomes com os códigos - para definir os nomes nas colunas das séries temporais. - start : str, int, date, datetime, Timestamp - Data de início da série. - Interpreta diferentes tipos e formatos de datas. - end : string, int, date, datetime, Timestamp - Data de início da série. - Interpreta diferentes tipos e formatos de datas. - last : int - Retorna os últimos ``last`` elementos disponíveis da série temporal - solicitada. Se ``last`` for maior que 0 (zero) os argumentos ``start`` - e ``end`` são ignorados. - multi : bool - Define se, quando mais de 1 série for solicitada, a função retorna uma - série multivariada ou uma lista com séries univariadas. - freq : str - Define a frequência a ser utilizada na série temporal - - Returns - ------- - - ``DataFrame`` : - série temporal univariada ou multivariada, - quando solicitado mais de uma série (parâmetro ``multi=True``). - - ``list`` : - lista com séries temporais univariadas, - quando solicitado mais de uma série (parâmetro ``multi=False``). - """ - dfs = [] - for code in _codes(codes): - urd = _get_url_and_payload(code.value, start, end, last) - res = requests.get(urd["url"], params=urd["payload"]) - if res.status_code != 200: - raise Exception("Download error: code = {}".format(code.value)) - df = pd.read_json(StringIO(res.text)) - df = _format_df(df, code, freq) - dfs.append(df) - if len(dfs) == 1: - return dfs[0] - else: - if multi: - return pd.concat(dfs, axis=1) - else: - return dfs - - -def get_by_states(states, start=None, end=None, last=0, freq=None): - codes_from_states = [] - for state in states: - found = SGS_CODES_BY_STATE.get(state.upper()) - if not found: - raise Exception(f"Invalid state: {state}") - codes_from_states.append(found) - - return get(codes_from_states, start=start, end=end, last=last, multi=True, freq=freq) diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/test_series.py b/tests/sgs/test_series.py similarity index 86% rename from tests/test_series.py rename to tests/sgs/test_series.py index 7dba47d..c079265 100644 --- a/tests/test_series.py +++ b/tests/sgs/test_series.py @@ -89,15 +89,3 @@ def test_get_series(): assert len(x) == 5 assert x.index[0] == datetime.strptime("2021-01-18", "%Y-%m-%d") assert x.index[-1] == datetime.strptime("2021-01-22", "%Y-%m-%d") - - -@pytest.mark.parametrize("states,expected_columns", [ - (["BA"], ["15861"]), - (["ba"], ["15861"]), - #(["ba", "se", "al"], ["1"]) -]) -def test_get_series_by_states(states, expected_columns): - series = sgs.get_by_states(states, last=10) - assert isinstance(series, pd.DataFrame) - assert series.columns == expected_columns - assert len(series) == 10 From d3fe0832de8b47fcc6fad7e75c49bbc3971611d0 Mon Sep 17 00:00:00 2001 From: Ana Paula Gomes Date: Mon, 16 Dec 2024 07:24:17 -0300 Subject: [PATCH 06/17] Fix detection by region and add more codes from the north region --- bcb/sgs/regional_economy.py | 59 +++++++++++++++--------------- tests/sgs/test_regional_economy.py | 9 +++-- 2 files changed, 34 insertions(+), 34 deletions(-) diff --git a/bcb/sgs/regional_economy.py b/bcb/sgs/regional_economy.py index 1c9b806..745f5f2 100644 --- a/bcb/sgs/regional_economy.py +++ b/bcb/sgs/regional_economy.py @@ -2,7 +2,7 @@ import pandas as pd NON_PERFORMING_LOANS_BY_REGION_PF = { - "N": "", + "N": "15888", "NE": "", "CO": "", "SE": "", @@ -30,25 +30,25 @@ "RJ": "", "RN": "", "RS": "", - "RO": "", - "RR": "", + "RO": "15882", + "RR": "15883", "SC": "", "SP": "", "SE": "", - "TO": "", + "TO": "15887", } NON_PERFORMING_LOANS_BY_REGION_PJ = { - "N": "", + "N": "15920", "NE": "", "CO": "", "SE": "", "S": "", } NON_PERFORMING_LOANS_BY_STATE_PJ = { - "AC": "15861", + "AC": "15893", "AL": "", - "AP": "15863", - "AM": "15864", + "AP": "15895", + "AM": "15896", "BA": "15865", "CE": "", "DF": "", @@ -58,7 +58,7 @@ "MT": "", "MS": "", "MG": "", - "PA": "15874", + "PA": "15906", "PB": "", "PR": "", "PE": "", @@ -66,25 +66,25 @@ "RJ": "", "RN": "", "RS": "", - "RO": "", - "RR": "", + "RO": "15914", + "RR": "15915", "SC": "", "SP": "", "SE": "", - "TO": "" + "TO": "15919" } NON_PERFORMING_LOANS_BY_REGION_TOTAL = { - "N": "", + "N": "15952", "NE": "", "CO": "", "SE": "", "S": "", } NON_PERFORMING_LOANS_BY_STATE_TOTAL = { - "AC": "15861", + "AC": "15925", "AL": "", - "AP": "15863", - "AM": "15864", + "AP": "15927", + "AM": "15928", "BA": "15865", "CE": "", "DF": "", @@ -94,7 +94,7 @@ "MT": "", "MS": "", "MG": "", - "PA": "15874", + "PA": "15938", "PB": "", "PR": "", "PE": "", @@ -102,12 +102,12 @@ "RJ": "", "RN": "", "RS": "", - "RO": "", - "RR": "", + "RO": "15946", + "RR": "15947", "SC": "", "SP": "", "SE": "", - "TO": "" + "TO": "15951" } @@ -115,35 +115,34 @@ def get_non_performing_loans_codes(states_or_region, mode="total"): """SGS da Inadimplência das operações de crédito. Pode ser total, pessoas físicas (PF) ou jurídicas (PJ).""" - non_performing_loans_by_state = NON_PERFORMING_LOANS_BY_STATE_TOTAL - non_performing_loans_by_region = NON_PERFORMING_LOANS_BY_REGION_TOTAL - is_state = False is_region = False states_or_region = [states_or_region] if isinstance(states_or_region, str) else states_or_region states_or_region = [location.upper() for location in states_or_region] - if any(location in list(non_performing_loans_by_state.keys()) for location in states_or_region): + if any(location in list(NON_PERFORMING_LOANS_BY_STATE_TOTAL.keys()) for location in states_or_region): is_state = True - elif any(location in list(non_performing_loans_by_region.keys()) for location in states_or_region): + elif any(location in list(NON_PERFORMING_LOANS_BY_REGION_TOTAL.keys()) for location in states_or_region): is_region = True if not is_state and not is_region: raise Exception(f"Not a valid state or region: {states_or_region}") codes = [] + non_performing_loans_by_location = NON_PERFORMING_LOANS_BY_STATE_TOTAL if is_state: if mode.upper() == "PF": - non_performing_loans_by_state = NON_PERFORMING_LOANS_BY_STATE_PF + non_performing_loans_by_location = NON_PERFORMING_LOANS_BY_STATE_PF elif mode.upper() == "PJ": - non_performing_loans_by_state = NON_PERFORMING_LOANS_BY_STATE_PJ + non_performing_loans_by_location = NON_PERFORMING_LOANS_BY_STATE_PJ elif is_region: + non_performing_loans_by_location = NON_PERFORMING_LOANS_BY_REGION_TOTAL if mode.upper() == "PF": - non_performing_loans_by_state = NON_PERFORMING_LOANS_BY_REGION_PF + non_performing_loans_by_location = NON_PERFORMING_LOANS_BY_REGION_PF elif mode.upper() == "PJ": - non_performing_loans_by_state = NON_PERFORMING_LOANS_BY_REGION_PJ + non_performing_loans_by_location = NON_PERFORMING_LOANS_BY_REGION_PJ for location in states_or_region: - codes.append(non_performing_loans_by_state.get(location)) + codes.append(non_performing_loans_by_location[location]) return codes diff --git a/tests/sgs/test_regional_economy.py b/tests/sgs/test_regional_economy.py index 92be5e1..d94a4b1 100644 --- a/tests/sgs/test_regional_economy.py +++ b/tests/sgs/test_regional_economy.py @@ -5,8 +5,9 @@ class TestGetNonPerformingLoansCodes: @pytest.mark.parametrize("states,expected_codes", [ - (["ba", "pa"], ["15865", "15874"]), + (["ba", "pa"], ["15865", "15938"]), (["BA"], ["15865"]), + ("N", ["15952"]), ]) def test_get_non_performing_loans_codes_by_state_total(self, states, expected_codes): assert get_non_performing_loans_codes(states) == expected_codes @@ -16,10 +17,10 @@ class TestGetNonPerformingLoans: @pytest.mark.parametrize("states,expected_columns", [ (["BA"], ["15865"]), (["ba"], ["15865"]), - #(["ba", "se", "al"], ["1"]) + ("N", ["15888"]), ]) - def test_get_series_by_states(self, states, expected_columns): - series = get_non_performing_loans(states, last=10) + def test_get_series_by_states_pf(self, states, expected_columns): + series = get_non_performing_loans(states, last=10, mode="pf") assert isinstance(series, pd.DataFrame) assert series.columns == expected_columns assert len(series) == 10 From 57a1cb33eff0ae3284e2b7614cd00232e513ac97 Mon Sep 17 00:00:00 2001 From: Ana Paula Gomes Date: Mon, 16 Dec 2024 07:27:23 -0300 Subject: [PATCH 07/17] Remove unused import --- tests/sgs/test_series.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/sgs/test_series.py b/tests/sgs/test_series.py index c079265..bffa61c 100644 --- a/tests/sgs/test_series.py +++ b/tests/sgs/test_series.py @@ -1,7 +1,5 @@ from datetime import datetime import pandas as pd -import pytest - from bcb import sgs From e8c135b9238f7b47f6ba160a42caf2a0009a0588 Mon Sep 17 00:00:00 2001 From: Ana Paula Gomes Date: Mon, 16 Dec 2024 11:45:40 -0300 Subject: [PATCH 08/17] Add location as name --- bcb/sgs/__init__.py | 7 +++++-- bcb/sgs/regional_economy.py | 4 ++-- tests/sgs/test_regional_economy.py | 15 ++++++++------- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/bcb/sgs/__init__.py b/bcb/sgs/__init__.py index d9f3b03..c328bd3 100644 --- a/bcb/sgs/__init__.py +++ b/bcb/sgs/__init__.py @@ -25,6 +25,9 @@ def __init__(self, code, name=None): self.name = str(name) self.value = int(code) + def __repr__(self): + return f"{self.code} - {self.name}" if self.name else f"{self.code}" + def _codes(codes): if isinstance(codes, int) or isinstance(codes, str): @@ -36,8 +39,8 @@ def _codes(codes): _ist = isinstance(cd, tuple) yield SGSCode(cd[1], cd[0]) if _ist else SGSCode(cd) elif isinstance(codes, dict): - for cd in codes: - yield SGSCode(codes[cd], cd) + for name, code in codes.items(): + yield SGSCode(code, name) def _get_url_and_payload(code, start_date, end_date, last): diff --git a/bcb/sgs/regional_economy.py b/bcb/sgs/regional_economy.py index 745f5f2..fe9f12a 100644 --- a/bcb/sgs/regional_economy.py +++ b/bcb/sgs/regional_economy.py @@ -127,7 +127,7 @@ def get_non_performing_loans_codes(states_or_region, mode="total"): if not is_state and not is_region: raise Exception(f"Not a valid state or region: {states_or_region}") - codes = [] + codes = {} non_performing_loans_by_location = NON_PERFORMING_LOANS_BY_STATE_TOTAL if is_state: if mode.upper() == "PF": @@ -142,7 +142,7 @@ def get_non_performing_loans_codes(states_or_region, mode="total"): non_performing_loans_by_location = NON_PERFORMING_LOANS_BY_REGION_PJ for location in states_or_region: - codes.append(non_performing_loans_by_location[location]) + codes[location] = non_performing_loans_by_location[location] return codes diff --git a/tests/sgs/test_regional_economy.py b/tests/sgs/test_regional_economy.py index d94a4b1..be8c537 100644 --- a/tests/sgs/test_regional_economy.py +++ b/tests/sgs/test_regional_economy.py @@ -5,9 +5,9 @@ class TestGetNonPerformingLoansCodes: @pytest.mark.parametrize("states,expected_codes", [ - (["ba", "pa"], ["15865", "15938"]), - (["BA"], ["15865"]), - ("N", ["15952"]), + (["ba", "pa"], {"BA": "15865", "PA": "15938"}), + (["BA"], {"BA": "15865"}), + ("N", {"N": "15952"}), ]) def test_get_non_performing_loans_codes_by_state_total(self, states, expected_codes): assert get_non_performing_loans_codes(states) == expected_codes @@ -15,12 +15,13 @@ def test_get_non_performing_loans_codes_by_state_total(self, states, expected_co class TestGetNonPerformingLoans: @pytest.mark.parametrize("states,expected_columns", [ - (["BA"], ["15865"]), - (["ba"], ["15865"]), - ("N", ["15888"]), + (["BA"], ["BA"]), + (["am", "pa"], ["AM", "PA"]), + ("N", ["N"]), ]) def test_get_series_by_states_pf(self, states, expected_columns): series = get_non_performing_loans(states, last=10, mode="pf") + assert isinstance(series, pd.DataFrame) - assert series.columns == expected_columns + assert (series.columns == expected_columns).all() assert len(series) == 10 From 691da1d9bcf6f203e40b9a65954a23da6b93431c Mon Sep 17 00:00:00 2001 From: Ana Paula Gomes Date: Mon, 16 Dec 2024 11:54:46 -0300 Subject: [PATCH 09/17] Add NE states and codes --- bcb/sgs/regional_economy.py | 58 +++++++++++++++--------------- tests/sgs/test_regional_economy.py | 4 +-- 2 files changed, 31 insertions(+), 31 deletions(-) diff --git a/bcb/sgs/regional_economy.py b/bcb/sgs/regional_economy.py index fe9f12a..af46c92 100644 --- a/bcb/sgs/regional_economy.py +++ b/bcb/sgs/regional_economy.py @@ -3,110 +3,110 @@ NON_PERFORMING_LOANS_BY_REGION_PF = { "N": "15888", - "NE": "", + "NE": "15889", "CO": "", "SE": "", "S": "", } NON_PERFORMING_LOANS_BY_STATE_PF = { "AC": "15861", - "AL": "", + "AL": "15862", "AP": "15863", "AM": "15864", "BA": "15865", - "CE": "", + "CE": "15866", "DF": "", "ES": "", "GO": "", - "MA": "", + "MA": "15870", "MT": "", "MS": "", "MG": "", "PA": "15874", - "PB": "", + "PB": "15875", "PR": "", - "PE": "", - "PI": "", + "PE": "15877", + "PI": "15878", "RJ": "", - "RN": "", + "RN": "15880", "RS": "", "RO": "15882", "RR": "15883", "SC": "", "SP": "", - "SE": "", + "SE": "15886", "TO": "15887", } NON_PERFORMING_LOANS_BY_REGION_PJ = { "N": "15920", - "NE": "", + "NE": "15921", "CO": "", "SE": "", "S": "", } NON_PERFORMING_LOANS_BY_STATE_PJ = { "AC": "15893", - "AL": "", + "AL": "15894", "AP": "15895", "AM": "15896", - "BA": "15865", - "CE": "", + "BA": "15897", + "CE": "15898", "DF": "", "ES": "", "GO": "", - "MA": "", + "MA": "15902", "MT": "", "MS": "", "MG": "", "PA": "15906", - "PB": "", + "PB": "15907", "PR": "", - "PE": "", - "PI": "", + "PE": "15909", + "PI": "15910", "RJ": "", - "RN": "", + "RN": "15912", "RS": "", "RO": "15914", "RR": "15915", "SC": "", "SP": "", - "SE": "", + "SE": "15918", "TO": "15919" } NON_PERFORMING_LOANS_BY_REGION_TOTAL = { "N": "15952", - "NE": "", + "NE": "15953", "CO": "", "SE": "", "S": "", } NON_PERFORMING_LOANS_BY_STATE_TOTAL = { "AC": "15925", - "AL": "", + "AL": "15926", "AP": "15927", "AM": "15928", - "BA": "15865", - "CE": "", + "BA": "15929", + "CE": "15930", "DF": "", "ES": "", "GO": "", - "MA": "", + "MA": "15934", "MT": "", "MS": "", "MG": "", "PA": "15938", - "PB": "", + "PB": "15939", "PR": "", - "PE": "", - "PI": "", + "PE": "15941", + "PI": "15942", "RJ": "", - "RN": "", + "RN": "15944", "RS": "", "RO": "15946", "RR": "15947", "SC": "", "SP": "", - "SE": "", + "SE": "15950", "TO": "15951" } diff --git a/tests/sgs/test_regional_economy.py b/tests/sgs/test_regional_economy.py index be8c537..e21f099 100644 --- a/tests/sgs/test_regional_economy.py +++ b/tests/sgs/test_regional_economy.py @@ -5,8 +5,8 @@ class TestGetNonPerformingLoansCodes: @pytest.mark.parametrize("states,expected_codes", [ - (["ba", "pa"], {"BA": "15865", "PA": "15938"}), - (["BA"], {"BA": "15865"}), + (["ba", "pa"], {"BA": "15929", "PA": "15938"}), + (["BA"], {"BA": "15929"}), ("N", {"N": "15952"}), ]) def test_get_non_performing_loans_codes_by_state_total(self, states, expected_codes): From 87f5591a26d01e94c42c151d32ff3e0348223630 Mon Sep 17 00:00:00 2001 From: Ana Paula Gomes Date: Mon, 16 Dec 2024 12:06:48 -0300 Subject: [PATCH 10/17] Add CO region and its states --- bcb/sgs/regional_economy.py | 38 ++++++++++++++++-------------- bcb/utils.py | 9 +++++++ tests/sgs/test_regional_economy.py | 9 +++++++ 3 files changed, 38 insertions(+), 18 deletions(-) diff --git a/bcb/sgs/regional_economy.py b/bcb/sgs/regional_economy.py index af46c92..41ba32d 100644 --- a/bcb/sgs/regional_economy.py +++ b/bcb/sgs/regional_economy.py @@ -4,7 +4,7 @@ NON_PERFORMING_LOANS_BY_REGION_PF = { "N": "15888", "NE": "15889", - "CO": "", + "CO": "15890", "SE": "", "S": "", } @@ -15,12 +15,12 @@ "AM": "15864", "BA": "15865", "CE": "15866", - "DF": "", + "DF": "15867", "ES": "", - "GO": "", + "GO": "15869", "MA": "15870", - "MT": "", - "MS": "", + "MT": "15871", + "MS": "15872", "MG": "", "PA": "15874", "PB": "15875", @@ -40,7 +40,7 @@ NON_PERFORMING_LOANS_BY_REGION_PJ = { "N": "15920", "NE": "15921", - "CO": "", + "CO": "15922", "SE": "", "S": "", } @@ -51,12 +51,12 @@ "AM": "15896", "BA": "15897", "CE": "15898", - "DF": "", + "DF": "15899", "ES": "", - "GO": "", + "GO": "15901", "MA": "15902", - "MT": "", - "MS": "", + "MT": "15903", + "MS": "15904", "MG": "", "PA": "15906", "PB": "15907", @@ -76,7 +76,7 @@ NON_PERFORMING_LOANS_BY_REGION_TOTAL = { "N": "15952", "NE": "15953", - "CO": "", + "CO": "15954", "SE": "", "S": "", } @@ -87,12 +87,12 @@ "AM": "15928", "BA": "15929", "CE": "15930", - "DF": "", + "DF": "15931", "ES": "", - "GO": "", + "GO": "15933", "MA": "15934", - "MT": "", - "MS": "", + "MT": "15935", + "MS": "15936", "MG": "", "PA": "15938", "PB": "15939", @@ -112,9 +112,6 @@ def get_non_performing_loans_codes(states_or_region, mode="total"): - """SGS da Inadimplência das operações de crédito. - - Pode ser total, pessoas físicas (PF) ou jurídicas (PJ).""" is_state = False is_region = False states_or_region = [states_or_region] if isinstance(states_or_region, str) else states_or_region @@ -147,5 +144,10 @@ def get_non_performing_loans_codes(states_or_region, mode="total"): def get_non_performing_loans(states_or_region, mode="total", start=None, end=None, last=0, freq=None): + """SGS da Inadimplência das operações de crédito. + + Se for um ou mais estados, é esperado uma lista. Se for uma região, + uma string. + Pode ser total, pessoas físicas (PF) ou jurídicas (PJ).""" codes = get_non_performing_loans_codes(states_or_region, mode=mode) return get(codes, start=start, end=end, last=last, multi=True, freq=freq) diff --git a/bcb/utils.py b/bcb/utils.py index 75aa954..066254b 100644 --- a/bcb/utils.py +++ b/bcb/utils.py @@ -1,6 +1,15 @@ from datetime import datetime, date +BRAZILIAN_REGIONS = { + "N": ["AC", "AP", "AM", "PA", "RO", "RR", "TO"], + "NE": ["AL", "BA", "CE", "MA", "PB", "PE", "PI", "RN", "SE"], + "CO": ["DF", "GO", "MT", "MS"], + "SE": ["ES", "MG", "RJ", "SP"], + "S": ["PR", "RS", "SC"] +} + + class Date: def __init__(self, d=None, format="%Y-%m-%d", mindate=date(1900, 1, 1)): d = d if d else mindate diff --git a/tests/sgs/test_regional_economy.py b/tests/sgs/test_regional_economy.py index e21f099..5e46665 100644 --- a/tests/sgs/test_regional_economy.py +++ b/tests/sgs/test_regional_economy.py @@ -1,6 +1,7 @@ import pandas as pd import pytest from bcb.sgs.regional_economy import get_non_performing_loans, get_non_performing_loans_codes +from bcb.utils import BRAZILIAN_REGIONS class TestGetNonPerformingLoansCodes: @@ -25,3 +26,11 @@ def test_get_series_by_states_pf(self, states, expected_columns): assert isinstance(series, pd.DataFrame) assert (series.columns == expected_columns).all() assert len(series) == 10 + + def test_get_series_by_region_pj(self): + south_states = BRAZILIAN_REGIONS["S"] + series = get_non_performing_loans(south_states, last=5, mode="pj") + + assert isinstance(series, pd.DataFrame) + assert (series.columns == south_states).all() + assert len(series) == 5 From ac9981cbc962d8d48e8b1d5ba2e582f8fb7b7f57 Mon Sep 17 00:00:00 2001 From: Ana Paula Gomes Date: Mon, 16 Dec 2024 12:33:26 -0300 Subject: [PATCH 11/17] Add south states and its codes --- bcb/sgs/regional_economy.py | 54 ++++++++++++++++++------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/bcb/sgs/regional_economy.py b/bcb/sgs/regional_economy.py index 41ba32d..6db1e49 100644 --- a/bcb/sgs/regional_economy.py +++ b/bcb/sgs/regional_economy.py @@ -5,8 +5,8 @@ "N": "15888", "NE": "15889", "CO": "15890", - "SE": "", - "S": "", + "SE": "15891", + "S": "15892", } NON_PERFORMING_LOANS_BY_STATE_PF = { "AC": "15861", @@ -16,24 +16,24 @@ "BA": "15865", "CE": "15866", "DF": "15867", - "ES": "", + "ES": "15868", "GO": "15869", "MA": "15870", "MT": "15871", "MS": "15872", - "MG": "", + "MG": "15873", "PA": "15874", "PB": "15875", - "PR": "", + "PR": "15876", "PE": "15877", "PI": "15878", - "RJ": "", + "RJ": "15879", "RN": "15880", - "RS": "", + "RS": "15881", "RO": "15882", "RR": "15883", - "SC": "", - "SP": "", + "SC": "15884", + "SP": "15885", "SE": "15886", "TO": "15887", } @@ -41,8 +41,8 @@ "N": "15920", "NE": "15921", "CO": "15922", - "SE": "", - "S": "", + "SE": "15923", + "S": "15924", } NON_PERFORMING_LOANS_BY_STATE_PJ = { "AC": "15893", @@ -52,24 +52,24 @@ "BA": "15897", "CE": "15898", "DF": "15899", - "ES": "", + "ES": "15900", "GO": "15901", "MA": "15902", "MT": "15903", "MS": "15904", - "MG": "", + "MG": "15905", "PA": "15906", "PB": "15907", - "PR": "", + "PR": "15908", "PE": "15909", "PI": "15910", - "RJ": "", + "RJ": "15911", "RN": "15912", - "RS": "", + "RS": "15913", "RO": "15914", "RR": "15915", - "SC": "", - "SP": "", + "SC": "15916", + "SP": "15917", "SE": "15918", "TO": "15919" } @@ -77,8 +77,8 @@ "N": "15952", "NE": "15953", "CO": "15954", - "SE": "", - "S": "", + "SE": "15955", + "S": "15956", } NON_PERFORMING_LOANS_BY_STATE_TOTAL = { "AC": "15925", @@ -88,24 +88,24 @@ "BA": "15929", "CE": "15930", "DF": "15931", - "ES": "", + "ES": "15932", "GO": "15933", "MA": "15934", "MT": "15935", "MS": "15936", - "MG": "", + "MG": "15937", "PA": "15938", "PB": "15939", - "PR": "", + "PR": "15940", "PE": "15941", "PI": "15942", - "RJ": "", + "RJ": "15943", "RN": "15944", - "RS": "", + "RS": "15945", "RO": "15946", "RR": "15947", - "SC": "", - "SP": "", + "SC": "15948", + "SP": "15949", "SE": "15950", "TO": "15951" } From a22b963bb4f34903b9faaeec2c4d2c719b764d55 Mon Sep 17 00:00:00 2001 From: Ana Paula Gomes Date: Mon, 16 Dec 2024 12:33:37 -0300 Subject: [PATCH 12/17] Add tests to check the constants --- tests/sgs/test_regional_economy.py | 31 ++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/tests/sgs/test_regional_economy.py b/tests/sgs/test_regional_economy.py index 5e46665..671040a 100644 --- a/tests/sgs/test_regional_economy.py +++ b/tests/sgs/test_regional_economy.py @@ -2,6 +2,7 @@ import pytest from bcb.sgs.regional_economy import get_non_performing_loans, get_non_performing_loans_codes from bcb.utils import BRAZILIAN_REGIONS +from bcb.sgs import regional_economy class TestGetNonPerformingLoansCodes: @@ -34,3 +35,33 @@ def test_get_series_by_region_pj(self): assert isinstance(series, pd.DataFrame) assert (series.columns == south_states).all() assert len(series) == 5 + + +class TestNonPerformingLoansCodes: + @pytest.fixture + def non_performing_constants(self): + constants = [ + item + for item in dir(regional_economy) + if item.startswith("NON_PERFORMING_LOANS_BY") + ] + return constants + + def test_if_all_regions_and_states_are_there(self, non_performing_constants): + states = [] + for state in BRAZILIAN_REGIONS.values(): + states.extend(state) + for item_str in non_performing_constants: + item = getattr(regional_economy, item_str) + if "REGION" in str(item): + assert (list(item.values()) == list(BRAZILIAN_REGIONS.keys())), item_str + elif "STATE" in str(item): + assert (list(item.values()) == states), item_str + + def test_check_if_codes_are_unique(self, non_performing_constants): + for item_str in non_performing_constants: + item = getattr(regional_economy, item_str) + + unique_values = set(item.values()) + assert all(unique_values), item_str + assert (len(item.values()) == len(unique_values)), item_str From 5063b9cf545f9afed329f7ae5847865b228b7d05 Mon Sep 17 00:00:00 2001 From: Ana Paula Gomes Date: Mon, 16 Dec 2024 12:34:48 -0300 Subject: [PATCH 13/17] Remove not used modules --- bcb/sgs/regional_economy.py | 1 - 1 file changed, 1 deletion(-) diff --git a/bcb/sgs/regional_economy.py b/bcb/sgs/regional_economy.py index 6db1e49..90960dd 100644 --- a/bcb/sgs/regional_economy.py +++ b/bcb/sgs/regional_economy.py @@ -1,5 +1,4 @@ from bcb.sgs import get -import pandas as pd NON_PERFORMING_LOANS_BY_REGION_PF = { "N": "15888", From 74b8b443942d9b417b65c4c4ec18060459aaa25c Mon Sep 17 00:00:00 2001 From: Ana Paula Gomes Date: Mon, 16 Dec 2024 13:09:47 -0300 Subject: [PATCH 14/17] Fix comment --- bcb/sgs/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bcb/sgs/__init__.py b/bcb/sgs/__init__.py index c328bd3..faf2217 100644 --- a/bcb/sgs/__init__.py +++ b/bcb/sgs/__init__.py @@ -93,7 +93,7 @@ def get(codes, start=None, end=None, last=0, multi=True, freq=None): Data de início da série. Interpreta diferentes tipos e formatos de datas. end : string, int, date, datetime, Timestamp - Data de início da série. + Data final da série. Interpreta diferentes tipos e formatos de datas. last : int Retorna os últimos ``last`` elementos disponíveis da série temporal From 2e43dff54e0951304120c54c8a360deb2f178388 Mon Sep 17 00:00:00 2001 From: Ana Paula Gomes Date: Mon, 16 Dec 2024 13:10:17 -0300 Subject: [PATCH 15/17] Extract states into a constant --- bcb/utils.py | 3 +++ tests/sgs/test_regional_economy.py | 7 ++----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/bcb/utils.py b/bcb/utils.py index 066254b..ad6e48f 100644 --- a/bcb/utils.py +++ b/bcb/utils.py @@ -8,6 +8,9 @@ "SE": ["ES", "MG", "RJ", "SP"], "S": ["PR", "RS", "SC"] } +BRAZILIAN_STATES = [] +for state in BRAZILIAN_REGIONS.values(): + BRAZILIAN_STATES.extend(state) class Date: diff --git a/tests/sgs/test_regional_economy.py b/tests/sgs/test_regional_economy.py index 671040a..709dc06 100644 --- a/tests/sgs/test_regional_economy.py +++ b/tests/sgs/test_regional_economy.py @@ -1,7 +1,7 @@ import pandas as pd import pytest from bcb.sgs.regional_economy import get_non_performing_loans, get_non_performing_loans_codes -from bcb.utils import BRAZILIAN_REGIONS +from bcb.utils import BRAZILIAN_REGIONS, BRAZILIAN_STATES from bcb.sgs import regional_economy @@ -48,15 +48,12 @@ def non_performing_constants(self): return constants def test_if_all_regions_and_states_are_there(self, non_performing_constants): - states = [] - for state in BRAZILIAN_REGIONS.values(): - states.extend(state) for item_str in non_performing_constants: item = getattr(regional_economy, item_str) if "REGION" in str(item): assert (list(item.values()) == list(BRAZILIAN_REGIONS.keys())), item_str elif "STATE" in str(item): - assert (list(item.values()) == states), item_str + assert (list(item.values()) == BRAZILIAN_STATES), item_str def test_check_if_codes_are_unique(self, non_performing_constants): for item_str in non_performing_constants: From e7361991b9206bbb6632abf8ef1218aa79b1f44d Mon Sep 17 00:00:00 2001 From: Ana Paula Gomes Date: Mon, 16 Dec 2024 13:10:34 -0300 Subject: [PATCH 16/17] Add jupyter as a development dependency --- poetry.lock | 1046 +++++++++++++++++++++++++++++++++++++++++++++++- pyproject.toml | 1 + 2 files changed, 1045 insertions(+), 2 deletions(-) diff --git a/poetry.lock b/poetry.lock index dfafe9a..47a65fd 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. [[package]] name = "accessible-pygments" @@ -62,6 +62,82 @@ files = [ {file = "appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee"}, ] +[[package]] +name = "argon2-cffi" +version = "23.1.0" +description = "Argon2 for Python" +optional = false +python-versions = ">=3.7" +files = [ + {file = "argon2_cffi-23.1.0-py3-none-any.whl", hash = "sha256:c670642b78ba29641818ab2e68bd4e6a78ba53b7eff7b4c3815ae16abf91c7ea"}, + {file = "argon2_cffi-23.1.0.tar.gz", hash = "sha256:879c3e79a2729ce768ebb7d36d4609e3a78a4ca2ec3a9f12286ca057e3d0db08"}, +] + +[package.dependencies] +argon2-cffi-bindings = "*" + +[package.extras] +dev = ["argon2-cffi[tests,typing]", "tox (>4)"] +docs = ["furo", "myst-parser", "sphinx", "sphinx-copybutton", "sphinx-notfound-page"] +tests = ["hypothesis", "pytest"] +typing = ["mypy"] + +[[package]] +name = "argon2-cffi-bindings" +version = "21.2.0" +description = "Low-level CFFI bindings for Argon2" +optional = false +python-versions = ">=3.6" +files = [ + {file = "argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f"}, + {file = "argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3e385d1c39c520c08b53d63300c3ecc28622f076f4c2b0e6d7e796e9f6502194"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c3e3cc67fdb7d82c4718f19b4e7a87123caf8a93fde7e23cf66ac0337d3cb3f"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a22ad9800121b71099d0fb0a65323810a15f2e292f2ba450810a7316e128ee5"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f9f8b450ed0547e3d473fdc8612083fd08dd2120d6ac8f73828df9b7d45bb351"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:93f9bf70084f97245ba10ee36575f0c3f1e7d7724d67d8e5b08e61787c320ed7"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3b9ef65804859d335dc6b31582cad2c5166f0c3e7975f324d9ffaa34ee7e6583"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4966ef5848d820776f5f562a7d45fdd70c2f330c961d0d745b784034bd9f48d"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20ef543a89dee4db46a1a6e206cd015360e5a75822f76df533845c3cbaf72670"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed2937d286e2ad0cc79a7087d3c272832865f779430e0cc2b4f3718d3159b0cb"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5e00316dabdaea0b2dd82d141cc66889ced0cdcbfa599e8b471cf22c620c329a"}, +] + +[package.dependencies] +cffi = ">=1.0.1" + +[package.extras] +dev = ["cogapp", "pre-commit", "pytest", "wheel"] +tests = ["pytest"] + +[[package]] +name = "arrow" +version = "1.3.0" +description = "Better dates & times for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80"}, + {file = "arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85"}, +] + +[package.dependencies] +python-dateutil = ">=2.7.0" +types-python-dateutil = ">=2.8.10" + +[package.extras] +doc = ["doc8", "sphinx (>=7.0.0)", "sphinx-autobuild", "sphinx-autodoc-typehints", "sphinx_rtd_theme (>=1.3.0)"] +test = ["dateparser (==1.*)", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytz (==2021.1)", "simplejson (==3.*)"] + [[package]] name = "asttokens" version = "2.4.1" @@ -80,6 +156,39 @@ six = ">=1.12.0" astroid = ["astroid (>=1,<2)", "astroid (>=2,<4)"] test = ["astroid (>=1,<2)", "astroid (>=2,<4)", "pytest"] +[[package]] +name = "async-lru" +version = "2.0.4" +description = "Simple LRU cache for asyncio" +optional = false +python-versions = ">=3.8" +files = [ + {file = "async-lru-2.0.4.tar.gz", hash = "sha256:b8a59a5df60805ff63220b2a0c5b5393da5521b113cd5465a44eb037d81a5627"}, + {file = "async_lru-2.0.4-py3-none-any.whl", hash = "sha256:ff02944ce3c288c5be660c42dbcca0742b32c3b279d6dceda655190240b99224"}, +] + +[package.dependencies] +typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""} + +[[package]] +name = "attrs" +version = "24.3.0" +description = "Classes Without Boilerplate" +optional = false +python-versions = ">=3.8" +files = [ + {file = "attrs-24.3.0-py3-none-any.whl", hash = "sha256:ac96cd038792094f438ad1f6ff80837353805ac950cd2aa0e0625ef19850c308"}, + {file = "attrs-24.3.0.tar.gz", hash = "sha256:8f5c07333d543103541ba7be0e2ce16eeee8130cb0b3f9238ab904ce1e85baff"}, +] + +[package.extras] +benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit-uv", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"] +tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] + [[package]] name = "babel" version = "2.15.0" @@ -161,6 +270,23 @@ d = ["aiohttp (>=3.7.4)", "aiohttp (>=3.7.4,!=3.9.0)"] jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] uvloop = ["uvloop (>=0.15.2)"] +[[package]] +name = "bleach" +version = "6.2.0" +description = "An easy safelist-based HTML-sanitizing tool." +optional = false +python-versions = ">=3.9" +files = [ + {file = "bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e"}, + {file = "bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f"}, +] + +[package.dependencies] +webencodings = "*" + +[package.extras] +css = ["tinycss2 (>=1.1.0,<1.5)"] + [[package]] name = "certifi" version = "2024.6.2" @@ -497,6 +623,17 @@ files = [ {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"}, ] +[[package]] +name = "defusedxml" +version = "0.7.1" +description = "XML bomb protection for Python stdlib modules" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +files = [ + {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"}, + {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, +] + [[package]] name = "docutils" version = "0.21.2" @@ -536,6 +673,20 @@ files = [ [package.extras] tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich"] +[[package]] +name = "fastjsonschema" +version = "2.21.1" +description = "Fastest Python implementation of JSON schema" +optional = false +python-versions = "*" +files = [ + {file = "fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667"}, + {file = "fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4"}, +] + +[package.extras] +devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benchmark", "pytest-cache", "validictory"] + [[package]] name = "flaky" version = "3.8.1" @@ -612,6 +763,17 @@ ufo = ["fs (>=2.2.0,<3)"] unicode = ["unicodedata2 (>=15.1.0)"] woff = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "zopfli (>=0.1.4)"] +[[package]] +name = "fqdn" +version = "1.4.0" +description = "Validate fully-qualified domain names compliant to RFC 1035 and the preferred form in RFC 3686 s. 2." +optional = false +python-versions = "*" +files = [ + {file = "fqdn-1.4.0-py3-none-any.whl", hash = "sha256:e935616ae81c9c60a22267593fe8e6af68cecc68549cc71bb9bfbcbbcb383386"}, + {file = "fqdn-1.4.0.tar.gz", hash = "sha256:30e8f2e685ce87cdace4712fd97c5d09f5e6fa519bbb66e8f188f6a7cb3a5c4e"}, +] + [[package]] name = "furo" version = "2024.5.6" @@ -789,6 +951,41 @@ qtconsole = ["qtconsole"] test = ["pickleshare", "pytest", "pytest-asyncio (<0.22)", "testpath"] test-extra = ["curio", "ipython[test]", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.23)", "pandas", "trio"] +[[package]] +name = "ipywidgets" +version = "8.1.5" +description = "Jupyter interactive widgets" +optional = false +python-versions = ">=3.7" +files = [ + {file = "ipywidgets-8.1.5-py3-none-any.whl", hash = "sha256:3290f526f87ae6e77655555baba4f36681c555b8bdbbff430b70e52c34c86245"}, + {file = "ipywidgets-8.1.5.tar.gz", hash = "sha256:870e43b1a35656a80c18c9503bbf2d16802db1cb487eec6fab27d683381dde17"}, +] + +[package.dependencies] +comm = ">=0.1.3" +ipython = ">=6.1.0" +jupyterlab-widgets = ">=3.0.12,<3.1.0" +traitlets = ">=4.3.1" +widgetsnbextension = ">=4.0.12,<4.1.0" + +[package.extras] +test = ["ipykernel", "jsonschema", "pytest (>=3.6.0)", "pytest-cov", "pytz"] + +[[package]] +name = "isoduration" +version = "20.11.0" +description = "Operations with ISO 8601 durations" +optional = false +python-versions = ">=3.7" +files = [ + {file = "isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042"}, + {file = "isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9"}, +] + +[package.dependencies] +arrow = ">=0.15.0" + [[package]] name = "jedi" version = "0.19.1" @@ -825,6 +1022,93 @@ MarkupSafe = ">=2.0" [package.extras] i18n = ["Babel (>=2.7)"] +[[package]] +name = "json5" +version = "0.10.0" +description = "A Python implementation of the JSON5 data format." +optional = false +python-versions = ">=3.8.0" +files = [ + {file = "json5-0.10.0-py3-none-any.whl", hash = "sha256:19b23410220a7271e8377f81ba8aacba2fdd56947fbb137ee5977cbe1f5e8dfa"}, + {file = "json5-0.10.0.tar.gz", hash = "sha256:e66941c8f0a02026943c52c2eb34ebeb2a6f819a0be05920a6f5243cd30fd559"}, +] + +[package.extras] +dev = ["build (==1.2.2.post1)", "coverage (==7.5.3)", "mypy (==1.13.0)", "pip (==24.3.1)", "pylint (==3.2.3)", "ruff (==0.7.3)", "twine (==5.1.1)", "uv (==0.5.1)"] + +[[package]] +name = "jsonpointer" +version = "3.0.0" +description = "Identify specific nodes in a JSON document (RFC 6901)" +optional = false +python-versions = ">=3.7" +files = [ + {file = "jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942"}, + {file = "jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef"}, +] + +[[package]] +name = "jsonschema" +version = "4.23.0" +description = "An implementation of JSON Schema validation for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "jsonschema-4.23.0-py3-none-any.whl", hash = "sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566"}, + {file = "jsonschema-4.23.0.tar.gz", hash = "sha256:d71497fef26351a33265337fa77ffeb82423f3ea21283cd9467bb03999266bc4"}, +] + +[package.dependencies] +attrs = ">=22.2.0" +fqdn = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} +idna = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} +isoduration = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} +jsonpointer = {version = ">1.13", optional = true, markers = "extra == \"format-nongpl\""} +jsonschema-specifications = ">=2023.03.6" +referencing = ">=0.28.4" +rfc3339-validator = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} +rfc3986-validator = {version = ">0.1.0", optional = true, markers = "extra == \"format-nongpl\""} +rpds-py = ">=0.7.1" +uri-template = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} +webcolors = {version = ">=24.6.0", optional = true, markers = "extra == \"format-nongpl\""} + +[package.extras] +format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] +format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=24.6.0)"] + +[[package]] +name = "jsonschema-specifications" +version = "2024.10.1" +description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" +optional = false +python-versions = ">=3.9" +files = [ + {file = "jsonschema_specifications-2024.10.1-py3-none-any.whl", hash = "sha256:a09a0680616357d9a0ecf05c12ad234479f549239d0f5b55f3deea67475da9bf"}, + {file = "jsonschema_specifications-2024.10.1.tar.gz", hash = "sha256:0f38b83639958ce1152d02a7f062902c41c8fd20d558b0c34344292d417ae272"}, +] + +[package.dependencies] +referencing = ">=0.31.0" + +[[package]] +name = "jupyter" +version = "1.1.1" +description = "Jupyter metapackage. Install all the Jupyter components in one go." +optional = false +python-versions = "*" +files = [ + {file = "jupyter-1.1.1-py2.py3-none-any.whl", hash = "sha256:7a59533c22af65439b24bbe60373a4e95af8f16ac65a6c00820ad378e3f7cc83"}, + {file = "jupyter-1.1.1.tar.gz", hash = "sha256:d55467bceabdea49d7e3624af7e33d59c37fff53ed3a350e1ac957bed731de7a"}, +] + +[package.dependencies] +ipykernel = "*" +ipywidgets = "*" +jupyter-console = "*" +jupyterlab = "*" +nbconvert = "*" +notebook = "*" + [[package]] name = "jupyter-client" version = "8.6.2" @@ -847,6 +1131,30 @@ traitlets = ">=5.3" docs = ["ipykernel", "myst-parser", "pydata-sphinx-theme", "sphinx (>=4)", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pytest (<8.2.0)", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"] +[[package]] +name = "jupyter-console" +version = "6.6.3" +description = "Jupyter terminal console" +optional = false +python-versions = ">=3.7" +files = [ + {file = "jupyter_console-6.6.3-py3-none-any.whl", hash = "sha256:309d33409fcc92ffdad25f0bcdf9a4a9daa61b6f341177570fdac03de5352485"}, + {file = "jupyter_console-6.6.3.tar.gz", hash = "sha256:566a4bf31c87adbfadf22cdf846e3069b59a71ed5da71d6ba4d8aaad14a53539"}, +] + +[package.dependencies] +ipykernel = ">=6.14" +ipython = "*" +jupyter-client = ">=7.0.0" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" +prompt-toolkit = ">=3.0.30" +pygments = "*" +pyzmq = ">=17" +traitlets = ">=5.4" + +[package.extras] +test = ["flaky", "pexpect", "pytest"] + [[package]] name = "jupyter-core" version = "5.7.2" @@ -867,6 +1175,181 @@ traitlets = ">=5.3" docs = ["myst-parser", "pydata-sphinx-theme", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "traitlets"] test = ["ipykernel", "pre-commit", "pytest (<8)", "pytest-cov", "pytest-timeout"] +[[package]] +name = "jupyter-events" +version = "0.10.0" +description = "Jupyter Event System library" +optional = false +python-versions = ">=3.8" +files = [ + {file = "jupyter_events-0.10.0-py3-none-any.whl", hash = "sha256:4b72130875e59d57716d327ea70d3ebc3af1944d3717e5a498b8a06c6c159960"}, + {file = "jupyter_events-0.10.0.tar.gz", hash = "sha256:670b8229d3cc882ec782144ed22e0d29e1c2d639263f92ca8383e66682845e22"}, +] + +[package.dependencies] +jsonschema = {version = ">=4.18.0", extras = ["format-nongpl"]} +python-json-logger = ">=2.0.4" +pyyaml = ">=5.3" +referencing = "*" +rfc3339-validator = "*" +rfc3986-validator = ">=0.1.1" +traitlets = ">=5.3" + +[package.extras] +cli = ["click", "rich"] +docs = ["jupyterlite-sphinx", "myst-parser", "pydata-sphinx-theme", "sphinxcontrib-spelling"] +test = ["click", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.19.0)", "pytest-console-scripts", "rich"] + +[[package]] +name = "jupyter-lsp" +version = "2.2.5" +description = "Multi-Language Server WebSocket proxy for Jupyter Notebook/Lab server" +optional = false +python-versions = ">=3.8" +files = [ + {file = "jupyter-lsp-2.2.5.tar.gz", hash = "sha256:793147a05ad446f809fd53ef1cd19a9f5256fd0a2d6b7ce943a982cb4f545001"}, + {file = "jupyter_lsp-2.2.5-py3-none-any.whl", hash = "sha256:45fbddbd505f3fbfb0b6cb2f1bc5e15e83ab7c79cd6e89416b248cb3c00c11da"}, +] + +[package.dependencies] +jupyter-server = ">=1.1.2" + +[[package]] +name = "jupyter-server" +version = "2.14.2" +description = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications." +optional = false +python-versions = ">=3.8" +files = [ + {file = "jupyter_server-2.14.2-py3-none-any.whl", hash = "sha256:47ff506127c2f7851a17bf4713434208fc490955d0e8632e95014a9a9afbeefd"}, + {file = "jupyter_server-2.14.2.tar.gz", hash = "sha256:66095021aa9638ced276c248b1d81862e4c50f292d575920bbe960de1c56b12b"}, +] + +[package.dependencies] +anyio = ">=3.1.0" +argon2-cffi = ">=21.1" +jinja2 = ">=3.0.3" +jupyter-client = ">=7.4.4" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" +jupyter-events = ">=0.9.0" +jupyter-server-terminals = ">=0.4.4" +nbconvert = ">=6.4.4" +nbformat = ">=5.3.0" +overrides = ">=5.0" +packaging = ">=22.0" +prometheus-client = ">=0.9" +pywinpty = {version = ">=2.0.1", markers = "os_name == \"nt\""} +pyzmq = ">=24" +send2trash = ">=1.8.2" +terminado = ">=0.8.3" +tornado = ">=6.2.0" +traitlets = ">=5.6.0" +websocket-client = ">=1.7" + +[package.extras] +docs = ["ipykernel", "jinja2", "jupyter-client", "myst-parser", "nbformat", "prometheus-client", "pydata-sphinx-theme", "send2trash", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-openapi (>=0.8.0)", "sphinxcontrib-spelling", "sphinxemoji", "tornado", "typing-extensions"] +test = ["flaky", "ipykernel", "pre-commit", "pytest (>=7.0,<9)", "pytest-console-scripts", "pytest-jupyter[server] (>=0.7)", "pytest-timeout", "requests"] + +[[package]] +name = "jupyter-server-terminals" +version = "0.5.3" +description = "A Jupyter Server Extension Providing Terminals." +optional = false +python-versions = ">=3.8" +files = [ + {file = "jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa"}, + {file = "jupyter_server_terminals-0.5.3.tar.gz", hash = "sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269"}, +] + +[package.dependencies] +pywinpty = {version = ">=2.0.3", markers = "os_name == \"nt\""} +terminado = ">=0.8.3" + +[package.extras] +docs = ["jinja2", "jupyter-server", "mistune (<4.0)", "myst-parser", "nbformat", "packaging", "pydata-sphinx-theme", "sphinxcontrib-github-alt", "sphinxcontrib-openapi", "sphinxcontrib-spelling", "sphinxemoji", "tornado"] +test = ["jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-jupyter[server] (>=0.5.3)", "pytest-timeout"] + +[[package]] +name = "jupyterlab" +version = "4.3.3" +description = "JupyterLab computational environment" +optional = false +python-versions = ">=3.8" +files = [ + {file = "jupyterlab-4.3.3-py3-none-any.whl", hash = "sha256:32a8fd30677e734ffcc3916a4758b9dab21b02015b668c60eb36f84357b7d4b1"}, + {file = "jupyterlab-4.3.3.tar.gz", hash = "sha256:76fa39e548fdac94dc1204af5956c556f54c785f70ee26aa47ea08eda4d5bbcd"}, +] + +[package.dependencies] +async-lru = ">=1.0.0" +httpx = ">=0.25.0" +ipykernel = ">=6.5.0" +jinja2 = ">=3.0.3" +jupyter-core = "*" +jupyter-lsp = ">=2.0.0" +jupyter-server = ">=2.4.0,<3" +jupyterlab-server = ">=2.27.1,<3" +notebook-shim = ">=0.2" +packaging = "*" +setuptools = ">=40.8.0" +tomli = {version = ">=1.2.2", markers = "python_version < \"3.11\""} +tornado = ">=6.2.0" +traitlets = "*" + +[package.extras] +dev = ["build", "bump2version", "coverage", "hatch", "pre-commit", "pytest-cov", "ruff (==0.6.9)"] +docs = ["jsx-lexer", "myst-parser", "pydata-sphinx-theme (>=0.13.0)", "pytest", "pytest-check-links", "pytest-jupyter", "sphinx (>=1.8,<8.1.0)", "sphinx-copybutton"] +docs-screenshots = ["altair (==5.4.1)", "ipython (==8.16.1)", "ipywidgets (==8.1.5)", "jupyterlab-geojson (==3.4.0)", "jupyterlab-language-pack-zh-cn (==4.2.post3)", "matplotlib (==3.9.2)", "nbconvert (>=7.0.0)", "pandas (==2.2.3)", "scipy (==1.14.1)", "vega-datasets (==0.9.0)"] +test = ["coverage", "pytest (>=7.0)", "pytest-check-links (>=0.7)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter (>=0.5.3)", "pytest-timeout", "pytest-tornasync", "requests", "requests-cache", "virtualenv"] +upgrade-extension = ["copier (>=9,<10)", "jinja2-time (<0.3)", "pydantic (<3.0)", "pyyaml-include (<3.0)", "tomli-w (<2.0)"] + +[[package]] +name = "jupyterlab-pygments" +version = "0.3.0" +description = "Pygments theme using JupyterLab CSS variables" +optional = false +python-versions = ">=3.8" +files = [ + {file = "jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780"}, + {file = "jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d"}, +] + +[[package]] +name = "jupyterlab-server" +version = "2.27.3" +description = "A set of server components for JupyterLab and JupyterLab like applications." +optional = false +python-versions = ">=3.8" +files = [ + {file = "jupyterlab_server-2.27.3-py3-none-any.whl", hash = "sha256:e697488f66c3db49df675158a77b3b017520d772c6e1548c7d9bcc5df7944ee4"}, + {file = "jupyterlab_server-2.27.3.tar.gz", hash = "sha256:eb36caca59e74471988f0ae25c77945610b887f777255aa21f8065def9e51ed4"}, +] + +[package.dependencies] +babel = ">=2.10" +jinja2 = ">=3.0.3" +json5 = ">=0.9.0" +jsonschema = ">=4.18.0" +jupyter-server = ">=1.21,<3" +packaging = ">=21.3" +requests = ">=2.31" + +[package.extras] +docs = ["autodoc-traits", "jinja2 (<3.2.0)", "mistune (<4)", "myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-copybutton", "sphinxcontrib-openapi (>0.8)"] +openapi = ["openapi-core (>=0.18.0,<0.19.0)", "ruamel-yaml"] +test = ["hatch", "ipykernel", "openapi-core (>=0.18.0,<0.19.0)", "openapi-spec-validator (>=0.6.0,<0.8.0)", "pytest (>=7.0,<8)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter[server] (>=0.6.2)", "pytest-timeout", "requests-mock", "ruamel-yaml", "sphinxcontrib-spelling", "strict-rfc3339", "werkzeug"] + +[[package]] +name = "jupyterlab-widgets" +version = "3.0.13" +description = "Jupyter interactive widgets for JupyterLab" +optional = false +python-versions = ">=3.7" +files = [ + {file = "jupyterlab_widgets-3.0.13-py3-none-any.whl", hash = "sha256:e3cda2c233ce144192f1e29914ad522b2f4c40e77214b0cc97377ca3d323db54"}, + {file = "jupyterlab_widgets-3.0.13.tar.gz", hash = "sha256:a2966d385328c1942b683a8cd96b89b8dd82c8b8f81dda902bb2bc06d46f5bed"}, +] + [[package]] name = "kiwisolver" version = "1.4.5" @@ -1273,6 +1756,17 @@ files = [ [package.dependencies] traitlets = "*" +[[package]] +name = "mistune" +version = "3.0.2" +description = "A sane and fast Markdown parser with useful plugins and renderers" +optional = false +python-versions = ">=3.7" +files = [ + {file = "mistune-3.0.2-py3-none-any.whl", hash = "sha256:71481854c30fdbc938963d3605b72501f5c10a9320ecd412c121c163a1c7d205"}, + {file = "mistune-3.0.2.tar.gz", hash = "sha256:fc7f93ded930c92394ef2cb6f04a8aabab4117a91449e72dcc8dfa646a508be8"}, +] + [[package]] name = "mypy-extensions" version = "1.0.0" @@ -1284,6 +1778,86 @@ files = [ {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, ] +[[package]] +name = "nbclient" +version = "0.10.1" +description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor." +optional = false +python-versions = ">=3.8.0" +files = [ + {file = "nbclient-0.10.1-py3-none-any.whl", hash = "sha256:949019b9240d66897e442888cfb618f69ef23dc71c01cb5fced8499c2cfc084d"}, + {file = "nbclient-0.10.1.tar.gz", hash = "sha256:3e93e348ab27e712acd46fccd809139e356eb9a31aab641d1a7991a6eb4e6f68"}, +] + +[package.dependencies] +jupyter-client = ">=6.1.12" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" +nbformat = ">=5.1" +traitlets = ">=5.4" + +[package.extras] +dev = ["pre-commit"] +docs = ["autodoc-traits", "flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "mock", "moto", "myst-parser", "nbconvert (>=7.0.0)", "pytest (>=7.0,<8)", "pytest-asyncio", "pytest-cov (>=4.0)", "sphinx (>=1.7)", "sphinx-book-theme", "sphinxcontrib-spelling", "testpath", "xmltodict"] +test = ["flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "nbconvert (>=7.0.0)", "pytest (>=7.0,<8)", "pytest-asyncio", "pytest-cov (>=4.0)", "testpath", "xmltodict"] + +[[package]] +name = "nbconvert" +version = "7.16.4" +description = "Converting Jupyter Notebooks (.ipynb files) to other formats. Output formats include asciidoc, html, latex, markdown, pdf, py, rst, script. nbconvert can be used both as a Python library (`import nbconvert`) or as a command line tool (invoked as `jupyter nbconvert ...`)." +optional = false +python-versions = ">=3.8" +files = [ + {file = "nbconvert-7.16.4-py3-none-any.whl", hash = "sha256:05873c620fe520b6322bf8a5ad562692343fe3452abda5765c7a34b7d1aa3eb3"}, + {file = "nbconvert-7.16.4.tar.gz", hash = "sha256:86ca91ba266b0a448dc96fa6c5b9d98affabde2867b363258703536807f9f7f4"}, +] + +[package.dependencies] +beautifulsoup4 = "*" +bleach = "!=5.0.0" +defusedxml = "*" +jinja2 = ">=3.0" +jupyter-core = ">=4.7" +jupyterlab-pygments = "*" +markupsafe = ">=2.0" +mistune = ">=2.0.3,<4" +nbclient = ">=0.5.0" +nbformat = ">=5.7" +packaging = "*" +pandocfilters = ">=1.4.1" +pygments = ">=2.4.1" +tinycss2 = "*" +traitlets = ">=5.1" + +[package.extras] +all = ["flaky", "ipykernel", "ipython", "ipywidgets (>=7.5)", "myst-parser", "nbsphinx (>=0.2.12)", "playwright", "pydata-sphinx-theme", "pyqtwebengine (>=5.15)", "pytest (>=7)", "sphinx (==5.0.2)", "sphinxcontrib-spelling", "tornado (>=6.1)"] +docs = ["ipykernel", "ipython", "myst-parser", "nbsphinx (>=0.2.12)", "pydata-sphinx-theme", "sphinx (==5.0.2)", "sphinxcontrib-spelling"] +qtpdf = ["pyqtwebengine (>=5.15)"] +qtpng = ["pyqtwebengine (>=5.15)"] +serve = ["tornado (>=6.1)"] +test = ["flaky", "ipykernel", "ipywidgets (>=7.5)", "pytest (>=7)"] +webpdf = ["playwright"] + +[[package]] +name = "nbformat" +version = "5.10.4" +description = "The Jupyter Notebook format" +optional = false +python-versions = ">=3.8" +files = [ + {file = "nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b"}, + {file = "nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a"}, +] + +[package.dependencies] +fastjsonschema = ">=2.15" +jsonschema = ">=2.6" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" +traitlets = ">=5.1" + +[package.extras] +docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] +test = ["pep440", "pre-commit", "pytest", "testpath"] + [[package]] name = "nest-asyncio" version = "1.6.0" @@ -1295,6 +1869,46 @@ files = [ {file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe"}, ] +[[package]] +name = "notebook" +version = "7.3.1" +description = "Jupyter Notebook - A web-based notebook environment for interactive computing" +optional = false +python-versions = ">=3.8" +files = [ + {file = "notebook-7.3.1-py3-none-any.whl", hash = "sha256:212e1486b2230fe22279043f33c7db5cf9a01d29feb063a85cb139747b7c9483"}, + {file = "notebook-7.3.1.tar.gz", hash = "sha256:84381c2a82d867517fd25b86e986dae1fe113a70b98f03edff9b94e499fec8fa"}, +] + +[package.dependencies] +jupyter-server = ">=2.4.0,<3" +jupyterlab = ">=4.3.2,<4.4" +jupyterlab-server = ">=2.27.1,<3" +notebook-shim = ">=0.2,<0.3" +tornado = ">=6.2.0" + +[package.extras] +dev = ["hatch", "pre-commit"] +docs = ["myst-parser", "nbsphinx", "pydata-sphinx-theme", "sphinx (>=1.3.6)", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] +test = ["importlib-resources (>=5.0)", "ipykernel", "jupyter-server[test] (>=2.4.0,<3)", "jupyterlab-server[test] (>=2.27.1,<3)", "nbval", "pytest (>=7.0)", "pytest-console-scripts", "pytest-timeout", "pytest-tornasync", "requests"] + +[[package]] +name = "notebook-shim" +version = "0.2.4" +description = "A shim layer for notebook traits and config" +optional = false +python-versions = ">=3.7" +files = [ + {file = "notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef"}, + {file = "notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb"}, +] + +[package.dependencies] +jupyter-server = ">=1.8,<3" + +[package.extras] +test = ["pytest", "pytest-console-scripts", "pytest-jupyter", "pytest-tornasync"] + [[package]] name = "numpy" version = "1.26.4" @@ -1340,6 +1954,17 @@ files = [ {file = "numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010"}, ] +[[package]] +name = "overrides" +version = "7.7.0" +description = "A decorator to automatically detect mismatch when overriding a method." +optional = false +python-versions = ">=3.6" +files = [ + {file = "overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49"}, + {file = "overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a"}, +] + [[package]] name = "packaging" version = "24.1" @@ -1424,6 +2049,17 @@ sql-other = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-d test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)"] xml = ["lxml (>=4.9.2)"] +[[package]] +name = "pandocfilters" +version = "1.5.1" +description = "Utilities for writing pandoc filters in python" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc"}, + {file = "pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e"}, +] + [[package]] name = "parso" version = "0.8.4" @@ -1592,6 +2228,20 @@ files = [ dev = ["pre-commit", "tox"] testing = ["pytest", "pytest-benchmark"] +[[package]] +name = "prometheus-client" +version = "0.21.1" +description = "Python client for the Prometheus monitoring system." +optional = false +python-versions = ">=3.8" +files = [ + {file = "prometheus_client-0.21.1-py3-none-any.whl", hash = "sha256:594b45c410d6f4f8888940fe80b5cc2521b305a1fafe1c58609ef715a001f301"}, + {file = "prometheus_client-0.21.1.tar.gz", hash = "sha256:252505a722ac04b0456be05c05f75f45d760c2911ffc45f2a06bcaed9f3ae3fb"}, +] + +[package.extras] +twisted = ["twisted"] + [[package]] name = "prompt-toolkit" version = "3.0.47" @@ -1773,6 +2423,20 @@ files = [ [package.dependencies] six = ">=1.5" +[[package]] +name = "python-json-logger" +version = "3.2.1" +description = "JSON Log Formatter for the Python Logging Package" +optional = false +python-versions = ">=3.8" +files = [ + {file = "python_json_logger-3.2.1-py3-none-any.whl", hash = "sha256:cdc17047eb5374bd311e748b42f99d71223f3b0e186f4206cc5d52aefe85b090"}, + {file = "python_json_logger-3.2.1.tar.gz", hash = "sha256:8eb0554ea17cb75b05d2848bc14fb02fbdbd9d6972120781b974380bfa162008"}, +] + +[package.extras] +dev = ["backports.zoneinfo", "black", "build", "freezegun", "mdx_truly_sane_lists", "mike", "mkdocs", "mkdocs-awesome-pages-plugin", "mkdocs-gen-files", "mkdocs-literate-nav", "mkdocs-material (>=8.5)", "mkdocstrings[python]", "msgspec", "msgspec-python313-pre", "mypy", "orjson", "pylint", "pytest", "tzdata", "validate-pyproject[all]"] + [[package]] name = "pytz" version = "2024.1" @@ -1807,6 +2471,83 @@ files = [ {file = "pywin32-306-cp39-cp39-win_amd64.whl", hash = "sha256:39b61c15272833b5c329a2989999dcae836b1eed650252ab1b7bfbe1d59f30f4"}, ] +[[package]] +name = "pywinpty" +version = "2.0.14" +description = "Pseudo terminal support for Windows from Python." +optional = false +python-versions = ">=3.8" +files = [ + {file = "pywinpty-2.0.14-cp310-none-win_amd64.whl", hash = "sha256:0b149c2918c7974f575ba79f5a4aad58bd859a52fa9eb1296cc22aa412aa411f"}, + {file = "pywinpty-2.0.14-cp311-none-win_amd64.whl", hash = "sha256:cf2a43ac7065b3e0dc8510f8c1f13a75fb8fde805efa3b8cff7599a1ef497bc7"}, + {file = "pywinpty-2.0.14-cp312-none-win_amd64.whl", hash = "sha256:55dad362ef3e9408ade68fd173e4f9032b3ce08f68cfe7eacb2c263ea1179737"}, + {file = "pywinpty-2.0.14-cp313-none-win_amd64.whl", hash = "sha256:074fb988a56ec79ca90ed03a896d40707131897cefb8f76f926e3834227f2819"}, + {file = "pywinpty-2.0.14-cp39-none-win_amd64.whl", hash = "sha256:5725fd56f73c0531ec218663bd8c8ff5acc43c78962fab28564871b5fce053fd"}, + {file = "pywinpty-2.0.14.tar.gz", hash = "sha256:18bd9529e4a5daf2d9719aa17788ba6013e594ae94c5a0c27e83df3278b0660e"}, +] + +[[package]] +name = "pyyaml" +version = "6.0.2" +description = "YAML parser and emitter for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, + {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, + {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, + {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, + {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, + {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, + {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, + {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, + {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, + {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, + {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, + {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, + {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, + {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, + {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, + {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, + {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, +] + [[package]] name = "pyzmq" version = "26.0.3" @@ -1907,6 +2648,21 @@ files = [ [package.dependencies] cffi = {version = "*", markers = "implementation_name == \"pypy\""} +[[package]] +name = "referencing" +version = "0.35.1" +description = "JSON Referencing + Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "referencing-0.35.1-py3-none-any.whl", hash = "sha256:eda6d3234d62814d1c64e305c1331c9a3a6132da475ab6382eaa997b21ee75de"}, + {file = "referencing-0.35.1.tar.gz", hash = "sha256:25b42124a6c8b632a425174f24087783efb348a6f1e0008e63cd4466fedf703c"}, +] + +[package.dependencies] +attrs = ">=22.2.0" +rpds-py = ">=0.7.0" + [[package]] name = "requests" version = "2.32.3" @@ -1928,6 +2684,179 @@ urllib3 = ">=1.21.1,<3" socks = ["PySocks (>=1.5.6,!=1.5.7)"] use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] +[[package]] +name = "rfc3339-validator" +version = "0.1.4" +description = "A pure python RFC3339 validator" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +files = [ + {file = "rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa"}, + {file = "rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b"}, +] + +[package.dependencies] +six = "*" + +[[package]] +name = "rfc3986-validator" +version = "0.1.1" +description = "Pure python rfc3986 validator" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +files = [ + {file = "rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9"}, + {file = "rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055"}, +] + +[[package]] +name = "rpds-py" +version = "0.22.3" +description = "Python bindings to Rust's persistent data structures (rpds)" +optional = false +python-versions = ">=3.9" +files = [ + {file = "rpds_py-0.22.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:6c7b99ca52c2c1752b544e310101b98a659b720b21db00e65edca34483259967"}, + {file = "rpds_py-0.22.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:be2eb3f2495ba669d2a985f9b426c1797b7d48d6963899276d22f23e33d47e37"}, + {file = "rpds_py-0.22.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70eb60b3ae9245ddea20f8a4190bd79c705a22f8028aaf8bbdebe4716c3fab24"}, + {file = "rpds_py-0.22.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4041711832360a9b75cfb11b25a6a97c8fb49c07b8bd43d0d02b45d0b499a4ff"}, + {file = "rpds_py-0.22.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:64607d4cbf1b7e3c3c8a14948b99345eda0e161b852e122c6bb71aab6d1d798c"}, + {file = "rpds_py-0.22.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e69b0a0e2537f26d73b4e43ad7bc8c8efb39621639b4434b76a3de50c6966e"}, + {file = "rpds_py-0.22.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc27863442d388870c1809a87507727b799c8460573cfbb6dc0eeaef5a11b5ec"}, + {file = "rpds_py-0.22.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e79dd39f1e8c3504be0607e5fc6e86bb60fe3584bec8b782578c3b0fde8d932c"}, + {file = "rpds_py-0.22.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e0fa2d4ec53dc51cf7d3bb22e0aa0143966119f42a0c3e4998293a3dd2856b09"}, + {file = "rpds_py-0.22.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:fda7cb070f442bf80b642cd56483b5548e43d366fe3f39b98e67cce780cded00"}, + {file = "rpds_py-0.22.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cff63a0272fcd259dcc3be1657b07c929c466b067ceb1c20060e8d10af56f5bf"}, + {file = "rpds_py-0.22.3-cp310-cp310-win32.whl", hash = "sha256:9bd7228827ec7bb817089e2eb301d907c0d9827a9e558f22f762bb690b131652"}, + {file = "rpds_py-0.22.3-cp310-cp310-win_amd64.whl", hash = "sha256:9beeb01d8c190d7581a4d59522cd3d4b6887040dcfc744af99aa59fef3e041a8"}, + {file = "rpds_py-0.22.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d20cfb4e099748ea39e6f7b16c91ab057989712d31761d3300d43134e26e165f"}, + {file = "rpds_py-0.22.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:68049202f67380ff9aa52f12e92b1c30115f32e6895cd7198fa2a7961621fc5a"}, + {file = "rpds_py-0.22.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb4f868f712b2dd4bcc538b0a0c1f63a2b1d584c925e69a224d759e7070a12d5"}, + {file = "rpds_py-0.22.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bc51abd01f08117283c5ebf64844a35144a0843ff7b2983e0648e4d3d9f10dbb"}, + {file = "rpds_py-0.22.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0f3cec041684de9a4684b1572fe28c7267410e02450f4561700ca5a3bc6695a2"}, + {file = "rpds_py-0.22.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7ef9d9da710be50ff6809fed8f1963fecdfecc8b86656cadfca3bc24289414b0"}, + {file = "rpds_py-0.22.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59f4a79c19232a5774aee369a0c296712ad0e77f24e62cad53160312b1c1eaa1"}, + {file = "rpds_py-0.22.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1a60bce91f81ddaac922a40bbb571a12c1070cb20ebd6d49c48e0b101d87300d"}, + {file = "rpds_py-0.22.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e89391e6d60251560f0a8f4bd32137b077a80d9b7dbe6d5cab1cd80d2746f648"}, + {file = "rpds_py-0.22.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e3fb866d9932a3d7d0c82da76d816996d1667c44891bd861a0f97ba27e84fc74"}, + {file = "rpds_py-0.22.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1352ae4f7c717ae8cba93421a63373e582d19d55d2ee2cbb184344c82d2ae55a"}, + {file = "rpds_py-0.22.3-cp311-cp311-win32.whl", hash = "sha256:b0b4136a252cadfa1adb705bb81524eee47d9f6aab4f2ee4fa1e9d3cd4581f64"}, + {file = "rpds_py-0.22.3-cp311-cp311-win_amd64.whl", hash = "sha256:8bd7c8cfc0b8247c8799080fbff54e0b9619e17cdfeb0478ba7295d43f635d7c"}, + {file = "rpds_py-0.22.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:27e98004595899949bd7a7b34e91fa7c44d7a97c40fcaf1d874168bb652ec67e"}, + {file = "rpds_py-0.22.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1978d0021e943aae58b9b0b196fb4895a25cc53d3956b8e35e0b7682eefb6d56"}, + {file = "rpds_py-0.22.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:655ca44a831ecb238d124e0402d98f6212ac527a0ba6c55ca26f616604e60a45"}, + {file = "rpds_py-0.22.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:feea821ee2a9273771bae61194004ee2fc33f8ec7db08117ef9147d4bbcbca8e"}, + {file = "rpds_py-0.22.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:22bebe05a9ffc70ebfa127efbc429bc26ec9e9b4ee4d15a740033efda515cf3d"}, + {file = "rpds_py-0.22.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3af6e48651c4e0d2d166dc1b033b7042ea3f871504b6805ba5f4fe31581d8d38"}, + {file = "rpds_py-0.22.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e67ba3c290821343c192f7eae1d8fd5999ca2dc99994114643e2f2d3e6138b15"}, + {file = "rpds_py-0.22.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:02fbb9c288ae08bcb34fb41d516d5eeb0455ac35b5512d03181d755d80810059"}, + {file = "rpds_py-0.22.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f56a6b404f74ab372da986d240e2e002769a7d7102cc73eb238a4f72eec5284e"}, + {file = "rpds_py-0.22.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0a0461200769ab3b9ab7e513f6013b7a97fdeee41c29b9db343f3c5a8e2b9e61"}, + {file = "rpds_py-0.22.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8633e471c6207a039eff6aa116e35f69f3156b3989ea3e2d755f7bc41754a4a7"}, + {file = "rpds_py-0.22.3-cp312-cp312-win32.whl", hash = "sha256:593eba61ba0c3baae5bc9be2f5232430453fb4432048de28399ca7376de9c627"}, + {file = "rpds_py-0.22.3-cp312-cp312-win_amd64.whl", hash = "sha256:d115bffdd417c6d806ea9069237a4ae02f513b778e3789a359bc5856e0404cc4"}, + {file = "rpds_py-0.22.3-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:ea7433ce7e4bfc3a85654aeb6747babe3f66eaf9a1d0c1e7a4435bbdf27fea84"}, + {file = "rpds_py-0.22.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6dd9412824c4ce1aca56c47b0991e65bebb7ac3f4edccfd3f156150c96a7bf25"}, + {file = "rpds_py-0.22.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20070c65396f7373f5df4005862fa162db5d25d56150bddd0b3e8214e8ef45b4"}, + {file = "rpds_py-0.22.3-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0b09865a9abc0ddff4e50b5ef65467cd94176bf1e0004184eb915cbc10fc05c5"}, + {file = "rpds_py-0.22.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3453e8d41fe5f17d1f8e9c383a7473cd46a63661628ec58e07777c2fff7196dc"}, + {file = "rpds_py-0.22.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f5d36399a1b96e1a5fdc91e0522544580dbebeb1f77f27b2b0ab25559e103b8b"}, + {file = "rpds_py-0.22.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:009de23c9c9ee54bf11303a966edf4d9087cd43a6003672e6aa7def643d06518"}, + {file = "rpds_py-0.22.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1aef18820ef3e4587ebe8b3bc9ba6e55892a6d7b93bac6d29d9f631a3b4befbd"}, + {file = "rpds_py-0.22.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f60bd8423be1d9d833f230fdbccf8f57af322d96bcad6599e5a771b151398eb2"}, + {file = "rpds_py-0.22.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:62d9cfcf4948683a18a9aff0ab7e1474d407b7bab2ca03116109f8464698ab16"}, + {file = "rpds_py-0.22.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9253fc214112405f0afa7db88739294295f0e08466987f1d70e29930262b4c8f"}, + {file = "rpds_py-0.22.3-cp313-cp313-win32.whl", hash = "sha256:fb0ba113b4983beac1a2eb16faffd76cb41e176bf58c4afe3e14b9c681f702de"}, + {file = "rpds_py-0.22.3-cp313-cp313-win_amd64.whl", hash = "sha256:c58e2339def52ef6b71b8f36d13c3688ea23fa093353f3a4fee2556e62086ec9"}, + {file = "rpds_py-0.22.3-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:f82a116a1d03628a8ace4859556fb39fd1424c933341a08ea3ed6de1edb0283b"}, + {file = "rpds_py-0.22.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3dfcbc95bd7992b16f3f7ba05af8a64ca694331bd24f9157b49dadeeb287493b"}, + {file = "rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59259dc58e57b10e7e18ce02c311804c10c5a793e6568f8af4dead03264584d1"}, + {file = "rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5725dd9cc02068996d4438d397e255dcb1df776b7ceea3b9cb972bdb11260a83"}, + {file = "rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99b37292234e61325e7a5bb9689e55e48c3f5f603af88b1642666277a81f1fbd"}, + {file = "rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:27b1d3b3915a99208fee9ab092b8184c420f2905b7d7feb4aeb5e4a9c509b8a1"}, + {file = "rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f612463ac081803f243ff13cccc648578e2279295048f2a8d5eb430af2bae6e3"}, + {file = "rpds_py-0.22.3-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f73d3fef726b3243a811121de45193c0ca75f6407fe66f3f4e183c983573e130"}, + {file = "rpds_py-0.22.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:3f21f0495edea7fdbaaa87e633a8689cd285f8f4af5c869f27bc8074638ad69c"}, + {file = "rpds_py-0.22.3-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:1e9663daaf7a63ceccbbb8e3808fe90415b0757e2abddbfc2e06c857bf8c5e2b"}, + {file = "rpds_py-0.22.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:a76e42402542b1fae59798fab64432b2d015ab9d0c8c47ba7addddbaf7952333"}, + {file = "rpds_py-0.22.3-cp313-cp313t-win32.whl", hash = "sha256:69803198097467ee7282750acb507fba35ca22cc3b85f16cf45fb01cb9097730"}, + {file = "rpds_py-0.22.3-cp313-cp313t-win_amd64.whl", hash = "sha256:f5cf2a0c2bdadf3791b5c205d55a37a54025c6e18a71c71f82bb536cf9a454bf"}, + {file = "rpds_py-0.22.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:378753b4a4de2a7b34063d6f95ae81bfa7b15f2c1a04a9518e8644e81807ebea"}, + {file = "rpds_py-0.22.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3445e07bf2e8ecfeef6ef67ac83de670358abf2996916039b16a218e3d95e97e"}, + {file = "rpds_py-0.22.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b2513ba235829860b13faa931f3b6846548021846ac808455301c23a101689d"}, + {file = "rpds_py-0.22.3-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eaf16ae9ae519a0e237a0f528fd9f0197b9bb70f40263ee57ae53c2b8d48aeb3"}, + {file = "rpds_py-0.22.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:583f6a1993ca3369e0f80ba99d796d8e6b1a3a2a442dd4e1a79e652116413091"}, + {file = "rpds_py-0.22.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4617e1915a539a0d9a9567795023de41a87106522ff83fbfaf1f6baf8e85437e"}, + {file = "rpds_py-0.22.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c150c7a61ed4a4f4955a96626574e9baf1adf772c2fb61ef6a5027e52803543"}, + {file = "rpds_py-0.22.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2fa4331c200c2521512595253f5bb70858b90f750d39b8cbfd67465f8d1b596d"}, + {file = "rpds_py-0.22.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:214b7a953d73b5e87f0ebece4a32a5bd83c60a3ecc9d4ec8f1dca968a2d91e99"}, + {file = "rpds_py-0.22.3-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:f47ad3d5f3258bd7058d2d506852217865afefe6153a36eb4b6928758041d831"}, + {file = "rpds_py-0.22.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:f276b245347e6e36526cbd4a266a417796fc531ddf391e43574cf6466c492520"}, + {file = "rpds_py-0.22.3-cp39-cp39-win32.whl", hash = "sha256:bbb232860e3d03d544bc03ac57855cd82ddf19c7a07651a7c0fdb95e9efea8b9"}, + {file = "rpds_py-0.22.3-cp39-cp39-win_amd64.whl", hash = "sha256:cfbc454a2880389dbb9b5b398e50d439e2e58669160f27b60e5eca11f68ae17c"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:d48424e39c2611ee1b84ad0f44fb3b2b53d473e65de061e3f460fc0be5f1939d"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:24e8abb5878e250f2eb0d7859a8e561846f98910326d06c0d51381fed59357bd"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b232061ca880db21fa14defe219840ad9b74b6158adb52ddf0e87bead9e8493"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ac0a03221cdb5058ce0167ecc92a8c89e8d0decdc9e99a2ec23380793c4dcb96"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb0c341fa71df5a4595f9501df4ac5abfb5a09580081dffbd1ddd4654e6e9123"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bf9db5488121b596dbfc6718c76092fda77b703c1f7533a226a5a9f65248f8ad"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b8db6b5b2d4491ad5b6bdc2bc7c017eec108acbf4e6785f42a9eb0ba234f4c9"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b3d504047aba448d70cf6fa22e06cb09f7cbd761939fdd47604f5e007675c24e"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:e61b02c3f7a1e0b75e20c3978f7135fd13cb6cf551bf4a6d29b999a88830a338"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:e35ba67d65d49080e8e5a1dd40101fccdd9798adb9b050ff670b7d74fa41c566"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:26fd7cac7dd51011a245f29a2cc6489c4608b5a8ce8d75661bb4a1066c52dfbe"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:177c7c0fce2855833819c98e43c262007f42ce86651ffbb84f37883308cb0e7d"}, + {file = "rpds_py-0.22.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:bb47271f60660803ad11f4c61b42242b8c1312a31c98c578f79ef9387bbde21c"}, + {file = "rpds_py-0.22.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:70fb28128acbfd264eda9bf47015537ba3fe86e40d046eb2963d75024be4d055"}, + {file = "rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:44d61b4b7d0c2c9ac019c314e52d7cbda0ae31078aabd0f22e583af3e0d79723"}, + {file = "rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f0e260eaf54380380ac3808aa4ebe2d8ca28b9087cf411649f96bad6900c728"}, + {file = "rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b25bc607423935079e05619d7de556c91fb6adeae9d5f80868dde3468657994b"}, + {file = "rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fb6116dfb8d1925cbdb52595560584db42a7f664617a1f7d7f6e32f138cdf37d"}, + {file = "rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a63cbdd98acef6570c62b92a1e43266f9e8b21e699c363c0fef13bd530799c11"}, + {file = "rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2b8f60e1b739a74bab7e01fcbe3dddd4657ec685caa04681df9d562ef15b625f"}, + {file = "rpds_py-0.22.3-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:2e8b55d8517a2fda8d95cb45d62a5a8bbf9dd0ad39c5b25c8833efea07b880ca"}, + {file = "rpds_py-0.22.3-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:2de29005e11637e7a2361fa151f780ff8eb2543a0da1413bb951e9f14b699ef3"}, + {file = "rpds_py-0.22.3-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:666ecce376999bf619756a24ce15bb14c5bfaf04bf00abc7e663ce17c3f34fe7"}, + {file = "rpds_py-0.22.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:5246b14ca64a8675e0a7161f7af68fe3e910e6b90542b4bfb5439ba752191df6"}, + {file = "rpds_py-0.22.3.tar.gz", hash = "sha256:e32fee8ab45d3c2db6da19a5323bc3362237c8b653c70194414b892fd06a080d"}, +] + +[[package]] +name = "send2trash" +version = "1.8.3" +description = "Send file to trash natively under Mac OS X, Windows and Linux" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" +files = [ + {file = "Send2Trash-1.8.3-py3-none-any.whl", hash = "sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9"}, + {file = "Send2Trash-1.8.3.tar.gz", hash = "sha256:b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf"}, +] + +[package.extras] +nativelib = ["pyobjc-framework-Cocoa", "pywin32"] +objc = ["pyobjc-framework-Cocoa"] +win32 = ["pywin32"] + +[[package]] +name = "setuptools" +version = "75.6.0" +description = "Easily download, build, install, upgrade, and uninstall Python packages" +optional = false +python-versions = ">=3.9" +files = [ + {file = "setuptools-75.6.0-py3-none-any.whl", hash = "sha256:ce74b49e8f7110f9bf04883b730f4765b774ef3ef28f722cce7c273d253aaf7d"}, + {file = "setuptools-75.6.0.tar.gz", hash = "sha256:8199222558df7c86216af4f84c30e9b34a61d8ba19366cc914424cdbd28252f6"}, +] + +[package.extras] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)", "ruff (>=0.7.0)"] +core = ["importlib_metadata (>=6)", "jaraco.collections", "jaraco.functools (>=4)", "jaraco.text (>=3.7)", "more_itertools", "more_itertools (>=8.8)", "packaging", "packaging (>=24.2)", "platformdirs (>=4.2.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] +cover = ["pytest-cov"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] +enabler = ["pytest-enabler (>=2.2)"] +test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test (>=5.5)", "packaging (>=24.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] +type = ["importlib_metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (>=1.12,<1.14)", "pytest-mypy"] + [[package]] name = "six" version = "1.16.0" @@ -2137,6 +3066,45 @@ pure-eval = "*" [package.extras] tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"] +[[package]] +name = "terminado" +version = "0.18.1" +description = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library." +optional = false +python-versions = ">=3.8" +files = [ + {file = "terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0"}, + {file = "terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e"}, +] + +[package.dependencies] +ptyprocess = {version = "*", markers = "os_name != \"nt\""} +pywinpty = {version = ">=1.1.0", markers = "os_name == \"nt\""} +tornado = ">=6.1.0" + +[package.extras] +docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] +test = ["pre-commit", "pytest (>=7.0)", "pytest-timeout"] +typing = ["mypy (>=1.6,<2.0)", "traitlets (>=5.11.1)"] + +[[package]] +name = "tinycss2" +version = "1.4.0" +description = "A tiny CSS parser" +optional = false +python-versions = ">=3.8" +files = [ + {file = "tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289"}, + {file = "tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7"}, +] + +[package.dependencies] +webencodings = ">=0.4" + +[package.extras] +doc = ["sphinx", "sphinx_rtd_theme"] +test = ["pytest", "ruff"] + [[package]] name = "tomli" version = "2.0.1" @@ -2183,6 +3151,17 @@ files = [ docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0,<8.2)", "pytest-mock", "pytest-mypy-testing"] +[[package]] +name = "types-python-dateutil" +version = "2.9.0.20241206" +description = "Typing stubs for python-dateutil" +optional = false +python-versions = ">=3.8" +files = [ + {file = "types_python_dateutil-2.9.0.20241206-py3-none-any.whl", hash = "sha256:e248a4bc70a486d3e3ec84d0dc30eec3a5f979d6e7ee4123ae043eedbb987f53"}, + {file = "types_python_dateutil-2.9.0.20241206.tar.gz", hash = "sha256:18f493414c26ffba692a72369fea7a154c502646301ebfe3d56a04b3767284cb"}, +] + [[package]] name = "typing-extensions" version = "4.12.2" @@ -2205,6 +3184,20 @@ files = [ {file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"}, ] +[[package]] +name = "uri-template" +version = "1.3.0" +description = "RFC 6570 URI Template Processor" +optional = false +python-versions = ">=3.7" +files = [ + {file = "uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7"}, + {file = "uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363"}, +] + +[package.extras] +dev = ["flake8", "flake8-annotations", "flake8-bandit", "flake8-bugbear", "flake8-commas", "flake8-comprehensions", "flake8-continuation", "flake8-datetimez", "flake8-docstrings", "flake8-import-order", "flake8-literal", "flake8-modern-annotations", "flake8-noqa", "flake8-pyproject", "flake8-requirements", "flake8-typechecking-import", "flake8-use-fstring", "mypy", "pep8-naming", "types-PyYAML"] + [[package]] name = "urllib3" version = "2.2.1" @@ -2233,7 +3226,56 @@ files = [ {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, ] +[[package]] +name = "webcolors" +version = "24.11.1" +description = "A library for working with the color formats defined by HTML and CSS." +optional = false +python-versions = ">=3.9" +files = [ + {file = "webcolors-24.11.1-py3-none-any.whl", hash = "sha256:515291393b4cdf0eb19c155749a096f779f7d909f7cceea072791cb9095b92e9"}, + {file = "webcolors-24.11.1.tar.gz", hash = "sha256:ecb3d768f32202af770477b8b65f318fa4f566c22948673a977b00d589dd80f6"}, +] + +[[package]] +name = "webencodings" +version = "0.5.1" +description = "Character encoding aliases for legacy web content" +optional = false +python-versions = "*" +files = [ + {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, + {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, +] + +[[package]] +name = "websocket-client" +version = "1.8.0" +description = "WebSocket client for Python with low level API options" +optional = false +python-versions = ">=3.8" +files = [ + {file = "websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526"}, + {file = "websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da"}, +] + +[package.extras] +docs = ["Sphinx (>=6.0)", "myst-parser (>=2.0.0)", "sphinx-rtd-theme (>=1.1.0)"] +optional = ["python-socks", "wsaccel"] +test = ["websockets"] + +[[package]] +name = "widgetsnbextension" +version = "4.0.13" +description = "Jupyter interactive widgets for Jupyter Notebook" +optional = false +python-versions = ">=3.7" +files = [ + {file = "widgetsnbextension-4.0.13-py3-none-any.whl", hash = "sha256:74b2692e8500525cc38c2b877236ba51d34541e6385eeed5aec15a70f88a6c71"}, + {file = "widgetsnbextension-4.0.13.tar.gz", hash = "sha256:ffcb67bc9febd10234a362795f643927f4e0c05d9342c727b65d2384f8feacb6"}, +] + [metadata] lock-version = "2.0" python-versions = ">= 3.10" -content-hash = "1dab0bf4b16c0cb98441565d6c3c3a35c8f6b72fc28105aa8f86ef80ed9a15d8" +content-hash = "bdd4be9d5d7e8c8a914595af012364d1a6601d2ad996870eb6939511b27effde" diff --git a/pyproject.toml b/pyproject.toml index b195a88..1618f75 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -29,6 +29,7 @@ pickleshare = "^0.7.5" pycodestyle = ">= 2.9.1" ipykernel = ">= 6.15.2" black = {version = ">= 22.8.0", allow-prereleases = true} +jupyter = "^1.1.1" [build-system] requires = ["poetry-core"] From 5ae88db895f175c08a774794fc6818a9201e7502 Mon Sep 17 00:00:00 2001 From: Ana Paula Gomes Date: Mon, 16 Dec 2024 13:10:57 -0300 Subject: [PATCH 17/17] Add notebook that showcase the new feature --- ...mia Regional - Inadimpl\303\252ncia.ipynb" | 771 ++++++++++++++++++ 1 file changed, 771 insertions(+) create mode 100644 "notebooks/SGS Economia Regional - Inadimpl\303\252ncia.ipynb" diff --git "a/notebooks/SGS Economia Regional - Inadimpl\303\252ncia.ipynb" "b/notebooks/SGS Economia Regional - Inadimpl\303\252ncia.ipynb" new file mode 100644 index 0000000..b4a9adb --- /dev/null +++ "b/notebooks/SGS Economia Regional - Inadimpl\303\252ncia.ipynb" @@ -0,0 +1,771 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "ddabd9b8-3be7-490a-9838-1759341028c6", + "metadata": {}, + "source": [ + "# SGS Economia Regional\n", + "\n", + "Exemplos de como acessar as séries temporais da inadimplência das operações de crédito.\n", + "\n", + "Disponível em: [SGS - Sistema Gerenciador de Séries Temporais - v2.1](https://www3.bcb.gov.br/sgspub/localizarseries/localizarSeries.do?method=prepararTelaLocalizarSeries)" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "51fb3fde-2eea-482c-b4f4-5cb3e78a612b", + "metadata": {}, + "outputs": [], + "source": [ + "from bcb.sgs.regional_economy import get_non_performing_loans, get_non_performing_loans_codes\n", + "from bcb.utils import BRAZILIAN_REGIONS, BRAZILIAN_STATES\n", + "import pandas as pd" + ] + }, + { + "cell_type": "markdown", + "id": "2210467a-243d-44f7-bee2-20c475311e24", + "metadata": {}, + "source": [ + "## Busca por estado\n", + "\n", + "No primeiro exemplo:\n", + "\n", + "```\n", + "Economia regional\n", + " - Norte\n", + " - Roraima\n", + " - Crédito\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "205cf0ed-40d8-4544-970c-903fc62a62d6", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
RR
Date
2024-01-013.87
2024-02-013.88
2024-03-013.96
2024-04-013.94
2024-05-014.22
2024-06-014.15
2024-07-014.07
2024-08-013.77
2024-09-013.85
2024-10-013.85
\n", + "
" + ], + "text/plain": [ + " RR\n", + "Date \n", + "2024-01-01 3.87\n", + "2024-02-01 3.88\n", + "2024-03-01 3.96\n", + "2024-04-01 3.94\n", + "2024-05-01 4.22\n", + "2024-06-01 4.15\n", + "2024-07-01 4.07\n", + "2024-08-01 3.77\n", + "2024-09-01 3.85\n", + "2024-10-01 3.85" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "series = get_non_performing_loans([\"RR\"], last=10, mode=\"all\")\n", + "series" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "4b1c8101-b17f-44e5-93de-1acc479fd7fd", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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2jGGFyIikpxpszopVl5qtTrM/DgVJwqrEOilxLqZHLRo71oUXlasWIG4uDio1Wqo1WokJiZi27Zt1/yct956C926dYObmxvCwsLw+OOPo76+vk1FExGRc+kf4Qu5TMC58jqcLbNd34tp0GLamTKoVQp8MjMe4f4ctGjvWhReOnXqhGXLliEtLQ379+/H8OHDMX78eBw9evSKx2/cuBHz58/HokWLcPz4caxatQqffvopnnnmGYsUT0REzsFDqUCvUG8Atlt9MRhEPNk4aFHlIsPq6QPRo6PaJq9NbdOi8DJu3DiMGTMGXbp0QdeuXbFkyRJ4enpi3759Vzx+z549GDJkCO655x5ERkbilltuwZQpU5CSkmKR4omIyHmY+l5ssd+LKIpY/N1RfGsetNgfAyL9rP66ZBmt7nnR6/XYvHkzampqkJiYeMVjBg8ejLS0NHNYycrKwg8//IAxY8Zc87k1Gg0qKyubvBERkXMbZOp7scGQxre3n8LHey8OWhzGQYsORdHST8jIyEBiYiLq6+vh6emJr7/+Gj179rzisffccw8uXLiAoUOHQhRF6HQ6zJkz528vGy1duhSLFy9uaWlEROTABkT6QiYAZ0pqUVhRj2Bv6zTNrt2djbd+NQ5afH4cBy06ohavvHTr1g3p6elITk7GQw89hGnTpuHYsWNXPHbHjh146aWX8N577+HAgQP46quv8P333+O///3vNV9jwYIFqKioML/l5eW1tEwiInIwXioXXBfS2PdipUtHWw6ew/ONgxYfG9kF0wZHWuV1yLoEsY17MY8cORIxMTFYuXLlZR+7/vrrMWjQILz66qvmx9avX48HHngA1dXVkMmal50qKyvh7e2NiooKqNVspiIiclYvbj2Gj3ZlY0p8OJbe0cuiz/37iSLc/8l+6AwipiVG4Pl/XMd5RVZmrd/fbd7nxWAwQKPRXPFjtbW1lwUUudy4W6E9zK8gIiL7Yq0hjftzSvHQhjToDCLG9wnBonEMLo6sRT0vCxYswK233orw8HBUVVVh48aN2LFjB3766ScAQFJSEkJDQ7F06VIAxruT3njjDfTt2xcJCQnIzMzEc889h3HjxplDDBERkUl8pB8EAcgqrkFRVb1FNos7XmActFjfYMBN3QLxGgctOrwWhZeioiIkJSWhoKAA3t7eiIuLw08//YSbb74ZAJCbm9tk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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "series.plot()" + ] + }, + { + "cell_type": "markdown", + "id": "0c204df1-3f1d-4657-8f39-525c2058c5af", + "metadata": {}, + "source": [ + "## Busca por região\n", + "\n", + "Nesse exemplo, últimos 5 registros de pessoa jurídica no Nordeste.\n", + "\n", + "```\n", + "Economia regional\n", + " - Nordeste\n", + " - Consolidado regional\n", + " - Crédito\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "c79bd241-2884-42ff-b10b-68383d3c303b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ALBACEMAPBPEPIRNSE
Date
2024-06-012.693.452.584.003.473.441.973.563.49
2024-07-012.683.032.724.183.353.402.093.503.42
2024-08-012.773.062.704.353.403.182.183.503.45
2024-09-012.693.132.674.413.483.142.263.443.55
2024-10-012.603.092.774.593.563.022.333.643.61
\n", + "
" + ], + "text/plain": [ + " AL BA CE MA PB PE PI RN SE\n", + "Date \n", + "2024-06-01 2.69 3.45 2.58 4.00 3.47 3.44 1.97 3.56 3.49\n", + "2024-07-01 2.68 3.03 2.72 4.18 3.35 3.40 2.09 3.50 3.42\n", + "2024-08-01 2.77 3.06 2.70 4.35 3.40 3.18 2.18 3.50 3.45\n", + "2024-09-01 2.69 3.13 2.67 4.41 3.48 3.14 2.26 3.44 3.55\n", + "2024-10-01 2.60 3.09 2.77 4.59 3.56 3.02 2.33 3.64 3.61" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "northeast_states = BRAZILIAN_REGIONS[\"NE\"]\n", + "series = get_non_performing_loans(northeast_states, last=5, mode=\"pj\")\n", + "series" + ] + }, + { + "cell_type": "markdown", + "id": "deef2db9-ddc3-4024-843e-3ccc6659a24c", + "metadata": {}, + "source": [ + "## Buscando por todos os estados brasileiros" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "07b06e3b-7154-40d1-a430-f96bc616b764", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ACAPAMPARORRTOALBACE...GOMTMSESMGRJSPPRRSSC
Date
2024-01-013.494.095.404.162.763.842.634.644.684.74...3.142.112.903.213.095.333.452.762.482.85
2024-02-013.484.055.254.152.783.842.764.604.644.68...3.142.142.893.253.135.253.432.752.512.84
2024-03-013.434.015.184.092.813.882.784.584.574.69...3.162.162.943.213.105.173.362.742.532.81
2024-04-013.464.105.154.092.853.842.784.594.594.70...3.182.222.953.193.115.133.412.752.532.81
2024-05-013.544.225.264.152.993.912.974.684.584.75...3.232.313.073.183.165.143.462.832.602.87
2024-06-013.504.115.144.093.073.912.884.624.514.61...3.162.303.093.063.095.043.402.762.612.79
2024-07-013.494.135.144.143.163.903.124.634.524.58...3.442.583.693.043.115.023.432.872.612.82
2024-08-013.444.045.064.143.243.823.414.634.474.50...3.772.894.103.003.164.983.423.022.582.81
2024-09-013.584.064.994.163.243.923.564.594.414.44...3.742.914.102.963.164.893.393.002.542.78
2024-10-013.593.984.874.223.263.933.504.594.354.35...3.642.933.942.943.144.843.352.972.482.74
\n", + "

10 rows × 27 columns

\n", + "
" + ], + "text/plain": [ + " AC AP AM PA RO RR TO AL BA CE ... \\\n", + "Date ... \n", + "2024-01-01 3.49 4.09 5.40 4.16 2.76 3.84 2.63 4.64 4.68 4.74 ... \n", + "2024-02-01 3.48 4.05 5.25 4.15 2.78 3.84 2.76 4.60 4.64 4.68 ... \n", + "2024-03-01 3.43 4.01 5.18 4.09 2.81 3.88 2.78 4.58 4.57 4.69 ... \n", + "2024-04-01 3.46 4.10 5.15 4.09 2.85 3.84 2.78 4.59 4.59 4.70 ... \n", + "2024-05-01 3.54 4.22 5.26 4.15 2.99 3.91 2.97 4.68 4.58 4.75 ... \n", + "2024-06-01 3.50 4.11 5.14 4.09 3.07 3.91 2.88 4.62 4.51 4.61 ... \n", + "2024-07-01 3.49 4.13 5.14 4.14 3.16 3.90 3.12 4.63 4.52 4.58 ... \n", + "2024-08-01 3.44 4.04 5.06 4.14 3.24 3.82 3.41 4.63 4.47 4.50 ... \n", + "2024-09-01 3.58 4.06 4.99 4.16 3.24 3.92 3.56 4.59 4.41 4.44 ... \n", + "2024-10-01 3.59 3.98 4.87 4.22 3.26 3.93 3.50 4.59 4.35 4.35 ... \n", + "\n", + " GO MT MS ES MG RJ SP PR RS SC \n", + "Date \n", + "2024-01-01 3.14 2.11 2.90 3.21 3.09 5.33 3.45 2.76 2.48 2.85 \n", + "2024-02-01 3.14 2.14 2.89 3.25 3.13 5.25 3.43 2.75 2.51 2.84 \n", + "2024-03-01 3.16 2.16 2.94 3.21 3.10 5.17 3.36 2.74 2.53 2.81 \n", + "2024-04-01 3.18 2.22 2.95 3.19 3.11 5.13 3.41 2.75 2.53 2.81 \n", + "2024-05-01 3.23 2.31 3.07 3.18 3.16 5.14 3.46 2.83 2.60 2.87 \n", + "2024-06-01 3.16 2.30 3.09 3.06 3.09 5.04 3.40 2.76 2.61 2.79 \n", + "2024-07-01 3.44 2.58 3.69 3.04 3.11 5.02 3.43 2.87 2.61 2.82 \n", + "2024-08-01 3.77 2.89 4.10 3.00 3.16 4.98 3.42 3.02 2.58 2.81 \n", + "2024-09-01 3.74 2.91 4.10 2.96 3.16 4.89 3.39 3.00 2.54 2.78 \n", + "2024-10-01 3.64 2.93 3.94 2.94 3.14 4.84 3.35 2.97 2.48 2.74 \n", + "\n", + "[10 rows x 27 columns]" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "series = get_non_performing_loans(BRAZILIAN_STATES, mode=\"PF\", start=\"2024-01-01\")\n", + "series" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "5f7792a6-f76c-4be7-a405-6e33080db30c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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IpFI9gIhBMKcPp/BchRDHfeLrdfrpampCXCtKYcffjjHHHMMp512GrfccgsXXXQRAOFwuFRvLjCnnriOkwNcM1e56NC0guAot3QMY+WozLv7SdEhkUgkkrEiTIfdX18/I+deePWxKJ6JW0ROPfVUDj30UG6//faSeJlrzKkn99Fv/xs1NQsKlg5jppsjkUgkEsmcZP/992fDhg2l/Je//GWuuuqqUv6aa67hM5/5zEw0bUzMKfHi9zdjGJGZboZEIpFI9lEUQ2Xh1cfO2LknCyFERRfUl770JS688MJSvq6ubtLONRXMKfEikUgkEslMoijKpHTdzDSvv/46y5YtK+Xr6upYuXLlDLZofEyejJNIJBKJRDLrefDBB3nllVd4z3veM9NN2Wuk5UUikUgkknlKLpejvb29Yqj0unXreOc738n5558/083ba6R4kUgkEolknnLvvfeyYMECdF2nurqaQw89lJ/+9KdccMEFpSB1cxEpXiQSiUQimYfccsst3HLLLXus19raOuVtmWzGJbvWrVvHUUcdRTgcpqGhgfPOO4+NGzfucb8//vGP7L///vh8Pg455BD+9re/7XWDJRKJRCKR7NuMS7w88sgjXHrppTz11FPcf//9mKbJGWecQSqVGnGf9evX84EPfICPfexjvPjii5x33nmcd955vPrqqxNuvEQikUgkkn0PRQgh9nbnrq4uGhoaeOSRRzjxxBOHrfP+97+fVCrFXXfdVSo75phjOOyww/jlL3857D65XI5cLlfKx+NxWlpaiMViRCIyzotEIpFIpodsNsvWrVtZtmwZPp9vppszKxntM4rH40Sj0Ul/fk/IWycWiwFQU1MzYp0nn3ySd7zjHRVlZ555Jk8++eSI+6xbt45oNFpaWlpaJtJMiUQikUgk84i9Fi+O4/DZz36W4447joMPPnjEeu3t7TQ2NlaUNTY20t7ePuI+V1xxBbFYrLTs2LFjb5spkUgkEolknrHXo40uvfRSXn31VR5//PHJbA/gzoLp9Xon/bgSiUQikUjmPnslXi677DLuuusuHn30URYtWjRq3aamJjo6OirKOjo65tTU2xKJRCKRSGYP4+o2EkJw2WWXcccdd/Dggw9WzIswEmvXruWBBx6oKLv//vtZu3bt+FoqkUgkEolEwjgtL5deeim33XYbf/nLXwiHwyW/lWg0it/vB+D888+nubmZdevWAXD55Zdz0kknce2113Luuefyu9/9jueee45f/epXYz5vcUBUPB4fT3MlEolEIpkQ+Xwex3GwbRvbtme6ObMS27ZxHIdkMkk+n6/YVnxuT2Bg87CMa6h0+fTZ5dx8882lqbRPPvlkli5dWhHV749//CNXXXUVra2trFq1ih/84Aecc845Y27kli1bWLFixZjrSyQSiUQyGSxZsoRf/vKX1NXVzXRTZjXd3d188pOfZNu2bcNu37Fjxx7dTMbDhOK8TBf9/f1UV1ezfft2otHoTDdn0jnqqKN49tlnZ7oZU4K8trmJvLa5iby2ySefz9PR0cHSpUunLM7L66+/zgEHHDAlx25vb+f73/8+f/vb39i5cyfRaJQVK1bwoQ99iPPPP59AIAC4AWWvueYannrqKTKZDKtWreKCCy7gM5/5DJqmjXqObDZLa2srjY2NeDyeim1CCI444gjefPPNSZ1LaU7MbVS84Gg0Oi+D1GmaNi+vC+S1zVXktc1N5LVNPtlslq6uLjRN2+NDfCJMxbG3bNnCcccdR1VVFddccw2HHHIIXq+XV155hV/96le0tLTwrne9izvuuIN//dd/5SMf+Qjr1q2jqqqK//u//+P/+//+P55++mn+8Ic/jNjzUmy7qqqEQqFhBZ7H45n0SSDnhHiZ71x66aUz3YQpQ17b3ERe29xEXtvUI4TANM1JPWZ1dfUQX5HhMAxjVBExmE996lPous5zzz1HMBgslS9fvpx3v/vdCCFIpVJcfPHFvOtd76rwRb3oootobGzkXe96F3/4wx94//vfP76LKmMqvrs50W00VeGFJRKJRCIZjcGh7/P5PNdcc82MtOXKK68c0i0zEj09PdTX13PNNdfwla98ZcR6d9xxB//yL//C+vXrhx0FvHr1ag444ADuvPPOEY8xE1MozAnLi9fr5Rvf+IYMXCeRSCQSyRjYtGkTQghWr15dUV5XV0c2mwVci0hxep+RfG72339/3nzzzalt7F4wZ8TLN7/5zZluhkQikUj2cQzD4Morr5yxc0+UZ555Bsdx+NCHPlQxAfIc6ISpYE6IF4lEIpFIZgOKooy562YmWblyJYqisHHjxory5cuXA5Ris+23336AO+Lp2GOPHXKc119/nQMPPHCKWzt+Jtf9VzIpKIoyav+iRCKRjBV5P9k3qa2t5fTTT+e//uu/SKVSI9Y744wzqKmp4dprrx2y7a9//StvvfUWH/jAB6ayqXuFFC9TxIUXXoiiKEOWTZs2zXTTJkTxuj75yU8O2XbppZeiKEopYOFc5sknn0TTNM4999yZbsqE2Ve+M3Cv9bzzzpvpZkwp8+0a59P/WjmmabJt2zY2bNjA888/z8svv8ybb75JMpmctjb84he/wLIsjjzySH7/+9/z+uuvs3HjRv7nf/6HN954A03TCAaDXH/99fzlL3/h4x//OBs2bKC1tZUbb7yRCy+8kPe+973867/+67DHz+fztLa28sYbb7Bt2zZOPfVULr/8cnp6esbUvocffhhFUejv7x/3tUnxMoWcddZZtLW1VSxjmQ9qttPS0sLvfvc7MplMqSybzXLbbbexePHiCR17socg7i033ngjn/70p3n00UfZvXv3hI5VDJ09k0zldyaRTITJ/F+bTWzevJl0Os3SpUs5+OCDWblyJeFwGMuypq0NK1as4MUXX+Qd73gHV1xxBYceeihHHnkkP/vZz/jiF7/It7/9bQDe+9738tBDD7F9+3ZOOOEEVq9ezY9+9CO++tWv8rvf/W7Y4dm5XI7XXnuNbDZLS0sLzc3NfPOb3+SBBx5g7dq19Pb2Tum1zbh4mW9vEeV4vV6ampoqFk3T+Mtf/sLhhx+Oz+dj+fLlfOtb3xryg25ra+Pss8/G7/ezfPly/vSnP83QVQzl8MMPp6Wlhdtvv71Udvvtt7N48WLe9ra3lcruvfdejj/+eKqqqqitreWd73wnmzdvLm1vbW1FURR+//vfc9JJJ+Hz+fjNb34zrdcyHMlkkt///vdccsklnHvuuRVTXRTfFO6++27WrFmDz+fjmGOO4dVXXy3VueWWW6iqquKvf/0rBx54IF6vl+3bt8/AlQwwWd/ZqaeeymWXXVZx7K6uLjwez5AJWGeapUuX8uMf/7ii7LDDDqtw/lcUhRtuuIF//ud/JhAIsGrVKv76179Ob0MnwFiucTYz2v9a8f+onDvvvHPIg/Q73/kODQ0NhMNhLrroIr7yla9w2GGHTX3jR8GyLJLJJIsWLSISieD1egkGgyxYsKB0TZZl0drayksvvcQLL7zAxo0bSafTpWPs3r2bf/zjH3R1dbFhwwZeeOEFNm/ePG7xs2DBAn72s5+xZcsW8vk8iUSCp59+mi9+8Yul6LoAJ5xwAvfeey+xWIxcLserr77KF77whRGD523btg1VVdlvv/0IBoPous6JJ57I//3f/7Fr1y6++tWvAq7I+fKXv0xLSwter5eVK1dy44030trayimnnAK4cW7GawGecfGyr/HYY49x/vnnc/nll/Paa69x/fXXc8stt/Dd7363ot7XvvY13vOe9/Dyyy/zoQ99iH/7t3/j9ddfn6FWD+WjH/0oN998cyl/00038ZGPfKSiTiqV4vOf/zzPPfccDzzwAKqq8s///M9DrBBf+cpXuPzyy3n99dc588wzp6X9o/GHP/yB/fffn9WrV/PhD3+Ym266aYgn/pe+9CWuvfZann32Werr6/mnf/qnCqtROp3m+9//PjfccAP/+Mc/aGhomO7LGMJkfGcXXXQRt912W8Uohf/5n/+hubmZU089dXouZJL51re+xb/+67+yYcMGzjnnHD70oQ9N+VujxGUs/2uj8Zvf/Ibvfve7fP/73+f5559n8eLFXHfddVPY4rFRjDjb398/otV1y5YtmKbJqlWrOPDAAwkEArz55psV4iSXy9Hb28vKlStZtWoV6XR6xl+EwBVe8Xic+vr6IZFzm5qa+NCHPsTvf/97hBCcf/75/Pa3v+WnP/0pr7/+Otdffz2hUIiWlhb+/Oc/A7Bx40ba2tr4yU9+MvZGiBnmggsuEO9+97uFEELcc8894rjjjhPRaFTU1NSIc889V2zatKlUd+vWrQIQf/7zn8XJJ58s/H6/WLNmjVi/fv0MtX5kLrjgAqFpmggGg6Xlve99rzjttNPENddcU1H3v//7v8WCBQtKeUB88pOfrKhz9NFHi0suuWRa2j4axe+rs7NTeL1e0draKlpbW4XP5xNdXV3i3e9+t7jggguG3berq0sA4pVXXhFCDHyfP/7xj6fxCvbMscceW2qTaZqirq5OPPTQQ0IIIR566CEBiN/97nel+j09PcLv94vf//73Qgghbr75ZgGIl156adrbPhyT+Z1lMhlRXV1dulYhhFizZo345je/OR2XskfK7ydLliwRP/rRjyq2H3rooeIb3/hGKQ+Iq666qpRPJpMCEPfcc880tHbv2JtrvOOOO6atfeNhtP+1m2++WUSj0Yr6d9xxhyh/bB199NHi0ksvrahz3HHHiUMPPXTS2pjJZMRrr70mMpnMuPbr7e0VL7zwgnjuuefE66+/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aSMiIqLHRFhYGJRKJVasWCF1KfXC8EJERPSYUKlUiI2NRXx8PMrLyy3T5EYQRVGUuggiIqLmyGg0orCwED4+PtBoNFKX06CKi4vRvn17HDp0CP3796/zdqQ4R/KLW0RERFRnoiji/Pnz+Nvf/gYPDw/4+/tLXdIjY3ghIiJ6jJSVlcHPzw89evRAamqqLFuUGF6IiIgeI66urjCZTFKXUS/ssEtERESywvBCREREssLwQkRERLLC8EJERESywvBCREREssLwQkRERLLC8EJERESywvBCRETUAl27dg1TpkyBl5cX1Go1dDodgoODkZWVBQDo3LkzBEGAIAhwcnKCXq/Hpk2bJK7aNgwvRERELVBoaChycnKwdu1anD59Gunp6Rg8eDBKSkosyyxYsABFRUXIycnBgAEDMHr0aOzfv1/Cqm3DN+wSERG1MKWlpdi3bx8yMzMRGBgIAPD29sbTTz9ttZyzszN0Oh10Oh1WrFiBlJQUbN26FYMGDZKibJsxvBAREdlIFEWIt25Jsm/BwQGCINi0rFarhVarRVpaGgICAqBWqx+6jkqlgp2dHSoqKupbaqNjeCEiIrKReOsW8vVPSbJvv//JhuDoaNOyKpUKycnJiIqKQmJiIvR6PQIDAzFmzBj06dOn1vIVFRVYunQpysrKEBQU1NClNzj2eSEiImqBQkNDcfnyZaSnp8NgMCAzMxN6vR7JycmWZf76179Cq9XC0dERS5YswUcffYSQkBDpiraRIIqiKHURREREzZHRaERhYSF8fHyg0Whkc9vofiZPnoxdu3bh/Pnz6Ny5M8aNG4eIiAhotVp4eHjUaft3n6OmwNtGRERENhIEweZbN81Rz549kZaWZvnu5uYGX19f6QqqI4YXIiKiFqakpARhYWGIjIxEnz594OzsjMOHDyM+Ph4jR46Uurx6Y3ghIiJqYbRaLQYOHIiEhAQUFBTAbDbD09MTUVFRiIuLk7q8emOfFyIiovuQoj+H3Ehxjvi0EREREckKwwsRERHJCsMLERERyQrDCxEREckKwwsRERHJCsMLERERyQrDCxEREckKwwsRERHJCsMLERERyQrDCxEREckKwwsREVELFBERcXsUbEGAvb09fH19sWDBAlRWViIzM9MyTxAEuLu748UXX8Tx48elLtsmDC9EREQtlMFgQFFREc6cOYOZM2figw8+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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "series.plot()" + ] + }, + { + "cell_type": "markdown", + "id": "d60cdbac-ac4b-48e2-a8c2-1cbfd722c0c5", + "metadata": {}, + "source": [ + "## Exportando para CSV" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "bd0f71e0-0c46-469d-9dc5-d169d1e12eb2", + "metadata": {}, + "outputs": [], + "source": [ + "series.to_csv('inadimplencia_pf_por_estado_2024.csv')" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.8" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}