Skip to content

Commit f25d510

Browse files
authored
Merge pull request #19 from TransitApp/jsteelz/load-specified-files
py-gtfs-loader: verbosity, file-loading/exporting controls
2 parents 204203b + 62d4231 commit f25d510

File tree

4 files changed

+33
-9
lines changed

4 files changed

+33
-9
lines changed

gtfs_loader/__init__.py

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,19 @@
1111
class ParseError(ValueError):
1212
pass
1313

14+
def get_files(files):
15+
return schema.FileCollection(*(schema.GTFS_FILENAMES[f] for f in files)).values()
1416

15-
def load(gtfs_dir, sorted_read=False):
17+
18+
def load(gtfs_dir, sorted_read=False, files=None, verbose=True):
1619
gtfs_dir = Path(gtfs_dir)
1720
gtfs = types.Entity()
18-
for file_schema in schema.GTFS_SUBSET_SCHEMA.values():
19-
print(f'Loading {file_schema.name}')
21+
22+
files_to_load = get_files(files) if files else schema.GTFS_SUBSET_SCHEMA.values()
23+
24+
for file_schema in files_to_load:
25+
if verbose:
26+
print(f'Loading {file_schema.name}')
2027
filepath = gtfs_dir / file_schema.filename
2128
gtfs[file_schema.name] = types.EntityDict(
2229
file_schema.get_declared_fields())
@@ -210,7 +217,7 @@ def sorted_entities(file_schema, entities):
210217
return sorted(entities.items(), key=lambda kv: kv[0])
211218

212219

213-
def patch(gtfs, gtfs_in_dir, gtfs_out_dir, sorted_output=False):
220+
def patch(gtfs, gtfs_in_dir, gtfs_out_dir, files=None, sorted_output=False, verbose=True):
214221
gtfs_in_dir = Path(gtfs_in_dir)
215222
gtfs_out_dir = Path(gtfs_out_dir)
216223
gtfs_out_dir.mkdir(parents=True, exist_ok=True)
@@ -222,8 +229,11 @@ def patch(gtfs, gtfs_in_dir, gtfs_out_dir, sorted_output=False):
222229
except shutil.SameFileError:
223230
pass # No need to copy if we're working in-place
224231

225-
for file_schema in schema.GTFS_SUBSET_SCHEMA.values():
226-
print(f'Writing {file_schema.name}')
232+
files_to_patch = get_files(files) if files else schema.GTFS_SUBSET_SCHEMA.values()
233+
234+
for file_schema in files_to_patch:
235+
if verbose:
236+
print(f'Writing {file_schema.name}')
227237
entities = gtfs.get(file_schema.name)
228238
if not entities:
229239
(gtfs_out_dir / file_schema.filename).unlink(missing_ok=True)

gtfs_loader/schema.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -326,3 +326,17 @@ def route(self):
326326

327327
GTFS_SUBSET_SCHEMA = FileCollection(Agency, BookingRule, Calendar, CalendarDate,
328328
Locations, LocationGroups, Routes, Transfer, Trip, Stop, StopTime)
329+
330+
GTFS_FILENAMES = {
331+
Agency._schema.name: Agency,
332+
BookingRule._schema.name: BookingRule,
333+
Calendar._schema.name: Calendar,
334+
CalendarDate._schema.name: CalendarDate,
335+
Locations._schema.name: Locations,
336+
LocationGroups._schema.name: LocationGroups,
337+
Routes._schema.name: Routes,
338+
Transfer._schema.name: Transfer,
339+
Trip._schema.name: Trip,
340+
Stop._schema.name: Stop,
341+
StopTime._schema.name: StopTime,
342+
}

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from setuptools import setup, find_packages
22

33
setup(name='py-gtfs-loader',
4-
version='0.1.12',
4+
version='0.1.13',
55
description='Load GTFS',
66
url='https://github.com/TransitApp/py-gtfs-loader',
77
author='Nicholas Paun, Jonathan Milot',

tests/test_runner.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,6 @@ def test_default(feed_dir):
1616
def do_test(feed_dir):
1717
work_dir = test_support.create_test_data(feed_dir)
1818

19-
gtfs = gtfs_loader.load(work_dir)
20-
gtfs_loader.patch(gtfs, work_dir, work_dir)
19+
gtfs = gtfs_loader.load(work_dir, verbose=False)
20+
gtfs_loader.patch(gtfs, work_dir, work_dir, verbose=False)
2121
test_support.check_expected_output(feed_dir, work_dir)

0 commit comments

Comments
 (0)