You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Seu pedido de recurso está relacionado a um problema? Por favor, descreva.
Quero verificar se uma data específica é um feriado nacional ou estadual no Brasil. O método deve aceitar uma data no formato datetime e uma unidade federativa (UF) opcional. Caso a data ou a UF seja inválida, o método deve retornar None.
Por exemplo, verificar se datetime(2024, 1, 1) é um feriado nacional e retornar True. Caso a data ou a UF seja inválida, o método deve retornar None.
Descreva a solução que você gostaria
Uma função is_holiday, que recebe um objeto datetime obrigatório e uma string opcional uf, e retorna um booleano indicando se a data é um feriado, ou None se a data ou a UF forem inválidas.
A função deve utilizar a biblioteca holidays para realizar a verificação.
Deve considerar feriados nacionais e, caso seja passada uma uf válida, verificar também os feriados estaduais.
Se a data não for válida ou a UF não corresponder a um estado brasileiro, a função deve retornar None.
fromdatetimeimportdatetimedefis_holiday(date: datetime, uf: str=None) ->bool|None:
""" Checks if the given date is a national or state holiday in Brazil. This function takes a date as a `datetime` object and an optional UF (Unidade Federativa), returning a boolean value indicating whether the date is a holiday or `None` if the date or UF are invalid. The method does not handle municipal holidays. Args: date (datetime): The date to be checked. uf (str, optional): The state abbreviation (UF) to check for state holidays. If not provided, only national holidays will be considered. Returns: bool | None: Returns `True` if the date is a holiday, `False` if it is not, or `None` if the date or UF are invalid. Note: The function logic should be implemented using the `holidays` library. For more information, refer to the documentation at: https://pypi.org/project/holidays/ Usage Examples: >>> from datetime import datetime >>> is_holiday(datetime(2024, 1, 1)) True >>> is_holiday(datetime(2024, 1, 2)) False >>> is_holiday(datetime(2024, 3, 2), uf="SP") False >>> is_holiday(datetime(2024, 12, 25), uf="RJ") True """# Adicionar lógica aquipass
Importar a nova função no arquivo brutils-python/brutils/__init__.py.
# Date Imports frombrutils.dateimportis_holiday
Adicionar o nome da nova função na lista __all__ do mesmo arquivo brutils-python/brutils/__init__.py:
__all__= [
...
# Date'is_holiday'
]
Criar o arquivo de teste: brutils-python/tests/test_date.py.
fromunittestimportTestCasefromdatetimeimportdatetimefrombrutils.dateimportis_holidayclassTestDate(TestCase):
deftest_is_holiday(self):
# Testes com feriados válidosself.assertTrue(is_holiday(datetime(2024, 1, 1))) # Ano Novoself.assertTrue(is_holiday(datetime(2024, 7, 9), uf="SP")) # Revolução Constitucionalista (SP)# Testes com dias normaisself.assertFalse(is_holiday(datetime(2024, 1, 2))) # Dia normalself.assertFalse(is_holiday(datetime(2024, 7, 9), uf="RJ")) # Dia normal no RJ# Testes com data inválidaself.assertIsNone(is_holiday("2024-01-01")) # Formato incorretoself.assertIsNone(is_holiday(None)) # Data None# Testes com UF inválidaself.assertIsNone(is_holiday(datetime(2024, 1, 1), uf="XX")) # UF inválida# Testes com limite de datasself.assertTrue(is_holiday(datetime(2024, 12, 25))) # Natalself.assertTrue(is_holiday(datetime(2024, 11, 15))) # Proclamação da República# Testar outros feriados e casos de borda
Edge Cases:
Data no formato inválido: Deve retornar None.
UF inválida ou não existente: Deve retornar None.
Data sem UF fornecida: Deve considerar apenas feriados nacionais.
Data nos limites de feriados (véspera de feriados, como 24/12 e 31/12): Testar comportamento.
Feriado em ano bissexto: Verificar comportamento em anos como 2024.
Primeiro feriado do ano e último feriado do ano: Testar como o código lida com extremos.
Datas passadas ou futuras além do calendário anual atual: Testar comportamento com datas fora do ano atual.
Seu pedido de recurso está relacionado a um problema? Por favor, descreva.
Quero verificar se uma data específica é um feriado nacional ou estadual no Brasil. O método deve aceitar uma data no formato
datetime
e uma unidade federativa (UF) opcional. Caso a data ou a UF seja inválida, o método deve retornarNone
.Por exemplo, verificar se
datetime(2024, 1, 1)
é um feriado nacional e retornarTrue
. Caso a data ou a UF seja inválida, o método deve retornarNone
.Descreva a solução que você gostaria
is_holiday
, que recebe um objetodatetime
obrigatório e uma string opcionaluf
, e retorna um booleano indicando se a data é um feriado, ouNone
se a data ou a UF forem inválidas.uf
válida, verificar também os feriados estaduais.None
.Exemplo de Uso:
Descreva alternativas que você considerou
brutils-python/brutils/date.py
.Importar a nova função no arquivo
brutils-python/brutils/__init__.py
.Adicionar o nome da nova função na lista
__all__
do mesmo arquivobrutils-python/brutils/__init__.py
:Criar o arquivo de teste:
brutils-python/tests/test_date.py
.Edge Cases:
Data no formato inválido: Deve retornar
None
.UF inválida ou não existente: Deve retornar
None
.Data sem UF fornecida: Deve considerar apenas feriados nacionais.
Data nos limites de feriados (véspera de feriados, como 24/12 e 31/12): Testar comportamento.
Feriado em ano bissexto: Verificar comportamento em anos como 2024.
Primeiro feriado do ano e último feriado do ano: Testar como o código lida com extremos.
Datas passadas ou futuras além do calendário anual atual: Testar comportamento com datas fora do ano atual.
Seguir os passos seguintes do guia de contribuição.
Contexto adicional
uf
.None
.The text was updated successfully, but these errors were encountered: