- Close issue 15 from
scrapr.rosterrep.parse_rosters()
- Calling
max
on empty key list, used common sense and switched tolen
- Stupid indentation issue leading to inclusion of roster table header
- Put some blunt checks in
scrapr.descparser.py
for missing info in RTSS reports.- See Issue 4
- TODO: design a more robust/elegant way of defining data formats and missing data. This works for now.
- Let
scrapr.rtss.PlayParser
track game type and loosen skater count to address shootout parsing discussed in Issue #2- Update constants ... will find a better way to handle checks.
- see Issues 2, and 3
- Ugly hack in
scrapr.toirep.TOIRepBase
to account for missing data in the report discussed in Issue #1- TODO: need to add a more robust way to handle broken records gracefully and continues parsing the remainder of the document.
- added support and associated unit test for event summary report
- scraper in
scrapr.eventsummary.EventSummRep
- report wrapper and primary access object in
games.eventsummary.EventSummary
- the event summary report has abiltiy to filter and sort by player data
- updated docs
- updated REAMDME to reflect change
- messed up the prior upload. embarrassing. fixed remaining 3.x print issue.
- fixed a lot of python3.x compatibility issues
_tools.build_enum
switch toitems()
fromiteritems()
print vs
toprint()
inscrapr.descparser
- take out
maketrans
inscrapr.descparser
and put inreplace()
- fully qualify the
scrapr.eventparser
import inscrapr.rtss
Game.plays
property returnsself.play_by_play.plays()
but plays isn't callable
- dropped urllib2 dependency because it's 2015 and I'm tired of being a dinosaur
- added
requests
to setup dependencies- fully qualified the
scrapr.NHLCn
import inscrapr.reportloader
- consolidated cli_opts.py into gamedata.py ... that whole thing needs a rewrite anyway (TODO)
- setup script reference bug.
- true bug fix. messed up the pypi upload setup
- forgot cfg et c.
- refactored
Plays
/Strength
construct
- moved
Plays
andStrength
fromgames.plays
togames.playbyplay
- moved
scrapr.rtss.playparser.PlayParser
toscrapr.rtss
- deleted games/plays.py and scrapr/playparser.py
- reworked data structure of
PlayParser
to be purely a dict- parsed play data isn't converted into the proper
Play
object untilgames.playbyplay.PlayByPlay
gets it- refactored TOI/ShiftSummary construct
- moved
ShiftSummary
fromscrapr.toirep
togames.toi
scrapr.toirep.TOIRepBase
now stores by player shift info as dict- parsed shift summary isn't made into a
ShiftSummary
object until inTOI
- Goal of both big refactors was to keep scraping/raw web data as dicts and have object wrappers only exist in the games package
- added a
unittest
for the time on ice and shift summary info- added docstrings to major report and scraper interfaces
- built docs using Sphinx
- fixed play-by-play bug created when no cum_stats provided
- deprecated extractors
- refactored GameKey and GameType into nhlscrapi.games.game
- updated unittests and README to reflect the refactoring
- added face off comparison report, associated report loaded (scraper) and unittest
- gave Game object basic access/loading to face off comp
- reworked testing framework
- can now run tests w the standard
python -m unittest discover
- made versioning counter sane. structure is v(realease).(feature).(bug)
- added
lxml
to the install requirements in setup- added this change log