|
27 | 27 | from __future__ import unicode_literals |
28 | 28 |
|
29 | 29 | from collections import OrderedDict |
30 | | -from functools import partial |
31 | 30 | import io |
32 | 31 | import toml |
33 | 32 | import logging |
@@ -118,37 +117,32 @@ def build_package(package_data): |
118 | 117 | for key in ('source_packages', 'dependencies', 'keywords'): |
119 | 118 | ordered_dict_map[key] = OrderedDict() |
120 | 119 |
|
| 120 | + authors = core_package_data.get('authors') |
| 121 | + parties = list(party_mapper(authors, party_role='author')) |
| 122 | + |
121 | 123 | package = RustCargoCrate( |
122 | 124 | name=name, |
123 | 125 | version=version, |
124 | 126 | description=description, |
125 | | - **ordered_dict_map |
| 127 | + parties=parties, |
| 128 | + **ordererd_dict_map, |
126 | 129 | ) |
127 | 130 |
|
128 | | - field_mappers = [ |
129 | | - ('authors', partial(party_mapper, party_type='author')), |
130 | | - ] |
131 | | - for source, func in field_mappers: |
132 | | - value = core_package_data.get(source, []) |
133 | | - func(value, package) |
134 | | - |
135 | 131 | return package |
136 | 132 |
|
137 | 133 |
|
138 | | -def party_mapper(party, package, party_type): |
| 134 | +def party_mapper(party, party_role): |
139 | 135 | """ |
140 | | - Update package parties with party of `party_type` and return package. |
| 136 | + Yields a Party object with party of `party_role`. |
141 | 137 | https://doc.rust-lang.org/cargo/reference/manifest.html#the-authors-field-optional |
142 | 138 | """ |
143 | | - for auth in party: |
144 | | - name, email = parse_person(auth) |
145 | | - package.parties.append(models.Party( |
| 139 | + for person in party: |
| 140 | + name, email = parse_person(person) |
| 141 | + yield models.Party( |
146 | 142 | type=models.party_person, |
147 | 143 | name=name, |
148 | | - role=party_type, |
149 | | - email=email)) |
150 | | - |
151 | | - return package |
| 144 | + role=party_role, |
| 145 | + email=email) |
152 | 146 |
|
153 | 147 |
|
154 | 148 | def parse_person(person): |
|
0 commit comments