Skip to content

Commit 728ae2c

Browse files
authored
Merge pull request #51 from vicenteneto/dev
Lançando versao 1.4.14
2 parents c2f60ed + b22c933 commit 728ae2c

29 files changed

Lines changed: 94 additions & 518 deletions

.gitignore

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ cover
2020
Python_CartolaFC.egg-info/
2121
dist/
2222

23-
# Sphinx
24-
docs/build/
25-
2623
# Tox
2724
.tox/
25+
26+
# Helper scripts
27+
deploy.sh

.travis.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ language: python
33

44
python:
55
- "2.7"
6-
- "3.3"
76
- "3.4"
87
- "3.5"
98
- "3.6"

CHANGES

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,16 @@ Changelog
33

44
Aqui você pode ver a lista completa de modificações entre cada versão.
55

6+
Versão 1.4.14
7+
-------------
8+
9+
Lançada em 1 de abril de 2018
10+
11+
- Atualizando projeto exemplo para suportar Python3
12+
- Corrigindo erro ao visualizar Mercado
13+
- Atualizando dependencias
14+
15+
616
Versão 0.8.13
717
-------------
818

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ objetos de python mais convencionais.
3939

4040
## Versões
4141

42-
Este projeto foi testado e funciona em Python 2.7, 3.3, 3.4, 3.5 e 3.6.
42+
Este projeto foi testado e funciona em Python 2.7, 3.4, 3.5 e 3.6.
4343

4444

4545
## Instalação

