Skip to content

Commit 0e18530

Browse files
authored
Merge pull request #23 from wsp-sag/projectcard_api
Update to official `projectcard` api
2 parents acdf975 + 8891e6b commit 0e18530

File tree

15 files changed

+307
-296
lines changed

15 files changed

+307
-296
lines changed

.github/workflows/run-tests.yml

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,20 @@ jobs:
99
steps:
1010

1111
- name: checkout repo content
12-
uses: actions/checkout@v2
12+
uses: actions/checkout@v4
1313

1414
- name: setup python
15-
uses: actions/setup-python@v2
15+
uses: actions/setup-python@v4
1616
with:
17-
python-version: '3.7'
18-
19-
- name: execute py script
17+
python-version: '3.10'
18+
19+
- name: Install dependencies
2020
run: |
2121
python -m pip install --upgrade pip
22-
pip install --user -e git+https://github.com/wsp-sag/network_wrangler.git@master#egg=network_wrangler
22+
pip install pytest
23+
pip install -e git+https://github.com/network-wrangler/network_wrangler.git@main#egg=network_wrangler
24+
25+
26+
- name: Run tests
27+
run: |
2328
pytest -s -m ci

.github/workflows/update-registry.yml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,28 +9,28 @@ jobs:
99
steps:
1010

1111
- name: checkout repo content
12-
uses: actions/checkout@v2
12+
uses: actions/checkout@v4
1313

1414
- name: setup python
15-
uses: actions/setup-python@v2
15+
uses: actions/setup-python@v4
1616
with:
17-
python-version: '3.7'
17+
python-version: '3.10'
1818

1919
- name: execute py script
2020
run: |
2121
python -m pip install --upgrade pip
22-
pip install --user -e git+https://github.com/wsp-sag/network_wrangler.git@master#egg=network_wrangler
22+
pip install -e git+https://github.com/network-wrangler/network_wrangler.git@main#egg=network_wrangler
2323
python update_registry.py
2424
2525
- name: commit files
2626
run: |
27-
git config --local user.email "david.ory@gmail.com"
28-
git config --local user.name "DavidOry"
27+
git config --local user.email "github-actions[bot]"
28+
git config --local user.name "github-actions[bot]@users.noreply.github.com"
2929
git add -A
3030
git commit --allow-empty -m "GitHub Action automated registry update" -a
3131
3232
- name: push changes
3333
uses: ad-m/github-push-action@v0.6.0
3434
with:
3535
github_token: ${{ secrets.GITHUB_TOKEN }}
36-
branch: main
36+
branch: ${{ github.ref_name }}
Lines changed: 30 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,32 @@
11
project: Project A
2-
valid: false
32
tags:
4-
- 'registry example'
5-
dependencies:
6-
prerequisites: []
7-
corequisites: []
8-
conflicts: []
9-
category: New Roadway
10-
links:
11-
- A: 1001
12-
B: 1002
13-
model_link_id: 501
14-
distance : 0.15
15-
name: 'Main Street'
16-
lanes: 2
17-
bike_access: 1
18-
drive_access: 1
19-
transit_access: 0
20-
walk_access: 1
21-
nodes:
22-
- X: -93.14412
23-
Y: 44.87497
24-
bike_node: 0
25-
drive_node: 1
26-
transit_node: 0
27-
walk_node: 0
28-
model_node_id: 1001
29-
- X: -93.14189
30-
Y: 44.87499
31-
bike_node: 0
32-
drive_node: 1
33-
transit_node: 0
34-
walk_node: 0
35-
model_node_id: 1002
3+
- registry_example
4+
dependencies: {}
5+
changes:
6+
- roadway_addition:
7+
links:
8+
- A: 1001
9+
B: 1002
10+
model_link_id: 501
11+
distance: 0.25
12+
name: Main Street
13+
lanes: 2
14+
bike_access: 1
15+
drive_access: 1
16+
transit_access: 0
17+
walk_access: 1
18+
nodes:
19+
- X: -93.1111
20+
Y: 44.8888
21+
bike_node: 0
22+
drive_node: 1
23+
transit_node: 0
24+
walk_node: 0
25+
model_node_id: 1001
26+
- X: -93.4444
27+
Y: 44.5555
28+
bike_node: 0
29+
drive_node: 1
30+
transit_node: 0
31+
walk_node: 0
32+
model_node_id: 1002
Lines changed: 34 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,36 @@
11
project: Project B
2-
valid: false
32
tags:
4-
- 'registry example'
5-
dependencies:
6-
prerequisites: []
7-
corequisites: []
8-
conflicts: []
9-
category: New Roadway
10-
links:
11-
- A: 1001
12-
B: 1002
13-
model_link_id: 501
14-
distance : 0.2500
15-
name: 'Broad Street'
16-
lanes: 2
17-
bike_access: 1
18-
drive_access: 1
19-
transit_access: 0
20-
walk_access: 1
21-
nodes:
22-
- X: -93.14322
23-
Y: 44.87414
24-
bike_node: 0
25-
drive_node: 1
26-
transit_node: 0
27-
walk_node: 0
28-
model_node_id: 1001
29-
- X: -93.14273
30-
Y: 44.87648
31-
bike_node: 0
32-
drive_node: 1
33-
transit_node: 0
34-
walk_node: 0
35-
model_node_id: 1002
3+
- registry_example
4+
dependencies: {}
5+
changes:
6+
- roadway_deletion:
7+
links:
8+
model_link_id:
9+
- 123
10+
- roadway_addition:
11+
links:
12+
- A: 1003
13+
B: 1004
14+
model_link_id: 502
15+
distance: 0.25
16+
name: Broad Street
17+
lanes: 2
18+
bike_access: 1
19+
drive_access: 1
20+
transit_access: 0
21+
walk_access: 1
22+
nodes:
23+
- X: -93.2222
24+
Y: 44.1111
25+
bike_node: 0
26+
drive_node: 1
27+
transit_node: 0
28+
walk_node: 0
29+
model_node_id: 1003
30+
- X: -93.3333
31+
Y: 44.2222
32+
bike_node: 0
33+
drive_node: 1
34+
transit_node: 0
35+
walk_node: 0
36+
model_node_id: 1004

