Skip to content

Commit 80f0507

Browse files
committed
Possible fix for csv file issues on install.
1 parent 9c02c39 commit 80f0507

File tree

3 files changed

+83
-84
lines changed

3 files changed

+83
-84
lines changed

MANIFEST.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
include LICENSE.txt
22
include CONTRIBUTORS.txt
33
include README.txt
4+
recursive-include *.csv

sc2reader/data/__init__.py

Lines changed: 80 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,6 @@
11
from __future__ import absolute_import
22

3-
#from sc2reader.data.utils import DataObject
4-
#from sc2reader.data.build16561 import Data_16561
5-
#from sc2reader.data.build17326 import Data_17326
6-
#from sc2reader.data.build18317 import Data_18317
7-
#from sc2reader.data.build19595 import Data_19595
8-
3+
import pkgutil
94

105
class Build(object):
116
def __init__(self, build_id, units, abilities):
@@ -258,87 +253,88 @@ def __repr__(self):
258253
class Ability(object):
259254
pass
260255

256+
261257
def create_build(build):
262-
units_file = path.join(BASE_PATH, "{}_{}.csv".format(build,"units"))
263-
abils_file = path.join(BASE_PATH, "{}_{}.csv".format(build,"abilities"))
264-
with open(units_file, 'r') as data_file:
265-
units = dict()
266-
for row in [UnitRow(*line.strip().split('|')[1:]) for line in data_file]:
267-
unit_id = int(row.id, 10) << 8 | 1
268-
values = dict(cost=[0,0,0], race='Neutral',is_army=False, is_building=False, is_worker=False)
269-
race, minerals, vespene, supply = "Neutral", 0, 0, 0
270-
for race in ('Protoss','Terran','Zerg'):
271-
if row.type.lower() in unit_lookup[race]:
272-
values.update(unit_lookup[race][row.type.lower()])
273-
values['race']=race
274-
break
275-
276-
units[unit_id] = type(row.title,(Unit,), dict(
277-
type=unit_id,
278-
name=row.title,
279-
title=row.title,
280-
race=values['race'],
281-
minerals=values['cost'][0],
282-
vespene=values['cost'][1],
283-
supply=values['cost'][2],
284-
is_building=values['is_building'],
285-
is_worker=values['is_worker'],
286-
is_army=values['is_army'],
258+
units = dict()
259+
units_file = "{0}_{1}.csv".format(build,"units")
260+
units_data = pkgutil.get_data('sc2reader.data',units_file).split('\n')[:-1]
261+
for row in [UnitRow(*line.strip().split('|')[1:]) for line in units_data]:
262+
unit_id = int(row.id, 10) << 8 | 1
263+
values = dict(cost=[0,0,0], race='Neutral',is_army=False, is_building=False, is_worker=False)
264+
race, minerals, vespene, supply = "Neutral", 0, 0, 0
265+
for race in ('Protoss','Terran','Zerg'):
266+
if row.type.lower() in unit_lookup[race]:
267+
values.update(unit_lookup[race][row.type.lower()])
268+
values['race']=race
269+
break
270+
271+
units[unit_id] = type(row.title,(Unit,), dict(
272+
type=unit_id,
273+
name=row.title,
274+
title=row.title,
275+
race=values['race'],
276+
minerals=values['cost'][0],
277+
vespene=values['cost'][1],
278+
supply=values['cost'][2],
279+
is_building=values['is_building'],
280+
is_worker=values['is_worker'],
281+
is_army=values['is_army'],
282+
))
283+
284+
if row.title.lower() in ('probe','zealot','stalker','immortal','phoenix','hightemplar','warpprism','archon','colossus','voidray'):
285+
units[unit_id+1] = type("Hallucinated"+row.title,(Unit,), dict(
286+
type=unit_id+1,
287+
name="Hallucinated"+row.title,
288+
title="Hallucinated"+row.title,
289+
race='Protoss',
290+
minerals=0,
291+
vespene=0,
292+
supply=0,
293+
is_building=False,
294+
is_army=True,
295+
is_worker=False,
296+
))
297+
298+
299+
abils_file = "{0}_{1}.csv".format(build,"abilities")
300+
abils_data = pkgutil.get_data('sc2reader.data',abils_file).split('\n')[:-1]
301+
abilities = {0:type('RightClick',(Ability,), dict(type=0, name='RightClick', title='Right Click', is_build=False, build_time=None, build_unit=None))}
302+
for row in [line.strip().split('|') for line in abils_data]:
303+
base = int(row[1],10) << 5
304+
if base == 0: continue
305+
306+
# Temporary Hack here.
307+
if base == 0xe80:
308+
real_abils = [(0xe80,"QueueCancel0"), (0xe81,"QueueCancel1")]
309+
else:
310+
real_abils = [(base|i,t) for i,t in enumerate(row[3:]) if t.strip()!='']
311+
312+
for abil_id, title in real_abils:
313+
abilities[abil_id] = type(title,(Ability,), dict(
314+
type=abil_id,
315+
name=title,
316+
title=title,
317+
is_build=False,
318+
build_time=None,
319+
build_unit=None
320+
))
321+
322+
323+
# Some abilities have missing entries..
324+
if len(real_abils) == 0:
325+
abilities[base] = type(row[2],(Ability,), dict(
326+
type=base,
327+
name=row[2],
328+
title=row[2],
329+
is_build=False,
330+
build_time=None,
331+
build_unit=None
287332
))
288333

289-
if row.title.lower() in ('probe','zealot','stalker','immortal','phoenix','hightemplar','warpprism','archon','colossus','voidray'):
290-
units[unit_id+1] = type("Hallucinated"+row.title,(Unit,), dict(
291-
type=unit_id+1,
292-
name="Hallucinated"+row.title,
293-
title="Hallucinated"+row.title,
294-
race='Protoss',
295-
minerals=0,
296-
vespene=0,
297-
supply=0,
298-
is_building=False,
299-
is_army=True,
300-
is_worker=False,
301-
))
302-
303-
304-
with open(abils_file, 'r') as data_file:
305-
abilities = {0:type('RightClick',(Ability,), dict(type=0, name='RightClick', title='Right Click', is_build=False, build_time=None, build_unit=None))}
306-
for row in [line.strip().split('|') for line in data_file]:
307-
base = int(row[1],10) << 5
308-
if base == 0: continue
309-
310-
# Temporary Hack here.
311-
if base == 0xe80:
312-
real_abils = [(0xe80,"QueueCancel0"), (0xe81,"QueueCancel1")]
313-
else:
314-
real_abils = [(base|i,t) for i,t in enumerate(row[3:]) if t.strip()!='']
315-
316-
for abil_id, title in real_abils:
317-
abilities[abil_id] = type(title,(Ability,), dict(
318-
type=abil_id,
319-
name=title,
320-
title=title,
321-
is_build=False,
322-
build_time=None,
323-
build_unit=None
324-
))
325-
326-
327-
# Some abilities have missing entries..
328-
if len(real_abils) == 0:
329-
abilities[base] = type(row[2],(Ability,), dict(
330-
type=base,
331-
name=row[2],
332-
title=row[2],
333-
is_build=False,
334-
build_time=None,
335-
build_unit=None
336-
))
337-
338-
if int(row[1],10) == 249 and build==22612:
339-
pass
340-
#print row
341-
#print abilities[0x1f20], abilities[0x1f21], abilities[0x1f22], abilities[0x1f23]
334+
if int(row[1],10) == 249 and build==22612:
335+
pass
336+
#print row
337+
#print abilities[0x1f20], abilities[0x1f21], abilities[0x1f22], abilities[0x1f23]
342338

343339
data = Build(build, units, abilities)
344340
for unit in units.values():

setup.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,5 +37,7 @@
3737
},
3838
install_requires=['mpyq','argparse'] if float(sys.version[:3]) < 2.7 else ['mpyq'],
3939
packages=['sc2reader', 'sc2reader.scripts', 'sc2reader.plugins', 'sc2reader.data'],
40+
package_data={'sc2reader.data': ['*.csv']},
41+
include_package_data=True,
4042
zip_safe=True
4143
)

0 commit comments

Comments
 (0)