workwire 0.3.0__tar.gz → 0.4.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.4.0](https://github.com/workwire/workwire-python/compare/v0.3.0...v0.4.0) (2026-10-18)
4
+
5
+
6
+ ### Features
7
+
8
+ * **WOR-471:** party jobs carry location_name, location_kind and location_path (backend v1.54.0) ([#20](https://github.com/workwire/workwire-python/issues/20)) ([14f1c08](https://github.com/workwire/workwire-python/commit/14f1c083a600747521087a3b4b572d44c69934ef))
9
+
3
10
  ## [0.3.0](https://github.com/workwire/workwire-python/compare/v0.2.0...v0.3.0) (2026-10-16)
4
11
 
5
12
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: workwire
3
- Version: 0.3.0
3
+ Version: 0.4.0
4
4
  Summary: Official Python SDK for the Workwire API
5
5
  Project-URL: Homepage, https://github.com/workwire/workwire-python
6
6
  Project-URL: Changelog, https://github.com/workwire/workwire-python/blob/main/CHANGELOG.md
@@ -120,6 +120,11 @@ page = client.jobs.list(project=project.id) # page.quantity_unit is your org's
120
120
  client.jobs.update(page.data[0].id, your_reference="PO-4471-A", quantity="12.5", checked=True)
121
121
  ```
122
122
 
123
+ A party Job — each of `client.wires.retrieve(...).parties[i].jobs`, and the
124
+ one `client.jobs.update` returns — carries `location_name`, `location_kind` and
125
+ `location_path` (the ancestors, root first), so a sub reads its scope without
126
+ the GC's tree; `client.jobs.list` rows had them already.
127
+
123
128
  Leave `scope_location_ids` out to scope a party to the whole project.
124
129
  `client.jobs.update` sends only the fields you pass: leave one out to keep
125
130
  it, pass `None` to clear it. Add to a tree later with
@@ -97,6 +97,11 @@ page = client.jobs.list(project=project.id) # page.quantity_unit is your org's
97
97
  client.jobs.update(page.data[0].id, your_reference="PO-4471-A", quantity="12.5", checked=True)
98
98
  ```
99
99
 
100
+ A party Job — each of `client.wires.retrieve(...).parties[i].jobs`, and the
101
+ one `client.jobs.update` returns — carries `location_name`, `location_kind` and
102
+ `location_path` (the ancestors, root first), so a sub reads its scope without
103
+ the GC's tree; `client.jobs.list` rows had them already.
104
+
100
105
  Leave `scope_location_ids` out to scope a party to the whole project.
101
106
  `client.jobs.update` sends only the fields you pass: leave one out to keep
102
107
  it, pass `None` to clear it. Add to a tree later with
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "workwire"
7
- version = "0.3.0"
7
+ version = "0.4.0"
8
8
  description = "Official Python SDK for the Workwire API"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -171,14 +171,31 @@ class PO(WorkwireObject):
171
171
  created_at: str
172
172
 
173
173
 
174
+ class JobPathLocation(WorkwireObject):
175
+ """One ancestor on a Job's ``location_path`` (a :class:`PartyJob`'s or a
176
+ :class:`JobRow`'s)."""
177
+
178
+ id: str
179
+ name: str
180
+ kind: str
181
+
182
+
174
183
  class PartyJob(WorkwireObject):
175
184
  """One Job on a wire party (``JOB-…``) — the party's work at one location
176
- of its scope. ``your_reference``, ``quantity`` and ``checked_at`` are
177
- **your org's own** fields, never the other side's."""
185
+ of its scope. ``location_name``, ``location_kind`` and ``location_path``
186
+ (the ancestors, root first; empty at the site root) are the server's
187
+ description of where the Job sits in the GC's tree; ``your_reference``,
188
+ ``quantity`` and ``checked_at`` are **your org's own** fields, never the
189
+ other side's."""
190
+
191
+ _nested = {"location_path": JobPathLocation}
178
192
 
179
193
  id: str
180
194
  display_id: str
181
195
  location_id: str
196
+ location_name: str
197
+ location_kind: str
198
+ location_path: list[JobPathLocation]
182
199
  your_reference: str | None
183
200
  quantity: str | None
184
201
  checked_at: str | None
@@ -334,14 +351,6 @@ class LocationBatch(list[Location]):
334
351
  return copy.deepcopy(self._data)
335
352
 
336
353
 
337
- class JobPathLocation(WorkwireObject):
338
- """One ancestor on a Job row's ``location_path``."""
339
-
340
- id: str
341
- name: str
342
- kind: str
343
-
344
-
345
354
  class JobMilestones(WorkwireObject):
346
355
  """A Job row's party milestone counts (repeated across the party's Jobs)."""
347
356
 
File without changes
File without changes
File without changes
File without changes