methods_add_cards.py

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,11 @@
22
from numpy import True_
33
import pandas as pd
44
from typing import Tuple
5-
from network_wrangler import ProjectCard
5+
6+
from pathlib import Path
7+
8+
from projectcard import ProjectCard
9+
from projectcard import write_card
610

711

812
def add_cards_to_registry(
@@ -30,8 +34,8 @@ def add_cards_to_registry(
3034
for card, filename in card_file_list:
3135
if card.project not in input_df["project_added"].values:
3236
for change_index, change_dict in enumerate(card.changes):
33-
if change_dict.get("category", "Missing") == "Add New Roadway":
34-
if "nodes" in change_dict:
37+
if "roadway_addition" in change_dict:
38+
if "nodes" in change_dict["roadway_addition"]:
3539
node_df, node_update, card = _update_registry(
3640
"nodes",
3741
out_df,
@@ -52,10 +56,10 @@ def add_cards_to_registry(
5256
)
5357

5458
if node_df is not None:
55-
out_df = out_df.append(node_df, ignore_index=True)
59+
out_df = pd.concat([out_df, node_df], ignore_index=True)
5660

5761
out_df = (
58-
out_df.append(link_df, ignore_index=True)
62+
pd.concat([out_df, link_df], ignore_index=True)
5963
.drop_duplicates()
6064
.reset_index(drop=True)
6165
)
@@ -66,7 +70,7 @@ def add_cards_to_registry(
6670
card.__dict__.pop("file")
6771
if "valid" in card.__dict__:
6872
card.__dict__.pop("valid")
69-
card.write(filename=filename)
73+
write_card(card, filename=Path(filename))
7074

7175
return out_df
7276

@@ -238,7 +242,7 @@ def _update_registry(
238242

239243
subject_df = input_df[input_df["type"] == subject_word]
240244

241-
for subject_index, subject in enumerate(card.changes[change_index][nodes_or_links]):
245+
for subject_index, subject in enumerate(card.changes[change_index]["roadway_addition"][nodes_or_links]):
242246
new_id = subject[subject_id_word]
243247

244248
_is_id_in_allowable_range(subject_word, card.project, new_id, range_in_use)
@@ -251,7 +255,7 @@ def _update_registry(
251255
"project_added": [card.project],
252256
}
253257
)
254-
subject_df = subject_df.append(updates_df)
258+
subject_df = pd.concat([subject_df, updates_df])
255259
else:
256260
number = _find_available_id(
257261
subject_word,
@@ -260,23 +264,23 @@ def _update_registry(
260264
range_in_use,
261265
subject_df,
262266
)
263-
card.changes[change_index][nodes_or_links][subject_index][
267+
card.changes[change_index]["roadway_addition"][nodes_or_links][subject_index][
264268
subject_id_word
265269
] = number
266270
if nodes_or_links == "nodes":
267-
for i in range(0, len(card.changes[change_index]["links"])):
268-
if card.changes[change_index]["links"][i]["A"] == new_id:
269-
card.changes[change_index]["links"][i]["A"] = number
270-
if card.changes[change_index]["links"][i]["B"] == new_id:
271-
card.changes[change_index]["links"][i]["B"] = number
271+
for i in range(0, len(card.changes[change_index]["roadway_addition"]["links"])):
272+
if card.changes[change_index]["roadway_addition"]["links"][i]["A"] == new_id:
273+
card.changes[change_index]["roadway_addition"]["links"][i]["A"] = number
274+
if card.changes[change_index]["roadway_addition"]["links"][i]["B"] == new_id:
275+
card.changes[change_index]["roadway_addition"]["links"][i]["B"] = number
272276
updates_df = pd.DataFrame(
273277
{
274278
"type": subject_word,
275279
"id": [number],
276280
"project_added": [card.project],
277281
}
278282
)
279-
subject_df = subject_df.append(updates_df)
283+
subject_df = pd.concat([subject_df, updates_df])
280284
write_updated_card = True
281285

282286
return subject_df, write_updated_card, card

methods_io.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import os
2-
from network_wrangler import ProjectCard
2+
from projectcard import read_card
33

44
CARD_DIR = os.path.join(".", "projects")
55

@@ -22,7 +22,7 @@ def read_project_cards(card_dir: str = CARD_DIR) -> list:
2222
name, extension = os.path.splitext(filename)
2323
if extension in [".yml", ".yaml"]:
2424
card_file = os.path.join(dirpath, filename)
25-
card = ProjectCard.read(card_file, validate=False)
25+
card = read_card(card_file, validate=True)
2626
card_file_list.append((card, card_file))
2727

2828
return card_file_list

projects/project_A.yml

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,32 @@
11
project: Project A
22
tags:
33
- registry_example
4-
dependencies: ''
4+
dependencies: {}
55
changes:
6-
- category: Add New Roadway
7-
links:
8-
- A: 1001
9-
B: 1002
10-
model_link_id: 501
11-
distance: 0.25
12-
name: Main Street
13-
lanes: 2
14-
bike_access: 1
15-
drive_access: 1
16-
transit_access: 0
17-
walk_access: 1
18-
nodes:
19-
- X: -93.1111
20-
Y: 44.8888
21-
bike_node: 0
22-
drive_node: 1
23-
transit_node: 0
24-
walk_node: 0
25-
model_node_id: 1001
26-
- X: -93.4444
27-
Y: 44.5555
28-
bike_node: 0
29-
drive_node: 1
30-
transit_node: 0
31-
walk_node: 0
32-
model_node_id: 1002
6+
- roadway_addition:
7+
links:
8+
- A: 1001
9+
B: 1002
10+
model_link_id: 501
11+
distance: 0.25
12+
name: Main Street
13+
lanes: 2
14+
bike_access: 1
15+
drive_access: 1
16+
transit_access: 0
17+
walk_access: 1
18+
nodes:
19+
- X: -93.1111
20+
Y: 44.8888
21+
bike_node: 0
22+
drive_node: 1
23+
transit_node: 0
24+
walk_node: 0
25+
model_node_id: 1001
26+
- X: -93.4444
27+
Y: 44.5555
28+
bike_node: 0
29+
drive_node: 1
30+
transit_node: 0
31+
walk_node: 0
32+
model_node_id: 1002

0 commit comments

Comments
 (0)