cartolafc/__init__.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,17 @@
99
"""
1010

1111
from .api import Api, CAMPEONATO, TURNO, MERCADO_ABERTO, MERCADO_FECHADO, MES, RODADA, PATRIMONIO
12-
from .error import CartolaFCError, CartolaFCOverloadError
12+
from .errors import CartolaFCError, CartolaFCOverloadError
13+
14+
__all__ = [
15+
'Api',
16+
'CAMPEONATO',
17+
'TURNO',
18+
'MERCADO_ABERTO',
19+
'MERCADO_FECHADO',
20+
'MES',
21+
'RODADA',
22+
'PATRIMONIO',
23+
'CartolaFCError',
24+
'CartolaFCOverloadError',
25+
]

cartolafc/api.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@
55

66
import requests
77

8-
from cartolafc.decorators import RequiresAuthentication
9-
from cartolafc.error import CartolaFCError, CartolaFCOverloadError
10-
from cartolafc.models import Atleta, Clube, DestaqueRodada, Liga, LigaPatrocinador, Mercado, Partida, PontuacaoInfo
11-
from cartolafc.models import Time, TimeInfo
12-
from cartolafc.util import convert_team_name_to_slug, parse_and_check_cartolafc
8+
from .decorators import RequiresAuthentication
9+
from .errors import CartolaFCError, CartolaFCOverloadError
10+
from .models import Atleta, Clube, DestaqueRodada, Liga, LigaPatrocinador, Mercado, Partida, PontuacaoInfo
11+
from .models import Time, TimeInfo
12+
from .util import convert_team_name_to_slug, parse_and_check_cartolafc
1313

1414
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO)
1515

cartolafc/decorators.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# -*- coding: utf-8 -*-
22

3-
from cartolafc.error import CartolaFCError
3+
from .errors import CartolaFCError
44

55

66
class RequiresAuthentication(object):
File renamed without changes.

cartolafc/models.py

Lines changed: 17 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
# -*- coding: utf-8 -*-
22

3+
import json
34
from collections import namedtuple
45
from datetime import datetime
56

6-
import json
7+
from .util import json_default
78

89
Posicao = namedtuple('Posicao', ['id', 'nome', 'abreviacao'])
910
Status = namedtuple('Status', ['id', 'nome'])
@@ -34,7 +35,12 @@
3435
}
3536

3637

37-
class Atleta(object):
38+
class BaseModel(object):
39+
def __repr__(self):
40+
return json.dumps(self, default=json_default)
41+
42+
43+
class Atleta(BaseModel):
3844
""" Representa um atleta (jogador ou técnico), e possui informações como o apelido, clube e pontuação obtida """
3945

4046
def __init__(self, atleta_id, apelido, pontos, scout, posicao_id, clube, status_id=None):
@@ -46,10 +52,6 @@ def __init__(self, atleta_id, apelido, pontos, scout, posicao_id, clube, status_
4652
self.clube = clube
4753
self.status = _atleta_status[status_id] if status_id else None
4854

49-
def __repr__(self):
50-
return json.dumps(self, default=lambda o: o.__dict__)
51-
52-
5355
@classmethod
5456
def from_dict(cls, data, clubes, atleta_id=None):
5557
atleta_id = atleta_id if atleta_id else data['atleta_id']
@@ -59,40 +61,34 @@ def from_dict(cls, data, clubes, atleta_id=None):
5961
data.get('status_id', None))
6062

6163

62-
class Clube(object):
64+
class Clube(BaseModel):
6365
""" Representa um dos 20 clubes presentes no campeonato, e possui informações como o nome e a abreviação """
6466

6567
def __init__(self, id, nome, abreviacao):
6668
self.id = id
6769
self.nome = nome
6870
self.abreviacao = abreviacao
6971

70-
def __repr__(self):
71-
return json.dumps(self, default=lambda o: o.__dict__)
72-
7372
@classmethod
7473
def from_dict(cls, data):
7574
return cls(data['id'], data['nome'], data['abreviacao'])
7675

7776

78-
class DestaqueRodada(object):
77+
class DestaqueRodada(BaseModel):
7978
""" Destaque Rodada"""
8079

8180
def __init__(self, media_cartoletas, media_pontos, mito_rodada):
8281
self.media_cartoletas = media_cartoletas
8382
self.media_pontos = media_pontos
8483
self.mito_rodada = mito_rodada
8584

86-
def __repr__(self):
87-
return json.dumps(self, default=lambda o: o.__dict__)
88-
8985
@classmethod
9086
def from_dict(cls, data):
9187
mito_rodada = TimeInfo.from_dict(data['mito_rodada'])
9288
return cls(data['media_cartoletas'], data['media_pontos'], mito_rodada)
9389

9490

95-
class Liga(object):
91+
class Liga(BaseModel):
9692
""" Liga """
9793

9894
def __init__(self, liga_id, nome, slug, descricao, times):
@@ -102,33 +98,27 @@ def __init__(self, liga_id, nome, slug, descricao, times):
10298
self.descricao = descricao
10399
self.times = times
104100

105-
def __repr__(self):
106-
return json.dumps(self, default=lambda o: o.__dict__)
107-
108101
@classmethod
109102
def from_dict(cls, data, ranking=None):
110103
data_liga = data.get('liga', data)
111104
times = [TimeInfo.from_dict(time, ranking=ranking) for time in data['times']] if 'times' in data else None
112105
return cls(data_liga['liga_id'], data_liga['nome'], data_liga['slug'], data_liga['descricao'], times)
113106

114107

115-
class LigaPatrocinador(object):
108+
class LigaPatrocinador(BaseModel):
116109
""" Liga Patrocinador """
117110

118111
def __init__(self, liga_id, nome, url_link):
119112
self.id = liga_id
120113
self.nome = nome
121114
self.url_link = url_link
122115

123-
def __repr__(self):
124-
return json.dumps(self, default=lambda o: o.__dict__)
125-
126116
@classmethod
127117
def from_dict(cls, data):
128118
return cls(data['liga_id'], data['nome'], data['url_link'])
129119

130120

131-
class Mercado(object):
121+
class Mercado(BaseModel):
132122
""" Mercado """
133123

134124
def __init__(self, rodada_atual, status_mercado, times_escalados, aviso, fechamento):
@@ -138,16 +128,13 @@ def __init__(self, rodada_atual, status_mercado, times_escalados, aviso, fechame
138128
self.aviso = aviso
139129
self.fechamento = fechamento
140130

141-
def __repr__(self):
142-
return json.dumps(self, default=lambda o: o.__dict__)
143-
144131
@classmethod
145132
def from_dict(cls, data):
146133
fechamento = datetime.fromtimestamp(data['fechamento']['timestamp'])
147134
return cls(data['rodada_atual'], data['status_mercado'], data['times_escalados'], data['aviso'], fechamento)
148135

149136

150-
class Partida(object):
137+
class Partida(BaseModel):
151138
""" Partida """
152139

153140
def __init__(self, data, local, clube_casa, placar_casa, clube_visitante, placar_visitante):
@@ -158,9 +145,6 @@ def __init__(self, data, local, clube_casa, placar_casa, clube_visitante, placar
158145
self.clube_visitante = clube_visitante
159146
self.placar_visitante = placar_visitante
160147

161-
def __repr__(self):
162-
return json.dumps(self, default=lambda o: o.__dict__)
163-
164148
@classmethod
165149
def from_dict(cls, data, clubes):
166150
data_ = datetime.strptime(data['partida_data'], '%Y-%m-%d %H:%M:%S')
@@ -172,7 +156,7 @@ def from_dict(cls, data, clubes):
172156
return cls(data_, local, clube_casa, placar_casa, clube_visitante, placar_visitante)
173157

174158

175-
class PontuacaoInfo(object):
159+
class PontuacaoInfo(BaseModel):
176160
""" Pontuação Info """
177161

178162
def __init__(self, atleta_id, rodada_id, pontos, preco, variacao, media):
@@ -183,15 +167,12 @@ def __init__(self, atleta_id, rodada_id, pontos, preco, variacao, media):
183167
self.variacao = variacao
184168
self.media = media
185169

186-
def __repr__(self):
187-
return json.dumps(self, default=lambda o: o.__dict__)
188-
189170
@classmethod
190171
def from_dict(cls, data):
191172
return cls(data['atleta_id'], data['rodada_id'], data['pontos'], data['preco'], data['variacao'], data['media'])
192173

193174

194-
class Time(object):
175+
class Time(BaseModel):
195176
""" Time """
196177

197178
def __init__(self, patrimonio, valor_time, ultima_pontuacao, atletas, info):
@@ -201,9 +182,6 @@ def __init__(self, patrimonio, valor_time, ultima_pontuacao, atletas, info):
201182
self.atletas = atletas
202183
self.info = info
203184

204-
def __repr__(self):
205-
return json.dumps(self, default=lambda o: o.__dict__)
206-
207185
@classmethod
208186
def from_dict(cls, data, clubes):
209187
data['atletas'].sort(key=lambda a: a['posicao_id'])
@@ -212,7 +190,7 @@ def from_dict(cls, data, clubes):
212190
return cls(data['patrimonio'], data['valor_time'], data['pontos'], atletas, info)
213191

214192

215-
class TimeInfo(object):
193+
class TimeInfo(BaseModel):
216194
""" Time Info """
217195

218196
def __init__(self, time_id, nome, nome_cartola, slug, assinante, pontos):
@@ -223,9 +201,6 @@ def __init__(self, time_id, nome, nome_cartola, slug, assinante, pontos):
223201
self.assinante = assinante
224202
self.pontos = pontos
225203

226-
def __repr__(self):
227-
return json.dumps(self, default=lambda o: o.__dict__)
228-
229204
@classmethod
230205
def from_dict(cls, data, ranking=None):
231206
pontos = data['pontos'][ranking] if ranking and ranking in data['pontos'] else None

cartolafc/util.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
# -*- coding: utf-8 -*-
22

3+
import datetime
34
import json
45
import logging
56
import re
67
import unicodedata
78

8-
from cartolafc.error import CartolaFCError, CartolaFCOverloadError
9+
from .errors import CartolaFCError, CartolaFCOverloadError
910

1011

1112
def _strip_accents(text):
@@ -24,6 +25,13 @@ def convert_team_name_to_slug(name):
2425
return slug[:-1] if slug.endswith('-') else slug
2526

2627

28+
def json_default(value):
29+
if isinstance(value, datetime.datetime):
30+
return dict(year=value.year, month=value.month, day=value.day, hour=value.hour, minute=value.minute,
31+
second=value.second, microsecond=value.microsecond, tzinfo=value.tzinfo)
32+
return value.__dict__
33+
34+
2735
def parse_and_check_cartolafc(json_data):
2836
try:
2937
data = json.loads(json_data)

0 commit comments

Comments
 (0)